1、LVS-DR数据包流向分析
1.1、数据包流向分析
-
客户端发送请求到Director Server负载均衡器,请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间
-
Director Server和Real Server在同一个网络中,数据通过二层数据链路层来传输
-
内核空间判断数据包的目标IP是本机VIP,此时IPVS(IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包,修改源MAC地址为Director Server的MAC地址,为Real Server的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server
-
到达Real Server的请求报文的MAC地址,就接收此报文,数据包重新封装报文(源IP地址为VIP地址,目标IP为CIP),将响应报文通过lo接口传送给物理网卡然后向外发出4
-
Real Server 直接将响应报文传送给客户端
1.2、LVS-DR数据包接收分析
1.3、DR模式的特点
-
Director Server和Real Server必须在同一个物理网络中
-
Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP直接访问
-
Director Server作为集群的访问入口,但不作为网关使用
-
使用的请求报文经由Director Server,但回复响应报文不能经过Director Server
-
Real Serve的网关不允许指向Director Server IP ,即Real Server发送的数据包不允许经过Director Server
-
Real Server上的lo接口配置VIP的IP地址
1.4、LVS-DR中的ARP问题
3、LVS-DR群集部署实战
3.1、准备工作
---------准备--------------
1台调度器 7-7
1台NFS 7-8
2台web服务器 7-2 7-3
systemctl stop firewalld #关闭防火墙
systemctl disbale firewalld
setenforce 0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.80.20 ## 修改7-2 7-3网关
ifdown ens33 && ifup ens33
----------过程------------
1、加载ip_vs模块,安装ipvsadmin工具
2、开启路由转发
3、新建LVS虚拟服务器并添加节点服务器
4、配置节点服务器
- 建立测试网站
- 挂载NFS共享存储
- 建立测试网页
5、保存规则并测试
3.2、NFS服务器
------7-8 NFS -192.168.80.30----------
vim /etc/sysconfig/selinux
##SELINUX=disabled
-------- #安装nfs服务--------
yum install nfs-utils rpcbind -y
------#新建目录,并创建站点文件-------
cd /opt
mkdir nfs
cd /nfs
mkdir qiangge zhengge
cdmod 777 * 给两个文件夹赋予权限
echo '<h1>Mr Qiang likes dancing<!/h1>' >qiangge/index.html
echo '<h1>Mr Zheng likes dancing too!</h1>' >zhengge/index.html 需要共享的两个目录
vim /etc/exports #共享配置文件,设置共享策略
/opt/nfs/qiangge 192.168.80.0/24(rw,sync,no_root_squash)
/opt/nfs/zhengge 192.168.80.0/24(rw,sync,no_root_squash)
systemctl start rpcbind #开启系统服务rpcbind
systemctl enable nfs # 开机自启动
showmount -e #检查是否共享成功
showmount -e 192.168.80.30 ##7-2 , 7-3节点服务器上查看是否能搜索到共享目录
3.3、节点服务器7-2
------------7-2 nginx节点服务器-192.168.80.12-------------------
yum install -y httpd
---------添加网卡 -------------------
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo:0 ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255 #子网掩码必须全为1
ONBOOT=YES
ifup lo:0 ##启动网卡
route add -host 192.168.80.100 dev lo:0 ##添加路由
route -n ##查看路由
systemctl restart network
vim /etc/rc.local ##实现系统开机自动配置
route add -host 192.168.80.100 dev lo:0
chmod +x /etc/rc.d/rc.local #给权限
---------添加内核的ARP响应参数,阻止更新vip的MAC地址,避免发送冲突------------
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1 系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce=2 系统只不使用IP包的源地址来设置ARP请求的源地址,而使用发送接口的地址
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
sysctl -p ##加载配置
-----开启服务器------------------------------
cd /var/www/html
echo '<h1>this is the first test web!</h1>' >index.html
systemctl start httpd
虚拟机浏览器输入 192.168.80.13 测试是否成功
3.4、节点服务器7-3
------------7-3 nginx节点服务器-192.168.80.13-------------------
yum install -y httpd
---------添加网卡 -------------------
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo:0 ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255 #子网掩码必须全为1
ONBOOT=YES
ifup lo:0 ##启动网卡
route add -host 192.168.80.100 dev lo:0 ##添加路由
route -n ##查看路由
systemctl restart network
vim /etc/rc.local ##实现系统开机自动配置
route add -host 192.168.80.100 dev lo:0
chmod +x /etc/rc.d/rc.local #给权限
---------添加内核的ARP响应参数,阻止更新vip的MAC地址,避免发送冲突------------
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1 系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce=2 系统只不使用IP包的源地址来设置ARP请求的源地址,而使用发送接口的地址
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
sysctl -p ##加载配置
-----开启服务器------------------------------
cd /var/www/html
echo '<h1>this is the second test web!</h1>' >index.html
systemctl start httpd
虚拟机浏览器输入 192.168.80.13 测试是否成功
3.5、调度器7-7
--------- 7-7 调度(负载均衡)服务器--192.168.80.20-----------------
---------添加第二张网卡-----------
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255 #子网掩码必须全为1
ifup ens33:0 ##启动网卡
---------开启ip转发功能-----------
vim /etc/sysctl.conf ## 开启ip路由转发功能
net.ipv4.conf.lo.arp_ignore=0
net.ipv4.conf.lo.arp_announce=0
net.ipv4.conf.all.arp_ignore=0
net.ipv4.conf.all.arp_announce=0
sysctl -p ##加载配置
---------------安装ipvsadm管理工具---------------
mount /dev/sr0 /mnt
yum install -y ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm #启动服务器需要的文件
---------------加载LVS内核模块------------------
ipvsadm -C ## 清除之前规则
ipvsadm -A -t 192.168.80.100:80 -s rr
ipvsadm -a -t 192.168.80.100:80 -r 192.168.80.12:80 -g
ipvsadm -a -t 192.168.80.100:80 -r 192.168.80.13:80 -g
ipvsadm ## 加载
ipvsadm -ln ##显示状态
3.6、检验
------一台window服务器
ie浏览器测试:192.168.80.100