lvs的DR模式部署
一.環境準備
4臺機器需要在一個內網環境中,或在一個交換機下。
LVS+keepalived主機
真實:10.10.10.10
虛擬:10.10.10.135
LVS+keepalived備機
真實:10.10.10.11
虛擬:10.10.10.135
後端web伺服器A
真實:10.10.10.60
虛擬:10.10.10.135
後端web伺服器B
真實:10.10.10.61
虛擬:10.10.10.135
二.安裝
後端web(A和B操作)
需要A和B均操作如下,在建立測試頁面部分需要變動
1.安裝httpd伺服器
yum install -y httpd
systemctl start httpd
systemctl enable httpd
2.建立測試頁面並測試,A和B機器頁面要不一樣
echo "welcome A" > /var/www/html/index.html
curl http://127.0.0.1
3.編寫轉發指令碼
vim forward.sh
#!/bin/bash #網絡卡和vip NET_KA=enp0s8 SNS_VIP=10.10.10.135 case "$1" in start) ifconfig ${NET_KA}:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #/sbin/route add -host $SNS_VIP dev ${NET_KA}:0 echo "1" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/${NET_KA}/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 ${NET_KA}:0 down #route del $SNS_VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/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
4.執行指令碼
bash forward.sh start
5.測試,可以看到出現虛擬ip
ifconfig
負載均衡(配置主)
1.安裝依賴
yum install -y openssl openssl-devel keepalived ipvsadm
2.路由轉發
echo "1" >/proc/sys/net/ipv4/ip_forward
3.配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id LVS_1 # 設定lvs的id,網路內唯一 } vrrp_instance VI_1 { state MASTER #指定Keepalived的角色,MASTER為主,BACKUP為 interface enp0s8 #繫結網絡卡 virtual_router_id 51 #虛擬路由編號,主備要一致 priority 100 #定義優先順序,數字越大,優先順序越高,主DR必須大於備用DR nopreempt #掛掉再啟動後,不進行搶佔 advert_int 1 #主從之間心跳間隔,預設1s authentication { #裝置驗證資訊,主從要一樣 auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.10.10.135 #定義虛擬IP(VIP) } } #定義對外提供服務的LVS的VIP以及port virtual_server 10.10.10.135 80 { delay_loop 6 # 設定健康檢查時間,單位是秒 lb_algo rr # 設定負載排程的演算法為輪詢 lb_kind DR # 設定LVS實現負載的機制 #persistence_timeout 5 #新增後就持久化 protocol TCP real_server 10.10.10.60 80 { # 指定real server1的IP地址 weight 3 # 配置節點權值,數字越大權重越高 TCP_CHECK { #對後端節點進行檢測 connect_timeout 3 #超時時間 nb_get_retry 3 #重試次數 delay_before_retry 3 #多長時間重試 connect_port 80 } } real_server 10.10.10.61 80 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
4.啟動keepalived
systemctl start keepalived
systemctl enable keepalived
5.測試,檢視是否有10.10.10.135這個虛擬ip
ip addr
測試網頁,看是否輪詢了,需要在別的機器上檢測,不能在節點伺服器上檢測。
curl http://10.10.10.135
curl http://10.10.10.135
負載均衡(配置從)
1.安裝依賴
yum install -y openssl openssl-devel keepalived ipvsadm
2.路由轉發
echo "1" >/proc/sys/net/ipv4/ip_forward
3.配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_2 # 設定lvs的id,網路內唯一
}
vrrp_instance VI_1 {
state BACKUP #指定Keepalived的角色,MASTER為主,BACKUP為
interface enp0s8 #繫結網絡卡
virtual_router_id 51 #虛擬路由編號,主備要一致
priority 80 #定義優先順序,數字越大,優先順序越高,主DR必須大於備用DR
nopreempt #掛掉再啟動後,不進行搶佔
advert_int 1 #主從之間心跳間隔,預設1s
authentication { #裝置驗證資訊,主從要一樣
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.135 #定義虛擬IP(VIP)
}
}
#定義對外提供服務的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
delay_loop 6 # 設定健康檢查時間,單位是秒
lb_algo rr # 設定負載排程的演算法為輪詢
lb_kind DR # 設定LVS實現負載的機制
#persistence_timeout 5 #新增後就持久化
protocol TCP
real_server 10.10.10.60 80 { # 指定real server1的IP地址
weight 3 # 配置節點權值,數字越大權重越高
TCP_CHECK { #對後端節點進行檢測
connect_timeout 3 #超時時間
nb_get_retry 3 #重試次數
delay_before_retry 3 #多長時間重試
connect_port 80
}
}
real_server 10.10.10.61 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
4.啟動keepalived
systemctl start keepalived
systemctl enable keepalived
5.測試,檢視是否有10.10.10.135這個虛擬ip
ip addr
測試網頁,看是否輪詢了,需要在別的機器上檢測,不能在節點伺服器上檢測。
curl http://10.10.10.135
curl http://10.10.10.135
三.使用驗證
負載均衡掛掉一個節點,訪問正常
1.在負載均衡主上關機
init 0
2.在瀏覽器測試
curl http://10.10.10.135
web服務掛掉一個節點,訪問正常
1.在web服務A上關機
init 0
2.在瀏覽器測試
curl http://10.10.10.135