使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍

news/2024/8/22 11:04:07 标签: 服务器, linux, 运维, tcp/ip, 网络, 安全

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年7月15日14点40分

🀄️文章质量:95分


目录

——前言——

Keepalived 简介

工作原理

服务器

服务器

虚拟(漂移)地址测试


——前言——

以下内容全是重点 请仔细阅读

以下内容全是重点 请仔细阅读

Keepalived 是一个用于实现高可用性。它主要用于确保服务的连续性,防止单点故障,通常应用于负载均衡和故障转移场景。

Keepalived 简介

  1. Keepalived 是一个基于 VRRP(虚拟路由冗余协议)协议的软件实现。

  2. 它可以管理 LVS(Linux Virtual Server)集群系统,也可以单独用于实现服务的高可用。

  3. Keepalived 通过配置虚拟 IP 地址(VIP)来实现服务的故障转移。

  4. 它能够监控服务器和服务的状态,在发生故障时自动进行切换。

特别适合需要快速故障转移和负载均衡的网络环境

工作原理

  1. VRRP协议

    Keepalived使用VRRP(虚拟路由冗余协议)来实现高可用性。

    多台服务器组成一个VRRP组,共享一个虚拟IP地址。

    一台服务器作为主服务器,其他为备用服务器

    服务器定期发送VRRP通告包,如果备用服务器在一定时间内没有收到通告,就会接管虚拟IP。

2.健康检查

Keepalived定期检查本地和远程服务的健康状态。

支持多种检查方式,如TCP、HTTP、SSL等。

如果检测到服务不可用,会触发故障转移。

3.负载均衡

当与LVS(Linux Virtual Server)结合使用时,Keepalived可以管理LVS的配置。

支持多种负载均衡算法,如轮询、加权轮询、最少连接等。

4.配置管理

通过配置文件定义VRRP实例、虚拟IP、健康检查等参数。

支持动态配置更新,无需重启服务。

5.故障转移

当主服务器失效时,备用服务器会自动接管虚拟IP。

转移过程快速,通常在几秒内完成,对用户几乎无感知。

过这些机制,Keepalived能够有效地提供高可用性和负载均衡服务,确保系统的稳定性和可靠性。

实验环境

主 192.168.192.100    虚拟漂移地址 192.168.192.200

备 192.168.192.111     虚拟漂移地址 192.168.192.200

服务器


安装所需组件
yum -y install gcc openssl-devel libnfnetlink-devel libnl libnl3-devel

yum install -y keepalived ipvsadm

编辑配置文件

以下配置都是重点 大家可以一一比对

vim /etc/keepalived/keepalived.conf
! 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服务器地址
   smtp_connect_timeout 30  ! 设置SMTP连接超时时间(秒)
   router_id R1  ! 设置路由器标识

}

vrrp_instance VI_1 {
    state MASTER  ! 设置初始状态为主节点
    interface ens33  ! 设置VRRP实例绑定的网络接口
    virtual_router_id 2  ! 设置虚拟路由器ID
    priority 100  ! 设置优先级
    advert_int 1  ! 设置VRRP广播间隔(秒)
    authentication {
        auth_type PASS  ! 设置认证类型为密码
        auth_pass 1111  ! 设置认证密码
    }
    virtual_ipaddress {
        192.168.192.200  ! 设置虚拟IP地址
    }
}

virtual_server 192.168.192.200 80 {
    delay_loop 6  ! 设置健康检查间隔(秒)
    lb_algo rr  ! 设置负载均衡算法为轮询
    lb_kind DR  ! 设置LVS模式为直接路由
    nat_mask 255.255.255.0  ! 设置NAT掩码
!   persistence_timeout 50  ! 会话保持时间(秒),当前被注释
    protocol TCP  ! 设置协议为TCP

    real_server 192.168.192.112 80 {
        weight 1  ! 设置服务器权重
        TCP_CHECK {
            connect_port 80  ! 设置健康检查连接的端口
            connect_timeout 3  ! 设置连接超时时间(秒)
            nb_get_retry 3  ! 设置重试次数
            delay_before_retry 3  ! 设置重试间隔(秒)
        }
    }

    real_server 192.168.192.114 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

keepalived会定期对real server进行健康检查,如果检查失败,它会尝试重新连接。如果在指定的重试次数内都无法成功连接,keepalived会将该服务器标记为不可用,并将流量转发到其他可用的服务器


 

systemctl start keepalived    #启动服务
systemctl enable keepalived    #开机自启

systemctl status keepalived

服务器

安装所需组件
yum -y install gcc openssl-devel libnfnetlink-devel libnl libnl3-devel
yum install -y keepalived ipvsadm

编辑配置文件

根据行号来修改所需的信息 我都列出来 大家自行寻找出来修改

vim /etc/keepalived/keepalived.conf

 12    router_id R2
 13 }
 14 
 15 vrrp_instance VI_1 {
 16     state BACKUP
 17     interface ens33
 18     virtual_router_id 2
 19     priority 95
 20     advert_int 1
 21     authentication {
 22         auth_type PASS
 23         auth_pass 1111
 24     }
 25     virtual_ipaddress {
 26         192.168.192.200
 27     }
 28 }
 
 30 virtual_server 192.168.192.200 80 {
 31     delay_loop 6
 32     lb_algo rr
 33     lb_kind DR
 34     nat_mask 255.255.255.0
 35 #   persistence_timeout 50
 36     protocol TCP
 37 
 38     real_server 192.168.192.112 80 {
 39         weight 1
 40         TCP_CHECK{
 41             connetc_port 80
 42             connect_timeout 3
 43             nb_get_retry 3
 44             delay_before_retry 3
 45          }
 46 
 47     real_server 192.168.192.114 80 {
 48         weight 1
 49         TCP_CHECK{
 50             connetc_port 80
 51             connect_timeout 3
 52             nb_get_retry 3
 53             delay_before_retry 3
 54          }
 55         }
 56         }
 57     }

