高可用

高可用介绍

简单理解:出现故障,自动恢复,对于用户而言无感知。
专业理解:减少不能对外提供服务的时间。可用性达到9999乃至99999。

高可用实现手段

硬件(使用较少)
软件:使用keepalived,基于VRRP协议来实现,VRRP虚拟路由冗余协议,主要用来解决单点故障问题。

keepalived高可用核心概念总结

  1. keepalived只要是通过优先级来确认谁是主节点谁是备节点的。
  2. 主节点故障后恢复情况分为两种,一种是抢占式,另一种是非抢占式,抢占式是指主节点恢复后立刻恢复该节点的使用,非抢占式是指主节点恢复后会变成备用节点,直到备用节点出现故障后再由主节点顶上。

keepalived地址飘逸技术配置

keepalived的配置文件中各行的意思:

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01 # 标识身份
}

vrrp_instance VI_1 {
state MASTER # 表示这台主机的身份MASTER/BACKUP
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地址
}
}
具体配置方法:

# 安装keepalived
yum install keepalived -y
修改负载均衡器上的keepalived配置文件如下:
		master (优先级)   lb01  100

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
    router_id lb01
}

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 {
        10.0.0.3
    }
}

		backup (优先级)	  lb02   90
[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
    }
}
systemctl start keepalived
systemctl enable keepalived
使用ip addr查看是否配置虚拟ip成功。

keepalived高可用抢占式与非抢占式

抢占:会发生两次切换,默认是抢占式,对于并发访问非常高的站点,不建议配置抢占式,因为至少会发生两次VIP地址漂移。在master和backup的配置不对等的时候,尤其是master性能高而backup性能低时,建议使用抢占式。
非抢占:
配置步骤建议如下:

  1. 两个节点的state都必须都配置为backup
  2. 两个节点都在vrrp_instance中添加nopreempt参数。
  3. 其中一个节点的优先级高于另一个节点的优先级。
    两台服务器都设置为backup后,那么哪个节点为主节点就完全由优先级来决定了。
    配置方法:
#Master
    vrrp_instance VI_1 {
        state BACKUP
        priority 150
        nopreempt
    }

#Backup
    vrrp_instance VI_1 {
        state BACKUP
        priority 100
        nopreempt
    }

keepalived高可用与nginx集成

keepalived和nginx的关系:
nginx仅仅是借助了keepalived的地址漂移机制来实现高可用,别的并没有关系。

配置一组负载均衡
准备环境:
	10.0.0.5  已经配置好的负载均衡 ( blog、zh )
	10.0.0.6  
		安装Nginx
		拉取10.0.0.5 的配置 
	目的:确保10.0.0.5 与 10.0.0.6 配置一致,无论通过5 或者 6  都能正常访问  blog 和  zh

[root@lb02 ~]# scp root@172.16.1.5:/etc/yum.repos.d/nginx.repo /etc/yum.repos.d/
[root@lb02 ~]# yum install nginx -y
[root@lb02 ~]# scp -rp 172.16.1.5:/etc/nginx /etc/
[root@lb02 ~]# nginx -t
[root@lb02 ~]# systemctl enable nginx
[root@lb02 ~]# systemctl start nginx

高可用实现方法为写一个脚本:
内容如下:

[root@lb01 ~]# mkdir /server/scripts -p
[root@lb01 ~]# vim /server/scripts/check_web.sh
#!/bin/sh
nginxpid=$(ps -C nginx --no-header|wc -l)
#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
if [ $nginxpid -eq 0 ];then
    systemctl start nginx
    sleep 3
    #2.等待3秒后再次获取一次Nginx状态
    nginxpid=$(ps -C nginx --no-header|wc -l) 
    #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
    if [ $nginxpid -eq 0 ];then
        systemctl stop keepalived
   fi
fi
#给脚本增加执行权限
[root@lb01 ~]# chmod +x /server/scripts/check_web.sh

--------------------------------------------------------------------------------------------
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
    router_id lb01
}

#定义脚本路径,定义脚本多久执行一次,定义名称check_web
vrrp_script check_web {
	script "/server/scripts/check_web.sh"
	interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    priority 150
    nopreempt

    interface eth0
    virtual_router_id 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
    }
	#调用脚本,并运行该脚本
	track_script {
		check_web
	}
}

}

keepalived脑裂

  1. 什么是脑裂?
    当两个节点同时认为自己是唯一处于活动状态的时候,从而出现了资源抢占,双方都在抢占资源的情况下,即为脑裂。
  2. 脑裂的产生
    产生的原因是因为网线松动,或者某一台设备开启了防火墙。
  3. 脑裂影响的范围
    对于无状态的服务,比如nginx,脑裂没有任何影响。
    对于有状态的服务,比如mysql,就必须严格防止脑裂的现象出现。脑裂会导致有状态的服务无法正常访问,或者得不到正常的返回结果。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值