nacos集群配置高可用数据库

news2024/11/15 0:07:43

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漂移到主节点上才能恢复写功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode.1992 找到所有的农场组

题目链接 Leetcode.1992 找到所有的农场组 Rating : 1539 题目描述 给你一个下标从 0 开始,大小为 m x n 的二进制矩阵 land ,其中 0 表示一单位的森林土地,1 表示一单位的农场土地。 为了让农场保持有序,农场土地之…

QT程序退出还占进程

问题情况 程序运行时的样子: 程序退出时的样子: 其跑到了后台进程里面: 程序退出了,但在任务管理器里查看,其从进程里面转移到后台进程了。 这种问题,怎么办,代码里,应该释放的也都…

微信小程序引入广告位功能,详细步骤!!!

大家碰到过首页加载时一开始出现的广告页面,这种微信官方提供了一个api进行设置,下面我们来详细解释一下。 首先第一步需要小程序累计用户数达到1000即可开通流量主,成功开通流量主之后就可以创建相应的广告位了,包括banner广告、…

【设计模式】如何在业务开发中使用适配器模式?

文章目录前言适配器模式定义通用代码实现适用场景案例场景分析一坨坨代码实现适配器模式重构总结前言 适配器模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个…

Can‘‘t connect to MySQL server on localhost (10061)解决方法

首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。 有时候安装mysql后使用mysql命令时报错 Cant connect to MySQL server on localhost (10061),或者用net start mysql 时报服务名无效,一般是因为mysql服务没有启动。 打开 powe…

itop-3568开发板驱动学习笔记(18)tasklet 机制

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录tasklet 简介tasklet 结构体tasklet 初始化使能 tasklet失能 tasklettasklet 调度函数tasklet 取消调度函数tasklet 实验tasklet 简介 Tasklets 机制是linux中断处理机制中的软中断延迟机制。在linux中存在着…

【ES】搜索结果处理RestClient查询文档

【ES】搜索结果处理&RestClient查询文档2.搜索结果处理2.1.排序2.1.1.普通字段排序2.1.2.地理坐标排序2.2.分页2.2.1.基本的分页2.2.2.深度分页问题2.2.3.小结2.3.高亮2.3.1.高亮原理2.3.2.实现高亮2.4.总结3.RestClient查询文档3.1.快速入门3.1.1.发起查询请求3.1.2.解析响…

【计算机图形学】图形变换(平移变换、比例变换、旋转变换、对称变换、错切变换、复合变换)

一 实验目的 编写图形各种变换的算法二 实验内容 1:自行设计基本图案,完成1-5种简单变换 实验结果如下图所示: 图形初始化: 第一次点击左键,实现平移变换: 第二次点击左键,实现比例变换&…

Android 性能优化——APP启动优化详解

1.1 为什么要启动优化? 用户希望应用能够及时响应并快速加载,启动时间过长的应用不能满足这个期望,并且可能使用户失望。 启动太慢的结果: 体验效果差用户放弃使用你的应用时间越长用户流失越高产品死掉 1.2 启动优化流程及分…

HDLBits-Modules 题解【Verilog模块例化】(中文翻译+英文原文,可顺带学习英文)

Moudule 概念介绍 到目前为止,你已经熟悉了一个模块,它是一个通过输入和输出端口与其外部交互的电路。更大、更复杂的电路是通过将较小的模块和其他连接在一起的部分(例如赋值语句和always块)组合而成的更大模块来构建的。因为模…

从零开始学OpenCV——图像灰度变换详解(线性与非线性变换)

文章目录图像灰度变化灰度变换介绍灰度线性变换灰度分段线性变换图像点运算灰度非线性变换线性点运算灰度的非线性变换:对数变换灰度的非线性变换:伽马变换灰度的非线性变换:对比拉伸灰度的非线性变换: S形灰度变换灰度的非线性变…

tomcat中出现RFC7230和RFC3986问题解析

问题截图 问题分析 出现上述问题,是因为各版本tomcat中对特殊字符和请求路径中携带中文参数而产生的错误提示。 解决办法 1、调整tomcat版本 tomcat 7.0.76之前的版本不会出现类似问题 2、tomcat9之前,修改tomcat目录底下的/conf/catalina.properti…

233:vue+openlayers绘制渐变填充色的圆形、多边形

第233个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中绘制带有渐变填充色的圆形、多边形。这里用canvas的方式去渲染,用到了DEVICE_PIXEL_RATIO,设备上的物理像素与设备无关像素 (dips) 之间的比率 (window.devicePixelRatio)。 直接复制下面的 vue+openlayer…

用ChatGPT创建一个REST API

ChatGPT是OpenAI公司开发的大型语言模型。在本文中,主要探讨如何使用ChatGPT在C#中创建REST API。 一、简介 ChatGPT是由人工智能研究中心OpenAI创建的尖端自然语言处理模型,OpenAI公司是由埃隆马斯克、萨姆奥特曼和格雷格布罗克曼共同创办的。该模型于…

360浏览器+Adobe Acrobat DC实现在线预览PDF大样校对

甲方:实现方正PDF文字大样校对,校对后在360浏览器中新开一个页面在线预览PDF文字大样校对结果。 我方实现过程: 1.方案选择 方案零:使用浏览器自带的PDF阅览器,经测试360极速模型,谷歌等软件能预览但是标记的PDF内容…

【笔记】大模型,大资料

大模型,大资料,loss会降低,准确率会增加 1大模型 1.1模型的顿悟时刻 举了一个一知半解的例子 1.2 模型 chain of thought 模型足够大时才会有比较好的作用 calibration 检测模型对于答案的confidence 会出现 “u-shape” 2.大资料 文法…

系统复杂度之【高可用】

接着,我们聊聊复杂度的第二个要求高可用。 参考维基百科,先来看看高可用的定义。 系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 这个定义的关键在于“ 无中断”,但恰好难点也在“…

Java 并发编程面试题——Future

目录1.什么是 Future 模式?Java 中是如何实现的?2.Callable、Future 与 FutureTask 分别是什么?2.1.Callable 接口2.2.Future 接口2.3.FutureTask 类3.CompletableFuture 类有什么用?1.什么是 Future 模式?Java 中是如…

windows系统管理_Windows server 2016 组管理与授权

组账户的概述 在 windows 服务器中,当我们需要为多个用户设置相同的权限时,一个一个的逐一设置会比较 麻烦,这个时候我们就需要用到另一种模式,组账户,使用此账户来进行简化操作。 在以后的职场中,每家公司…

Flink 优化 (五) --------- Job 优化

目录一、使用 DataGen 造数据1. DataStream 的 DataGenerator2. SQL 的 DataGenerator二、算子指定 UUID三、链路延迟测量四、开启对象重用五、细粒度滑动窗口优化一、使用 DataGen 造数据 开发完 Flink 作业,压测的方式很简单,先在 kafka 中积压数据&a…