nacos集群配置高可用数据库

1.架构

nacos集群配置高可用数据库的架构其实和nacos集群的架构差不多,只是在数据库方面做了主从跟keepalive实现数据库的高可用,当mysql的master节点挂掉时,keepalive的vip自动漂移到slave节点,并通过脚本使slave节点提升为master节点,因为主机数量不足的问题,本实验使用三台主机

2.主机配置如下图所示

主机IP端口服务
A10.1.60.1123306、8848nacos、mysql、keepalive
B10.1.60.1143306、8848nacos、mysql、keepalive
C10.1.60.1158848nacos

3.在A、B主机上安装mysql

参考:yum安装mysql 5.7_Apex Predator的博客-CSDN博客

4. 以A主机为master搭建mysql主从 

参考:mysql一主两从读写分离搭建_Apex Predator的博客-CSDN博客

5.在mysql主从两台主机上配置keepalive 

A主机配置

安装keepalive服务

yum -y install keepalive

编辑keepalive配置文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   script_user root     #配置vrrp_script项检测脚本,就必须增加此项与下面一项,不然会报错
   enable_script_security   #
   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 mysql01     #主节点id需要与备节点id不一致
  #vrrp_skip_check_adv_addr
  #vrrp_strict
  #vrrp_garp_interval 0
  #vrrp_gna_interval 0
}
 
vrrp_script check_mysql {
    script "/etc/keepalived/check_mysql.sh" #心跳执行的脚本,检查mysql是否存活,且检查master节点状态
    interval 5 #脚本执行的间隔时间,需要比advert_int时间大,单位是s
    weight -20  #若是上面的脚本退出状态不为0权重减20
}
 
vrrp_instance VI_1 {
    state MASTER    #指定实例初始状态,主节点配置为master
    interface ens160   #主机使用的网卡名称
    virtual_router_id 51  #设置VRID标记,需要和备节点的id一致,多个集群不能重复(0..255)
    priority 70   #优先级,主节点优先级需要比备节点高
    advert_int 1   #检查的时间间隔,默认1s
    authentication {
        auth_type PASS #认证方式,支持PASS和AH,官方建议使用PASS
        auth_pass 1111  #认证密码,备节点跟主节点一致
    }
    virtual_ipaddress {
        10.1.60.116  #虚拟ip地址,必须配置为没有使用的地址
    }
    track_script {
        check_mysql
    }
}

编辑数据库监控脚本

vi /etc/keepalived/check_mysql.sh

#!/bin/bash
A=`netstat -tlpn|grep :3306|wc -l`  #查询mysql是否存活
if [ A == 0 ]; then
   exit 1
else
   exit 0
fi

给脚本增加执行权限

chmod +x /etc/keepalived/check_mysql.sh

B主机配置

安装keepalive服务

yum -y install keepalive

编辑keepalive配置文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   script_user root     #配置vrrp_script项检测脚本,就必须增加此项与下面一项,不然会报错
   enable_script_security   #
   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 mysql02     #主节点id需要与备节点id不一致
  #vrrp_skip_check_adv_addr
  #vrrp_strict
  #vrrp_garp_interval 0
  #vrrp_gna_interval 0
}
 
vrrp_script check_mysql {
    script "/etc/keepalived/check_mysql.sh" #心跳执行的脚本,检查mysql是否存活,且检查master节点状态
    interval 5 #脚本执行的间隔时间,需要比advert_int时间大,单位是s
    weight -20  #若是上面的脚本退出状态不为0权重减20
}
 
vrrp_instance VI_1 {
    state BACKUP    #指定实例初始状态,主节点配置为master
    interface ens160   #主机使用的网卡名称
    virtual_router_id 51  #设置VRID标记,需要和备节点的id一致,多个集群不能重复(0..255)
    priority 70   #优先级,主节点优先级需要比备节点高
    advert_int 1   #检查的时间间隔,默认1s
    authentication {
        auth_type PASS #认证方式,支持PASS和AH,官方建议使用PASS
        auth_pass 1111  #认证密码,备节点跟主节点一致
    }
    virtual_ipaddress {
        10.1.60.116  #虚拟ip地址,必须配置为没有使用的地址
    }
    track_script {
        check_mysql
    }
}

编辑数据库监控脚本

vi /etc/keepalived/check_mysql.sh

#!/bin/bash
A=`netstat -tlpn|grep :3306|wc -l`  #查询mysql是否存活
if [ A == 0 ]; then
   exit 1
else
   exit 0
fi

 给脚本增加执行权限

chmod +x /etc/keepalived/check_mysql.sh

6.搭建nacos集群

参考:nacos集群搭建_Apex Predator的博客-CSDN博客

 配置application.properties文件时将ip地址改为keepalive的vip地址即可

7.实现效果

当keepalive通过脚本检测主库挂掉时,将A主机权重减掉20,把vip漂移到从节点上,但是从节点只可读,不可写,只能等主库恢复后,vip漂移到主节点上才能恢复写功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值