LVS-DR模式(原理圖詳解)


標簽(空格分隔): linux

筆者Q:972581034 交流群:605799367。有任何疑問可與筆者或加群交流

前言

LVS一共四種工作模式。其中,DR模式是比較常用的模式之一,配置較麻煩,這里重點記錄一下它的核心要點及優化。先看工作流程,上圖:


實戰配置一台LVS負載均衡服務器

一、主機列表

主機名 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    內核模塊版本

三、配置LVS服務器

lb01添加虛擬IP

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

四、手工在RS端綁定

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

五、瀏覽器測試


四種工作模式

  • DR(Direct Routing)
  • NAT(Network Address Translation)
  • TUN(Tunneling)
  • FULLNAT(Full Network Address Translation)

建議日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類,可以分別使用RAID10、SSD及高頻多核CPU來優化。

參考書籍【Linux運維最佳實踐】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM