一. Keepalived的概述 1.1 Keepalived的功能 keepalived 主要是用来提供故障切换和健康检查功能-----判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群。 1.2 Keepalived 的热备方式 keepalivefd 采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。 注意:使用Keepalived时,漂移IP地址不需要手动建立虚接口配置文件如(ens33:0),而是由Keepalived 根据配置文件自动管理。 二. LVS + Keepalived 高可用集群配置 2.1 LVS + Keepalived 高可用集群的意义 Keepalived 的设计目的是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备。使用Keepalived 构建LVS群集更加简便易用,主要优势体现在:对LVS负载均衡调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。 注意:使用Keepalived 构建LVS集群时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived 自动完成,不需要手动执行ipvsadm(除了查看和监控集群以外) keepalived概述及安装 keepalived的安装与服务控制 [root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# setenforce 0 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# yum -y install keepalived ipvsadm [root@localhost ~]# systemctl enable keepalived 1.2:使用keepalived实现双机热备 1:主服务器的配置 [root@localhost ~]# cd /etc/keepalived/ [root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak [root@localhost keepalived]# vi keepalived.conf 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 LVS_01 vrrp_skip_check_adv_addr # vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 1 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.172 } } 注释: vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播,如果配置了此参数,vip可以漂移到这台服务器,但是ping vip不通,因此需要将此参数去掉 [root@localhost keepalived]# systemctl start keepalived [root@localhost keepalived]# ip add show dev ens33 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ae:7f:64 brd ff:ff:ff:ff:ff:ff inet 192.168.10.101/24 brd 172.16.16.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.10.172/32 scope global ens33 valid_lft forever preferred_lft forever 2:备用服务器的配置 [root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# setenforce 0 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# cd /etc/keepalived/ [root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak [root@localhost keepalived]# vi keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc #vrrp_strict smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_02 } vr