学习b记 · 第二阶段
七、Keepalived
1、Keepalived 高可用基本概述
什么是高可用
一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
2、keepalived是如何实现高可用的?
keepalived软件是基于VRRP协议实现的,VRRP虚拟路由冗余协议,主要用于解决单点故障问题
3、高可用keepalived核心概念
如何确定谁是主节点谁是备节点(选举投票,优先级)
如果Master故障,Backup自动接管,那么Maste恢复后会夺权吗(抢占试、非抢占式)
如果两台服务器都认为自己是Master会出现什么问题(脑裂)
Keepalived高可用安装配置
环境准备
作用 IP 角色
node1 192.168.17.232 Master
node2 192.168.17.233 Backup
VIP 192.168.17.128 虚拟
1、安装keepalived
[root@lb01 ~]
[root@lb02 ~]
2、配置文件
[root@lb keepalived]
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
nopreempt
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.128
}
}
[root@lb02 /]
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.128
}
}
3、高可用keepalived故障脑裂
由于某些原因,导致两台keepalived高可用服务器在指定时间内,无法检测到对方的心跳,个字去的资源及服务的所有权,而此时的两台高可用服务器又都还活着。
脑裂故障原因:
服务器网线松动等网络故障
服务器硬件故障发生损坏现象而崩溃
主备都开启firewalld防火墙
1、高可用keepalived与nginx
为什么域名解析到VIP就可以访问nginx?
Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器
但是…..如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉不会进行切换,所以需要编写一个脚本检测Nginx的存活状态,如果不存活则kill掉keepalived
2、配置keepalived检测nginx存活脚本
[root@lb keepalived]
ng=`netstat -lntup | grep nginx | wc -l`
if [ $ng -eq 0 ];then
systemctl restart nginx
sleep 3
ng=`netstat -lntup | grep nginx | wc -l`
if [ $ng -eq 0 ];then
systemctl stop keepalived
fi
fi
[root@lb keepalived]
3、在lb01主机的keepalived配置文件中调用此脚本
[root@lb keepalived]
vrrp_script check_web {
script "/etc/keepalived/check_nginx.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.128
}
track_script {
check_web
}
}