一、keepalived介绍
keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。
二、keepalived工作原理
keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能;keepalived是以VRRP虚拟路由冗余协议为基础实现高可用的,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
三、keepalived与Heartbeat高可用软件对比
1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装、配置、使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了;而Keepalived只有1个安装文件、1个配置文件,配置文件也简单很多;
2)Heartbeat功能更强大:Heartbeat虽然复杂,但功能更强大,配套工具更全,适合做大型集群管理,而Keepalived主要用于集群倒换,基本没有管理功能;
3)协议不同:Keepalived使用VRRP协议进行通信和选举,Heartbeat使用心跳进行通信和选举;Heartbeat除了走网络外,还可以通过串口通信,貌似更可靠;
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 ;Heartbeat是基于主机或网络的服务的高可用方式;
Keepalived的目的是模拟路由器的双机;Heartbeat的目的是用户service的双机
4)使用方式基本类似:如果要基于两者设计高可用方案,最终都要根据业务需要写自定义的脚本,Keepalived的脚本没有任何约束,随便怎么写都可以;Heartbeat的脚本有约束,即要支持service start/stop/restart这种方式,而且Heartbeart提供了很多默认脚本,简单的绑定ip,启动apache等操作都已经有了;
使用建议:
优先使用Keepalived,当Keepalived不够用的时候才选择Heartbeat
lvs的高可用建议用Keepavlived
业务的高可用用Heartbeat
四、keepalived部署
下面的配置教程仅仅部署keepalived,如何还需要其他高可用工具后续继续部署。
部署环境:
Linux版本:
[root@linux01 ~]# uname -r
3.10.0-957.el7.x86_64
[root@linux01 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
双节点集群IP地址信息:
节点01:keep_01 172.16.0.211
节点02:keep_02 172.16.0.212
虚拟IP:172.16.0.210
1、下载并编译安装
yum install -y gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc #安装编译环境 wget https://www.keepalived.org/software/keepalived-2.1.3.tar.gz tar -xzvf keepalived-2.1.3.tar.gz cd keepalived-2.1.3 ./configure \ --prefix=/usr/local/keepalived make && make install
2、注册为系统服务
cp keepalived/etc/init.d/keepalived /etc/init.d/ cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
3、编辑keepalived配置文件
仅修改后面带注释的参数即可
/etc/keepalived/keepalived.conf #配置文件内容 ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id keep_01 #keepalived的rooterID,修改为本服务器的主机名即可 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 vrrp_mcast_group4 224.0.0.1 #添加检测方式,这里配置的是组播地址224.0.0.1 } vrrp_instance VI_1 { state MASTER #主机的角色,主的为MASTER,备机器应该设置为BACKUP interface ens192 #实现虚IP的网卡名称 virtual_router_id 55 #虚拟机路由器id,集群内必须一致 priority 100 #主机优先级,优先级越高越优先,备机需要低于主服务器 advert_int 1 authentication { auth_type PASS auth_pass xxshell #协商的校验信息,集群内服务器需要一致 } virtual_ipaddress { 172.16.0.210/24 brd 172.16.0.255 dev ens192 lable ens192:0 #虚拟IP的地址,绑定的网卡与虚拟网卡,根据实际环境填写 #192.168.200.16 #192.168.200.17 #192.168.200.18 } }
配置文件修改好后通scp命令将配置文件复制到备服务器上,备服务器仅修改“state MASTER ”与“router_id keep_01”即可
scp /etc/keepalived/keepalived.conf root@172.16.0.212:/etc/keepalived/keepalived.conf
4、启动并配置开机启动
systemctl start keepalived systemctl enable keepalived
5、检查项
1)检查服务状态为active
[root@keep01 ~]# systemctl status keepalived #检查状态为active ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled) Active: active (running) since 四 2020-07-09 21:32:51 CST; 7h left Main PID: 5820 (keepalived) CGroup: /system.slice/keepalived.service ├─5820 /usr/local/keepalived/sbin/keepalived -D ├─5821 /usr/local/keepalived/sbin/keepalived -D └─5824 /usr/local/keepalived/sbin/keepalived -D
2)能够ping通虚拟IP,通过“ip a”可以看到虚拟机IP