LVS DR模式,LVS主机和web服务器都是单网卡,它们连在同一网络中
client1:eth0: 192.168.88.10
lvs1:eth0:192.168.88.5
web1:eth0:192.168.88.100
web2:eth0:192.168.88.200
在DR模式下,LVS 仅修改数据包的目的MAC地址,使其直接路由到选中的Real Server,源IP和目标IP保持不变。
入站数据包经过调度器,出站数据包不经过调度器,大大降低调度器流量压力。
需要调度器和真实服务器在同一网络内,调度器和真实服务器设置临时相同IP,为了避免与LVS的VIP产生ARP冲突(因为VIP在LVS 和所有Real Server上都存在),需要禁用真实服务器上VIP的ARP响应功能,确保只有LVS 响应VIP的ARP请求,而真实服务器只接收目的MAC地址指向自己的数据包,防止客户端接收真实服务器回应时丢弃数据包。
1.在lvs1的eth0上配置vip 192.168.88.15
[root@pubserver cluster]# vim 05-config-lvsvip.yml
---
- name: config lvs vip
hosts: lb
tasks:
- name: add vip linein
file: # 确保文件中有某一行内容
path: /etc/sysconfig/network-scripts/ifcfg-eth0
line: IPADDR2=192.168.88.15
notify: restart eth0 # 通知执行handlers中的任务
handlers: # 被通知执行的任务写到这里
- name: restart eth0
shell: nmcli connection down eth0; nmcli connection up eth0
[root@pubserver cluster]# ansible-playbook 05-config-lvsvip.yml
2.在2台web服务器的lo上配置vip 192.168.88.15。lo:0网卡需要使用network-scripts提供的配置文件进行配置
[root@pubserver cluster]# vim 06-config-webvip.yml
---
- name: config webservers vip
hosts: webservers
tasks:
- name: install network-scripts # 安装服务
yum:
name: network-scripts
state: present
- name: add lo:0 # 创建lo:0的配置文件
copy:
dest: /etc/sysconfig/network-scripts/ifcfg-lo:0
content: |
DEVICE=lo:0
NAME=lo:0
IPADDR=192.168.88.15
NETMASK=255.255.255.255
NETWORK=192.168.88.15
BROADCAST=192.168.88.15
ONBOOT=yes
notify: activate lo:0
handlers:
- name: activate lo:0 # 激活网卡
shell: ifup lo:0
[root@pubserver cluster]# ansible-playbook 06-config-webvip.yml
3.在2台web服务器上配置内核参数,使得它们不响应对192.168.88.15的请求
[root@web1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@web1 ~]# sysctl -p
#web2同理
#控制了接收到的ARP请求的处理方式确保只有LVS Director响应VIP的ARP请求。
#设置专门针对回环接口lo
#控制了本地系统向外宣布自己的IP地址的方式
#这个设置是针对回环接口
4.在lvs上配置虚拟服务器
#创建虚拟服务器
[root@lvs1 ~]# ipvsadm -A -t 192.168.88.15:80 -s wlc
#向虚拟服务器中加真实服务器
[root@lvs1 ~]# ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.100 -w 1 -g [root@lvs1 ~]# ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.200 -w 2 -g
#查看配置
[root@lvs1 ~]# ipvsadm -Ln
5.客户验证
[root@client1 ~]# for i in {1..6}; do curl http://192.168.88.15/; done
Welcome from web2
Welcome from web1
Welcome from web2
Welcome from web2
Welcome from web1
Welcome from web2
1.lvs只调度流量,不拆包
2.lvs不具备健康检查功能
3.规则为临时配置