systemctl start keepalived  #启动服务
systemctl enable keepalived #开机自启
 

查看是否出错

systemctl status keepalived

虚拟(漂移)地址测试

在主服务器上查看

[root@localhost ~]# ip a sh dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:af:b6:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.192.100/24 brd 192.168.192.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.192.200/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feaf:b681/64 scope link 
       valid_lft forever preferred_lft forever

服务器查看

[root@localhost ~]# ip a sh dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b2:65:cb brd ff:ff:ff:ff:ff:ff
    inet 192.168.192.111/24 brd 192.168.192.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feb2:65cb/64 scope link 
       valid_lft forever preferred_lft forever

此刻我们关闭终止主服务器keepalived

在查看

服务器

服务器

"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子


http://www.niftyadmin.cn/n/5556371.html

相关文章

Go语言 字符串和数组

本文主要内容为Go语言数据类型中字符串和数组定义、特性及使用示例。 目录 字符串&#xff08;String&#xff09; 定义 长度及访问 拼接 strings 包 判断前缀 查找 转为大写 转为小写 数组&#xff08;定长&#xff09; 定义 遍历 方式一 方式二 忽略值 总结 …

Centos7 安装私有 Gitlab

在 CentOS 7上&#xff0c;下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤&#xff0c;如果您打算仅从本地网络访问极狐GitLab&#xff0c;则可以跳过它。 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemct…

微信小程序,订阅消息

微信小程序&#xff0c;订阅消息&#xff0c;完整流程 1.选择需要的模版 2.前端调用订阅消息 注&#xff1a;tmplIds&#xff1a;模板ID模版id,这里也可以选多个 wx.requestSubscribeMessage({tmplIds: [7UezzOrfJg_NIYdE1p*******],success (res) { console.log(res);wx.g…

36.UART(通用异步收发传输器)-RS232(3)

&#xff08;1&#xff09;串口发送模块visio视图&#xff1a; &#xff08;2&#xff09;串口发送模块Verilog代码: /* 常见波特率&#xff1a; 4800、9600、14400、115200 在系统时钟为50MHz时&#xff0c;对应计数为&#xff1a; (1/4800) * 10^9 /20 -1 10416 …

QT下,如何获取控制台输入

最近工作中为了测试某个模块&#xff0c;需要把原先输入模块部分&#xff0c;改成控制台输入来方便测试。在QT中&#xff0c;我们可以使用 QTextStream 类来读取用户的输入来达到目的。下面是一个简单的例子&#xff1a; #include <QCoreApplication> #include <QTex…

随机过程基础:3.平稳过程(1)

一、平稳过程 在统计学和信号处理中&#xff0c;平稳过程指的是随机过程的统计属性&#xff08;例如均值、方差等&#xff09;不随时间变化。这意味着这个过程是不显时间依赖性的&#xff0c;或者说它的行为在时间序列的任何部分都是统一的。 1.表达式 对于一个平稳过程 X(t) …

大模型 GPT 到 GPT-3.5 知识点总结

大模型 GPT 到 GPT-3.5 知识点总结 介绍 OpenAI 的生成预训练变换模型 (Generative Pre-trained Transformer, GPT) 系列已经经历了多个迭代&#xff0c;最新版本是 GPT-3.5。每个版本都引入了改进和新特性&#xff0c;以增强模型的能力。 关键点 GPT-1 发布时间&#xff…

SpringBoot整合阿里云RocketMQ对接,商业版

1.需要阿里云开通商业版RocketMQ 普通消息新建普通主题,普通组,延迟消息新建延迟消息主题,延迟消息组 2.结构目录 3.引入依赖 <!--阿里云RocketMq整合--><dependency><groupId>com.aliyun.openservices</groupId><artifactId>ons-client</…