KeepAlive配置连接主备集群

KeepAlive

介绍

Keepalive是linux下一个个轻量级别的高可用解决方案。

作用:支持故障自动切换,支持节点健康状态检查

原理:心跳监测

VRRP协议,虚拟路由冗余协议

​ 一种容错协议,通过吧几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其他设备,从而保持通讯的连续性和可靠性。

​ VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组有一个master路由器和多个backup路由器组成,功能上相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的ip地址,并不需要知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。

​ VRRP将该虚拟路由器动态关联到承担传输业务的物理路由器上,当该物理路由器出现故障时,再次选择新路由器来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信。

keepalive的工作流程

Initialize模式

设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP报文做任何处理。

Master模式

定期发送 VRRP 报文

以虚拟 MAC 地址响应对虚拟 IP 地址的 ARP 请求

转发目的标MAC 地址为虚拟 MAC 地址的 IP 报文

如果它是这个虚拟 IP 地址的拥有者,则接收目的 IP 地址为这个虚拟 IP 地址的 IP 报文。否则,丢弃这个 IP 报文

如果收到比自己优先级大的报文则转为 Backup 状态

如果收到优先级和自己相同的报文,并且发送端的 IP 地址比自己的 IP 地址大,则转为 Backup 状态

当接收到接口的 Shutdown 事件时,转为Initialize(初始状态)

Backup模式

接收 Master 发送的 VRRP 报文,判断 Master 的状态是否正常

对虚拟 IP 地址的 ARP 请求,不做响应

丢弃目的 MAC 地址为虚拟 MAC 地址的 IP 报文

丢弃目的 IP 地址为虚拟 IP 地址的IP报文

Backup 状态下如果收到比自己优先级小的报文时,丢弃报文,立即切换为 Master( 仅在抢占模式下生效 )

如果收到优先级和自己相同或者比自己高的报文,则重置定时器,不进一步比较 IP 地址

当接收到接口的 Shutdown 事件时,转为 Initialize

如果 MASTER_DOWN_INTERVAL 定时器超时,则切换为 Master

脑分裂及其解决方案

原因

硬件----连接线、网卡或相关驱动、连接线间的设备(交换机)、

防火墙

配置的网卡信息不正确

方案:

使用串口线进行连接,避免线路问题。
使用特殊设备进行支撑,当备份节点成为主节点时主动杀死另一台keeepalive
对iptables进行设置,开放环境中使用的IP
通过zabbix对keepalive进行监测

keepalive的各项功能

  • 后端节点健康状态检测

目的:搭配LVS使用,当后端节点出现故障时。主动剔除出集群,使集群后端节点出现故障时用户可以较为畅通的访问相应的资源

  • 脚本调用

    脚本所在目录:/etc/keepalive/script/

    服务检测脚本:

    ​ 当keepalive对其他服务(非LVS)进行高可用时,使服务器出现故障时可迅速切换至从节点,使用户仍可以正常访问后端真实服务器

    ​ 切换至主节点脚本:当从节点承当负载调度器的角色时,需获取一些资源,比如目录的挂载

    ​ 切换至关闭状态脚本:当该服务器需要关闭时,需释放一些资源,以免多台调度器同时写入某文件以致文件损坏

  • 非抢占模式

    ​ 在主节点和备份节点性能相差不大时采用非抢占模式,可减少资源的浪费和提升用户体验(减少用户不能使用的时间)

    ​ 在非抢占模式中,配置文件中应都为备份模式

Keepalive配置

环境准备

CentOS 7两台:test128(主服务器master) test129(备服务器backup)

虚拟IP: 192.168.183.127

关闭网卡IPV6

配置yum源安装keppalive:

yum -y install keepalived

keepalive.conf配置

master
[root@test128 ~]# mv  /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@test128 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id test128
}
vrrp_instance VI_1 {
    state MASTER     #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
    interface ens33
    virtual_router_id 128   #虚拟路由的ID号,是虚拟路由MAC的最后一位地址
    priority 100  #优先级,主机优先级一定要大于备机
    unicast_src_ip 192.168.183.128 #使用单播发送vrrp心跳,指向本地ip地址
    unicast_peer {
        192.168.183.129   #(对端IP地址)
    }
    advert_int 1  #默认,心跳检测频率(秒)
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        192.168.183.127#虚拟ip
    }
}
backup
[root@test129 ~]# mv  /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@test129 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id test129
}
vrrp_instance VI_1 {
    state BACKUP     #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
    interface ens33
    virtual_router_id 128   #虚拟路由的ID号,是虚拟路由MAC的最后一位地址
    priority 50  #优先级,主机优先级一定要大于备机
    unicast_src_ip 192.168.183.129 #使用单播发送vrrp心跳,指向本地ip地址
    unicast_peer {
        192.168.183.128   #(对端IP地址)
    }
    advert_int 1  #默认,心跳检测频率(秒)
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        192.168.183.127#虚拟ip
    }
}
配置非抢占模式

设置为非抢占模式使用优先级别高的并且恢复后不能自动再切回高优先级,必须中断才能恢复

要求都是用备用模式 ,添加参数

节点一:
global_defs {
   router_id test128
}
vrrp_instance VI_1 {
    state BACKUP     #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
    interface ens33
    virtual_router_id 128   #虚拟路由的ID号,是虚拟路由MAC的最后一位地址
    priority 100  #优先级,主机优先级一定要大于备机
    unicast_src_ip 192.168.183.128 #使用单播发送vrrp心跳,指向本地ip地址
    unicast_peer {
        192.168.183.129   #(对端IP地址)
    }
    advert_int 1  #默认,心跳检测频率(秒)
    nopreempt #定义工作模式为非抢占模式;(如果不加,就默认抢占模式)
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        192.168.183.127#虚拟ip
    }
}
节点二:
global_defs {
   router_id test129
}
vrrp_instance VI_1 {
    state BACKUP     #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
    interface ens33
    virtual_router_id 128   #虚拟路由的ID号,是虚拟路由MAC的最后一位地址
    priority 50  #优先级,主机优先级一定要大于备机
    unicast_src_ip 192.168.183.129 #使用单播发送vrrp心跳,指向本地ip地址
    unicast_peer {
        192.168.183.128   #(对端IP地址)
    }
    advert_int 1  #默认,心跳检测频率(秒)
    nopreempt #定义工作模式为非抢占模式;(如果不加,就默认抢占模式)
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        192.168.183.127#虚拟ip
    }
}

启动keepalive

Master:systemctl restart keepalived.service

Backup:systemctl restart keepalived.service

ip a查看两节点出现虚拟ip

在这里插入图片描述
在这里插入图片描述
Master查看keepalive状态:目前虚拟ip在master节点
在这里插入图片描述

Backup查看keepalive状态:
在这里插入图片描述

通过虚拟ip访问DM数据库

SQL> conn SYSDBA/SYSDBA@192.168.183.127:15236

SQL> select name from v$instance;

测试切换

#关闭128 keepalive

[root@test128 ~]# systemctl stop keepalived.service

#查看129 keepalive,虚拟ip127已在节点129上

[root@test129 ~]# systemctl status keepalived.service

在这里插入图片描述

使用虚拟ip连接数据库,可查看到连接的是DM02

SQL> conn SYSDBA/SYSDBA@192.168.183.127:15236

SQL> select name from v$instance;
在这里插入图片描述

更多问题可访问达梦社区:
达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心
https://eco.dameng.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DHY151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值