企业架构双点服务器HA

本文详细介绍了如何在服务器上配置Keepalived实现Nginx和MySQL的高可用,涉及数据备份、VRRP原理、脚本检测、VIP切换及非抢占模式和单播配置。通过实例演示,探讨了服务HA的实现和解决脑裂问题的方法。
摘要由CSDN通过智能技术生成

一、服务器基本配置

web服务器 master192.168.74.30
web服务器 backup192.168.74.31
数据库服务器192.168.74.32

vim /etc/hosts这里是引用

1.数据备份和迁移:

这里是引用
在这里插入图片描述
在这里插入图片描述

  • 在server02 MySQL服务器中建立远程连接用户并授予权限
    在这里插入图片描述
  • 把master的数据库停了
    在这里插入图片描述
  • vim /usr/local/nginx/html/tp5shop/application/database.php
    在这里插入图片描述

二、高可用服务搭建

  • 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为0.876个小时

1.keepalived介绍:

  • Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件

2.keepalived组成与原理:

  • Keepalived软件主要是通过VRRP协议实现高可用功能的。
  • VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
  • 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
  • Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)
    在这里插入图片描述
  • 内核空间:
    主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。
  • 用户空间:
    • WatchDog:负载监控checkers和VRRP进程的状况
    • VRRP Stack:负载均衡器之间的失败切换FailOver,如果只用一个负载均衡器,则VRRP不是必须的
    • Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有VRRP Stack,但健康检查healthchecking是一定要有的
    • IPVS wrapper:用户发送设定的规则到内核ipvs代码
    • Netlink Reflector:用来设定vrrp的vip地址等
  • keepalived主要使用三个模块,分别是core、check和vrrp。
    • core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析
    • check负责健康检查,包括常见的各种检查方式
    • vrrp模块是来实现VRRP协议的

3.安装启动keepalived:

  • 直接用yum安装即可
    yum install -y keepalived
  • keepalived需要使用的目录和文件:
文件或者目录作用
/etc/keepalived/keepalived.conf生效的配置文件
/etc/init.d/keepalived服务器管理脚本
/var/log/messages日志信息
  • 安装完了之后呢,需要修改配置文件(修改网卡,要和自己的网卡名称对应)
    在这里插入图片描述
  • centos7呢,直接用systemctl启动keepalived即可,如果是centos6可以在/etc/init.d文件夹下找到keepalived的启动脚本,可以使用service来启动keepalived

4.配置keepalived:

  • 示例配置文件说明:
! Configuration File for keepalived
#发送邮件的配置
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
#vrrp协议的配置
vrrp_instance VI_1 {
    #工作模式
    state MASTER
    #监听的网卡
    interface eth0
    #虚拟路由id 需要和备服务器一致
    virtual_router_id 51
    #权重 优先级
    priority 100
    #vrrp包的发送周期  1s
    advert_int 1
    #权限验证
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #需要绑定切换的VIP
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
  • master服务器:
    在这里插入图片描述
    在这里插入图片描述
  • backup服务器:
    在这里插入图片描述
    在这里插入图片描述

5.模拟服务器不可用vip切换:

  • 当我把master关机后,vip就自动飘到backup上了
    在这里插入图片描述
    在这里插入图片描述
  • 当我们master重新活过来,启动keepalived后,vip就又重新抢回来了
    在这里插入图片描述

三、实现服务HA

  • 通过keepalived可以直接实现主服务器整机不可用,实现VIP的切换。保证用户可以通过VIP进行访问服务
  • 但是实际情况下,往往并不是服务器整机不可用,只是对应的服务或者软件不可用
  • 比如说:nginx提供的web服务,nginx进程关闭。就需要检测当nginx不可用时,就切换VIP
  • 实现过程分析:
  • VIP实际是由keepalived进行绑定的,所以当nginx服务不可用时,就关闭当前机器的keepalived即可,释放VIP。进而绑定到其他备用服务器
    • ①编写服务检测脚本,实现检测nginx是否可用,不可用则关闭当前所在主机的keepalived
    • ②在keepalived配置中调用检测服务脚本

1.nginx服务可用检测脚本:

  • cd /etc/keepalived
  • vi check_nginx
    在这里插入图片描述
  • 这里的ps -C nginx是什么呢?
    在这里插入图片描述
    在这里插入图片描述
  • 这里我们脚本中的意思是,当这个判断等于0的时候,代表nginx已经不可用了,所以我们需要关闭keepalived,让它让出主节点的位置!
  • master和backup服务器都要修改keepalived.conf这个配置文件
    在这里插入图片描述
  • 接下来我们确保两台服务器的nginx都是开启状态
    在这里插入图片描述
    在这里插入图片描述
  • 现在咱们将master的nginx停掉
    在这里插入图片描述
    在这里插入图片描述
  • 这时候我们重新将master的nginx和keepalived重新提起来,那么vip就会重新回到master上,这个是抢占模式,接下来我会为大家讲解非抢占模式

2.实现业务web服务高可用:

  • 当我们现在访问shop.lnmp.com时,是可以访问到的
    在这里插入图片描述
    在这里插入图片描述
  • 当我们现在在192.168.74.30这台服务器上,把nginx停掉之后
    在这里插入图片描述
  • 此时此刻就访问不到了
    在这里插入图片描述
  • 所以我们就需要通过访问的是vip来实现web服务高可用
  • 我们需要确保vip可以ping通
    在这里插入图片描述
  • 如果在这里ping不同vip的话,我们需要对keepalived.conf配置文件进行一个小小的修改
    在这里插入图片描述
  • 此时我们再重新访问shop.lnmp.com即可(此时我们的master的nginx服务停了一样也可以,因为我们还有backup)
    在这里插入图片描述

四、keepalived的配置补充

  • 脑裂(裂脑):vip出现在了多台机器上。网络不通畅,禁用了数据包,主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放。
  • 解决方案:
  • ①双备或者多备模式 BACKUP 通过priority权重来区分谁的优先级更高
  • ②单播(定向广播)的方式 (一些特定环境禁用了组播方式)
  • ③时间不同步 服务器时间校时

1.非抢占模式:

  • ①nopreempt(在主备服务器的配置文件,vrrp_instance段中)
  • ②设置state工作模式为BACKUP(两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来)
    在这里插入图片描述
  • 现在我的vip是在我的master这台服务器上的,然后我们把它的nginx停掉
    在这里插入图片描述
    在这里插入图片描述
  • 此时vip已经飘到backup这台服务器上了
    在这里插入图片描述
  • 现在我们将master这台服务器的nginx和keepalived重新启动一下
    在这里插入图片描述
  • 但是此时此刻,vip还在backup这台服务器上,这就是非抢占模式
    在这里插入图片描述
    在这里插入图片描述

2.单播模式:

  • 一些特定环境下不允许发送组播,造成备服务器无法收到vrrp包,可能会造成脑裂现象。可以通过单播的方式解决
  • 单播示例配置: 注意此语法在keepalived1.2.11版本以上支持
在vrrp_instance段中加入
 unicast_src_ip 192.168.74.*##(本地IP地址)
 unicast_peer {
 ​		192.168.74.*##(对端IP地址)此地址一定不能忘记
  • master服务器:
    在这里插入图片描述
  • backup服务器:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值