lvs(linux+virtual+server)
高可用對負載均衡的整合
ipvsadm—-四層
-L 列出策略
-C 清空
-A 添加
lvs一共有三種工作模式(NAT、DR、Tun(隧道))—其中性能最高的是DR
DR模式:
*****************************
client---*--VS---(處於同一網段)---RS--*---client
*****************************
VS:是調度器(s1)、RS:把arp屏蔽掉(s2和s3)
DR模式工作在二層(二層不能進行端口轉發),將比特流轉換爲數據幀
RS【In:Drop vip Out:轉換爲Rip出去】
RS在啓用arp的時候,廣播只有RIP沒有UIP
NAT模式:client---vs----rs----vs---client
在vs-rs階段: cip-vip 轉換爲 cip-rip
在rs-vs階段: cip-rip 轉換爲 cip-vip
此模式支持端口轉發,內部地址可以轉換,地址和端口可以被改
Tun(隧道模式):
client -------vs--------rs--------client
此模式在不斷的增加ip頭
使用DR模式:
1.安裝rpm包(from 老吳)–ldirectord-3.9.5-3.1.x86_64.rpm
yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
2.更改ldirectord的目錄所在位置
cd /usr/share/doc/ldirectord-3.9.5/
cp ldirectord.cf /etc/ha.d/ #只有在這個目錄下才能生效
3.關閉兩個服務器的心跳
/etc/init.d/heartbeat stop(把兩臺server的心跳都停掉)
4.策略的查看
yum install -y ipvsadm
ipvsadm -L(列出策略)
5.添加策略
ip addr add 172.25.39.100/24 dev eth0-----把100加到eth0上
ipvsadm -A -t 172.25.39.100:80 -s rr(rr是負載均衡算法)
ipvsadm -a -t 172.25.39.100:80 -r 172.25.39.3:80 -g
ipvsadm -a -t 172.25.39.100:80 -r 172.25.39.2:80 -g
/etc/init.d/ipvsadm save(保存策略)
[root@server1 ha.d]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.39.100:80 -s rr
-a -t 172.25.39.100:80 -r 172.25.39.2:80 -g -w 1
-a -t 172.25.39.100:80 -r 172.25.39.3:80 -g -w 1
[root@server1 ha.d]# ipvsadm -ln(加n可以查看ip)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.39.100:80 rr
-> 172.25.39.2:80 Route 1 0 0
-> 172.25.39.3:80 Route 1 0 0
[root@server1 ha.d]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.39.100:http rr
-> server2:http Route 1 0 0
-> server3:http Route 1 0 0
6.在server2和server3上相同
1) /etc/init.d/httpd start(100在s2上也有)
2) yum install -y arptables_jf(針對arp協議的火牆)
arptables -L(查看火牆策略)
3)更改策略(在server2和server3都要做,相當於rs)
ip addr add 172.25.39.100/24 dev eth0-----把100加到eth0上
arptables -A IN -d 172.25.39.100 -j DROP(訪問100的s2丟棄無視)---(啓用arp,廣播自己只有rip,不說自己有vip,否則會地址衝突錯亂)
arptables -A OUT -s 172.25.39.100 -j mangle --mangle-ip-s 172.25.39.2(當要出去弄100時轉換爲真實的server)
/etc/init.d/arptables_jf save(保存策略)
arptables -nL(驗證)
7.測試:在物理機上查看100連接點
1)[root@foundation39 ~]#arp -an | grep 100
? (172.25.39.100) at 52:54:00:5a:44:db [ether] on br0(爲server1的,正確)
2)http://172.25.39.100/----出現server2和server3輪詢
3)[root@foundation39 ~]# curl 172.25.39.100
<h1> server2 </h1>
[root@foundation39 ~]# curl 172.25.39.100
<h1> server3---www.westos.org </h1>
[root@foundation39 ~]# curl 172.25.39.100
<h1> server2 </h1>
[root@foundation39 ~]# curl 172.25.39.100
<h1> server3---www.westos.org </h1>