Keepalived概述及安装
Keepalived的工作原理
Keepalived主要用来提供故障切换和健康检查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
主要应用场合为服务器群集中
官方网站:http://www.keepalived.org/
keepalived的热备份方式
以软件的方式实现Linux服务器多机热备功能。由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

Keepalived的安装与服务控制
-
安装支持软件
在编译安装Keepalived之前,必须先安装内核开发包kernel-devel,以及openssl-devel、popt-deve等支持库。除此之外,在LVS群集环境中应用时也需要用到ipvsadm管理工具。yum -y install kernel-devel openssl-devel popt-devel yum install -y ipvsadm -
编译安装Keepalived
使用指定的Linux内核位置对Keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了。只有在使用LVS时,才需要参数–with-kermel-dir.配置完成后,依次执行make、make install 进行安装。tar xvf keepalived-2.0.16.tar.gz -C /usr/src/ cd /usr/src/keepalived-2.0.16/ ./configure --prefix=/usr/local/keepalived make && make install cd /usr/local/keepalived/etc/keepalived
使用Keepalived服务
-
主服务器的配置
vi keepalived.conf global_defs { router_id HA_TEST_R1 //本服务器的名称 } vrrp_instance VI_1 { //定义VRRP热备实例 state MASTER //热备状态,MASTER表示主服务器 interface ens37 //承载VIP地址的物理接口 virtual_router_id 1 //虚拟路由器的ID号,每个热备组保持一致 priority 100 //优先级,数字越大优先级越高 advert_int 1 //通告间隔秒数 authentication { //认证信息,每个热备组保持一致 auth_type PASS //认证类型 auth_pass 123456 //密码字串 } virtual_ipaddress { //指定漂移地址(VIP) 192.168.137.254 } }
确认上述配置无误,然后启动keepalived服务,实际状态为MASTER的主服务器将为ens33接口自动添加VIP地址,通过ip命令可以查看(注意:不能用ifconfig)
./keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
ip addr show dev ens33
-
备用服务器的配置
yum install -y keepalived ipvsadm //YUM安装 keepalived ipvsadm cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak vi keepalived.conf global_defs { router_id HA_TEST_R2 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 1 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.137.254 } }
开启服务keepalived
systemctl start keepalived
systemctl enable keepalived
ip addr show dev ens33
测试双机热备功能
- 测试通连性测试,在客户机中ping -t 192.168.127.251
- 然后再停止主用服务器的keepalived服务
ps -elf| grep keep
-e 显示所有进程 -f 全格式 -l 长格式
kill 46499
LVS+Keepalived高可用群集
Keep的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
这里我用之前的DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备。


配置主调度器
- 全局配置、热备配置
首先应为主从调度器实现热备功能,漂移地址使用LVS群集的VIP地址
cd /usr/local/keepalived/etc/keepalived
vi keepalived.conf
global_defs {
router_id HA_TEST_R1 主调度器的名称(自定义)
}
vrrp_instance VI_1 {
state MASTER 主调度器的热备状态MASTER:主
interface ens33
virtual_router_id 1
priority 100 主调度器的优先级
advert_int 1
authentication { 主、从热备认证信息
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.137.254 指定群集VIP地址
}
}
- WEB服务器池配置
在Keepalived的热备基础上,添加“virtual_server VIP端口{…}”区段来配置虚拟服务器,主要包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。
virtual_server 192.168.137.254 80 { 虚拟服务器地址(VIP)、端口
delay_loop 15 健康检查间隔时间(秒)
lb_algo rr 轮询(rr)调度算法
lb_kind DR 直接路由(DR)群集工作模式
protocol TCP
real_server 192.168.137.130 80 { 第一个web节点的地址、端口
weight 1 权重
TCP_CHECK { 健康检查方式
connect_port 80 检查的目标端口
connect_timeout 3 连接超时(秒)
nb_get_retry 3 重试次数
delay_before_retry 4 重试间隔(秒)
}
}
real_server 192.168.127.158 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
2. 配置从调度器
从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整router_id、state、priority参数即可,其余内容完全相同
global_defs {
router_id HA_TEST_R2 从调度器的名称
}
vrrp_instance VI_1 {
state BACKUP 从调度器的热备状态,BACKUP为备用
interface ens33
virtual_router_id 1
priority 99 从调度器的优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.137.254
}
}
重启Keeplived服务,查看配置生效否

关闭主调度器,查看从调度器配置生效否。

配置web节点服务器
根据所选的集群工作模式不同(DR或NAT),节点服务器的配置也有些差异。以DR为例,除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口lo:0配置VIP地址,并添加一条到VIP的本地路由,步骤略过。
测试
在客户机的浏览器中,能够通过LVS+Keepalived群集的VIP地址(192.168.137.254),正常访问页面内容

当主、从调度器任何一个失效时。Web站点仍然可以访问


只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡
本文详细介绍了Keepalived的功能与安装过程,重点讲解如何利用Keepalived实现服务器群集的故障切换与健康检查,以及与LVS结合构建高可用的负载均衡解决方案。
1379

被折叠的 条评论
为什么被折叠?



