4.10 負載均衡分散式
- 軟體環境
CentOS7(4臺)
JDK1.8
2臺http伺服器
2臺負載均衡:lvs+keepAlived - http伺服器安裝配置(2臺)
輸入 yum -y install httpd 安裝http伺服器
輸入 systemctl enable httpd.service 設為開機自啟動
輸入 systemctl start httpd.service 啟動http伺服器
輸入 systemctl status httpd.service 檢視http伺服器狀態
進入 /var/www/html/ 目錄,輸入 vi index.html,隨便寫點內容,標識節點即可
輸入 vi /etc/init.d/realserver 配置真實伺服器,加入以下內容
#!/bin/bash
#description : start realserver
SNS_VIP=192.168.11.200
/etc/rc.d/init.d/functions
case “$1” in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_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
解釋:
#!/bin/bash
#description : start realserver
SNS_VIP=192.168.11.200 #定義VIP變數,注意在同一網段
/etc/rc.d/init.d/functions #導指令碼庫
case “$1” in #case語句 $1傳遞給該shell指令碼的第一個引數
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up $SNS_VIP #增加本地路由 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
;;
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 777 /etc/init.d/realserver 賦予許可權
輸入 service realserver start 啟動服務
輸入 ifconfig 檢視,多出一塊網路卡 - lvs+keepAlived安裝配置
輸入 uname -a 檢視Linux版本,如果為2.6以後,核心中已有lvs
輸入 yum -y install keepalived 安裝keepAlived
輸入 rpm -ql keepalived 檢視rpm包安裝到的目錄
輸入 > /etc/keepalived/keepalived.conf 建立並覆蓋配置檔案
輸入 vi /etc/keepalived/keepalived.conf 編輯配置檔案,加入以下內容
global_defs {
notification_email {
}
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
}
}
virtual_server 192.168.11.200 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.11.135 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
解釋:
global_defs { #全域性配置部分
notification_email { #下面幾行均為全域性通知配置,可以實現出現問題後報警,但功能有限,因此註釋掉,並採用Nagios監視lvs執行情況
}
smtp_connect_timeout 30
router_id LVS_DEVEL #設定lvs的id,在一個網路內應該是唯一的
}
vrrp_instance VI_1 { #設定vrrp組,唯一且同一LVS伺服器組要相同
state MASTER #備份LVS伺服器設定為BACKUP,這裡是MASTER
interface eno16777736 #設定對外服務的介面
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.11.200
}
}
virtual_server 192.168.11.200 80 { #tomcat等伺服器也要為80埠
delay_loop 6 #健康檢查時間間隔,單位s
lb_algo wrr #負載均衡排程演算法設定為加權輪詢
lb_kind DR #負載均衡轉發規則,這是效率最高的規則
nat_mask 255.255.255.0 #網路掩碼,DR模式要保障真實伺服器和lvs在同一網段
persistence_timeout 0 #會話保持時間,單位s,這裡設定保持時間,不能解決session共享問題,session按最後一次請求算
protocol TCP #協議
real_server 192.168.11.135 80 { #真實伺服器配置,80表示埠
weight 1 #權重,和wrr加權輪詢配對出現
TCP_CHECK { #伺服器檢測方式設定 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 10 #連線超時時間
nb_get_retry 3 #失敗重試次數
delay_before_retry 3 #失敗重試的間隔時間
connect_port 80 #連線的後端埠
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
輸入 service keepalived start
可以輸入 tail -f /var/log/messages 檢視日誌
還可以輸入 service keepalived status 檢視執行狀態
4. lvs+keepAlived負載均衡測試
轉發
故障移除
故障恢復自動新增
5. lvs備機搭建
輸入 uname -a 檢視Linux版本,如果為2.6以後,核心中已有lvs
輸入 yum -y install keepalived 安裝keepAlived
輸入 rpm -ql keepalived 檢視rpm包安裝到的目錄
輸入 > /etc/keepalived/keepalived.conf 建立並覆蓋配置檔案
輸入 vi /etc/keepalived/keepalived.conf 編輯配置檔案,加入以下內容
global_defs {
notification_email {
}
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
}
}
virtual_server 192.168.11.200 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.11.135 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
解釋:
global_defs { #全域性配置部分
notification_email { #下面幾行均為全域性通知配置,可以實現出現問題後報警,但功能有限,因此註釋掉,並採用Nagios監視lvs執行情況
}
smtp_connect_timeout 30
router_id LVS_DEVEL #設定lvs的id,在一個網路內應該是唯一的
}
vrrp_instance VI_1 { #設定vrrp組,唯一且同一LVS伺服器組要相同
state BACKUP #備份LVS伺服器設定為BACKUP,這裡是MASTER
interface eno16777736 #設定對外服務的介面
virtual_router_id 51 #設定虛擬路由標識
priority 99 #設定優先順序,數值越大,優先順序越高,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.11.200
}
}
virtual_server 192.168.11.200 80 { #tomcat等伺服器也要為80埠
delay_loop 6 #健康檢查時間間隔,單位s
lb_algo wrr #負載均衡排程演算法設定為加權輪詢
lb_kind DR #負載均衡轉發規則,這是效率最高的規則
nat_mask 255.255.255.0 #網路掩碼,DR模式要保障真實伺服器和lvs在同一網段
persistence_timeout 0 #會話保持時間,單位s,這裡設定保持時間,不能解決session共享問題,session按最後一次請求算
protocol TCP #協議
real_server 192.168.11.135 80 { #真實伺服器配置,80表示埠
weight 1 #權重,和wrr加權輪詢配對出現
TCP_CHECK { #伺服器檢測方式設定 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 10 #連線超時時間
nb_get_retry 3 #失敗重試次數
delay_before_retry 3 #失敗重試的間隔時間
connect_port 80 #連線的後端埠
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
輸入 service keepalived start
可以輸入 tail -f /var/log/messages 檢視日誌
還可以輸入 service keepalived status 檢視執行狀態
6. lvs主備測試
輸入 tail -f /var/log/messages 檢視備機日誌
主機中輸入 service keepalived stop 模擬掛掉
備機自動切換
主機啟動,主機自動上位
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- 從網路到分散式-負載均衡分散式負載
- 分散式架構篇 | OceanBase負載均衡的魅力分散式架構負載
- JMeter分散式壓測/JMeter負載新增/jmeter負載均衡/jmeter Windows系統壓測負載新增JMeter分散式負載Windows
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- [分散式][高併發]負載均衡方案和演算法分散式負載演算法
- 技術分享| Etcd如何實現分散式負載均衡及分散式通知與協調分散式負載
- 分散式系統關注點——如何去實施「負載均衡」?分散式負載
- 搞懂分散式技術9:Nginx負載均衡原理與實踐分散式Nginx負載
- 乾貨 | 獨創分散式網路負載均衡最佳實踐分散式負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- 負載均衡在分散式架構中是怎麼玩起來的?負載分散式架構
- 負載均衡負載
- [原始碼解析] 並行分散式任務佇列 Celery 之 負載均衡原始碼並行分散式佇列負載
- IP負載均衡負載
- WebSocket負載均衡Web負載
- nginx負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡---ribbon負載
- LoadBalancer負載均衡負載
- LVS 負載均衡負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 方案聚焦:高可用的F5分散式雲DNS負載均衡分散式DNS負載
- 一文秒懂分散式、叢集、負載均衡之間的區別分散式負載
- LNMP 分散式叢集(一):Nginx+PHP平臺搭建與負載均衡配置LNMP分散式NginxPHP負載
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- Nginx負載均衡模式Nginx負載模式
- 漫談負載均衡負載
- 負載均衡簡介負載
- golang grpc 負載均衡GolangRPC負載
- gRPC的負載均衡RPC負載
- 負載均衡詳解負載
- 負載均衡知多少?負載
- Linux LVS 負載均衡Linux負載
- 淺談負載均衡負載