keepalived软件起初是为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个节点的状态,后来又加入了可以实现高可用的VRRP功能,因此keepalived除了能够管理LVS软件以外,还可以作为(Nginx,mysql)的高可用解决方案。
我们本章要介绍的就是使用keepalived实现Nginx的高可用。
keepalived
keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol (虚拟路由冗余协议)的缩写。VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证个别节点宕机后,整个网络可以不间断运行,在华为和cisco的交换机上使用的很多。
原理
两台主机同时安装好keepalived并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备,当Master主机失效或者故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务。
而当Master主机故障修复后,又会自动接管回来它原来处理的工作,角色为Backup的主机则同时释放工作,此时两台主机恢复到最初启动时各自的原始角色,这也叫做不抢占原则
keepalived 搭建
官网
官网比较简陋,我们安装keepalived一般都是直接使用yum安装
yum install -y keepalived
[root@bogon ~]# rpm -qa keepalived
keepalived-1.3.5-1.el7.x86_64
[root@bogon ~]# rpm -ql keepalived
/etc/keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service
/usr/libexec/keepalived
/usr/sbin/keepalived
启动
service keepalived start
但是这时候启动是不成功的,因为你的配置文件使用默认的是错误的
如果你偏要启动,可以tailf -n 200 /var/log/message 查看
keepalived 配置文件说明
etc/keepalived/keepalived.conf
keepalived 软件是为LVS设置的,所以里面有些配置是LVS用的,我们只使用其高可用部分的配置
全局定义部分
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email { #是定义服务故障时的Email地址,可以定义多个
5 acassen@firewall.loc
6 failover@firewall.loc
7 sysadmin@firewall.loc
8 }
9 notification_email_from Alexandre.Cassen@firewall.loc。#指定发送邮件的发件人
10 smtp_server 192.168.200.1 #指定发送邮件的SMTP服务器,如果本机开启了sendmail或者postfix,那么就可以使用上面的配置发送邮件
11 smtp_connect_timeout 30 #超时时间
12 router_id LVS_DEVEL #是指keepalived服务器的路由标识,在一个局域网内,这个标示是唯一的。
13 vrrp_skip_check_adv_addr
14 #vrrp_strict #这条一定要注释,不然VIP 无法被ping通
15 vrrp_garp_interval 0
16 vrrp_gna_interval 0
}
大括号{} 用来分隔区块,要成对出现,如果漏写了半个大括号,keepalived运行时不会报错,但是也不会产生预期的结果
VRRP实例定义部分
19 vrrp_instance VI_1 { #表示定义了一个实例VI_1,注意这个实例在备节点也要存在
20 state MASTER #只有MASTER和BACKUP两种状态,需要大写
21 interface eth0 #网络通信接口,对外提供服务的网络接口
22 virtual_router_id 51 #虚拟路由ID,需要是数字,并且在一个keepalived.conf文件中是唯一的,但是MASTER与BACKUP配置中又必须是相同的,否则脑裂
23 priority 100 #数字越大,优先级越高,MASTER的要高于BACKUP的,一般建议差别大与50
24 advert_int 1 #同步通知间隔,MASTER与BACKUP之间通信检查的时间间隔,单位为s,默认为1
25 authentication {
26 auth_type PASS # 认证权限配置,包括认证类型auth_type和认证密码auth_pass
#认证类型有PASS(simple password,推荐这个)和AH(IPSEC)两种
#官方推荐使用PASS,验证密码使用明文方式,最好长度不要超过8个字符,,MASTER与BACKUP要使用相同的密码才能通信
27 auth_pass 1111
28 }
29 virtual_ipaddress { #虚拟地址,可以多个,这就是VIP,会漂移的那个,这个IP原本是不存在的,是硬生生的被你造出来的
#所以这种IP地址最好在设计网络的时候单独设计一个网段,确保这个网段在你的真实网络中能够通信
30 192.168.200.16
31 192.168.200.17
32 192.168.200.18
33 }
34 }