vls dr nat 配置及測試

來源:本站原創 Linux 超過878 views圍觀 0條評論

 

————-1.DR模式配置及測試————————————–
地址分配
DR  ens33 192.168.142.188 VIP ens33:0 192.168.142.189
RS1 192.168.142.138  VIP lo:0 192.168.142.189
RS2 192.168.142.139  VIP lo:0 192.168.142.189

 

在DR上配置

vim /opt/script/lvs_dr.sh

#! /bin/bash
#開啟IP轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward   
ipvjeff=/sbin/ipvsadm
vip=192.168.142.189
rs1=192.168.142.138
rs2=192.168.142.139
#增加子接口
ifconfig ens33:0 down
ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:0
#清空原有lvs配置
$ipvjeff -C
#定義一個集群服務 RR算法
$ipvjeff -A -t $vip:80 -s rr
#添加一個后端服務器 模式為dr
$ipvjeff -a -t $vip:80 -r $rs1:80 -g
$ipvjeff -a -t $vip:80 -r $rs2:80 -g

chmod +x /opt/script/lvs_dr.sh
腳本需要開機運行
[[email protected] script]# ./lvs_dr.sh
SIOCSIFFLAGS: Cannot assign requested address
SIOCADDRT: No such device
[[email protected] script]# echo 1 > /proc/sys/net/ipv4/ip_forward
[[email protected] script]# ./lvs_dr.sh
SIOCADDRT: No such device

配置real server 服務
后端所有應用服務器都需要配置
#vim /opt/script/rs.sh
#! /bin/bash
vip=192.168.142.189
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/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
腳本需要開機運行
chmod +x /opt/script/rs.sh

運行腳本
[[email protected] script]# ip a  |grep 192
    inet 192.168.142.189/32 brd 192.168.142.189 scope global lo:0—驗證
    inet 192.168.142.139/24 brd 192.168.142.255 scope global ens33

永久保存LVS規則并恢復
[[email protected] ~]# ipvsadm -S > /etc/sysconfig/ipvsadm.s1
模擬清空ipvsadm規則來恢復
[[email protected] ~]# ipvsadm -C
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[[email protected] script]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.142.188:80 wrr
  -> 10.1.1.11:80                 Masq    2      0          0        
  -> 10.1.1.12:80                 Masq    1      0          0        
[[email protected] script]#

——–SIOCADDRT:No Such Device—–
dev 后指定設備 必須是已經存在的網卡設備
檢查配置接口是否配置正確

驗證
#查看ipvs定義的規則列表
[[email protected] script]# 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.142.189:80 rr
  -> 192.168.142.138:80           Route   1      2          2        
  -> 192.168.142.139:80           Route   1      2          1        
[[email protected] script]#

 

[[email protected] script]# ip a |grep 192
    inet 192.168.142.188/24 brd 192.168.142.255 scope global ens33
    inet 192.168.142.189/32 brd 192.168.142.189 scope global ens33:0

[[email protected] script]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.142.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
lvs-d           0.0.0.0         255.255.255.255 UH    0      0        0 ens33 —-這個必須有
[[email protected] script]#

