LVS+Keepalived群集

理解Keepalived实现原理

掌握Keepalived的部署

掌握LVS+Keepalived高可用集群部署

keepalived工具介绍

一个合格的群集应该具备的特点

1)负载均衡 用于提高群集的性能 LVS Nginx HAProxy SLB F5

2)健康检查(探针) 针对于调度器和节点服务器 Keepalived Heartbeat

3)故障转移 通过VIP漂移实现主备切换 VRRP 脚本

实现原理

VRRP组播报文地址为224.0.0.18,协议号为112

热备机主从原理,因为使用的的VRRP协议,所以有很多地方相似

健康检查(探针)常用的工作方式

1)发送心跳消息 vrrp报文 ping/pong

2)TCP端口检查 向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常

3)HTTP URL检查 向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法,如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常

如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常

Keepalived的工作模式

抢占模式:MASTER节点从故障中恢复后,会将VIP从BACKUP节点中抢占过来。

非抢占模式:MASTER节点恢复后不抢占VIP。(主备节点的state都配置为BAKCUP,且都添加配置nopreempt)

脑裂故障

现象:主服务器和备服务器都同时拥有相同的VIP

原因:因为主服务器和备服务器的通信中断,导致备服务器无法收到主服务器发送的VRRP报文,备服务器误认为主服务器已经故障了并通过ip命令生成VIP

解决:关闭主服务器或备服务器其中一个的keepalived服务

预防:(1)如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输

(2)如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信

(3)在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中断则自行关闭主服务器上的keepalived服务

(4)利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务

实验部分

配置keepalived

非抢占模式

实验二

验证nfs共享,验证nginx服务器,查看挂载,查看网站

关闭一台nginx后

就只会停在一台服务器

关闭一台调节器后会更换主从

配置nginx高可用

主机与备机配置

复制代码
vi keepalived.conf
keepalived.conf:
#检测脚本
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66    # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.16.130            # 定义虚拟ip(VIP),可多设,每行一个
    }
}

keepalived.conf:
#检测脚本
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔)
    weight 2                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state BACKUP                        # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33                      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66                # 虚拟路由编号,主从要一直
    priority 99                         # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port                   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.16.130                   # 定义虚拟ip(VIP),可多设,每行一个
    }
}

脚本文件

复制代码
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      systemctl start nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi

做健康检查与故障切换

调用脚本

相关推荐
朱包林11 分钟前
数据库服务-日志管理-备份与恢复-主从同步
linux·运维·服务器·数据库·mysql·云计算
李法师_22 分钟前
lwIP MQTT 心跳 Bug 分析与修复
linux·c语言·stm32·单片机·lwip
神色自若2 小时前
AbpVnext 阿里云ssl证书多个生产环境自动更新
服务器·阿里云·ssl
超级大坏蛋20182 小时前
QT .pro文件的常见用法
java·linux·qt
眰恦ゞLYF4 小时前
服务器类型与TCP并发服务器构建(SELECT)
服务器·select·io多路复用
我好饿14 小时前
Linux入门教程 第十五章 Linux 系统调优工具
linux·运维·网络
万花丛中一抹绿4 小时前
服务器硬件电路设计之 SPI 问答(六):如何提升服务器硬件电路中的性能?如何强化稳定性?
服务器·spi·服务器硬件电路设计
萌虎爱分享4 小时前
Linux 防火墙 (firewalld) 管理完整指南
linux·运维·防火墙·firewalld
2401_888423094 小时前
网络编程-TCP的并发服务器构建
服务器·网络·tcp/ip
祈祷苍天赐我java之术8 小时前
Linux 进阶之性能调优,文件管理,网络安全
java·linux·运维