作者:0.0 | 来源:互联网 | 2023-06-21 10:34
LVS负载均衡----DR模式一:DR模式的定义直接路由(DirectRouting)简称DR模式,采用半开放式的网络结构,与TUN模式的结构类型,但各节点并不是分散在各地,而
LVS 负载均衡 ---- DR模式
一:DR模式的定义
二:LVS-DR 中的ARP问题
三:实验配置
1、实验环境
(1)4台centos7虚拟机,2台作为调度服务器(lvs),2台作为节点服务器(web)
(2)客户端主机能够通过虚拟ip地址,访问到后台的 Web服务器的网页
2、实验步骤
(配置都相同,就IP地址不同)
(1)修改主机名,并安装软件包
[root@localhost ~]# hostnamectl set-hostname lvs01
[root@localhost ~]# su
[root@lvs01 ~]#
[root@lvs01 ~]# yum install keepalived ipvsadm -y
(2)修改参数内核文件
[root@lvs01 ~]# vim /etc/sysctl.conf
‘末行添加’
net.ipv4.ip_forward=1 ‘启动路由转发功能’
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0 ‘关闭重定向功能’
net.ipv4.conf.ens33.send_redirects = 0[root@lvs01 ~]# sysctl -p ‘让上述配置生效’
(3)设置虚拟地址
[root@lvs01 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs01 network-scripts]# ls
[root@lvs01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs01 network-scripts]# vim ifcfg-ens33:0
‘删除原有内容,添加虚拟地址’
DEVICE=ens33:0
OnBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
(4)LVS服务器创建脚本便于service管理
[root@lvs01 network-scripts]# cd /etc/init.d/
[root@lvs01 init.d]# ls
functions netconsole network README
[root@lvs01 init.d]# vim dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10 ‘虚拟ip’
RIP1=192.168.100.201 ‘真实web服务器IP地址’
RIP2=192.168.100.202
case "$1" in
start)/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ‘保存配置’systemctl start ipvsadm ‘启动配置’/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev ens33:0 ‘添加路由网段信息’/sbin/ipvsadm -A -t $VIP:80 -s rr ‘指定虚拟服务访问入口,指定轮询算法’/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ‘指定真实服务器,dr模式’/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -gecho "ipvsadm starting ---- ------[ok]";;
stop)/sbin/ipvsadm -C ‘清空缓存’systemctl stop ipvsadm ‘关闭服务’ifconfig ens33:0 down ‘关闭接口’route del $VIP ‘删除路由信息’echo "ipvsamd stoped--------------[ok]";;
status)if [ ! -e /var/lock/subsys/ipvsadm ]; then ‘判断文件存在与决定状态’echo "ipvsadm stoped----------------------"exit 1elseecho "ipvsamd Runing------------[ok]"fi;;
*)echo "Usage: $0 {start I stop I status }"exit 1
esac
exit 0[root@lvs01 init.d]# chmod +x dr.sh ‘给权限’,先不要执行脚本
(5)把网卡NAT模式改为仅主机模式,修改IP地址,重启网络
[root@lvs01 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@lvs01 init.d]# service dr.sh start ‘开启dr脚本’
(配置基本相同,网页内容、IP地址需改动)
(1)修改主机名, 安装httpd
[root@localhost ~]# hostnamectl set-hostname web01
[root@localhost ~]# su
[root@web01 ~]# systemctl stop firewalld.service
[root@web01 ~]# setenforce 0
[root@web01 ~]# yum install httpd -y
(2)添加网页内容,用于之后的验证
[root@web01 ~]# cd /var/www/html
[root@web01 html]# vim index.html
‘给web01添加1行网页内容’
this is kg web‘给web02添加1行网页内容’
this is ac web
(3)设置回环地址,指定虚拟IP地址
[root@web01 html]# cd /etc/sysconfig/network-scripts/
[root@web01 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@web01 network-scripts]# vim ifcfg-lo:0
‘删除原有内容,添加4行内容’
DEVICE=lo:0
IPADDR=192.168.100.10 ‘指定VIP’
NETMASK=255.255.255.0
OnBOOT=yes
(4)编写web 服务脚本
[root@web01 network-scripts]# cd /etc/init.d
[root@web01 init.d]# vim web.sh
#!/bin/bash
VIP=192.168.100.10
case "$1" instart)ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP/sbin/route add -host $VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)ifconfig lo:0 downroute del $VIP /dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stopd";;*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0[root@web01 init.d]# scp /etc/init.d/web.sh root@192.168.34.184:/etc/init.d/ ‘把web.sh脚本远程复制到另一台web服务器上’‘省去给另一台web的配置’
到另一台web服务器中查看下:
(5)设置网卡为仅主机模式,修改IP地址
[root@web01 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[oot@web02 network-scripts]# service network restart ‘开启网络’
[root@web02 network-scripts]# ifconfig ‘查看地址’
(6)给权限 ,执行web.sh 脚本
root@web01 init.d]# cd /etc/init.d
[root@web01 init.d]# chmod +x web.sh ‘给web.sh 权限’
[root@web01 init.d]# service web.sh start ‘执行脚本’
(7)在两台web服务器浏览器上输入127.0.0.1 验证