角色 IP地址 备注
主LVS调度器(MASTER) 10.207.237.21 使用keepalived配置
备LVS调度器(BACKUP) 10.207.237.22 使用keepalived配置
HTTP服务器(RS1) 10.207.237.23 apache服务器
HTTP服务器(RS2) 10.207.237.24 apache服务器
虚拟IP地址(VIP) 10.207.237.25 虚拟IP地址
安装apache(简单安装测试用)
web23/web24:
添加主机名
[root@web23 ~]# echo "10.207.237.23 web23" >> /etc/hosts
#关闭防火墙
[root@web23 ~]# systemctl stop firewalld
[root@web23 ~]# systemctl disable firewalld
#永久selinux:
[root@web23 ~]# vim /etc/selinux/config
SELINUX=disabled #将enforcing改为disabled
[root@web23 ~]# reboot #重启系统永久生效
#配置yum源,安装apache
yum install -y httpd*
systemctl start httpd
systemctl enable httpd
[root@web23 ~]# vim /var/www/html/index.html #把主页文件写成html标签的格式,添加一下内容
<html>
<head>
<title>测试站点</title>
</head>
<body>
10.207.237.23 web23
</body>
</html>
[root@web23 ~]# systemctl restart httpd #重启服务
http://10.207.237.23 #在浏览器进行测试
http://10.207.237.24 #在浏览器进行测试
lvs21/lvs22主机执行:
#关闭防火墙
[root@lvs21 ~]# systemctl stop firewalld
[root@lvs21 ~]# systemctl disable firewalld
#永久selinux:
[root@lvs21 ~]# vim /etc/selinux/config
SELINUX=disabled #将enforcing改为disabled
[root@lvs21 ~]# reboot #重启系统永久生效
#安装依赖包
yum -y install libnl libnl-devel
yum -y install libnfnetlink-devel
yum -y install gcc gcc-c++ autoconf automake
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
#安装keepalived
yum -y install keepalived
1、lvs21配置LVS-DR-MASK的keepalived.conf配置文件
[root@lvs21 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
xxxx@qq.com #设置报警邮箱,一般不再这做,而是用其他方式报警
}
notification_email_from keepalived@localhost #设定发送邮件地址
smtp_server 127.0.0.1 #设定发送邮件服务器
smtp_connect_timeout 30 #设定SMTP连接超时时间
router_id LVS_DEVEL
#查阅说明文档得知route_id配置是为了标识当前节点,当然两个节点的此项设置可相同,也可不相同
}
vrrp_instance VI_1 { #定义虚拟路由实例,不同实例ID不同
state MASTER #定义服务器在keepalived中的角色主服务器
interface eth0 #定义进行检测的端口eth0
virtual_router_id 51 #定义虚拟路由ID,同一个实例的主从一样
priority 150 #定义在虚拟路由器组的权限,越大越高
advert_int 1 #定义检测时间间隔
authentication { #定义认证方式密码,主从必须一样
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP地址
10.207.237.25
}
}
virtual_server 10.207.237.25 80 { #定义虚拟服务,需指定IP地址和端口,空格隔开
delay_loop 3 #定义RS运行情况监测时间间隔
lb_algo rr #定义负载调度算法
lb_kind DR #定义LVS的工作模式有NAT、TUN、DR三种模式
#nat_mask 255.255.255.0
persistence_timeout 0 #定义会话保持时间,S为单位
protocol TCP #指定转发协议
real_server 10.207.237.23 80 { #定义真实服务器IP地址和端口
weight 3 #定义RS的权重
TCP_CHECK { #RS server健康检查部分
connect_port 80 #定义健康检查端口
connect_timeout 3 #定义超出10s连接超时
retry 3 #定义重试次数
delay_before_retry 3 #定义重试时间间隔
}
}
real_server 10.207.237.24 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
2、lvs22主机配置LVS-DR-BACKUP的keepalived.conf配置文件
[root@lvs22 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
xxxx@qq.com #设置报警邮箱,一般不再这做,而是用其他方式报警
}
notification_email_from keepalived@localhost #设定发送邮件地址
smtp_server 127.0.0.1 #设定发送邮件服务器
smtp_connect_timeout 30 #设定SMTP连接超时时间
router_id LVS_DEVEL
#查阅说明文档得知route_id配置是为了标识当前节点,当然两个节点的此项设置可相同,也可不相同
}
vrrp_instance VI_1 { #定义虚拟路由实例,不同实例ID不同
state BACKUP #定义服务器在keepalived中的角色备服务器
interface eth0 #定义进行检测的端口eth0
virtual_router_id 51 #定义虚拟路由ID,同一个实例的主从一样
priority 100 #定义在虚拟路由器组的权限,越大越高
advert_int 1 #定义检测时间间隔
authentication { #定义认证方式密码,主从必须一样
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP地址
10.207.237.25
}
}
virtual_server 10.207.237.25 80 { #定义虚拟服务,需指定IP地址和端口,空格隔开
delay_loop 3 #定义RS运行情况监测时间间隔
lb_algo rr #定义负载调度算法
lb_kind DR #定义LVS的工作模式
#nat_mask 255.255.255.0
persistence_timeout 0 #定义会话保持时间,S为单位
protocol TCP #指定转发协议
real_server 10.207.237.23 80 { #定义真实服务器IP地址和端口
weight 3 #定义RS的权重
TCP_CHECK { #RS server健康检查部分
connect_port 80 #定义健康检查端口
connect_timeout 3 #定义超出10s连接超时
retry 3 #定义重试次数
delay_before_retry 3 #定义重试时间间隔
}
}
real_server 10.207.237.24 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
3、web23/web24客户端配置LVS参数脚本
lvs-real.sh
#!/bin/sh
VIP=10.207.237.25
. /etc/rc.d/init.d/functions
case "$1" in
#禁用本地的ARP请求、绑定本地回环地址
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/sysctl -p >/dev/null 2>&1
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
#在回环地址上绑定VIP,设定掩码,与Direct Server(自身)上的IP保持通信
/sbin/route add -host $VIP dev lo:0
echo "LVS-DR real server starts successfully.\n"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
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
echo "LVS-DR real server stopped.\n"
;;
status)
isLoOn=`/sbin/ifconfig lo:0 | grep "$VIP"`
isRoOn=`/bin/netstat -rn | grep "$VIP"`
if [ "$isLoON" == "" -a "$isRoOn" == "" ]; then
echo "LVS-DR real server has run yet."
else
echo "LVS-DR real server is running."
fi
exit 3
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
4、web23/web24执行脚本
添加脚本lvs-real.sh到/usr/local/sbin/
[root@web23 sbin]# ./lvs-real.sh restart
#设置开机自启动
vim /etc/rc.local
/usr/local/sbin/lvs-real.sh start
chmod +x /etc/rc.local
5、lvs21/lvs22安装lvs
yum install -y ipvsadm
#重启keepalived
systemctl restart keepalived
systemctl status keepalived
systemctl enable keepalived
6、查看配置信息
ipvsadm -L -n
7、测试
8、在LVS主机上查看负载均衡情况
watch -n 2 'ipvsadm -lnc |grep 10.207.237.25 |grep EST'
备注:
如果重启keepalived后iptables多一条规则,删除keepalived.conf中的vrrp_strict