-------------------LVS專題------------------------linux
LVS原理詳解及部署之二:LVS原理詳解(3種工做方式8種調度算法)數據庫
LVS原理詳解及部署之五:LVS+keepalived實現負載均衡&高可用網絡
-------------------------------------------------架構
以上兩篇LVS文章已經介紹了LVS的理論知識,本篇博文就介紹如何手動的配置LVS,目錄:併發
1、環境需求&安裝LVS軟件負載均衡
2、手動配置LVS負載均衡器tcp
3、RS節點服務器手動配置
4、測試LVS是否生效
5、部署成功後的另外一些問題
1、環境需求&安裝LVS軟件
環境準備:三臺虛擬機
1)此環境是針對內部服務的LVS架構,如數據庫,緩存,共享存儲等業務。
虛擬機角色 | IP地址 | 備註 |
LVS負載均衡器 | 192.168.41.181 | VIP地址:192.168.40.17 |
http服務器RS1 | 192.168.41.31 | |
http服務器RS2 | 192.168.41.33 |
安裝LVS軟件
1)在安裝LVS軟件以前,先肯定兩條HTTPserver是可以正常訪問的。
2)下載軟件
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
這裏咱們使用的2.4版本,而且注意內核是2.6版本的,若是你的版本是6.X版本的話,那麼可使用2.6版本
3)編譯安裝
須要建立一個軟鏈接:ln -s /usr/src/kernels/2.6.18-238.el5-i686 /usr/src/linux
此處紅色許根據本身的系統來進行定義,可使用tab鍵來補齊。
tar -zxf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
lsmod |grep ip_vs
ipvsadm --》由於此時系統尚未把ipvs模塊加載進系統,須要咱們執行ipvsadm命令纔會加載進去
或者modprobe ip_vs。
[root@localhost ipvsadm-1.24]# lsmod |grep ip_vs ip_vs_rr 6081 1 ip_vs 78081 3 ip_vs_rr |
2、手動配置LVS負載均衡器
正常工做中是不會手動配置的,也不會使用腳本配置的。最終咱們是經過配置文件生效的,結合keepalived來進行部署的。
1)負載均衡器上配置VIP地址
ifconfig eth0:1 192.168.40.17 netmask 255.255.254.0
route add -host 192.168.40.17 dev eth0
2)ipvsadm添加LVS服務
參數 | 參數說明 |
-A | -A --add-service 添加一個帶選項的虛擬服務。 Add a virtual service. A serviceaddress is uniquely defined by a triplet: IP address, portnumber, and protocol. Alternatively a virtualservice may be defined by a firewall-mark. |
-t | 指定虛擬服務器的IP地址和端口 |
-s | -s,--scheduler scheduling-method 調度算法 |
-p | 會話保持按秒計算 |
-a | -a在對應的VIP下添加RS節點 |
-g | 指定此LVS的工做模式爲-g -g爲DR模式 |
-l | 指定LVS的工做模式爲-l -l爲tunnel模式 |
-m | 指定LVS的工做模式爲NAT模式 |
-w | 指定RS節點的權重 |
-D | 刪除虛擬服務 格式:ipvsadm-D -t|u|f service-address Delete a virtual service, alongwith any associated real servers. |
-C |
-C, --clear Clear the virtual server table清空lvs原有的配置。 |
-set | 設置tcp tcpfn udp 的鏈接超時時間(通常來講高併發的時候小一點點。 |
ipvsadm -C #請用LVS原有的配置
ipvsadm -A -t 192.168.40.17:80 -s rr -p 20 #添加虛擬服務指定VIP
ipvsadm -a -t 192.168.40.17:80 -r 192.168.41.31:80 -g -w 10#針對虛擬服務添加RS節點
ipvsadm -a -t 192.168.40.17:80 -r 192.168.41.33:80 -g -w 10
ipvsadm -L -n #查看VIP和RS是否已經配置成功。
[root@localhost ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.40.17:80 rr persistent 20 -> 192.168.41.33:80 Route 10 0 0 -> 192.168.41.31:80 Route 10 0 0 |
LB上刪除虛擬服務
ipvsadm -D -t 192.168.40.17:80
3、RS節點服務器手動配置
1)添加lo端口的VIP&路由
ifconfig lo 192.168.40.17 netmask 255.255.255.255 (因爲RS的VIP不是用來通信,而且這裏必定要設置24位掩碼)
route add -host 192.168.40.17 dev lo
2)ARP抑制
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_announce
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
4、測試LVS是否生效
在LB上面輸入命令ipvsadm -L -n就可以查看LB上面的會話分配。在前面加上watch能夠動態的查看ipvsadm的會話分配。watch ipvsadm -L -n.
1)測試RS節點是否正常訪問
2)測試從LB可否正常訪問RS
3)測試客戶端可否正常訪問VIP
在測試的時候能夠先把防火牆關閉掉,通常按照這樣配置就可以實現LVS的負載均衡了。
至此咱們的LVS DR模式負載均衡已經配置完成了。至於不一樣的調度算法啊-s 不一樣的工做模式-g(DR) -l(TUNNEL) -m(NAT)服務器端基本上沒有什麼差異。只是在客戶端上有必定的差異。
NAT模式:
客戶端一樣須要配置VIP,進行ARP抑制,而且要服務器端開啓內核轉發功能,配置LB的DIP(內網IP地址)做爲默認網關。
開啓內核轉發功能:vi /etc/sysctl net.ipv4.ip_forword = 1
route add default gw 192.168.41.181
Tunnel模式:
客戶端須要先開啓Tunnel協議支持。
/sbin/modprobe ipip
/sbin/route add –host 192.168.40.17 devtun1
echo」1」>/proc/sys/net/ipv4/conf/tun1/arp-ignore
echo」2」>/proc/sys/net/ipv4/conf/tun1/arp_announce
echo」0」 >/proc/sys/net/ipv4/conf/tun1/rp_filter
echo」1」 >/proc/sys/net/ipv4/conf/tun1/forwarding
echo」1」 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo」2」 >/proc/sys/net/ipv4/conf/all/ arp_announce
5、部署成功後的另外一些問題
1)當咱們的RS節點出現問題,LB如何知道。若是不知道是會把會話鏈接接續轉發到RS上面。
2)若是LB出現故障,那麼整個網絡就出現故障。
針對上面的1問題,咱們就須要一種RS節點健康檢查機制。定時的去檢測RS是否正常,若是出現不正常那麼就把這個RS從VIP服務裏面刪除掉。若是恢復正常了,就再把RS添加進來。針對2問題,咱們能夠另外再架設一臺LB服務器,做爲備LB服務器。那麼當主LB出現故障,備LB服務器就會啓動接管主LB服務器的工做,接管它的資源(IP地址,在網絡中的角色身份等)
而上面提到的這些咱們就須要結合keepalived來完成。因此後續咱們開始講keepalived+lvs結合適用。完成RS節點健康檢查和LVS的高可用性功能。