Keepalived概述
- 调度出现单点故障,如何解决?
- Keepalived实现了高可用集群
- Keeepalived最初是为LVS设计的,专门监控各服务器节点状态
- Keepalived后来加入了VRRP功能,防止单点故障
Keepalived运行原理
- Keepalived检测每个服务器节点状态
- 服务器节点异常或工作出现故障,Keepalived将故障节点从集群系统剔除
- 故障节点恢复后,Keepalived再将其加入集群系统中
- 所有工作自动完成,无需人工干预
Keepalived安装
RHEL7中已经包含Keepalived软件包yum安装即可
yum -y install keepalived
配置文件解析
- /etc/keepalived/keepalived.conf
- 备注:配置文件中大括号" { " 前应有宫格,否则会出现 keepalived无法启动或ipvsadm -Ln 无信息
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost # 设置报警收件人信箱
}
notification_email_from admin@keepalived.cn # 设置发件人
smtp_server 127.0.0.1 # 定义邮箱服务器
smtp_connect_timeout 30
router_id LVS_DEVEL # 设置路由 ID
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { # 定义VRRP热备实例
state MASTER # 热备状态,MASTER表示主服务器,BACKUP表示从服务器
interface eth0 # 配置lvs对外开放的IP
virtual_router_id 52 # 随便写,主辅VRID号必须一致
priority 150 # 服务器优先级,数值越大优先级越高
advert_int 1 # 通告间隔秒数(心跳频率)
authentication { # 热备认证信息,每个热备组保持一致
auth_type PASS 认证类型
auth_pass 1111 # /密码字符串,主辅服务器密码必须一致,
}
virtual_ipaddress {
192.168.4.100 # 指定漂移地址(VIP),可以有多个
}
}
virtual_server 192.168.4.100 80 { # 设置 vip(地址与端口之间是空格,而不是 “ : ”)
delay_loop 6 # 健康检查的间隔时间(秒)
lb_algo rr # 设置调度算法
lb_kind DR # 设置lvs的工作模式
persistence_timeout 50 # 保持客户端的请求在这个时间段内全部发到同一个真实服务器
protocol TCP # 应用服务器采用的是TCP协议
real_server 192.168.4.1 80{ 第一个Web服务器节点的地址、端口
weight 1 # 设置加权轮询权重
TCP_CHECK { # 健康检查方式
connect_timeout 3 # 连接超时(秒)
nb_get_retry 3 # 重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 192.168.4.2 80{ # 第二个Web服务器节点的地址、端口
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
Keepalived + LVS
- 使用Keepalived高可用解决调度器单点失败问题
- 主、备调度器上配置lvs 、 keepalived
- 主调度器异常时,Keepalived启用备用调度器
- RealServer 运行在DR模式下,修改内核参数并附加VIP
个人实验:
使用5台虚拟机,1台作为客户端主机、2台作为LVS调度器、2台作为Real Server
拓扑:
步骤:
1、配置web服务器
1> 配置eth0 ip地址
2> 复制网卡配置文件配置 ifcfg-lo:0 配置VIP地址
3> 这里因为web1也配置与代理一样的VIP地址,所以需要修改内核参数,保证VIP地址不会与调度器冲突
4>重启网络服务,设置防火墙与SELinux
5>安装并启动httpd
2、配置调度器(不配置VIP,有keepalvied自动配置)
1> 配置eth0 ip地址
2> 重启网络服务,设置防火墙与SELinux
3> 安装ipvsadm ,若已存在,则需ipvsadm -C 清空规则
4> 安装Keepalived ,修改配置(见配置文件处)
3、客户端测试
1> 停止其中一台httpd服务
2> 在调度器端 ipvsam -Ln 查看状态
3> shutdown其中一台服务器
4> 在调度器端 ip addr show eth0 查看是否获取到了VIP
5> 客户端使用curl命令反复连接http://192.168.4.5,查看访问的页面是否会轮询到不同的后端真实服务器。
名词解释:
VRRP: 虚拟冗余路由,IETF公共标准
HSRP:热备份路由协议,cisco专有。
lvs + keepalived双主配置
通过2个VIP让2台LVS主机均处于工作状态,就是一边为MARSTER时,对应的互备配置就是BACKUP,互为主备结构,提高资源利用率!