当前位置: 首页 > article >正文

高可用虚拟IP-keepalived

个人觉得华为云这个文档十分详细:
使用虚拟IP和Keepalived搭建高可用Web集群_弹性云服务器 ECS_华为云

应用场景:虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

1.需要同一vpc网络下。

创建虚拟ip

ifconfig eth0:1 10.0.4.10 netmask 255.255.0.0

删除虚拟IP 

ip addr del 10.0.4.10 dev eth0

以上是本地测试是由。本文已腾讯云申请的高可用虚拟IP为例子

2.在主服务器和备服务器上安装 keepalived 软件

yum install -y keepalived

3.登录主节点云服务器 HAVIP-01,执行 vim /etc/keepalived/keepalived.conf,修改相关配置。

HAVIP-01 和 HAVIP-02 在本例中将被配置成“等权重节点”,即 state 均为 BACKUP,priority 均为 100。优点是可以减少抖动造成的倒换次数

   ! 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_skip_check_adv_addr
      vrrp_garp_interval 0
      vrrp_gna_interval 0
   }
   vrrp_script checkhaproxy
   {
        script "/etc/keepalived/do_sth.sh"   # 检测业务进程是否运行正常。其中“do_sth.sh”文件为用户自定义的业务进程检测脚本,请根据业务需要来执行,执行时“do_sth.sh”更换为实际的脚本名称。
        interval 5
   }
   vrrp_instance VI_1 {
   # 注意主备参数选择
   state BACKUP              # 设置初始状态均为“备“
       interface eth0          # 设置绑定 VIP 的网卡 例如 eth0  
       virtual_router_id 51    # 配置集群 virtual_router_id 值
       nopreempt               # 设置非抢占模式,
       # preempt_delay 10      # 仅 state MASTER 时生效    
       priority 100            # 两设备是相同值的等权重节点
       advert_int 5        
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       unicast_src_ip 172.16.16.5  # 设置本机内网IP地址
       unicast_peer {
           172.16.16.6             # 对端设备的 IP 地址
       }
       virtual_ipaddress {
           172.16.16.12           # 设置高可用虚拟 VIP 
       }
       notify_master "/etc/keepalived/notify_action.sh MASTER"
       notify_backup "/etc/keepalived/notify_action.sh BACKUP"
       notify_fault "/etc/keepalived/notify_action.sh FAULT"
       notify_stop "/etc/keepalived/notify_action.sh STOP"
       garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
       garp_master_refresh 5   # 设置主节点发送 ARP 报文的时间间隔

       track_interface {
                   eth0               # 使用绑定 VIP 的网卡 例如 eth0
           }
       track_script {
          checkhaproxy 
       }
   }

4.登录备节点云服务器 HAVIP-02,执行 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_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script checkhaproxy
{
    script "/etc/keepalived/do_sth.sh"
     interval 5
}
vrrp_instance VI_1 {
# 注意主备参数选择
state BACKUP            # 设置初始状态均为“备“
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0  
    virtual_router_id 51    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式
    # preempt_delay 10      # 仅 state MASTER 时生效   
    priority 100            # 两设备是相同值的等权重节点
    advert_int 5       
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 172.16.16.6  # 设置本机内网 IP 地址
    unicast_peer {
        172.16.16.5             # 对端设备的 IP 地址
    }
    virtual_ipaddress {
        172.16.16.12           # 设置高可用虚拟 VIP 
    }
    notify_master "/etc/keepalived/notify_action.sh MASTER"
    notify_backup "/etc/keepalived/notify_action.sh BACKUP"
    notify_fault "/etc/keepalived/notify_action.sh FAULT"
    notify_stop "/etc/keepalived/notify_action.sh STOP"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送ARP报文的时间间隔
    track_interface {
                eth0               # 使用绑定 VIP 的网卡 例如 eth0
        }
    track_script {
       checkhaproxy 
    }
}

5.重启 keepalived 进程使配置生效。

 systemctl restart keepalived

6.通过重启 keepalived 进程、重启子机等方式模拟主机故障,检测 VIP 是否能正常迁移。

如果完成了主备切换,则可以看到控制台的绑定主机已经切换为 backup 云服务器。

参考文档:

私有网络 用 HAVIP+Keepalived 搭建高可用主备集群-实践教程-文档中心-腾讯云

腾讯云配置高可用虚拟IP打造nginx+keepalived高可用_腾讯公有云高可用虚拟ip-CSDN博客


http://www.kler.cn/a/501407.html

相关文章:

  • 设计一个利用事务特性可以阻塞线程的排他锁,并且通过注解和 AOP 来实现
  • Uniapp仿ChatGPT Stream流式输出(非Websocket)
  • HAMi + prometheus-k8s + grafana实现vgpu虚拟化监控
  • [SMARTFORMS] 导出SMARTFORMS表单数据
  • 笔记本电脑 选购 回收 特权模式使用 指南
  • OpenCV相机标定与3D重建(48)对三台相机进行极线校正(rectification)函数rectify3Collinear()的使用
  • 51单片机——I2C-EEPROM
  • 视频编辑最新SOTA!港中文Adobe等发布统一视频生成传播框架——GenProp
  • MySQL innodb 引擎架构图
  • 微信小程序订阅消息提醒-云函数
  • 软件测试预备知识⑤—搭建 DNS 服务器
  • OpenCV实现基于拉普拉斯算子的浮雕特效
  • Python Selenium 库学习指南
  • 【Rust】引用与借用
  • uniapp区域滚动——上划进行分页加载数据(详细教程)
  • Python脚本自动创建GitHub标签
  • 制造企业“数字化转型”典型场景参考
  • Excel多层嵌套IF条件写法
  • Android中的蓝牙:BLE、经典蓝牙
  • Golang中遇到“note module requires Go xxx”后的解决方案,不升级Go版本!
  • 数据结构与算法之二叉树: LeetCode 572. 另一棵树的子树 (Ts版)
  • 1、什么是GO
  • IntelliJ IDEA 优化设置
  • 啥!GitHub Copilot也免费使用了
  • 晨辉面试抽签和评分管理系统之七:面试成绩核算的三种方式
  • matlab编写分段Hermite插值多项式