標籤(空格分隔): linuxlinux
LVS一共四種工做模式。其中,DR模式是比較經常使用的模式之一,配置較麻煩,這裏重點記錄一下它的核心要點及優化。先看工做流程,上圖:nginx
主機名 | IP地址 | 角色 |
---|---|---|
lb01 | 10.0.0.5/24 | 調度器 |
web01 | 10.0.0.7/24 | RS服務器 |
web02 | 10.0.0.8/24 | RS服務器 |
# lb01操做 yum install ipvsadm -y rpm -qa ipvsadm lsmod |grep ip_vs ln -s /usr/src/kernels/`uname -r` /usr/src/linux #注意Centos 6.X安裝lvs,使用1.26版本。而且須要先安裝yum install libnl* popt* -y
執行ipvsadm(modprobe ip_vs)把ip_vs模塊加載到內核 [root@lb01 ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn #IP Virtual Server version 1.2.1 ---- ip_vs 內核模塊版本
lb01添加虛擬IPweb
ifconfig eth0:0 10.0.0.3/24 up #==>簡便寫法
[root@lb01 ~]# ipvsadm-save #保存當前的lvs的規則,能夠用ipvsadm-restore恢復 [root@lb01 ~]# ipvsadm -C #clear the whole table 清空lvs的全部規則 [root@lb01 ~]# ipvsadm --set 30 5 60 #設置tpc tcpfin udp超時時間 [root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20 -A # add virual service with options [root@lb01 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.3:80 wrr persistent 20
-t tcp服務 -s 指定輪詢算法 rr wrr wlc -p 指定會話保持時間
添加服務員RS服務器算法
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1 [root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1 [root@lb01 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.3:80 wrr persistent 20 -> 10.0.0.7:80 Route 1 0 0 -> 10.0.0.8:80 Route 1 0 0
[root@lb01 ~]# ipvsadm-save -A -t www.etiantian.org:http -s wrr -p 20 -a -t www.etiantian.org:http -r 10.0.0.7:http -g -w 1 -a -t www.etiantian.org:http -r 10.0.0.8:http -g -w 1
參數說明後端
-a #添加rs服務器 -r #real server RS ip -g #dr 模式 -w #l weight 權重 -t #10.0.0.3:80 使用tcp協議,負載均衡的ip地址是10.0.0.3:80
1.在每臺real server端執行
綁定vip瀏覽器
ip addr add 10.0.0.3/32 dev lo label lo:0
2.手工在RS端抑制ARP響應服務器
cat >>/etc/sysctl.conf<<EOF net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 EOF sysctl -p
建議日1000千萬到2000千萬PV或併發請求1萬如下均可以考慮用haproxy/nginx或(LVS-NAT模式),DR模式效率很高,但配置麻煩。併發
因後端服務器上一樣配置了虛擬IP,若是在客戶端進行ARP請求時,後端服務器以自身的MAC地址進行了回覆,則起不到負載均衡的效果,此時客戶端直接連到了某臺後端服務器上。負載均衡
後端服務器的虛擬IP必須綁定到lo:0上,同時指定子網掩碼是255.255.255.255,不然ARP禁用會出現異常。運維
持久鏈接(Persistence)的問題。持久鏈接使同一個客戶端在超時時間內(ipvsadm-p參數指定,keepalived中的persistence_timeout指令)會持續地鏈接到同一臺後端服務器,這個是4層上的持久鏈接。來自客戶端的每一個新的鏈接會重置該超時時間。
Keepalived對後端服務器的健康檢查,推薦使用應用層檢查方式,另外能夠配置Keepalived使用管理員自定義的腳本進行健康檢查(MISC_CHECK指令)
負載均衡器之間使用vrrp協議進行高可用設置時,禁用iptables或者打開對vrrp協議的支持。
LVS集羣中的負載均衡器,推薦使用16GB及以上內存,同時採用多隊列網卡提升網卡吞吐量減小處理延時。
LVS集羣中的後端服務器,根據IO密集型和CPU密集型2類,能夠分別使用RAID十、SSD及高頻多核CPU來優化。
參考書籍【Linux運維最佳實踐】