linux搭建主備負載均衡


1:原理圖

 

 

 

底層原理

 

 

2:負載集合的功能:

1)客戶端傳過來的請求,在負載均衡那里,根據算法,把用戶的請求給指定的服務器,

2)如果負載均衡主機宕機了,備機馬上接手,如果主機恢復了,備機馬上退后

3)如果某個服務器掛了,該服務器馬上被踢出去,負載均衡轉發請求不發該服務器,如果服務器恢復了,馬上添加進來,添加到負載均衡的服務器群中。

3:負載均衡搭建

3.1准備4台虛擬機,2台作為負載均衡主從機,2台作為httpd服務器

3.2獲取2台服務器的ip

[root@fei etc]# ifconfig
eth1      
          inet addr:192.168.163.130  

[root@fei etc]# ifconfig
eth1       
          inet addr:192.168.163.131   
 

3.3分別為2台服務器配置vip

 

[root@fei ~]# cd /etc/init.d/

[root@fei ~]#touch realserver

[root@fei ~]#vim realserver

SNS_VIP=192.168.163.150
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

 

為realserver文件配置權限

chmod 750 realserver

//啟動

 

[root@fei init.d]# service realserver  start
RealServer Start OK
//效果

[root@fei ~]# ipconfig

lo:0      Link encap:Local Loopback  
          inet addr:192.168.163.150  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

//2台服務器配置默認訪問頁面

[root@fei html]# vim /var/www/html/index.html

130 130 130

[root@fei html]# vim /var/www/html/index.html

130 130 131

//分別開啟2台httpdf服務器

[root@fei html]# service httpd start
正在啟動 httpd:

效果如下

 

 

以上參數說明

SNS_VIP=192.168.163.150          #定義VIP變量

. /etc/rc.d/init.d/functions #導腳本庫

case "$1" in #case語句 $1傳遞給該shell腳本的第一個參數

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #設置Lo:0 VIP  netmask  及廣播

/sbin/route add -host $SNS_VIP dev lo:0   ##route del 增加本地路由

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

sysctl -p >/dev/null 2>&1 # -p <file>   (default /etc/sysctl.conf) 將標准信息輸入設備空文件

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1      #route del 刪除本地路由

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 "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"  #$0 是腳本本身的名字

exit 1 #表示進程正常退出

esac #case結束

exit 0 #表示進程非正常退出

 

 

 

 

1):安裝   keepalived

yum –y install   keepalived

2):配置 keepalived 

 >  /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

 

global_defs {
#   notification_email {             
#       admin@toxingwang.com
#   }
#   notification_email_from master@toxingwang.com
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
        router_id LVS_DEVEL
}
vrrp_instance VI_1 {
        state MASTER
        interface eth1
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                192.168.163.150
        }
}
virtual_server 192.168.163.150 80 {
        delay_loop 6
        lb_algo wrr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 0
        protocol TCP
        real_server 192.168.163.130 80 {
                weight 3
                TCP_CHECK {
                        connect_timeout 10
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
        }

        real_server 192.168.163.131 80 {
                weight 3
                TCP_CHECK {
                        connect_timeout 10
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
        }
}

 

啟動並查看日志

[root@fei keepalived]# service keepalived start
正在啟動 keepalived:                                      [確定]
[root@fei keepalived]# tail -f /var/log/messages

ar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Mar 26 05:37:07 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Entering MASTER STATE

以上就把主機的負載均衡配置好了。

3.5 重復3.4,在另外一台虛擬機上配置負載均衡備機

配置說明

 

global_defs {                        ##全局配置部分

#   notification_email {             ##下面幾行均為全局通知配置,可以實現出現問題后報警

#       admin@toxingwang.com

#   }

#   notification_email_from 2637282556@qq.com

#  2637282556.qq.com

#   smtp_connect_timeout 30

router_id LVS_DEVEL             ##設置lvs的id,在一個網絡內應該是唯一的

}

vrrp_instance VI_1 {            ##設置vrrp組,唯一且同一LVS服務器組要相同

state MASTER             ##備份LVS服務器設置為BACKUP

interface eth0  # #設置對外服務的接口,如果虛擬機是復制的,該接口可能是eth1            

virtual_router_id 51        ##設置虛擬路由標識

priority 100                   #設置優先級,數值越大,優先級越高,backup設置為99,這樣就能實現當master宕機后自動將backup變為master,而當原master恢復正常時,則現在的master再次變為backup。

advert_int 1            ##設置同步時間間隔

authentication {         ##設置驗證類型和密碼,master和buckup一定要設置一樣

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {          ##設置VIP,可以多個,每個占一行

192.168.163.150

}

}

virtual_server 192.168.163.150 80 {/

delay_loop 6            ##健康檢查時間間隔,單位s,查看httpd服務器還在不

lb_algo wrr             ##負載均衡調度算法設置為加權輪叫

lb_kind DR                              ##負載均衡轉發規則

nat_mask 255.255.255.0   ##網絡掩碼,DR模式要保障真實服務器和lvs在同一網段

persistence_timeout 50    ##會話保持時間,單位s,就是與httpd服務器保持的時間,在該時間段的,所有請求都跳轉到該hhtpd的服務器,(session計算規則,最后一次服務器請求的時間作為開始時間)

protocol TCP                           ##協議

real_server 192.168.163.130 80 {      ##真實服務器配置,80表示端口

weight 3                             ##權重

TCP_CHECK {                       ##服務器檢測方式設置 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 0    ##連接超時時間

nb_get_retry 3      ##失敗重試次數

delay_before_retry 3 ##失敗重試的間隔時間

connect_port 80      ##連接的后端端口

}

}

 

real_server 192.168.163.131 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM