目录
LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一种工作模式
LVS-DR模式,Director Server 作为群集的访问入口,不作为网关使用。
节点Director Server 与Real Server 需要在同一个网络中,返回给客户端的数据不需要经过Director Server。
为了对整个群集的访问,Dreector Server和Real Server都需要配置VIP地址
1、Clinent向目标VIP发出请求,Director(负载均衡器)接收
2、Director根据负载均衡算法选择RealServer_1(真实服务器),不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。
3、RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealSERVERS事先绑定了VIP),于是处理这个报文,随后重新封装报文,发送到局域网。
4、Client将收到回复报文,Client认为得到正常的服务,而不会知道是那一台服务器处理的。
- ①客户端向目标VIP发送请求, 负载均衡器接收
- ②负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的
- MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送
- ①后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理
- 这个报文。
- 田随后重新封装报文,将响应报文通过1o接口传送给物理网卡然后向外发出客户端将收到回复报文
- 。客户端认为得到正常的服务,而不会知道是哪一-台服务器处理的如果跨网段,则报文通过路由器经由internet返回给用户
5,LVS-DR中的ARP问题
- 在LVS-DR负载均衡集样中,负载均衡与节点服务器都要配置相同的VIP地址。
- 2、在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的系乱。
- 当ARPE播发送到VS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负
- 载均衡器进行响应,其他节点服务器不应该响应ARP广播。
- 3、对节点服务器进行处理,使其不响应针对VIP的ARP请求。
- 使用虚接口1o:0 承载VIP地址设置内核参数arp_ ignore=1:系统只响应目的IP为本地IP的ARP请求
- 4、 Rea1Serter返回报文(源IP是VIP)经路由器转发, 重新封装报文时,需要先获取路由器的MAC地址
- 5、发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使
- 用发送接口的IP地址如: ens33
- 6、路由器收到ARP请求后,将更新ARP表项
- 7、原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
-
- 8、路由器根据ARP表项, 会将新来的请求报文转发给Realserver, 导致Di rector的VIP失效
- 解决方法:对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发
- 送接口的IP地址

主lvs调度服务配置(主):192.168.135.189,虚拟子接口,ens33:0 192.168.135.100
web 1 ens33 192.168.135.111 io:192.168.135.100
web 2 ens33 192.168.135.113 ip:192.168.135.100

[root@tomcat189 ~]#systemctl stop firewalld
[root@tomcat189 ~]#setenforce 0
[root@tomcat189 ~]#systemctl disable firewall
yum -y install keepalived ipvsadm
modprobe ip_vs #加载ip_vs模块
cat /proc/net/ip_vs 查看ip_vs版本信息
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0

进入ens33:0 修改配置

DEVICE=ens33:0 #设备名称
ONBOOT=yes #是否启用
IPADDR=192.168.135.100 #ip名称
NETMASK=255.255.255.255 #
不需要配置网关

#由于LVS负载均衡器和各节点需要共用vip地址,应该关闭linux内核的重定向响应参数,不充当路由器(转发,重定向)
由于LVS负载均衡器和各个节点需要共用vip地址,应该关闭Linux内核的重定向响应参数,不充当路由器,这样当DS收到客户端发来的数据包时,就不会立马转发给后台RS服务器,而是转发给自己的虚拟子接口
vim /etc/sysctl.conf #编辑内核proc参数
net.ipv4.ip_forward = 0 #关闭ip转发
net.ipv4.conf.all.send_redirects = 0 #关闭所有send重定向
net.ipv4.conf.default.send_redirects = 0 #关闭默认重定向
net.ipv4.conf.ens33.send_redirects = 0 #关闭网卡重定向sysctl -p #查看内核参数

sysctl -p 查看内核参数
开启ipvsadm
[root@tomcat189 network-scripts]#modprobe ip_vs
[root@tomcat189 network-scripts]#cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@tomcat189 network-scripts]#
ipvsadm -C #清除规则
ipvsadm -A -t 192.168.135.100:80 -s rr #创建虚拟主机,指定ip地址,并指定分流模式为轮询
ipvsadm -a -t 192.168.135.100:80 -r 192.168.135.111:80 -g
#添加真实服务器ip地址,并指定负载均衡模式为DR,ip隧道模式为-i,-m为nat模式
ipvsadm -a -t 192.168.1135.100:80 -r 192.168.135.113:80 -g
#添加真实服务器ip地址,并指定负载均衡模式为DR,ip隧道模式为-iipvsadm #启动策略
ipvsadm -ln #查看节点状态信息
ipvsadm -Lnc #监控连接数




cd /etc/sysconfig/network-scripts/ #进入网卡配置目录
cp -p ifcfg-lo ifcfg-o:0 #复制环回网卡
vim ifcfg-lo:0 #修改内容
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.135.100 #地址为VIP
NETMASK=255.255.255.255ifup ifcfg-lo:0 #启动环回网卡
ifconfig lo:0 #查看环回网卡


- route add -host 192.168.135.100 dev lo:0
-
- 或者下面方式,都可实现路由禁锢,下面的为永久添加
- vim /etc/rc.local #linux在开启启动时,会加载的内容
- /sbin/route add -host 192.168.135.100 dev lo:0

调整内核的arp响应参数以组织更新vip的Mac地址,避免冲突
- vim /etc/sysctl.conf
- net.ipv4.conf.all.arp_ignore = 1 #系统只响应目的ip为本地的arp请求
- net.ipv4.conf.all.arp_announce = 2 #系统不使用ip包的源地址来设置arp请求的原地址,而选择发送接口的ip地址。
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
-
- sysctl -p #刷新




- route add -host 192.168.135.100 dev lo:0
-
- 或者下面方式,都可实现路由禁锢,下面的为永久添加
- vim /etc/rc.local #linux在开启启动时,会加载的内容
- /sbin/route add -host 192.168.135.100 dev lo:0

调整内核的arp响应参数以组织更新vip的Mac地址,避免冲突
- vim /etc/sysctl.conf
- net.ipv4.conf.all.arp_ignore = 1 #系统只响应目的ip为本地的arp请求
- net.ipv4.conf.all.arp_announce = 2 #系统不使用ip包的源地址来设置arp请求的原地址,而选择发送接口的ip地址。
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
-
- sysctl -p #刷新

3, 开启apache ,,
- <html>
-
- <body>
-
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-
- <h1>,</h1>
-
- </body>
-
- </html>


验证,用本机windows机器访问
