一、keepalived实现原理
在实际的企业应用中,单台服务器承担应用存在单点故障的危险。
1、keepalived工具介绍
- 专为LVS和HA设计的一款健康检查工具
支持节点健康状态检查(health checking)
支持故障自动切换(failover)
官网:http://www.keepalived.org/
2、keepalived实现原理剖析
- keepalive采用VRRP热备份协议
实现Linux服务器的多机热备功能 - VRRP(虚拟路由冗余协议):是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每一个热备组内同时只有一台主路由器提供服务,其他路由器处理冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
3、keepalived配置文件
keepalived可实现多机热备,每一个热备组可有多台服务器
双机热备的故障切换是由虚拟IP地址的飘逸来实现的,适用于各种应用服务器
- keepalived安装与启动:在LVS群集环境中,还会用到ipvsadm工具
yum安装即可
配置文件在/etc/keepalived下
配置keepalived master服务器
常用配置选项:
router_id HA_TEST_R1 :本服务器的名称
vrrp_instance VI_1 :定义VRRP热备实例
state MASTER :热备状态,MASTER表示主服务器
interface ens33 :承载VIP地址的物理接口
virtual_router_id 1 :虚拟路由器的ID号,每一个热备组保持一致
priority 100 :优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS :认证类型
auth_pass 123456 :密码字串
virtual_ipaddress {vip} :指定漂移地址,可以有多个
配置keepalived slave服务器
与master服务器的配置有三个选项不同:
router_id :设为自有的名称
state :设为BACKUP
priority :值低于master
其他配置相同
二、LVS + keepalived高可用集群部署
1、LVS-DR部署
前面实验已经部署了https://blog.csdn.net/weixin_47152389/article/details/108352111
2、keepalived部署
实验拓扑:
部署步骤:
基于LVS_DR上面,添加keepalived的配置
主服务器配置:
[root@localhost init.d]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
......
smtp_server 127.0.0.1 ##指向本地
smtp_connect_timeout 30
router_id LVS_01 ##指向名称,备份服务器id不同
......
}
vrrp_instance VI_1 {
state MASTER ##备份服务器为BACKUP
interface ens33 ##此处修改为ens33物理接口
virtual_router_id 10 ##组号,主备要相同
......
authentication {
auth_type PASS
auth_pass 1111
priority 100 ##优先级,竞选主备服务器
}
virtual_ipaddress {
192.168.200.100 ##虚拟IP地址
}
}
virtual_server 192.168.200.100 80 { ##修改
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.30 80 { ##修改
weight 1
TCP_CHECK {
connect_port 80 ##端口都为80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.40 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@localhost init.d]# systemctl start keepalived
备用服务器配置:
[root@localhost init.d]# vim /etc/keepalived/keepalived.conf
......
vrrp_instance VI_1 {
state MASTER ##备份服务器为BACKUP
interface ens33 ##此处修改为ens33物理接口
virtual_router_id 10 ##组号,主备要相同
......
authentication {
auth_type PASS
auth_pass 1111
priority 92 ##优先级比主服务器低
}
virtual_ipaddress {
192.168.200.100 ##虚拟IP地址
}
}
......
[root@localhost init.d]# systemctl start keepalived
测试:
轮询访问已经验证过了,在DR实验中
接下来,把主服务器的虚拟IP给关闭了,再来查看能不能访问。
还是可以访问,此时工作的备用服务器