[[email protected] script]# vim lvs_dr.sh
[[email protected] script]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.142.188  netmask 255.255.255.0  broadcast 192.168.142.255
        inet6 fe80::20c:29ff:febd:8934  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bd:89:34  txqueuelen 1000  (Ethernet)
        RX packets 7422  bytes 7825737 (7.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3109  bytes 294100 (287.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.142.189  netmask 255.255.255.255  broadcast 192.168.142.189
        ether 00:0c:29:bd:89:34  txqueuelen 1000  (Ethernet)

       
進行web驗證—-curl

RR算法 每次會進行輪換,出下列效果為正常

[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$

[[email protected] script]# ipvsadm -L -n –stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.142.189:80                 77      491        0    46381        0
  -> 192.168.142.138:80                 38      220        0    14254        0
  -> 192.168.142.139:80                 39      271        0    32127        0
[[email protected] script]#

————-2.nat模式配置及測試————————————–
優勢很明顯,配置簡單
DR  ens33 192.168.142.188
    vlan 10 : 10.1.1.188
RS1 vlan 10 :10.1.1.11 GW10.1.1.188 切記:關閉本地ens33接口,只留10.1.1.11接口
RS2 vlan 10 :10.1.1.12 GW10.1.1.188 切記:關閉本地ens33接口,只留10.1.1.12接口
接口使用vlan 10或 網絡連接方式:Host-Only

dr上運行如下腳本
vim /opt/script/lvs_nat.sh

#! /bin/bash
#開啟IP轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward
ipvjeff=/sbin/ipvsadm
vip=192.168.142.188
rs1=10.1.1.11
rs2=10.1.1.12
#清空原有lvs配置
$ipvjeff -C
#定義一個集群服務 RR算法
$ipvjeff -A -t $vip:80 -s wrr
#添加一個后端服務器 模式為dr
$ipvjeff -a -t $vip:80 -r $rs1 -m -w 2
$ipvjeff -a -t $vip:80 -r $rs2 -m -w 1

chmod +x /opt/script/lvs_nat.sh
腳本需要開機運行
[[email protected] script]# ./lvs_nat.sh
SIOCSIFFLAGS: Cannot assign requested address
SIOCADDRT: No such device
[[email protected] script]# echo 1 > /proc/sys/net/ipv4/ip_forward

永久保存LVS規則并恢復
[[email protected] ~]# ipvsadm -S > /etc/sysconfig/ipvsadm.s1
模擬清空ipvsadm規則來恢復
[[email protected] ~]# ipvsadm -C
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[[email protected] script]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.142.188:80 wrr
  -> 10.1.1.11:80                 Masq    2      0          0        
  -> 10.1.1.12:80                 Masq    1      0          0        
[[email protected] script]#

配置real server 服務
后端所有應用服務器都需要配置
只需配置IP其余不用配置

測試 和權重一致即為正確
[email protected]:~$ curl http://192.168.142.188
r1
[email protected]:~$ curl http://192.168.142.188
r1
[email protected]:~$ curl http://192.168.142.188
r2
[email protected]:~$
                                      

——–SIOCADDRT:No Such Device—–
dev 后指定設備 必須是已經存在的網卡設備
檢查配置接口是否配置正確

驗證
#查看ipvs定義的規則列表
[[email protected] script]# 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.142.189:80 rr
  -> 192.168.142.138:80           Route   1      2          2        
  -> 192.168.142.139:80           Route   1      2          1        
[[email protected] script]#

 

[[email protected] script]# ip a |grep 192
    inet 192.168.142.188/24 brd 192.168.142.255 scope global ens33
    inet 192.168.142.189/32 brd 192.168.142.189 scope global ens33:0

[[email protected] script]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.142.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
lvs-d           0.0.0.0         255.255.255.255 UH    0      0        0 ens33 —-這個必須有
[[email protected] script]#

[[email protected] script]# vim lvs_dr.sh
[[email protected] script]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.142.188  netmask 255.255.255.0  broadcast 192.168.142.255
        inet6 fe80::20c:29ff:febd:8934  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bd:89:34  txqueuelen 1000  (Ethernet)
        RX packets 7422  bytes 7825737 (7.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3109  bytes 294100 (287.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.142.189  netmask 255.255.255.255  broadcast 192.168.142.189
        ether 00:0c:29:bd:89:34  txqueuelen 1000  (Ethernet)

       
進行web驗證—-curl

RR算法 每次會進行輪換,出下列效果為正常

[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl
http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$ curl http://192.168.142.189
r1
[email protected]:~$ curl http://192.168.142.189
r2
[email protected]:~$

[[email protected] script]# ipvsadm -L -n –stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.142.189:80                 77      491        0    46381        0
  -> 192.168.142.138:80                 38      220        0    14254        0
  -> 192.168.142.139:80                 39      271        0    32127        0
[[email protected] script]#
       
       
—————–ipvsadm組件定義規則的格式:
1.定義集群服務格式:
(1).添加集群服務:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
              [-p [timeout]] [-M netmask]
-A:                  表示添加一個新的集群服務
-E:                  編輯一個集群服務
-t:                  表示tcp協議
-u:                  表示udp協議
-f:                  表示firewall-Mark,防火墻標記
service-address:     集群服務的IP地址,即VIP
-s                    指定調度算法
-p                    持久連接時長,如#ipvsadm -Lcn ,查看持久連接狀態
-M                    定義掩碼
ipvsadm -D -t|u|f service-address      刪除一個集群服務
ipvsadm -C                             清空所有的規則
ipvsadm -R                             重新載入規則
ipvsadm -S [-n]                        保存規則
2.向集群服務添加RealServer規則:
(1).添加RealServer規則
ipvsadm -a|e -t|u|f service-address -r server-address
              [-g|i|m] [-w weight]
-a                 添加一個新的realserver規則
-e                 編輯realserver規則
-t                 tcp協議
-u                 udp協議
-f                 firewall-Mark,防火墻標記
service-address    realserver的IP地址
-g                 表示定義為LVS-DR模型
-i                 表示定義為LVS-TUN模型
-m                 表示定義為LVS-NAT模型
-w                 定義權重,后面跟具體的權值
ipvsadm -d -t|u|f service-address -r server-address          –刪除一個realserver
ipvsadm -L|l [options]                                       –查看定義的規則
如:#ipvsadm -L -n 
ipvsadm -Z [-t|u|f service-address]                          –清空計數器
清空和查看:
ipvsadm -C
ipvsadm -L|l [options]   
-n: numeric,基于數字格式顯示地址和端口;
-c: connection,顯示ipvs連接;
–stats:統計數據
–rate: 速率
–exact: 精確值
四、lvs的10種調度算法
可以分為兩大類
LVS Scheduling Method LVS的調度方法:
1.Fixed Scheduling Method  靜態調服方法
(1).RR     輪詢
(2).WRR    加權輪詢
(3).DH     目標地址hash
(4).SH     源地址hash
2.Dynamic Scheduling Method 動態調服方法
(1).LC     最少連接
(2).WLC    加權最少連接
(3).SED    最少期望延遲
(4).NQ     從不排隊調度方法
(5).LBLC   基于本地的最少連接
(6).LBLCR  帶復制的基于本地的最少連接

arp_ignore:定義接受到ARP請求時的相應級別
0:只要本地配置的有相應地址,就給予響應。
1:從這個接口進來的,并且目標地址是此接口,才給予響應
2:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內
3:不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應
4-7:保留未使用
8:不回應所有(本地地址)的arp查詢  
此處因該將arp_ignore設置為1 
 
arp_announce:定義將自己地址向外通告是的通告級別;
0: 將本地任何接口上的任何地址向外通告
1:僅響應目標網絡通告與其網絡匹配的地址
2:僅向與本地接口上地址匹配的網絡進行通告
此處應該將arp_announce設置為2

參考
http://leeyan.blog.51cto.com/8379003/1701931/
http://wuhf2015.blog.51cto.com/8213008/1654648

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3609轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