使用LVS实现DR模式的集群调度服务器,为用户提供Web服务
- 路由器对外公网IP地址为202.114.106.20
- 路由器内网IP地址为192.168.0.254
- 路由是需要设置SNAT及DNAT功能
- LVS调度器真实IP地址为192.168.0.10
- LVS调度器VIP地址设置为192.168.0.253
- 真实Web服务器地址分别为192.168.0.1、192.168.0.2
- 使用加权轮询调度算法,真实服务器权重与其IP地址末尾数一致
方案
使用4台虚拟机,1台作为Linux路由器、1台作为Director调度器、2台作为Real Server、物理机作为客户端,拓扑结构如图-2所示。
环境准备:
client :201.1.1.200(eth2)
dieector:(eth2)
dip:201.1.1.1.100
vip:201.1.1.1.101
rel server :(eth2)
201.1.1.102
201.1.1.103
配置调度服务器:
1.配置vip地址:
[root@ds1 ~]# ip addr add dev eth2 201.1.1.101/24
[root@ds1 ~]# ip addr ls dev eth2
4: eth2: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:eb:93:36 brd ff:ff:ff:ff:ff:ff
inet 201.1.1.100/24 brd 201.1.1.255 scope global eth2
valid_lft forever preferred_lft forever
inet 201.1.1.101/24 scope global secondary eth2
valid_lft forever preferred_lft forever
inet6 fe80::a5ea:f6dd:a462:eb4f/64 scope link
valid_lft forever preferred_lft forever
2.添加虚拟服务器:
[root@ds1 ~]# ipvsadm -C
[root@ds1 ~]# ipvsadm -A -t 201.1.1.101:80 -s rr
3.添加真实服务器:
[root@ds1 ~]# ipvsadm -a -t 201.1.1.101:80 -r 201.1.1.102 -g
[root@ds1 ~]# ipvsadm -a -t 201.1.1.101:80 -r 201.1.1.103 -g
4.查看LVS配置
[root@ds1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.101:80 rr
-> 201.1.1.102:80 Route 1 0 0
-> 201.1.1.103:80 Route 1 0 0
Real Server 的配置:
1.在lo设备上配置vip:(虚拟ip)(rs 1 和 rs 2 都是一样的配置)
[root@rs1 ~]# ip a a dev lo 201.1.1.101/32
[root@rs1 ~]# ip a ls dev lo
1: lo: 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
inet 201.1.1.101/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2.禁用arp 请求:
[root@rs1 ~]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
0
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3.开启httpd服务:
[root@rs1 ~]# systemctl start httpd
[root@rs2 ~]# systemctl start httpd
4.客户端测试:
[root@client ~]# ping -c 3 201.1.1.101
[root@client ~]# curl http://201.1.1.101
rs2
[root@client ~]# curl http://201.1.1.101
rs1
[root@client ~]# curl http://201.1.1.101
rs2
[root@client ~]# curl http://201.1.1.101
rs1
[root@client ~]# curl http://201.1.1.101
rs2
测试:
[root@client ~]# yum install httpd-tools
[root@client ~]# nmcli connection add type ethernet con-name eth3 ifname eth3
连接“eth3”(013093b5-8bc9-4a3b-b29c-9b912efcfe8f) 已成功添加。
[root@client ~]# nmcli connection modify eth3 ipv4.method manual ipv4.addresses 201.1.2.200/24 ipv4.gateway 201.1.2.254 connection.autoconnect yes
[root@client ~]# nmcli connection up eth3
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
[root@client ~]# nmcli connection delete eth2
[root@rs2 ~]# nmcli connection modify eth2 ipv4.method manual ipv4.gateway 201.1.1.254 connection.autoconnect yes
[root@rs2 ~]# nmcli connection up eth2
[root@rs2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.gateway 0.0.0.0 connection.autoconnect yes
[root@rs2 ~]# nmcli connection up eth0
[root@rs2 ~]# route -n
[root@ds1 ~]# nmcli connection modify eth2 ipv4.method manual ipv4.gateway 201.1.1.254 connection.autoconnect yes
[root@ds1 ~]# ip a a dev eth2 201.1.1.101/24
[root@room9pc01 ~]# iptables -F -A forward
[root@room9pc01 ~]# cat /proc/sys/net/ipv4/ip_forward
1
每个节点的节点的都ping通
[root@client ~]# ping -c 2 201.1.2.254
[root@client ~]# ping -c 2 201.1.1.254
[root@client ~]# ping -c 2 201.1.1.102
[root@client ~]# ping -c 2 201.1.1.103
[root@client ~]# ping -c 2 201.1.1.101
客户机测试:
[root@client ~]# curl http://201.1.1.101
rs1
[root@client ~]# curl http://201.1.1.101
rs2
[root@client ~]# curl http://201.1.1.101
rs1
[root@client ~]# curl http://201.1.1.101
rs2
删除client的网关:
[root@client ~]# route del default
在路由器上添加规则:
[root@room9pc01 ~]# iptables -t nat -F
[root@room9pc01 ~]# iptables -t nat -A PREROUTING -d 201.1.2.254 -p tcp --dport 80 -j DNAT --to 201.1.1.101
[root@room9pc01 ~]# iptables -t nat -A POSTROUTING -s 201.1.1.0/24 -j SNAT --to 201.1.2.254
客户端client 访问:
[root@client ~]# curl 201.1.2.254
rs1
[root@client ~]# curl 201.1.2.254
rs2
[root@client ~]# curl 201.1.2.254
rs1
[root@client ~]# curl 201.1.2.254
rs2