1.keepalived概念
keepalived是一款高可用集群软件,keepalived功能:心跳检测和故障切换。
心跳检测:master主机会向从节点广播心跳信息,当从节点收不到master节点的心跳信息时,会进行vip的漂移。
故障切换:master节点宕机之后,vip会漂移到备用节点上,备用节点上的应用会去接管外部访问。当客户端输入vip进行访问时,时备用节点上的应用进行应答。
VRRP协议:(虚拟路由冗余协议)是一种容错协议,保障主机路由出现故障的时候,可以是使用另一台路由来代替这台路由进行工作。
2.keepalived的安装
注意:
书写格式的{}配对问题也许注意
关闭防火墙和selinux
两种方式安装keepalived:yum安装 源码安装(源码安装较为复杂)
yum安装:
1.安装cheese
yum install http://www.nosuchhost.net/~cheese/fedora/packages/epel-7/x86_64/cheese-release-7-1.noarch.rpm
2.yum安装keepalived
yum install -y keepalived
keepalived的配置文件:
keepalived的配置文件:
/etc/keepalived/keepalived.conf
keepalived中的部分参数:
第一部分:全局配置(可以在此处配置邮箱)
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL 主机上的router_id 需要唯一
#vrrp_skip_check_adv_addr 以下几行进行注释
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0}
第二部分:实例配置(在一个实例中主机的virtual_router_id一样)
vrrp_instance VI_1 {
state MASTER 代表主机节点时主还是备
interface eth0
virtual_router_id 51 同一个实列需要virtual_router_id 为同一个
priority 100 master主机的优先级需要高于backup主机的优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 指定虚拟vip的地址(地址需要不被任何主机使用)
192.168.200.17
192.168.200.18
}
}
第三部分:real-server配置
virtual_server 192.168.200.100 443 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP
real_server 192.168.201.100 443 {weight 1SSL_GET {url {path /digest ff20ad2481f97b1754ef3e12ecd3a9cc
}url {path /mrtg/digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
抢占模式:
keepalived默认是抢占模式,工作环境中使用的时不抢占模式,这样环境较为稳定。
3.单实例主备模式的keepalived配置
master:192.168.27.120
backup:192.168.27.122
master节点配置
192.168.27.120
[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc
}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL1
}
vrrp_instance VI_1 {state MASTER 主节点interface ens33 自己本机的网卡virtual_router_id 51 一个实例中一样priority 100 优先级大于备节点advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.135 vip设置
}
}
backup节点配置:
192.168.27.122
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc
}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL2 从主机的id
}
vrrp_instance VI_1 {state BACKUP 从节点interface ens33 自己的网卡设备virtual_router_id 51 和主节点一个实例,其的实例id一样priority 80 优先级小于主节点advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.135 同一个实例中的VIP一致
}
重启:
systemctl start keepalived.service (先启动主节点在启动备节点)
单实例配置主备模式
(三台机器,两台置keepalived和httpd,另一台为客户端)
keepalived的配置和之前一样,在这两台主机上配置安装httpd服务,客户端进行测试。
客户端测试使用定义的vip测试
curl ip
当主机点宕机后看是否会切换另一个节点的应用服务器应答
在节点添加实例2即可:
master节点vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 52priority 80advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.136
}
}backup节点:
vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 52priority 100advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.136
}
}