一.Keepalived原理
1.群集特点
- 负载均衡 用于提高群集的性能 LVS Nginx HAProxy SLB F5
- 健康检查(探针) 针对于调度器和节点服务器 Keepalived Heartbeat
- 故障转移 通过VIP漂移实现主备切换 VRRP 脚本
健康检查(探针)常用的工作方式:
- 发送心跳消息 vrrp报文 ping/pong
- TCP端口检查 向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
- HTTP URL检查 向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法,如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常 如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常
2.Keepalived工作原理及工作模式
- Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
- 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
Keepalived的工作模式:
- 抢占模式:MASTER节点从故障中恢复后,会将VIP从BACKUP节点中抢占过来。
- 非抢占模式:MASTER节点恢复后不抢占VIP。(主备节点的state都配置为BAKCUP,且都添加配置nopreempt)
3.Keepalived工具介绍
专为LVS和HA设计的一款健康检查工具
- 支持故障自动切换(Failover)
- 支持节点健康状态检查(Health Checking)
判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。
- 官方网站:http://www.keepalived.org/
4.Keepalived实现原理剖析
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP (虚拟路由冗余协议) 是针对路由器的一种备份解决方案
- 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
- 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
5.Keepalived安装与启动
- 在LVS群集环境中应用时,也需用到ipvsadm管理工具
- YUM安装Keepalived
- 启用Keepalived服务
配置Keepalived master服务器
Keepalived配置目录位于/etc/keepalived/
keepalived.conf是主配置文件
- global defs {...} 区段指定全局参数
- vrrp_instance 实例名称 {...}区段指定VRRP热备参数
- 注释文字以”!”符号开头
- 目录samples,提供了许多配置样例作为参考
二.Keepalived工作过程演示
工作原理:
- 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
1.准备工作
准备两台服务器
#初始化操作,关闭防火墙
systemctl stop firewalld
setenforce 0
2.安装服务
yum install -y keepalived
3.修改配置
1)主服务器配置
vim keepalived.conf
#修改配置前,复制一个文件出来以防修改文件配置错误
cp keepalived.conf keepalived.conf.bak
2)备份服务器配置
vim keepalived.conf
#修改配置前,复制一个文件出来以防修改文件配置错误
cp keepalived.conf keepalived.conf.bak
3)查看配置成功方式
- Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?
答案:
Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。
三.实验操作
LVS+Keepalived 高可用群集部署
主DR服务器 | 192.168.86.60 |
备DR服务器 | 192.168.86.70 |
web1服务器 | 192.168.86.110 |
web2服务器 | 192.168.86.20 |
vip地址 | 192.168.86.111 |
nfs共享存储服务器 | 192.168.86.140 |
1.初始操作
systemctl stop firewalld
setenforce 0
2.配置web1与web2服务器
将nfs共享存储服务器中的/share/ww111、/share/www222分别挂载到web1与web2中
配置网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.86.111 #指向vip地址
NETMASK=255.255.255.255
systemctl restart network
修改 /etc/sysctl.conf 文件
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
添加路由
route add -host vip地址 dev lo:0
3.配置主服务器与备服务器
yum -y install ipvsadm keepalived #安装keepalived
modprobe ip_vs #开启模块
cat /proc/net/ip_vs 或者 lsmod | grep ip_vs #查看模块
开始配置keeplived
global_defs { #定义全局参数
--10行--修改,邮件服务指向本地
smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
router_id LVS_01
后面四行vrrp开头的全部删掉
vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
state MASTER
--21行--修改,指定承载vip地址的物理接口
interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
virtual_router_id 51
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
priority 100
修改virtual_ipaddress { #指定群集vip地址
192.168.73.15
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.73.15 80
delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 0 #连接保持时间(秒)
protocol TCP #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
real_server 192.168.80.110 80 {
weight 1 #节点的权重
--45行--删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
后面多余的配置可以直接删除掉
4.验证测试
浏览器访问 http://192.168.86.111/ww111/test.html
再在主服务器关闭 keepalived 服务后再测试