LVS

搭建目的:
公司window服務上有幾個單點服務需要LVS服務來做高可用
環境:
Window 2008R2 兩臺
Linux Centos6.5 一臺

開始查找相關資料
1.在 Win 主機上新增環回虛擬網卡(Microsoft Loopback Adapter)
以管理員身份運行 cmd 後,在 cmd 命令窗口中執行:hdwwiz,彈出如下界面:

下一步後,勾選手動選擇:

點選網絡適配器,繼續下一步:

左側選擇 Microsoft,右側找到如圖硬件(Windows Server 2008/7 中則叫:Microsoft Loopback Adapter)

二、設置環回網卡 TCP/IP 信息
更新網卡名稱

配置VIP地址和掩碼

這些老傢伙基本都不用了,但還是記錄下吧):

子網掩碼 255.255.255.255 但在 MS NT/2K/XP 會被認爲是無效的。 可以有以下解決方法: 在 MS NT/2K/XP 中,網絡界面(interfaces)在
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
找到適當的網絡連接 IP 地址,修改 subnetMask 子網掩碼,(注意修改方式)不需要重啓,只需重新激活該網絡連接即可

三、修改客戶端網卡接口、環回接口連接模式(DR)
netsh interface ipv4 set interface "realserver" weakhostreceive=enabled
netsh interface ipv4 set interface "realserver" weakhostsend=enabled
netsh interface ipv4 set interface "本地連線" weakhostreceive=enabled
netsh interface ipv4 set interface "本地連線" weakhostsend=enabled
說明:
上面的四條命令一定要輸入,因爲 windows 2008 的默認中,網卡的 stronghost 處於啓用狀態,這個設置可以防止跨接口轉發數據包,這就表明:來自一個網絡適配器的請求不會被環回適配器處理,因爲這個請求來自於不同的網絡適配器。爲了將環回適配器從 stronghost 切換爲 weakhost,需要運行以上四條命令,要不然 TCP 的狀態會一直處於 SYN_RECV 狀態。

四、ipvsadm策略配置

LVS的NAT模式

vim /usr/local/sbin/lvs_nat.sh

編輯寫入如下內容:

#! /bin/bash

director服務器上開啓路由轉發功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

關閉 icmp 的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

director設置 nat 防火牆

iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

director設置 ipvsadm

IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t VIP:80 -s wrr
$IPVSADM -a -t VIP:80 -r R1IP:80 -m -w 1
$IPVSADM -a -t VIP:80 -r R2IP:80 -m -w 1

LVS的DR模式
硬件配置

• Director節點:  (eth0 192.168.0.8  vip eth0:0 192.168.0.38)
• Real server1: (eth0 192.168.0.18 vip lo:0 192.168.0.38)
• Real server2: (eth0 192.168.0.28 vip lo:0 192.168.0.38)

Director 上配置

vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.0.38
rs1=192.168.0.18
rs2=192.168.0.28
ifconfig eth0:0 down
ifconfig eth0:0 200.200.6.200 broadcast 200.200.6.200 netmask 255.255.255.255 up

route add -host 200.200.6.200 dev eth0:0
ipvsadm -C
ipvsadm -A -t $vip:80 -s wrr
ipvsadm -a -t $vip:80 -r $rs1:80 -g -w 3
ipvsadm -a -t $vip:80 -r $rs2:80 -g -w 1

rs 上配置

vim /usr/local/sbin/lvs_dr_rs.sh

#! /bin/bash
vip=192.168.0.38
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
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/al
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

LVS的TUN模式

Director 上配置
ifconfig tunl0 192.168.181.10 broadcast192.168.181.10 netmask 255.255.255.255 up
route add -host 192.168.181.10 dev tunl0
ipvsadm -A -t 192.168.181.10:80 -s rr
ipvsadm -a -t 192.168.181.10:80 -r192.168.181.141:80 -i
ipvsadm -a -t 192.168.181.10:80 -r192.168.181.142:80 -i

rs 上配置
ifconfig tunl0 192.168.181.10 broadcast192.168.181.10 netmask 255.255.255.255 up
route add -host 192.168.181.10 dev tunl0
echo "1">/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

注意:
在你一直訪問找不到服務器時,那麼可能是因爲rpfilter,當系統接收到一個ip包時,檢查該ip包是否符合要求,不合要求的包會被丟掉。該技術就被叫做rpfilter,反向過濾技術,可以通過修改真實服務器realserver的sysctl.conf來解決:
修改net.ipv4.conf.default.rp_filter= 1的1爲0

若要同時綁定多個端口可用以下配置

基於防火牆標記實現多端口綁定http和https服務,同時也做到了負載均衡

iptables -t mangle -A PREROUTING -d 192.168.8.40(VIP) -p tcp --dport 80 -j MARK --set-mark 10

iptables -t mangle -A PREROUTING -d 192.168.8.40(VIP) -p tcp --dport 443 -j MARK --set-mark 10

service iptables save

配置ipvsadm

ipvsadm -A -f 10 -s rr

ipvsadm -a -f 10 -r 192.168.8.101 -g

ipvsadm -a -f 10 -r 192.168.8.102 -g

參考網址:
https://blog.csdn.net/reblue520/article/details/50889235
https://www.cnblogs.com/liwei0526vip/p/6370103.html
LVS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章