首页 > 其他分享 >keepalived

keepalived

时间:2024-07-20 23:08:18浏览次数:10  
标签:优先级 weight keepalived 192.168 priority vrrp

四、Keepalived

【1】、keepalived运行原理

image-20240629233008687

  • Keepalived检测每个服务器接节点状态
  • 服务器节点异常或出现工作故障,keepalived将故障节点从集群系统中剔除
  • 故障节点恢复后,Keepalived再将其加入到集群系统中
  • 所有工作自动完成,无需人工干预

keepalived用于实现高可用集群

它的工作原理就是VRRP(虚拟冗余路由协议)

【2】、配置高可用集群

1、安装keepalived

# 通过剧本安装
---
- name: install ipvsadm
  hosts: webservers
  vars:
    pkg: keepalived
  roles:
    - pkgs


# 或者是不通过剧本安装
yum install -y keepalived

配置keepalived

只需修改如下添加注释的内容

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id web1    # 修改router_id 
   vrrp_iptables	 # 让keepalived自动添加iptables规则
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER   # web1是主,state是master,web2是备份,state是BACKUP
    interface eth0
    virtual_router_id 51
    priority 100   # 优先级,web1为主,优先级高。web2是备份,优先级要比web1低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111

重启keepalived

[root@web1:192.168.4.110 ~]$systemctl start keepalived.service 
[root@web1:192.168.4.110 ~]$systemctl enable  keepalived.service

2、检查IP

正确的结果应该是

web1上有虚拟IP:192.168.4.80

web2上没有

在web1挂掉后,web2上会出现虚拟IP地址

[root@web1:192.168.4.110 ~]$ip a s eth0 | grep 80
    inet 192.168.4.80/24 scope global secondary eth0
# web1挂掉后
[root@web2:192.168.4.120 ~]$ip a  s eth0 | grep 80
    inet 192.168.4.80/24 scope global secondary eth0

3、测试

[root@ansible:192.168.4.66 ~]$curl http://192.168.4.80
Welcome  to web1 on 192.168.4.110
# 将web1挂掉,虚拟IP就会回到web2上
[root@ansible:192.168.4.66 ~]$curl http://192.168.4.80
Welcome  to web2 on 192.168.4.120

【3】、编写监控脚本

上面的配置虽然可以实现主备切换功能,但是存在一个bug,上面的配置实现主备切换的前提是web1(MASTER)关机、挂掉后才可以实现的切换

如果仅仅是将web1上的web服务关掉,那并不会实现主备之间的切换

因此我们需要编写一个监控脚本去实现当web服务停掉后,也可以实现主备切换

我们可以让keepalived监视80端口,如果80端口没有了,就切换主备

  • 配置高可用集群时,keepalived只为服务器提供了VIP
  • keepalived不知道服务器上运行了哪些服务
  • MASTER服务器可以通过跟踪脚本监视本机的80端口,一旦本机80端口失效,则将VIP切换到BACKUP服务器
  • keepalived对脚本的要求是,退出码为0表示访问成功,退出码为1则表示失效
# shell脚本,实现了端口开启返回0,端口不开启返回1
#!/bin/bash
# 检查80端口是否开启
if netstat -tuln | grep -q :80; then
    exit 0  # 端口开启,返回0
else
    exit 1  # 端口未开启,返回1
fi
# 修改keepalived配置文件,修改如下内容
vrrp_script  chk_http_port
{
    script "/home/check.sh"
    interval 3
    weight -20
}

vrrp_instance VI_1
{
    ...
    
    track_script
    {
        chk_http_port
    }
    
    ...
}

1、优先级更新的策略

keepalived会定时执行脚本对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。

如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加

如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少

其他情况,维持原本配置的优先级,即配置文件中priority对应的值。

这里需要注意的是:

1) 优先级不会不断的提高或者降低

2) 可以编写多个检测脚本并为每个检测脚本设置不同的weight

3) 不管提高优先级还是降低优先级,最终优先级的范围是在[1,254],不会出现优先级小于等于0或者优先级大于等于255的情况

2、vrrp_script中节点权重改变算法

在Keepalived集群中,其实并没有严格意义上的主、备节点

虽然可以在Keepalived配置文件中设置“state”选项为“MASTER”状态,但是这并不意味着此节点一直就是Master角色。

控制节点角色的是Keepalived配置文件中的“priority”值,但并它并不控制所有节点的角色,另一个能改变节点角色的是在vrrp_script模块中设置的“weight”值,这两个选项对应的都是一个整数值

