LVS Keeplived原理與實現

2021-09-10 17:54:44 字數 4258 閱讀 6956

常用的軟負載均衡由如下幾種

nginx+keeplived

lvs+keeplived

haproxy+keeplive

dns負載均衡

lvs是四層負載均衡,也就是說建立在osi模型的第四層——傳輸層之上,傳輸層上有我們熟悉的tcp/udp,lvs支援tcp/udp的負載均衡。

lvs的**主要通過修改ip位址(nat模式,分為源位址修改snat和目標位址修改dnat)、修改目標mac(dr模式)來實現。

主要有nat模式和dr模式。

負載均衡伺服器配置

新增虛擬服務指定對外ip(vip)新增虛擬服務指定對外ip(vip)

ipvsadm -a -t 192.168.40.17:80 -s rr

針對lvs伺服器註冊真實web伺服器ip

ipvsadm -a -t 192.168.40.17:80 -r 192.168.41.31:80

ipvsadm -a -t 192.168.40.17:80 -r 192.168.41.33:80

檢視vip和rs是否已經配置成功。

ipvsadm -l -n

web伺服器配置

1)新增環路埠lo的對外ip&路由

ifconfig lo 192.168.40.17 netmask 255.255.255.255

route add -host 192.168.40.17 dev lo

2)需要arp抑制

echo 「1」>***/lo/arp_ignore

echo 「2」>***/lo/arp_announce

echo 「1」>***/all/arp_announce

echo 「2」>***/all/arp_announce

如果不進行arp抑制,客戶端請求不知道去負載均衡伺服器還是web伺服器。arp抑制後web伺服器只能接受從負載均衡伺服器中**的請求。

keepalived:集群管理中保證集群高可用的乙個服務軟體,用來防止單點故障。keepalived主要是上線了vrrp協議。

vrrp(virtual router redundancy protocol 虛擬路由冗餘協議):實現路由器高可用協議,解決路由器單點問題。將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面通過競選產生乙個master和多個backup,master上面有乙個對外提供服務的vip(該路由器所在區域網內其他機器的預設路由為該vip)。master會發組播給backup,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據vrrp的優先順序來選舉乙個backup當master。這樣的話就可以保證路由器的高可用了。

keepalived高可用集群之間是通過 vrrp進行通訊的, vrrp是通過過競選機制來確定主備的,主的優先順序高於備,因此,工作時主會優先獲得所有的資源,備節點處於等待狀態,當主掛了的時候,備節點就會接管主節點的資源,然後頂替主節點對外提供服務。

安裝keeplived和lvs管理軟體ipvsadm

yum -y install keepalived ipvsadm

配置主備keepalived.conf

vim /etc/keepalived/keepalived.conf

! configuration file for keepalived

global_defs

notification_email_from [email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id lvs_devel

}vrrp_instance vi_1

virtual_ipaddress

}virtual_server 192.168.112.180 80

} real_server 192.168.112.136 80 }

}

關閉主備防火牆

service firewalld stop

檢視防火牆狀態

service firewalld status

啟動主備keepalived

systemctl start keepalived

關閉命令:

systemctl stop keepalived

檢視主備vip繫結情況

ip a l ens33

其中被負載均衡伺服器只需要修改

state master --> state backup

priority 100 --> priority 50

安裝httpd

編寫靜態頁面:

web伺服器1配置

echo webserver1 > /var/www/html/index.html

web伺服器2配置

echo webserver2 > /var/www/html/index.html

編寫加入lvs集群指令碼

vim lvs.sh

#!/bin/bash vip=192.168.112.180 mask=255.255.255.255 dev=ens33:1 case $1 in start)

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig $dev $vip netmask $mask broadcast $vip up

route add -host $vip dev $dev ;; stop)

ifconfig $dev down

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce ;;

*)echo 「usage: $(basename $0) start|stop」

exit 1 ;; esac

啟動指令碼,加入lvs集群

sh lvs.sh start

ipvsadm檢視lvs配置資訊

ipvsadm -ln

開啟服務

結果1:由於瀏覽器中設定http中keeplive屬性,可以通過wireshark分析tcpdump抓的包看到。需要每隔6秒鐘左右重新整理可以看到請求被分配到兩台web伺服器上。

2.abs壓力測試,看連線數

ab -n 100000 -c 200

ipvsadm -l -n --rate

結果2:請求連線平均分配在兩台web伺服器上。

3.主備測試:將主排程器停止,看vip是否切換,備排程器是否能正常工作。

結果3:vip被切換到了被伺服器上。

4.負載測試,停止一台伺服器,另一台是否能正常工作

結果4:另一台伺服器也可以正常工作。

volatile原理與技巧

為什麼使用 volatile 比同步代價更低?同步的代價,主要由其覆蓋範圍決定,如果可以降低同步的覆蓋範圍,則可以大幅提公升程式效能。而volatile 的覆蓋範圍僅僅變數級別的。因此它的同步代價很低。volatile 原理是什麼?volatile 的語義,其實是告訴處理器,不要將我放入工作記憶體,...

Socket 原理與使用

1.什麼是 tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission control protocol internet protocol 即傳輸控制協議 網間協議,是乙個工業標準的協議集,它是為廣...

Hive原理與不足

一棵操作符樹。hql insert overwrite table access log temp2 select a.user,a.prono,p.maker,p.price from access log hbasea join product hbasep on a.prono p.prono...