美文网首页
day46-高可用

day46-高可用

作者: 江枍_a99e | 来源:发表于2019-10-08 10:46 被阅读0次

1.什么是高可用,为什么要设计高可用?

(1)两台机器启动着相同的业务系统,当有一台机器宕机,另外一台服务器能快速的接管,对于访问的用户是无感知的。
(2)减少系统不能提供服务的时间。

2.高可用使用什么工具来实现? 是硬件还是软件?

软件:keepalived

3.keepalived如何实现高可用?

通过虚拟路由冗余协议(vrrp)实现.,

4.vrrp诞生的过程以及vrrp的原理。

为了解决故障自动转移诞生了vrrp


20180925142950764.jpg

5.keepalived高可用使用场景?

通常业务7*24小时不宕机,每天公司人员都需要使用,随时 随地都要求可用。

6.keepalived高可用核心概念总结

(1)用优先级来确定主节点和备节点,优先级高的是主节点。
(2)①Master故障,Backup自动接管,那么master恢复会夺权------抢占式
②Master故障,Backup自动接,master恢复后不会夺权----非抢占式
(3)两台服务器都认为自己是master会出现脑裂。
7.keepalived高可用安装与配置
两台服务器:10.0.0.5和10.0.0.6
(1)安装keepalived
yum install keepalived -y
(2)配置(master,backup)

master:[root@lb01 ~]# vi /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:[root@lb02 ~]# vi /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
    }
}

(3)启动
systemctl start keepalived
systemctl enable keepalived
(4)验证
[root@lb01 ~]# ip addr|grep 10.0.0.3

8.keepalived高可用地址漂移测试

(1)10.0.0.3发送组播数据包
(2)查看arp缓存表

9.keepalived高可用抢占式与非抢占式?

(1)master故障--->backup顶上--->master恢复--->backup 抢占式 默认
(2)master故障--->backup顶上--->master恢复--->backup继续工作 非抢占式
①两个节点的state都必须配置为BACKUP(官方建议)
②两个节点都在vrrp_instance中添加nopreempt参数
③其中一个节点的优先级必须要高于另外一个节点的优先级。
两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。
总结:1)抢占: 硬件配置不一
2)非抢占: 硬件配置一致,业务不允许多次切换

10.keepalived高可用与Nginx集成(地址漂移实现高可用)

nginx需要借助keeplaived VIP 地址漂移 实现 高可用。

11.如果Nginx宕机, 会导致用户请求失败, 但Keepalived并不会进行切换, 所以需要编写一个脚本检测Nginx的存活状态, 如果不存活则kill nginx和keepalived

(1).判断nginx进程是否存在 ps aux|grep nginx|grep -v grep
(2)判断nginx的端口是否存在 netstat -lntp|grep :80|wc -l
(3)通过curl来模拟访问,判断访问结果是否ok curl -H Host:url.oldxu.com http://10.0.0.3
①编写脚本
[root@lb01 ~]# mkdir /scripts
[root@lb01 ~]# vim /scripts/check_web.sh
#!/usr/bin/bash

nginx_port=$(netstat -lntp|grep :80|wc -l)
if [ $nginx_port -ne 1 ];then
    
    systemctl start nginx &>/dev/null
    rc=$?
    sleep 3
    if [ $rc -ne 0 ];then
        systemctl stop  keepalived 
    fi
fi
[root@lb01 ~]# chmod +x /scripts/check_web.sh 

②.keeplaived调用该脚本
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
global_defs {     
    router_id lb01   
}

定义脚本名称,以及脚本所在的路径
vrrp_script check_web {
   script "/scripts/check_web.sh"
   interval 5
}


vrrp_instance VI_1 {
    state MASTER
    #nopreempt
    interface eth0
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
    }

    #调用脚本名称
    track_script {
        check_web
    }
}

③模拟nginx停止,检查nginx是否会被拉起
④模拟nginx故障,检查keeplaived的VIP是否会漂移至备节点

tail -f /var/log/message

12keepalived高可用脑裂与故障解决?

脑裂(split-brain),指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。

对于无状态服务的HA,无所谓脑裂不脑裂;
但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。
(但有些生产环境下的系统按照无状态服务HA的那一套去配置有状态服务,结果可想而知...)

master 10.0.0.3
backup 10.0.0.3
(1)在备上编写检测脚本, 测试如果能ping通主并且备节点还有VIP的话则认为产生了脑列

[root@lb02 conf.d]# cat /scripts/check_spilt.sh 
vip=10.0.0.3
master_ip=10.0.0.5

ping -c2 $master_ip &>/dev/null
if [ $? -eq 0 ];then
    ip_check=$(ip addr | grep "$vip" | wc -l)
    if [ $ip_check -eq 1 ];then
        echo "脑列"
        systemctl stop keepalived
    fi
fi

--------------------------------------------------------------->

[root@lb02 conf.d]# cat /etc/keepalived/keepalived.conf 
global_defs {
    router_id lb02
}

vrrp_script check_spilt {
   script "/scripts/check_spilt.sh"
   interval 3
}


vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }


    track_script {
    check_spilt
    }

}

(2).keeplaived使用:
①不能在公有云上使用
②公有云要想实现负载均衡高可用-----> 购买的SLB 自带高可用
③虚拟IP咋使--->真实的硬件环境:

相关文章

  • day46-高可用

    1.什么是高可用,为什么要设计高可用? (1)两台机器启动着相同的业务系统,当有一台机器宕机,另外一台服务器能快速...

  • 架构(4),高可用

    高可用包括:存储高可用,计算高可用,业务高可用。 一、存储高可用 存储的高可用,主要是通过数据冗余的方式来实现高可...

  • day46 高可用(keepalived)

    高可用的基本概述vrrp的原理高可用核心概念总结keepalived高可用安装与配置keepalived高可用抢占...

  • 高可用性

    高可用性概述 什么是高可用性 高可用性 = 高 + 可用性。可用性(Availability)表示系统能在客户需要...

  • Hadoop 系列(八)—— 基于 ZooKeeper 搭建 H

    一、高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN ...

  • 综合架构之keepalived(高可用)

    内容涉及 高可用原理高可用配置文件高可用服务常见问题实现高可用服务双主功能 keepalivd----------...

  • LVS+KeepAlived高可用部署实战应用

    LVS+KeepAlived高可用部署实战 1. 构建高可用集群 1.1 什么是高可用集群 1.2 高可用衡量标准...

  • Linux学习-MySQL-week05

    MySQL高可用及读写分离 为什么要使用高可用 ? 什么是高可用?企业高可用标准:全年无故障时间无故障时间 ...

  • 缓存架构之10:redis主从架构下如何才能做到99.99%的高

    1、什么是99.99%高可用? 架构上,高可用性,99.99%的高可用性 讲的学术,99.99%,公式,系统可用的...

  • redis高可用是什么

    1、什么是99.99%高可用? 架构上,高可用性,99.99%的高可用性 讲的学术,99.99%,公式,系统可用的...

网友评论

      本文标题:day46-高可用

      本文链接:https://www.haomeiwen.com/subject/ivmguctx.html