环境准备:(配置好IP,开启路由转发)
构建DR模式的负载均衡集群
拓展
ARP
arp_annouce 通告
0 将本机任何接口上的任何地址都向外通告
1 尽可能避免向目标网络通告其网络不匹配的地址信息
2 仅向目标网络通告与其网络匹配的地址信息
arp_ignore 响应
0 只要本机配置有该ip就响应
1 仅在请求的目标地址配置在请求到达的接口上时,才给予响应。
实验规划:
Centos7五台服务器(考试可以去除测试机和路由器)
- 1号充当测试机:
IP:192.168.10.13
GW:192.168.10.23
- 2号作为路由器:双网卡,外网网卡和内网网卡
ens33:192.168.10.23
ens37:192.168.11.23
- 2号机路由器开启路由转发:
vim /etc/sysctl.conf
添加内容:net.ipv4.ip_forward = 1
sysctl -p
- 3号机作为负载均衡服务器:添加网卡子接口作为VIP地址
DIP--ens33
IP:192.168.11.33
GW:192.168.11.23
网卡子接口:VIP地址
VIP--ens33:0
IP:192.168.11.200
GW:192.168.11.23
- 4号和5号:两台作为real server,应用服务器(配置本地回环网卡子接口)
4号:
ens33:192.168.11.43
GW:192.168.11.23
5号:
ens33:192.168.11.53
GW:192.168.11.23
本地回环网卡配置子接口----------两台应用服务器同步操作:按照以下步骤操作
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
1 DEVICE=lo
2 IPADDR=192.168.11.200
3 NETMASK=255.255.255.255
- 注意:修改完配置文件后,重启网卡
systemctl restart network
实验步骤
第一步: 4号、5号后端真实服务器配置(同步操作)
- 两个后端服务器上都要安装httpd服务器
yum -y install httpd
- 在后端服务器1上配置网站
cd /var/www/html/
echo "http1 1 hao" >> index.html
- 在后端服务器2上配置网站
cd /var/www/html/
echo "http2 2 hao " >> index.html
- 两个后端服务器的内网网关地址为负载调度器的内网ip地址(两个服务器都执行,如果想要永久生效,写入网卡配置文件)
route add default gw 192.168.11.23
- 修改keepalive配置文件
cp -a /usr/share/doc/httpd-2.4.6/httpd-default.conf /etc/httpd/conf.d/
vim /etc/httpd/conf.d/httpd-default.conf
修改以下两部分
- httpd服务启动
systemctl restart httpd
systemctl enable httpd
- 先测试机测试访问网站是否可以访问
- 2号机路由器开启路由转发:
vim /etc/sysctl.conf
添加内容:net.ipv4.ip_forward = 1
sysctl -p
测试机测试
[root@zjt13 ~]# curl 192.168.11.43
http1 1 hao
[root@zjt13 ~]# curl 192.168.11.53
http2 2 hao
第二步:配置3号负载调度器(集群规则做MAC地址转换)
- 优化配置(关闭路由重定向)
vim /etc/sysctl.conf
(三选一)
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl –p
- 配置网卡子接口,作为VIP,集群IP地址
[root@zjt33 ~]# cd /etc/sysconfig/network-scripts/
[root@zjt33 network-scripts]# cp -a ifcfg-ens33 ifcfg-ens33:0
[root@zjt33 network-scripts]# vim ifcfg-ens33:0
- 重启网卡
systemctl restart network
- 查看是否支持ipvs内核模块
config为内核文件,如果做过内核升级应该判断正在用的内核版本的文件
grep -i "ip_vs" /boot/config-3.10.0-957.el7.x86_64
- 安装用户的管理命令,ipvsadm工具进行创建、管理集群,用rpm或yum安装
yum -y install ipvsadm.x86_64
- 创建集群—指定VIP
ipvsadm -A -t 192.168.11.200:80 -s rr
- 查看:
ipvsadm -ln
- 向集群内添加服务器,建立服务器池
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.43:80 -g
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.53:80 -g
- 再次查看:
ipvsadm -ln
集群创建完成没有配置文件不需要保存
第三步:配置4号、5号应用服务器(真实服务器):两台服务器同步操作
- 两个真实服务器都配置--添加虚拟网卡接口,将VIP地址添加到回环网卡子接口上
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
1 DEVICE=lo
2 IPADDR=192.168.11.200
3 NETMASK=255.255.255.255
4 NETWORK=127.0.0.0
5 # If you're having problems with gated making 127.0.0.0/8 a martian,
6 # you can change this to something else (255.255.255.255, for example)
7 BROADCAST=127.255.255.255
8 ONBOOT=yes
9 NAME=loopback
- 重启网卡
systemctl restart network
- 优化配置-调整内核参数
vim /etc/sysctl.conf
三组任选一组
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@zjt43 network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
- 添加路由策略(centos7版本可以不用做)
route add -host 192.168.11.200 dev lo:0
第四步:测试(刷新看效果):添加路由器防火墙规则
2号机添加路由器防火墙规则
iptables -t nat -A PREROUTING -i ens33 -d 192.168.10.23 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200
#192.168.10.23—路由器公网IP地址
#192.168.11.200—集群IP地址(VIP)
查看防火墙规则:
iptables -t nat -L
1号测试机访问路由器公网IP地址
- 测试机操作:vim /etc/hosts
- 测试:curl或者elinks测试
[root@zjt13 ~]# curl www.zjt.com
- 测试机安装软件包httpd-tools
yum -y install httpd-tools
[root@zjt13 ~]# which ab
/usr/bin/ab
[root@zjt13 ~]# rpm -qf /usr/bin/ab
httpd-tools-2.4.6-88.el7.centos.x86_64
- 测试机使用ab命令进行测压
ab -c 100 -n 1000 http://192.168.10.23:80/index.html
- 测试机访问完后在负载调度器上查看
ipvsadm -ln