自学内容网 自学内容网

麒麟操作系统服务架构保姆级教程(十二)keepalived高可用

  如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情

        随着业务的扩大,服务器集群也越来越大,用户多了起来就要保证用户访问,服务绝对不能宕机,那么这个时候咱们除了做灾备以外,负载均衡服务器会承接巨大的流量,这个时候就需要搭建高可用了,通过高可用保证服务器服务运行,nginx,Apache,这类web服务也好,mysql数据库服务也罢,都可以通过keepalived实现高可用

目录

一、keepalived简介

二、配置Keepalived

三、配置keepalived的非抢占格式

四、keepalived出现脑裂

五、通过脚本监控Nginx

💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!

👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!

🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

一、keepalived简介

Keepalived 是一款基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)实现的高可用解决方案软件,常用于 Linux 系统中,以下是关于它的详细介绍:
功能特点
高可用性保障:通过在多台服务器上部署 Keepalived,能够实时监控服务器的运行状态。当主服务器出现故障(如宕机、网络故障等)时,能迅速将服务切换到备用服务器上,确保业务的连续性,减少因服务器故障导致的服务中断时间,保证应用的高可用性。
IP 地址漂移:可以实现虚拟 IP(VIP)在不同服务器之间的灵活切换。正常情况下,VIP 绑定在主服务器上对外提供服务,一旦主服务器出现问题,VIP 会自动 “漂移” 到备用服务器,使得客户端访问依然可以通过该 VIP 连接到正常的服务器,对客户端来说几乎无感知。
健康检查机制:支持多种方式对后端真实服务器或者服务进行健康检查,例如通过发送 ICMP 数据包检测网络连通性、对特定端口进行 TCP 连接检测、发送 HTTP 请求检查 Web 服务是否正常响应等。依据检查结果来判断服务器或者服务是否可用,进而决定是否进行切换操作。
配置相对简单:主要通过配置文件来定义 VRRP 实例、虚拟 IP、服务器优先级、认证方式等关键参数,熟悉相关语法后,能比较方便地搭建起高可用环境。
应用场景
Web 服务器集群:在多个 Web 服务器组成的集群环境中,如常见的 Apache、Nginx 服务器集群,使用 Keepalived 来保证对外提供的网站服务始终可用,避免单点故障影响用户访问。
数据库高可用:像 MySQL 等数据库服务器,为了防止数据库主节点出现故障导致业务无法读写数据,可结合 Keepalived 实现主从数据库服务器之间的故障切换,保障数据库服务的稳定性。
负载均衡器高可用:对于像 HAProxy、LVS 等负载均衡器,Keepalived 可以确保负载均衡器本身的高可用性,避免因负载均衡器故障使得后端服务器无法被合理调度和访问。
工作原理
VRRP 协议基础:VRRP 协议会在一组运行 Keepalived 的服务器(通常称为一个 VRRP 组)中选举出一台主服务器(Master)和多台备用服务器(Backup)。主服务器负责处理发往虚拟 IP 地址的数据包,并定期向组内其他服务器发送 VRRP 通告消息,表明自己的存活状态。
故障切换过程:当备用服务器在一定时间内(可配置的超时时间)没有收到主服务器发来的 VRRP 通告消息时,就会认为主服务器出现故障,然后按照预先配置的优先级等规则,优先级高的备用服务器会抢占成为新的主服务器,接管虚拟 IP,并继续对外提供服务。
恢复机制:若原主服务器故障恢复,重新加入到 VRRP 组中时,它会根据配置决定是否重新夺回主服务器角色,一般可以配置为抢占式(会尝试夺回主角色)或非抢占式(保持备用状态,让当前主服务器继续提供服务)。

二、配置Keepalived

 

[root@lb01 nginx]#systemctl stop keepalived.service #关闭lb01的高可用测试

 

三、配置keepalived的非抢占格式

LB01和LB02的配置区别:
LB01:
state BACKUP
priority 150
nopreempt
LB02:
state BACKUP
priority 100
nopreempt

四、keepalived出现脑裂

原因:
1、服务器网线松动等网络故障
2、服务器硬件故障发生损坏现象而崩溃
3、主备都开启firewalld防火墙

五、通过脚本监控Nginx

[root@lb01 ~]#cat check_ng.sh 
#!/bin/bash
Nginx=`ps axu|grep nginx|grep -v grep|wc -l`
if [ $Nginx -eq 0 ];then
    systemctl restart nginx &>/dev/null
      if [ $? -ne 0 ];then
         systemctl stop keepalived
      fi
fi
[root@lb01 ~]#chmod +x check_ng.sh
将脚本集成到keepalived
[root@lb01 ~]#cat /etc/keepalived/keepalived.conf 
global_defs { 
    router_id lb01
}
vrrp_script check_web {
    script "/root/check_ng.sh"
    interval 5
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 50
    priority 150
    #nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {         
        10.0.0.3
    }
    track_script {
    check_web
    }
}

今天的keepalived就介绍到这里了~~~


想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~ 


原文地址:https://blog.csdn.net/weixin_62408089/article/details/145208318

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!