其中“weight”值可以是个负整数,一个节点在集群中的角色就是通过这两个值的大小决定的。

不设置weight

在vrrp_script模块中,如果不设置“weight”选项值,那么集群优先级的选择将由Keepalived配置文件中的“priority”值决定,而在需要对集群中优先级进行灵活控制时,可以通过在vrrp_script模块中设置“weight”值来实现

设置weight

vrrp_script 里的script返回值为0时认为检测成功,其它值都会当成检测失败;

  1. weight 为正时脚本检测成功时此weight会加到priority上,检测失败时不加;
    1. 主失败:
      1. 主 priority < 从 priority + weight 时会切换。
    2. 主成功:
      1. 主 priority + weight > 从 priority + weight 时,主依然为主
  2. weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)
    1. 主失败:
      1. 主 priority – abs(weight) < 从priority 时会切换主从
    2. 主成功:
      1. 主 priority > 从priority 主依然为主

标签:优先级,weight,keepalived,192.168,priority,vrrp
From: https://www.cnblogs.com/xuruizhao/p/18313934

相关文章

  • keepalived绑定单播地址、非抢占模式及LVS的TCP模式的高可用【转】
    背景:keepalived默认是组播地址进行播放,且默认地址是224.0.0.18,如果配置多个keepalived主机,会导致虚拟IP地址存在冲突问题,这种问题怎么解决呢?解决办法:就是将keepalived主机的多播地址修改为单播地址,绑定固定IP地址,避免在多播模式下,通过VRRP进行广播地址,造成IP地址地址冲突。vrrp_......
  • Keepalived简介
            目前互联网主流的实现WEB网站及数据库服务高可用软件包括:keepalived、heartbeat等。Heartbeat是比较早期的实现高可用软件,而keepalived是目前轻量级的管理方便、易用的高可用软件解决方案,得到众多青睐。         Keepalived是一个类似于工作在layer......
  • LVS+Keepalived群集
    一、 Keepalived双机热备基础知识        Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检査(HealthChecking)功能--判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务......
  • keepalived主备模式
    前置条件:准备两台机器,已安装keepalived相关软件包获取两台设备的IP;准备一个新的IP作为虚拟IP,简称VIP1.打开终端获取机器的hostname2.对主设备进行修改,编辑/etc/keepalived/keepalived.conf文件进行修改;priority后设置的数值,主机器的值必须大于备机器3.对备机器的配置文件进......
  • 生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)
    前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式和非抢占模式。这里我会一一展开说具体怎么配置一、双节点均部署Nginx:第一步:上传安装包到/usr/local/第二步:安装编译依赖(使用普通用户需要家sudo)yuminstallgccgcc-c......
  • Windows上实现nginx的多负载,实现高可用,NLB 替代keepalived
    【转】https://blog.csdn.net/fcclzydouble/article/details/122841013NLB就是网络负载平衡,windowsServer2012中该功能允许你将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载平衡,保证即使是在负载很重的情况下它们也能......
  • 09--keepalived高可用集群
    前言:高可用集群配置是大型网站的一个基础,网站可用性的基础保障之一,这里将对应的概念知识和实操步骤进行整理与收集。1、基础概念详解1.1、高可用集群高可用集群(HighAvailabilityCluster,简称HACluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务......
  • keepalived实现Mysql的双机热备自动故障切换,看这一篇就够了!
    目录一、什么是双热备份?二、什么是Mysql的双热备份? 三、什么是keepalived?四、实现Mysql的双机热备1、配置双主复制参数2、创建用于复制的MySQL用户3、将A节点的数据拷贝到B节点4、B节点上开启复制五、 安装配置keepalived,完成故障自动切换1、keepalived的安装2、......
  • LVS+KeepAlived高可用负载均衡集群
    1、高可用群集(1)单台服务器(2)keepalived一个合格的群集应该具备的特点:负载均衡:用于提高群集的性能(LVSNqinxHAProxySLBF5)健康检查(探针):针对于调度器和节点服务器(KeepalivedHeartbeat)故障转移:通过VIP漂移实现主备切换健康检查(探针)常用的工作方式:发送心跳消息:vrr......
  • LVS+Keepalived群集
    目录一、群集1.一个合格的群集应该具备的特点2.健康检查(探针)常用的工作方式二、Keepalived工具1.概念2.工作原理3.安装与启动4.Keepalived体系主要模块及其作用三、配置主备服务器1.配置主备服务器2.验证3.总结4keepalived的抢占与非抢占模式四、配置LVS+Keepal......