常用的軟負載均衡由如下幾種
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)web伺服器配置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
1)新增環路埠lo的對外ip&路由keepalived:集群管理中保證集群高可用的乙個服務軟體,用來防止單點故障。keepalived主要是上線了vrrp協議。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伺服器只能接受從負載均衡伺服器中**的請求。
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安裝httpdpriority 100 --> priority 50
編寫靜態頁面:
web伺服器1配置編寫加入lvs集群指令碼echo webserver1 > /var/www/html/index.html
web伺服器2配置
echo webserver2 > /var/www/html/index.html
vim lvs.sh
#!/bin/bash vip=192.168.112.180 mask=255.255.255.255 dev=ens33:1 case $1 in start)啟動指令碼,加入lvs集群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
sh lvs.sh startipvsadm檢視lvs配置資訊
ipvsadm -ln開啟服務
結果1:由於瀏覽器中設定http中keeplive屬性,可以通過wireshark分析tcpdump抓的包看到。需要每隔6秒鐘左右重新整理可以看到請求被分配到兩台web伺服器上。
2.abs壓力測試,看連線數
ab -n 100000 -c 200結果2:請求連線平均分配在兩台web伺服器上。ipvsadm -l -n --rate
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...