一、LVS NAT的實現
實現實驗環境
準備3臺主機,分別作Director,RS1,RS2,通過訪問web服務來測試集羣功能!
各網卡配置如下,
服務器 | 網卡地址 |
Director | eth0:172.16.8.8(作爲VIP) eth1:192.168.10.1(作爲DIP) |
RS1 | eth0:192.168.10.11(作爲RIP) |
RS2 | eth0:192.168.10.12 (作爲RIP) |
拓撲圖:
1.Director服務器的配置
設置VIP與DIP的地址
[root@master ~]# ifconfig eth0 172.16.8.8/16 //VIP [root@master ~]# ifconfig eth1 192.168.10.1/24 //DIP
如下圖:
2、RS1服務器的配置
配置RIP地址:
[root@master ~]# ifconfig eth0 192.168.10.11/24 //RIP
如圖
把RS1服務器的默認網關指向DIP
[root@master ~]# route add default gw 192.168.10.1
如圖
創建測試網頁文件
# yum -y install httpd //沒有httpd的話則安裝
# vim /var/www/html/index.html 寫如如下內容 <h1>web2</h1>
3.RS2服務器的配置
配置RIP
[root@master ~]# ifconfig eth0 192.168.10.12/24 //RIP
如圖
把RS2服務器的默認網關也指向DIP
[root@master ~]# route add default gw 192.168.10.1
如圖:
創建網頁文件:
# yum -y install httpd //沒有httpd的話則安裝
# vim /var/www/html/index.html 寫如如下內容 <h1>web2</h1>
4 、在Director服務器上配置集羣服務
打開IP轉發:
# vim /etc/sysctl.conf net.ipv4.ip_forward = 1
[root@master ~]# yum -y install ipvsadm [root@master ~]# ipvsadm -A -t 172.16.8.8:80 /這裏採用默認調度方法wlc來配置集羣 [root@master ~]# ipvsadm -a -t 172.16.8.8:80 -r 192.168.10.11:80 -m -w 3 //添加RS1記錄,lvs類型爲nat,RS權重爲3 [root@master ~]# ipvsadm -a -t 172.16.8.8:80 -r 192.168.10.12:80 -m -w 1 //添加RS2記錄,lvs類型爲nat,RS權重爲1
如圖:
5、打開遊覽器輸入VIP地址172.16.8.8測試
查看ipvsadm狀態
從上圖看出,nat集羣服務已經生效,從Conns,InPkts值來看二者RS權重比3:1,基本符合設定值
二、LVS-DR的配置
VIP和RIP在同一公網網段
服務器 | 網卡地址 |
Director | eth0:172.16.8.8(作爲DIP) eth0:0:172.16.8.6(作爲VIP) |
RS1 | eth0:172.16.8.7(作爲RIP) lo:0 172.16.8.6 (vip) |
RS2 | eth0:172.16.8.9 (作爲RIP) lo:0 172.16.8.6 (vip) |
拓撲圖:
1、Director的配置
準備一塊網卡配置VIP與DIP
[root@master ~]# ifconfig eth0 172.16.8.8/16 //(DIP) [root@master ~]# ifconfig eth0:0 172.16.8.6/16 //(VIP) [root@master ~]# route add -host 172.16.8.6 dev eth0:0 //讓發往172.16.8.6的請求都經過eth0:0
2、RS1的配置
創建網頁文件:
# yum -y install httpd //沒有httpd的話則安裝 # vim /var/www/html/index.html 寫如如下內容 <h1>web1</h1>
配置DIP
[root@master ~]# ifconfig eth0 172.16.8.7 //RIP
修改內核參數來先限制arp的廣播和應答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必須不讓realserver對外廣播
配置路由
[root@master ~]# route add -host 172.16.8.6 dev lo:0 #請求是VIP的包,以lo:0接口出去,於是源地址還是爲VIP,不會導致因爲從eth0出去將源地址變爲RIP
3、RS2的配置
創建網頁文件 # yum -y install httpd //沒有httpd的話則安裝 # vim /var/www/html/index.html 寫如如下內容 <h1>web2</h1>
修改內核參數來先限制arp的廣播和應答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置RIP與VIP
[root@master ~]# ifconfig eth0 172.16.8.9 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必須不讓realserver對外廣播
配置路由:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 #請求是VIP的包,以lo:0接口出去,於是源地址還是爲VIP,不會導致因爲從eth0出去將源地址變爲RIP
4、在Director服務器上添加集羣服務
[root@master ~]# ipvsadm -A -t 172.16.8.6:80 -s rr [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 172.16.8.7 -g [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 172.16.8.9 -g
打開網頁測試:
從上圖看出LVS-DR模型配置成功!
三、LVS -DR模型的另一種配置
爲了節約公網地址,DR模型下VIP可用公網地址,RIP用內網地址,將網關都指向同一個路由器,以此來實現DR模型的LVS負載均衡
服務器 | 網卡地址 |
Director | eth0:172.16.8.6(作爲VIP) eth1:192.168.10.1(作爲DIP) |
RS1 | eth0:192.168.10.11(作爲RIP) lo:0 172.16.8.6 (VIP) gw:192.168.10.13 |
RS2 | eth0:192.168.10.12 (作爲RIP) lo:0 172.16.8.6 (VIP) gw:192.168.10.13 |
Client(網關服務器) | eth0:192.168.10.13 eth1:172.16.10.1 |
拓撲圖:
1.Director服務器的配置
準備二塊網卡設置VIP與DIP的地址
[root@master ~]# ifconfig eth0 172.16.8.6/16 //VIP [root@master ~]# ifconfig eth1 192.168.10.1/24 //DIP
2、RS1的配置
創建網頁文件 # yum -y install httpd //沒有httpd的話則安裝 # vim /var/www/html/index.html 寫如如下內容 <h1>web1</h1>
修改內核參數來先限制arp的廣播和應答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP與DIP:
[root@master ~]# ifconfig eth0 192.168.10.11 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必須不讓realserver對外廣播
配置路由與網關:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 //請求是VIP的包,以lo:0接口出去,於是源地址還是爲VIP,不會導致因爲從eth0出去將源地址變爲RIP [root@master ~]# route add default gw 192.168.10.13 //指向路由服務器
3、RS2的配置
創建網頁文件 # yum -y install httpd //沒有httpd的話則安裝 # vim /var/www/html/index.html 寫如如下內容 <h1>web2</h1>
修改內核參數來先限制arp的廣播和應答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP與DIP:
[root@master ~]# ifconfig eth0 192.168.10.12 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必須不讓realserver對外廣播
配置路由與網關:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 //請求是VIP的包,以lo:0接口出去,於是源地址還是爲VIP,不會導致因爲從eth0出去將源地址變爲RIP [root@master ~]# route add default gw 192.168.10.13 //網關指向路由服務器
4、配置路由服務器
啓動一臺主機配置成路由服務器,添加以下規則:
配置網卡:
添加路由規則:
[root@master ~]# route add -net 192.168.10.0 netmask 255.255.255.0 dev eth1 //發往192.168.10網段的請求經過eth1出去 [root@master ~]# route add -net 172.16.0.0 netmask 255.255.0.0 dev eth0 //發往172.16.0.0網段的請求經過eth0出去
5、在Director服務器上添加集羣服務
[root@master ~]# ipvsadm -A -t 172.16.8.6:80 -s rr [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 192.168.10.11 -g [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 192.168.10.12 -g
測試:
注:如果各個網卡都是橋接的話,反應可能有點延遲,測試時,最好把各個網卡放在同一HOST-ONLY下,我這裏是虛擬機:如圖
在路由服務器上測試,如圖: