系统:
一台centos 6,两台centos 7虚拟机
LVS介绍:
参考:linux服务器集群系统
拓扑:
LVS集群至DR模式搭建:
1.在director服务器上建立脚本文件lvs_dr.sh:
#vim lvs_dr.sh
在lvs文件中写入以下内容:
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.137.100
rs1=192.168.137.20
rs2=192.168.137.130
ifconfig ens33:0 down
ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:0
给予脚本文件执行权限:
chmod +x lvs_dr.sh
执行:
bash lvs_dr.sh
2.在两个realServer服务器上建立脚本文件lvs_realserver.sh:
#vim lvs_realserver.sh
在文件lvs_realserver.sh中写入以下内容:
#! /bin/bash
vip=192.168.137.100
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
两个realserver的脚本相同,建立VIP并修改arp响应。
给予脚本执行权限:
chmod +x lvs_realserver.sh
执行:
bash lvs_realserver.sh
LVS相关注意事项:
关于时间同步:各节点间的时间偏差不大于1s,建议使用统一的ntp服务器进行更新时间;
DR模型中的VIP的MAC广播问题:
在DR模型中,由于每个节点均要配置VIP,因此存在VIP的MAC广播问题,在现在的linux内核中,都提供了相应kernel 参数对MAC广播进行管理,具体如下:
arp_ignore: 定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标地址配置在到达的接口上的时候,才给予响应;DR模型使用
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上地址匹配的网络进行通告;DR模型使用
3.在两个realserver服务器上安装httpd服务:
yum install httpd -y
4.分别编辑默认页面(方便识别请求的是哪一台服务器)
vim /var/www/html/index.html
分别写入<h1>192.168.137.130</h1>和<h1>192.168.137.20</h1>
两台realserver启动httpd服务:
service httpd start
5.在主服务器安装ipvsadm管理工具:
yum install ipvsadm -y
安装完成后使用ipvsadm -L -n查看生成的规则:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.137.100:80 wrr
-> 192.168.137.20:80 Route 1 0 0
-> 192.168.137.130:80 Route 1 0 0
如上即为正常生成了转发规则。
6.Director和realserver三台服务器均关闭selinux和防火墙:
setenforce 0
service firewalld stop
service iptables stop
使用VIP访问均衡器(director服务器)
使用浏览器或者curl 192.168.137.100这种方式访问
均衡器会将请求调度到realserver,在director服务器上通过ipvsadm -L -n --stats命令查看统计信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.137.100:80 54 448 0 97542 0
-> 192.168.137.20:80 27 342 0 88972 0
-> 192.168.137.130:80 27 106 0 8570 0