Centos 下面 配置LVS的DR模式
1. Lvs DR 模型原理图https://s3.运维网.com/wyfs02/M00/92/40/wKiom1j9qB2hkpshAABnNa-pck0010.png
(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
(d) 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
(e) RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
(f) 响应报文最终送达至客户端
2. LVS-DR模型的特性
[*] 特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
[*] RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
[*] RS跟Director Server必须在同一个物理网络中
[*] 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
[*] 不支持地址转换,也不支持端口映射
[*] RS可以是大多数常见的操作系统
[*] RS的网关绝不允许指向DIP(因为我们不允许他经过director)
[*] RS上的lo接口配置VIP的IP地址
[*] 缺陷:RS和DS必须在同一机房中
3. 特点1的解决方案:
[*] 在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server
[*] 存在问题:用户未必有路由操作权限,因为有可能是运营商提供的,所以这个方法未必实用
[*] arptables:在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。这是由iptables提供的
[*] 修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
4.部署实例
实验环境
[*] Director节点:(eth1 192.168.10.31vip eth1:0 192.168.10.70)
[*] Real server1: (eth1 192.168.10.32 vip lo:0 192.168.10.70)
[*] Real server2: (eth1 192.168.10.34 vip lo:0 192.168.10.70)
配置 Director 服务器
查看当前服务器ip 地址
ifconfig eth1
eth1 Link encap:EthernetHWaddr 00:0C:29:A5:E5:14
inet addr:192.168.10.31Bcast:192.168.10.255Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea5:e514/64 Scope:Link
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
RX packets:121 errors:0 dropped:0 overruns:0 frame:0
TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12438 (12.1 KiB)TX bytes:12833 (12.5 KiB)
配置 vip 地址
cp ifcfg-eth1 ifcfg-eth1:0
cat ifcfg-eth1
DEVICE=eth1
HWADDR=00:0C:29:A5:E5:14
TYPE=Ethernet
#UUID=64dc9596-9cf7-4e94-b1d1-690109a87926
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.31
GATEWAY=192.168.10.1
NETMASK=255.255.255.0
catifcfg-eth1:0
DEVICE=eth1:0
NAME="eth1:0"
HWADDR=00:0C:29:A5:E5:14
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.70
GATEWAY=192.168.10.1
NETMASK=255.255.255.0
重启网卡,查看配置是否生效
service network restart
https://s1.运维网.com/wyfs02/M01/92/43/wKiom1j9uDODzFb3AABFqny2fCw349.jpg
打开路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
安装ipvsadm
yum install ipvsadm -y
配置规则 ipvs 的规则 (这里设置为轮训模式)
ipvsadm -A -t192.168.10.70:80 -s rr
ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.32-g
ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.34-g
配置 Real server1
cp ifcfg-lo ifcfg-lo:1
cat ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.10.70
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
关闭arp 转发
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore临时生效
echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce 临时生效
arp_ignore 为:1 # - 只回答目标 IP 地址是访问本网络接口(eth0)的 ARP 查询请求。
在设置参数的时候将 arp_ignore 设置为 1,意味着当别人的 arp 请求过来的时候,如果接收的网卡设备
上面没有这个 ip,就不做出响应,默认是 0,只要这台机器上面任何一个网卡设备上面有这个 ip,就响应
arp 请求,并发送 mac 地址。
arp_announce (宣告) 为 2
2 - 对查询目标使用最适当的本地地址。例如,如果在 eth0 接口上接受到了一个 VIP 的 arp 请求包。内
核判断这个 VIP 地址是不是 eth0 接口上的 IP 一样。如果一样,则回复这个包。如果不一样,就丢弃不回
应。
永久生效
vim /etc/sysctl.conf #最后添加
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
sysctl-p
安装http 配置测试页面
yum install httpd -y
echo "192.168.10.32realserver 1" > /var/www/html/index.html
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
配置 Real server2
cp ifcfg-lo ifcfg-lo:1
cat ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.10.70
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
关闭arp 转发
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore临时生效
echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce 临时生效
永久生效
vim /etc/sysctl.conf #最后添加
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
sysctl-p
安装http 配置测试页面
yum install httpd -y
echo "192.168.10.34 realserver 2 " > /var/www/html/index.html
测试 real-server1
http://192.168.10.32
https://s4.运维网.com/wyfs02/M00/92/46/wKiom1j9ybWR6fBSAAAcxtP8wAc412.jpg
测试 real-server2
http://192.168.10.34
https://s5.运维网.com/wyfs02/M00/92/46/wKiom1j9yeLA4G5qAAAaNDABeiw335.jpg
使用vip 测试
https://s3.运维网.com/wyfs02/M01/92/45/wKioL1j9ykDz6Ry6AAAdDms8h5E600.jpg
https://s3.运维网.com/wyfs02/M02/92/46/wKiom1j9ylbB6xHDAAAbuqzNt8s402.jpg
页:
[1]