Keepalived的设计目标识构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双击热备。使用Keeepalived 构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现双机热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后重新加入。
在基于LVS + Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器、三台以上的节点服务器。使用Keepalived来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站群集平台。
实验环境:
VIP(虚拟IP) :192.168.100.10
DR 1(主调度器) : 192.168.100.200 centos7 系统
DR 2 (从调度器) :192.168.100.210 centos7 系统
Web1 (节点服务器):192.168.100.220 centos7 系统
web2 (接待服务器):192.168.100.230 centos7 系统
由于使用的时候centos7系统,可以在线下载软件包,下载完成后再将模式改为仅主机模式。
主、从调度器: yum install keepalived ipvsadm –y
节点服务器 :yum install httpd –y
一.配置主调度服务器
1.更改配置文件 vim /etc/sysctl.conf 并使其生效
2.创建虚拟网卡
3.添加服务启动脚本 cd /etc/init.d/
vim dr.sh
4.配置主调度器,全局配置,热备配置。首先应为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址
cd /etc/keepalived/
vim keepalived.conf
global_defs { ... smtp_server 127.0.0.1 //指向本地 router_id LVS_01 //指定主调度器名称,备份服务器不同名称 ... }vrrp_instance VI_1 {
state MASTER //主服务器的热备份状态是 MASTER 备份服务器是BACKUP virtual_router_id 10 //组号相同 ... auth_pass abc123 //验证密码 priority 100 //优先级备份小于主 ... virtual_ipaddress { 192.168.100.10 // 指定群集VIP地址 } ... virtual_server 192.168.100.10 80 { //虚拟服务器地址(VIP) 、端口delay_loop 15 //健康检查时间
lb_algo rr //轮询(rr)调度算法
lb_kind DR // 直接路(DR)群集工作模式
... real_server 192.168.100.220 80 { //真实节点服务器Web 1 地址 、端口 weight 1 //节点的权重 TCP_CHECK { //健康检查方式 connect_port 80 //检查目标端口 connect_timeout 3 //连接超时(秒) nb_get_retry 3 //重试次数 delay_before_retry 3 //重试间隔(秒) } } real_server 192.168.100.203 80 { 节点服务器Web 2 地址、端口 weight 1 TCP_CHECK { connect_port 80 #添加端口 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }5.启动keepalive 服务
查看虚拟网卡
主调度器配置完成,从调度器的配置与主调度器基本相同,包括全局配置、热备配置,服务池配置。只需调整router_id 、state 、 priority参数即可,其余内容完全相同。
cd /etc/keepalived/vim keepalived.conf
router_id LVS_02
vrrp_instance VI_1 {
state BACKUP #备份服务器是BACKUP virtual_router_id 10real_server 192.168.100.230 80 {
weight 1 TCP_CHECK { connect_port 80 #添加端口 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
二.配置节点服务器web1
关闭防火墙,启动httpd 服务
systemctl start httpd.service systemctl stop firewalld.service setenforce 01.添加一块虚拟网卡
DEVICE=lo:0
IPADDR=192.168.100.10 NETMASK=255.255.255.0 ONBOOT=yes
2.编辑服务启动脚本,接收调度服务器的回馈。
cd /etc/init.d/ vim web.sh#!/bin/bash
VIP=192.168.100.10 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev 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 >/dev/null 2>&1 echo "RealServer Start OK " ;; stop) ifconfig lo:0 down route del $VIP /dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stopd" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 03.启动脚本
4.使用火狐浏览器自测
重新启动服务
service web.sh stop
service web.sh start节点服务器Web1 配置完成,Web2的服务器与web1的配置相同。
三。在客户端测试。访问虚拟IP地址。