虚拟机 搭建LVS + DR + keepalived 高可用负载均衡
一:環境說明:
?? LVS-DR-Master:?? ?10.3.0.82
?? LVS-DR-Backup:?? ?10.3.0.70
?? VIP:?? ??? ??? ??? ?10.3.0.60
?? RealServer1:?? ?10.3.0.69
?? RealServer1:?? ?10.3.0.83
?? Centos:5.7 ?
?二:安裝LVS和Keepalvied軟件包
?? 1. 下載相關軟件包
??? mkdir /usr/local/src/lvs
??? cd /usr/local/src/lvs
??? wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
??? wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
?? 2. 安裝LVS和Keepalived
??? lsmod |grep ip_vs
?? ?uname -r
?? ?2.6.18-53.el5PAE
?? ?ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/? /usr/src/linux
?? ?tar zxvf ipvsadm-1.24.tar.gz
?? ?cd ipvsadm-1.24
?? ?make && make install
?? ?find / -name ipvsadm? # 查看ipvsadm的位置
?? ?
?? ?或者使用yum install ipvsadm
?? ?tar zxvf keepalived-1.1.15.tar.gz
?? ?cd keepalived-1.1.15
?? ?./configure? && make && make install
?? ?find / -name keepalived? # 查看keepalived位置?? ??? ?
?? ??? ?
?? ?cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
?? ?cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
?? ?mkdir /etc/keepalived
?? ?cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
?? ?cp /usr/local/sbin/keepalived /usr/sbin/
?? ?service keepalived start|stop???? #做成系統啟動服務方便管理.??
??? 備注:在安裝keepalived的過程中,第一次的版本太高我下載1.2的版本,
????? 以上是我的kernel版本,在安裝的過程中總報錯,網上也沒有找到相關的說明,所以就下載了個低版本的結果就ok了。
?三:LVS-DR,配置LVS腳本實現負載均衡
?? ?vim /etc/init.d/lvsdr
?? ?
?? ?#!/bin/bash
?? ?RIP1=10.3.0.69
?? ?RIP2=10.3.0.83
?? ?
?? ?VIP=10.3.0.60
?? ?. /etc/rc.d/init.d/functions
?? ?case "$1" in
?? ??? ?start)
?? ??? ??? ?echo " start LVS of DirectorServer"
?? ??? ??? ?# set the Virtual IP Address and sysctl parameter
?? ??? ??? ?/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
?? ??? ??? ?/sbin/route add -host $VIP dev eth0:0
?? ??? ??? ?echo "1" >/proc/sys/net/ipv4/ip_forward
?? ??? ??? ?#Clear IPVS table
?? ??? ??? ?/sbin/ipvsadm -C
?? ??? ??? ?
?? ??? ??? ?#set LVS
?? ??? ??? ?#Web Apache
?? ??? ??? ? /sbin/ipvsadm -A -t $VIP:80 -s rr
?? ??? ??? ? /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
?? ??? ??? ? /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
?? ??? ??? ? ?
?? ??? ??? ?#Run LVS
?? ??? ??? ? /sbin/ipvsadm
?? ??? ?? ;;
?? ??? ?stop)
?? ??? ??? ?echo "close LVS Directorserver"
?? ??? ??? ?echo "0" >/proc/sys/net/ipv4/ip_forward
?? ??? ??? ?/sbin/ipvsadm -C
?? ??? ??? ?/sbin/ifconfig eth0:0 down
?? ??? ?? ;;
?? ??? ?*)
?? ??? ??? ?echo "Usage: $0 {start|stop}"
?? ??? ??? ?exit 1
?? ?esac
?? ?
?? ?chmod a+x /etc/init.d/lvsdr
?? ?service lvsdr start|stop
???
?? ?查看命令:
?? ?ipvsadm -ln
?? ?ipvsadm -lcn 查看請求轉發情況
???
??? 備注:此腳本在LVS-DR-Master和Backup上均需執行
四:配置Realserver腳本
??? vim /etc/init.d/realserver
?? ?#!/bin/bash
?? ?VIP=10.3.0.60
?? ?. /etc/rc.d/init.d/functions
?? ?case "$1" in
?? ??? ?start)
?? ??? ??? ?echo " start LVS of REALServer"
?? ??? ??? ?/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
?? ??? ??? ?echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
?? ??? ??? ?echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
?? ??? ??? ?echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
?? ??? ??? ?echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
?? ??? ??? ?;;
?? ??? ?stop)
?? ??? ??? ?/sbin/ifconfig lo:0 down
?? ??? ??? ?echo "close LVS Directorserver"
?? ??? ??? ?echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
?? ??? ??? ?echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
?? ??? ??? ?echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
?? ??? ??? ?echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
?? ??? ??? ?;;
?? ??? ?*)
?? ??? ??? ?echo "Usage: $0 {start|stop}"
?? ??? ??? ?exit 1
?? ?esac
?? ?chmod a+x /etc/init.d/realserver
?? ?service realserver start|stop
?? ?
?? ?可以通過ifconfig或者ip add 命令查看是否綁定
?? ?
?? ?備注:此腳本在兩臺realserver上均須執行。
?? ?
五:利用Keepalvied實現負載均衡和和高可用性
??? vim /etc/keepalived/keepalived.conf
??? ! Configuration File for keepalived
?? ?global_defs {
?? ??? notification_email {
?? ??? ?? caozhenhuamail@gmail.com
?? ??? }
?? ??? notification_email_from Alexandre.Cassen@firewall.loc
?? ??? smtp_server 127.0.0.1
?? ??? router_id LVS_DEVEL
?? ?}
?? ?vrrp_instance VI_1 {
?? ??? ?state MASTER??? #備份服務器上將MASTER改為BACKUP
?? ??? ?interface eth0
?? ??? ?virtual_router_id 51
?? ??? ?priority 100????? #備份服務器將100改為98
?? ??? ?advert_int 1
?? ??? ?authentication {
?? ??? ??? ?auth_type PASS
?? ??? ??? ?auth_pass 1111
?? ??? ?}
?? ??? ?virtual_ipaddress {
?? ??? ??? ?10.3.0.60
?? ??? ?}
?? ?}
?? ?virtual_server 10.3.0.60 80 {
?? ??? ?delay_loop 6
?? ??? ?lb_algo rr
?? ??? ?lb_kind DR
?? ??? ?protocol TCP
?? ??? ?real_server 10.3.0.69 80 {
?? ??? ??? ?weight 3?????????????? #(權重)
?? ??? ??? ?TCP_CHECK {
?? ??? ??? ??? ?connect_timeout 10?????? #(10秒無響應超時)
?? ??? ??? ??? ?nb_get_retry 3
?? ??? ??? ??? ?delay_before_retry 3
?? ??? ??? ??? ?connect_port 80
?? ??? ??? ?}
?? ??? ?}
?? ??? ?real_server 10.3.0.83 80 {
?? ??? ??? ?weight 3?????????????? #(權重)
?? ??? ??? ?TCP_CHECK {
?? ??? ??? ??? ?connect_timeout 10?????? #(10秒無響應超時)
?? ??? ??? ??? ?nb_get_retry 3
?? ??? ??? ??? ?delay_before_retry 3
?? ??? ??? ??? ?connect_port 80
?? ??? ??? ?}
?? ??? ?}
?? ?}
??? service keepalived start|stop
??? 備注:BACKUP服務器同上配置,只需將紅色標示的部分改一下即可.
六:測試
?? 1 realserver其中一臺服務停止:
???? 我用的是兩臺nginx服務器
???? ps -aux |grep nginx? #查找nginx主線程pid
????
???? kill -QUIT 4195
???? 觀察DR情況:
????
???? 10.3.0.83服務器已經被清除了,證明ok;
??? 2. 把剛才停掉得83的nginx啟動
???
??? 繼續觀察DR情況:
???
??? 83已經成功被加入到realserver組
?? 3:停掉master的keepalived看是否backup能接管:
???
??? 訪問10.3.0.60 觀察backup的DR情況:
???
??? 發現backup的DR接收到了客戶端發出得請求,而且成功轉發,也可以通過日志信息查看
??? tail -f /var/log/message
???
?? 4:我們把master的keepalived重新啟動,觀察客戶端請求是否會重新被master接收并且轉發:
???
???? visit: http://10.3.0.60? 觀察
???? master:
????
???? 請求成功接收并且轉發
???? backup 日志:
???? tail -f /var/log/message
????
????
???? 備份服務器日志說明它已經進入備份狀態,而且也沒有接收到客戶端發來的請求;
?七: 以上是自己操作的流程,有什么問題請大家給予指正,對了,還有點要說明的是如果你的機器的防火墻都開得話,試驗是不可能成功的,除非你對防火墻的過濾規則 設置的正確,因為這次主要是測試負載均衡,所以我直接把所有的機器的iptables都停掉了,service iptables stop;
?
轉自:http://www.cnblogs.com/czh-liyu/archive/2011/12/01/2270973.html
總結
以上是生活随笔為你收集整理的虚拟机 搭建LVS + DR + keepalived 高可用负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索罗为什么退役
- 下一篇: 虎牙直播app怎么更新(直播个人中心)