keepalived是什么?
Keepalived 是Linux下一个轻量级别的高可用解决方案。除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
keepalived官网: http://www.keepalived.org
keepalived高可用架构示意图
keepalived实践
提供2台物理机,3个内网ip分别为:10.10.10.126(主节点),10.10.10.127(备用节点),10.10.10.129 (对外提供服务的虚拟IP)
在这种模式下,虚拟IP:10.10.10.129,在某时刻只能属于某一个节点,另一个节点作为备用节点存在。当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
安装
在两台服务器上分别安装 keepalived,使用源码包安装。
添加配置文件
sudo vim /etc/keepalived/keepalived.conf
global_defs { router_id LVS_DEVEL }
vrrp_instance VI_1 { state MASTER #设置为备服务器(状态参数 MASTER/BACKUP interface eth0 #虚IP地址放置的网卡位置 virtual_router_id 51 #保持主从服务器一致 priority 100 #优先级(决定是主还是备,越大越优先) advert_int 1 #心跳广播(VRRP Multicast)间隔(秒) authentication { auth_type PASS #VRRP认证方式,主备必须一致 auth_pass 1234 #认证密码 }
virtual_ipaddress { 10.10.10.129 #设备之间使用的虚拟ip地址,可以多个 } }
|
注意:备份服务器 10.10.10.127 配置中 state 要改成 BACKUP,同时调低 priority。
sudo vim /etc/keepalived/keepalived.conf
global_defs { router_id LVS_DEVEL }
vrrp_instance VI_1 { state BACKUP #设置为备服务器(状态参数 MASTER/BACKUP interface eth0 #虚IP地址放置的网卡位置 virtual_router_id 51 #保持主从服务器一致 priority 99 #优先级(决定是主还是备,越大越优先) advert_int 1 #心跳广播(VRRP Multicast)间隔(秒) authentication { auth_type PASS #VRRP认证方式,主备必须一致 auth_pass 1234 #认证密码 }
virtual_ipaddress { 10.10.10.129 #设备之间使用的虚拟ip地址,可以多个 } }
|
启动keepalived服务
sudo service keepalived start keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
|
查看log消息:
tail -f /var/log/messages
|
启动主节点 10.10.10.126 后, messages日志为: 广播ARP消息
,重启keepalived服务之后使用: ip a
查看虚拟IP信息
10.10.10.126 机器上有两个ip : 本机IP 10.10.10.126 和 虚拟IP 10.10.10.129 10.10.10.127 机器上有一个ip : 本机IP 10.10.10.127\
|
在第三台机器上进行访问
curl http: curl http: curl http:
|
为了防止备用节点浪费资源,可以使用相互热备
分别修改126和127的机器的keepalived 配置文件,增加一个新的配置:VI_2
vrrp_instance VI_1 { state BACKUP #设置为备服务器(状态参数 MASTER/BACKUP interface eth0 #虚IP地址放置的网卡位置 virtual_router_id 51 #保持主从服务器一致 priority 99 #优先级(决定是主还是备,越大越优先) advert_int 1 #心跳广播(VRRP Multicast)间隔(秒) authentication { auth_type PASS #VRRP认证方式,主备必须一致 auth_pass 1234 #认证密码 }
virtual_ipaddress { 10.10.10.129 #设备之间使用的虚拟ip地址,可以多个 } } vrrp_instance VI_2 { state MASTER #设置为主服务器(状态参数 master/backup) interface eth0 #虚IP地址放置的网卡位置 virtual_router_id 52 #保持主从服务器一致 priority 100 #优先级(决定是主还是备,越大越优先) advert_int 1 #心跳广播(VRRP Multicast)间隔(秒) authentication { auth_type PASS #VRRP认证方式,主备必须一致 auth_pass 1234 #认证密码 }
virtual_ipaddress { 10.10.10.130 #设备之间使用的虚拟ip地址,可以多个 } }
|