LVS-NAT與LVS-DR模型實戰

LVS-NAT、LVS-DR實驗

LVS-NAT示例

實驗環境:

使用軟件VMware WorkStation14,Director的DIP和RealServer的RS1、RS2的RIP為僅主機模式,讓其在同一個局域網內,Direcotr的VIP橋接宿主機模式。

  • 一臺Director:
    • 版本:CentOS7.4
    • 雙網卡:
      • ens39: VIP:192.168.7.138/24,橋接模式。
      • eth37: DIP:192.168.3.1/24,此IP必須和后臺的RealSever在同一個網段內,僅主機。
  • 兩臺RealServer:
    • 版本:CentOS7.4
    • 單網卡:
      • RS1:RIP1:192.168.3.2/24(網關必須指向DIP)
      • RS2:RIP2:192.168.3.3/24(網關必須指向DIP)

lvsnat

配置DirectorServer

安裝ipvsadm工具[root@DR ~]# yum install ipvsadm.x86_64 -y

配置外網網卡VIP

[root@DR ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens39

TYPE=Ethernet
NAME=ens39
UUID=f3944544-d878-4812-acc5-383100012bed
DEVICE=ens39
ONBOOT=yes
HWADDR=00:50:56:2B:EB:6D
IPADDR=192.168.7.138
PREFIX=24
GATEWAY=192.168.7.1
DNS1=192.168.7.1

配置內網網卡DIP:

[root@DR ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37? #DIP無須指定網關

TYPE=Ethernet
NAME=ens37
DEVICE=ens37
ONBOOT=yes
HWADDR=00:50:56:2E:53:C8
IPADDR=192.168.3.1
PREFIX=24

重啟網絡服務查看網絡配置是否生效

[root@DR ~]# systemctl restart network

[root@DR ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:2b:eb:6d brd ff:ff:ff:ff:ff:ff
inet 192.168.7.138/24 brd 192.168.7.255 scope global ens39
valid_lft forever preferred_lft forever
inet6 fe80::3145:7364:a28b:44dd/64 scope link
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:2e:53:c8 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 brd 192.168.3.255 scope global ens37
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe2e:53c8/64 scope link
valid_lft forever preferred_lft forever

打開本機的路由轉發功能

[root@DR ~]# cat /proc/sys/net/ipv4/ip_forward # 查看本地路由功能是否打開(1 開啟 0 關閉)
0
[root@DR ~]# vim /etc/sysctl.conf # 開啟本地路由轉發
net.ipv4.ip_forward = 1 將0更改為1即可
[root@DR ~]# sysctl -p # 重新加載配置文件

配置RealServer1

[root@RS1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.3.2
NETMASK=255.255.255.0
GATEWAY=192.168.3.1? #必須指向DIP

安裝nginx并查找替換index頁面所有的nginx為server1如下圖:

server1_page

在vim末行模式輸入:%s/nginx/server1/g回車即可

此處是為了便于實驗中查看負載均衡效果,實際生產中web頁面是N臺服務器都相同的。

配置RealServer2

通過虛擬機的克隆功能快速復制RS1的副本,然后做如下修改:

  • hostname改為RS2
  • rm -rf /etc/udev/rules.d/70-persistent-net.rules 刪掉此文件重啟克隆機系統,在虛擬機配置網卡界面查看mac地址,在網卡配置文件中修改為此mac地址并將IP改為192.168.3.3。
  • 修改index頁面為server2

ipvsadm的用法:

管理集群服務:增、改、刪;
增、改:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪:
ipvsadm -D -t|u|f service-address
-t|u|f:
-t: TCP協議的端口,VIP:TCP_PORT
-u: TCP協議的端口,VIP:UDP_PORT
-f:firewall MARK,是一個數字;
[-s scheduler]:指定集群的調度算法,默認為wlc;
管理集群上的RS:增、改、刪;
增、改:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] #權重為0則不分配流量
刪:
ipvsadm -d -t|u|f service-address -r server-address
server-address:
rip[:port]
選項:
lvs類型:
-g: gateway, dr類型
-i: ipip, tun類型
-m: masquerade, nat類型
-w: weight,權重;
清空定義的所有內容:
ipvsadm -C
查看:
ipvsadm -L|l [options]
–numeric, -n:數字格式顯示主機地址和端口
–exact: 對輸出數據不做單位換算,顯示精確值
–connection, -c:顯示當前的ipvs連接狀況
–stats:統計數據
–rate :速率
保存和重載:
ipvsadm -S = ipvsadm-save
ipvsadm -R = ipvsadm-restore
置零計數器:
ipvsadm -Z [ -t|u|f service-address ]

在DR上進行lvs-nat規則配置:

定義VIP上的80服務為集群服務:

[root@DR ~]# ipvsadm -A -t 192.168.1.171:80 -s rr

添加此集群服務的RS:

[root@DR ~]# ipvsadm -a -t 192.168.1.171:80 -r 192.168.3.2 -m

[root@DR ~]# ipvsadm -a -t 192.168.1.171:80 -r 192.168.3.3 -m

之后查看效果

lvsnatrr1

用另一個客戶端去訪問

lvsnatrr2

至此LVS-NAT模式下rr算法調度的實驗完成。需要注意的是如果在同一計算機上查看效果時,需要將nginx配置文件中的連接超時時間修改為0,我在實驗時遇到了win10自帶edge瀏覽器刷新不出rr輪詢效果的問題。。。。。。換用360瀏覽器可以秒切換,不知何故,暫時存疑。

LVS-DR示例

lvs-dr:

dr模型中,各主機上均需要配置VIP,解決地址沖突的方式有三種:

  1. 在前端網關做靜態綁定;不可用;
  2. 在各RS使用arptables;比較麻煩;
  3. 在各RS修改內核參數,來限制arp響應和通告的級別;可行;
    限制響應級別:arp_ignore(響應)
    0:默認值,表示可使用本地任意接口上配置的任意地址進行響應;
    1: 僅在請求的目標IP配置在本地主機的接收到請求報文接口上時,才給予響應;
    限制通告級別:arp_announce(通告)
    0:默認值,把本機上的所有接口的所有信息向每個接口上的網絡進行通告;
    1:盡量避免向非直接連接網絡進行通告;
    2:必須避免向非本網絡通告;

實驗環境:

lvsDR

  • client客戶機IP為:192.168.7.53;
  • director調度服務器配置一塊網卡,在ens39上配置dip:192.168.7.141,在ens39:0別名上配置vip:192.168.7.138
  • realserver1 web服務器rip為192.168.7.142,在lo本地環回接口上配置別名vip:192.168.7.138/32 broadcast 192.168.7.138,配置arp_ignore=1 ,arp_announce=2
  • realserver2 web服務器rip為192.168.7.143,在lo本地環回接口上配置別名vip:192.168.7.138/32 broadcast 192.168.7.138,配置arp_ignore=1 ,arp_announce=2

在DR調度服務器上配置ens39

[root@linuxprobe ~]# ifconfig
ens39: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.7.141 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:50:56:2b:eb:6d txqueuelen 1000 (Ethernet)
RX packets 27872 bytes 15096757 (14.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9458 bytes 1095238 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens39:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.7.138 netmask 255.255.255.255 broadcast 192.168.7.138
ether 00:50:56:2b:eb:6d txqueuelen 1000 (Ethernet)

在realserver1 ens33上配置RIP1,lo網卡別名上配置VIP:192.168.7.138,配置arp_ignore=1 ,arp_announce=2

echo “1”>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “1”>/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2”>/proc/sys/net/ipv4/conf/lo/arp_announce
echo “2”>/proc/sys/net/ipv4/conf/all/arp_announce

在realserver2 ens33上同樣配置RIP2,lo網卡別名上配置VIP:192.168.7.138,配置arp_ignore=1 ,arp_announce=2

在DR調度服務器建立集群服務:

定義VIP上的80服務為集群服務:
[root@DR ~]# ipvsadm -A -t 192.168.7.138:80 -s rr
添加此集群服務的RS:
[root@DR ~]# ipvsadm -a -t 192.168.1.138:80 -r 192.168.7.142 -g
[root@DR ~]# ipvsadm -a -t 192.168.7.138:80 -r 192.168.7.143 -g

查看規則:

[root@DR ~]# 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.7.138:80 rr
-> 192.168.7.142:80 Route 1 0 0
-> 192.168.7.143:80 Route 1 0 0

查看效果:

lvsdr1

lvsdr2

本例遇到了用ip addr命令添加的IP莫名其妙丟失的問題,建議IP還是直接寫配置文件為妥。

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101642

(0)
net31_行者無疆net31_行者無疆
上一篇 2018-06-24
下一篇 2018-06-25

相關推薦

欧美性久久久久