简介
Keepalived是一个基于VRRP协议来实现服务器的高可用方案,可以利用其来避免单点故障。至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),其他为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会通过组播的方式发送消息给各个备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,各个备份服务器就会根据它们的优先级选举出来一个MASTER来接管虚拟IP,继续提供服务,从而保证了高可用性。
vrrp概念
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。
Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
VRRP协议过程简述
VRRP 将局域网的一组路由器(包括一个Master 即活动路由器和若干个Backup 即备份路由器)组织成一个虚拟路由器,称之为一个备份组。这个虚拟的路由器拥有自己的IP 地址10.100.10.1(这个IP 地址可以和备份组内的某个路由器的接口地址相同,相同的则称为ip拥有者),备份组内的路由器也有自己的IP 地址(如Master的IP 地址为10.100.10.2,Backup 的IP 地址为10.100.10.3)。局域网内的主机仅仅知道这个虚拟路由器的IP 地址10.100.10.1,而并不知道具体的Master 路由器的IP 地址10.100.10.2 以及Backup 路由器的IP 地址10.100.10.3。[1]它们将自己的缺省路由下一跳地址设置为该虚拟路由器的IP 地址10.100.10.1。于是,网络内的主机就通过这个虚拟的路由器来与其它网络进行通信。如果备份组内的Master 路由器坏掉,Backup 路由器将会通过选举策略选出一个新的Master 路由器,继续向网络内的主机提供路由服务。从而实现网络内的主机不间断地与外部网络进行通信。
VRRP原理
一个VRRP路由器有唯一的标识:VRID,范围为0—255该路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]主控路由器负责对ARP请求用该MAC地址做应答这样,无论如何切换,保证给终端设备的是唯一一致的IP和MAC地址,减少了切换对终端设备的影响[3]
VRRP控制报文只有一种:VRRP通告(advertisement)它使用IP多播数据包进行封装,组地址为224.0.0.18
发布范围只限于同一局域网内这保证了VRID在不同网络中可以重复使用为了减少网络带宽消耗只有主控路由器才可以周期性的发送VRRP通告报文备份路由器在连续三个通告间隔内收不到VRRP或收到优先级为0的通告后启动新的一轮VRRP选举[3]
在VRRP路由器组中,按优先级选举主控路由器,VRRP协议中优先级范围是0—255若VRRP路由器的IP地址和虚拟路由器的接口IP地址相同,则称该虚拟路由器作VRRP组中的IP地址所有者;IP地址所有者自动具有最高优先级:255优先级0一般用在IP地址所有者主动放弃主控者角色时使用可配置的优先级范围为1—254优先级的配置原则可以依据链路的速度和成本路由器性能和可靠性以及其它管理策略设定主控路由器的选举中,高优先级的虚拟路由器获胜,因此,如果在VRRP组中有IP地址所有者,则它总是作为主控路由的角色出现对于相同优先级的候选路由器,按照IP地址大小顺序选举VRRP还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器[3]
为了保证VRRP协议的安全性,提供了两种安全认证措施:明文认证和IP头认证明文认证方式要求:在加入一个VRRP路由器组时,必须同时提供相同的VRID和明文密码适合于避免在局域网内的配置错误,但不能防止通过网络监听方式获得密码IP头认证的方式提供了更高的安全性,能够防止报文重放和修改等攻击。
安装
yum install keepalived
配置文件格式
分为两部分:全局配置、实例配置
全局配置在global_defs {}
global_defs { notification_email { acassen@firewall.loc #出问题时接收邮件的地址 sysadmin@firewall.loc } notification_email_from Alexandre@qq.com #发邮件的地址 smtp_server 192.168.200.1 #邮件服务器地址 smtp_connect_timeout 30 #连接超时时间 router_id keepalive-node-1 #服务器标识名称,建议为主机名 vrrp_mcast_group4 224.24.24.18 #多播地址段,默认为224.0.0.18.可以自设置地址 }
实例配置
一个节点服务器配置文件中可以配置多个instance ,同一节点的每个instance 有一个唯一id ,keepalived 集群中同一虚拟机网络中节点id 一样(就是用同一个vip 的节点instance 一致),这样才能互相通讯。
vrrp_instance VI_1 { state MASTER #必须大写,只有一个MASTER,其余都为BACKUP interface eth0 #虚拟ip 绑定的网卡 virtual_router_id 51 #vrid 同一虚拟路由组内的id 必须一致;同一主机上的其他虚拟路由id 区分开来 priority 100 #优先级,MASTER为最大,范围:0-254 advert_int 1 #发送组播的频率,默认为1s authentication { auth_type PASS #认证方式为密码 auth_pass 1111 #同一虚拟路由组内的各个节点的密码必须一致,否则无法接收通讯,密码仅支持8位以内 } virtual_ipaddress { 192.168.1.200 #虚拟ip 地址 } track_script { #调用定义好的脚本,脚本中有判断条件,根据判断条件对权重更改 chk_down #定义的脚本名 } ####调用通知机制(非必要配置),当主机状态发生相应变化执行脚本进行邮件报警或其他操作###### notify_master "/etc/keepalived/notify.sh master" #notify_master 表示当当前主机为master时执行后面脚本操作。 notify_backup "/etc/keepalived/notify.sh backup" #状态为backup时的操作 notify_fault "/etc/keepalived/notify.sh fault" #状态为错误时的操作 }
keepalive 实现模式
单主模式
vrrp的地址转移实现。单主模式。一个虚拟路由vip
环境:172.16.253.95 做master