一、高可用的基本概述
1.什么是高可用
简单理解:出现故障,自动恢复,对于用户而言无感知。
专业理解:减少系统不能对外提供服务的时间。(9999、99999)
2.高可用实现手段
硬件
软件:keepalived(常用)
keepalived是基于VRRP协议来实现,VRRP虚拟路由冗余技术,主要用来解决单点故障问题。
3.vrrp虚拟路由冗余协议
VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的master路由器。当master路由器出现故障,VRRP会通过地址漂移技术,将VIP漂移到backup路由器上,从而实现服务不会中断,实现高可用。

二、keepalived高可用实现
1.keepalived高可用核心概念
1.如何确认谁是主节点,谁是备用节点,靠优先级的高低区分,高的就是主节点(master)
2.master故障,恢复之后,分为抢占式(默认)和 非抢占式
2.安装与配置
准备两台负载均衡(lb01和lb02),让其实现高可用
#1.安装
yum install keepalived -y
#2.在lb01上进行配置
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01 #标识身份
}
vrrp_instance VI_1 {
state MASTER #master身份
interface eth0 #vip绑定在哪个网卡
virtual_router_id 50 #组名称,必须一致
priority 150 #优先级
advert_int 1 #检查间隔时间
authentication {
auth_type PASS #明文认证,必须一致
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3 #虚拟IP地址
}
}
#3.在lb02上进行配置
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
}
#4.启动、地址漂移测试
3.如何实现非抢占式
#1.将两个节点的state都设置为BACKUP
#2.两个节点都需要添加 nopreempt参数
#3.两个节点的优先级要不一样
vrrp_instance VI_1 {
state BACKUP
priority 150
nopreempt
三、Nginx停止工作,实现VIP地址漂移
实现这一目标,需要编写脚本文件,对Nginx能否能正常运行,做出判断,然后对keepalived做出决策(kill或不kill);然后在keepalived配置文件中执行这个配置文件。
四、keepalived如何投产
虚拟的IP地址,是无法对外的,怎样让 DNS 解析到虚拟地址是个问题。
NAT:
SNAT 源地址转换 ( 共享上网的 )
DNAT 目标地址转换 ( 端口映射 )

五、keepalived脑裂
1.什么是脑裂
当两个节点同时认为自己是唯一处于活跃状态的时候,从而出现资源抢占,双方都在抢占资源的情况下,即为脑裂。
2.脑裂产生的原因
1.网线松动
2.开启了防火墙(如果开启防火墙,请添加允许VIP通过的规则)
3.脑裂影响的范围
1.对于无状态的服务,比如Nginx,不care脑裂不脑裂。
2.对于有状态的服务,比如MySQL,就必须严格防止脑裂现象。
MySQL出现脑裂,大部分情况会出现无法正常访问,或返回错误的结果。
为了规避脑裂,生产中会写一些监控的脚本,对两台服务器的地址配置情况,进行监控,同时出现两个IP,及认定脑裂
网友评论