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

nacos集群模式+keepalived搭建高可用服务

实际工作中如果nacos这样的核心服务停掉了或者整个服务器宕机了,那整个系统也就gg了,所以像这样的核心服务我们必须要搞个3个或者3个以上的nacos集群部署,实现高可用;

部署高可用版本之前,首先你要会部署单机版的nacos,要有一定的前置知识,
我这里用的nacos版本2.0.4; jdk版本8 ;mysql用的5.7,
系统使用linux的Centos7.6版本

1.Nacos 集群搭建

配置/conf/cluster.conf

解压nacos压缩包,将./conf/cluster.conf.example复制一份,修改名称为cluster.conf,并修改内容,如下:
在这里插入图片描述

#it is ip
#example
10.10.11.79:8848
10.10.11.80:8848
10.10.11.81:8848

建议nacos集群不要少于3个,集群配置文件格式为ip:port,端口要保持一致;

修改application.properties文件,端口号持久化配置:

server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://10.10.11.81:3307/test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root!@#

在这里插入图片描述

修改nacos/bin/startup.sh

改成集群模式:

export MODE="cluster"

在这里插入图片描述
注意:三节点conf/cluster.conf和conf/application.properties配置一样即可!

启动nacos服务:

sh startup.sh

查看一下日志:
在这里插入图片描述

关闭服务:

sh shutdown.sh

分别访问一下:

http://10.10.11.79:8848/nacos
在这里插入图片描述
http://10.10.11.80:8848/nacos
在这里插入图片描述
http://10.10.11.81:8848/nacos
在这里插入图片描述
想用nginx做负载的话也可以,这里不介绍。

2.安装keepalived

安装

yum clean all
yum install -y keepalived

keepalived常用命令:

  systemctl start keepalived.service   #启动keepalivedsystemctl stop  keepalived.service   #停止keepalived   systemctl status keepalived.service  #查看keepalived状态

修改/etc/keepalived/keepalived.conf配置文件,配置内容如下:

10.10.11.79:

    #监控服务nacosvrrp_script chk_nacos {script "/etc/keepalived/chk_nacos.sh"#每2s检查一次interval 2#每次检查-20weight -20}vrrp_instance VI_1 {#只有一个MASTER 其他为BACKUPstate MASTER#网卡  当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡interface ens192#必须一样virtual_router_id 51#优先级priority 102advert_int 1#本机ipunicast_src_ip 10.10.11.79# 其他机器ipunicast_peer {                10.10.11.80        10.10.11.81}authentication {auth_type PASSauth_pass 1111}track_script {#检测脚本,上面配置的chk_nacos}virtual_ipaddress {#虚拟ip  是同网关下未使用的ip10.10.11.78}}

10.10.11.80:

    #监控服务nacosvrrp_script chk_nacos {script "/etc/keepalived/chk_nacos.sh"#每2s检查一次interval 2#每次检查-20weight -20}vrrp_instance VI_1 {#只有一个MASTER 其他为BACKUPstate BACKUP#网卡  当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡interface ens192#必须一样virtual_router_id 51#优先级priority 102advert_int 1#本机ipunicast_src_ip 10.10.11.80# 其他机器ipunicast_peer {                10.10.11.79     10.10.11.81}authentication {auth_type PASSauth_pass 1111}track_script {#检测脚本,上面配置的chk_nacos}virtual_ipaddress {#虚拟ip  是同网关下未使用的ip10.10.11.78}}

10.10.11.81:

#监控服务nacosvrrp_script chk_nacos {script "/etc/keepalived/chk_nacos.sh"#每2s检查一次interval 2#每次检查-20weight -20}vrrp_instance VI_1 {#只有一个MASTER 其他为BACKUPstate BACKUP#网卡  当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡interface ens192#必须一样virtual_router_id 51#优先级priority 102advert_int 1#本机ipunicast_src_ip 10.10.11.81# 其他机器ipunicast_peer {                10.10.11.7910.10.11.80}authentication {auth_type PASSauth_pass 1111}track_script {#检测脚本,上面配置的chk_nacos}virtual_ipaddress {#虚拟ip  是同网关下未使用的ip10.10.11.78}}

健康检测脚本:

建立/etc/keepalived/chk_nacos.sh脚本,三个服务器都一样。作用就是检测nacos服务是否运行,不运行就让keepalived让出master,优先级降低。让其他节点提供服务。

#!/bin/bash
COUNT=$(ps -ef | grep nacos |grep -v "chk_nacos" | grep -v "grep" | wc -l )
echo "nacos服务数量为:$COUNT"
#判断nacos 是否都挂掉了
if [ $COUNT -lt 1 ]; then    echo “nacos服务失败,让出master”exit 1
elseecho "检测成功"exit 0
fi

三个节点启动keepalived服务:

systemctl start keepalived.service

访问一下虚拟ip:

10.10.11.78:8848/nacos
在这里插入图片描述

这样便可以搭建一个高可用的nacos服务。直接访问http:10.10.11.78:8848/nacos即可。当提供服务的nacos挂掉了,就可以切到其他可用的nacos服务器。

验证:

找到其中一台nacos,kill掉服务。
在这里插入图片描述
访问当前那台nacos:
在这里插入图片描述
再次访问虚拟ip,查看是否受到影响:
在这里插入图片描述
仍然可以正常访问。

这样nacos的高可用集群就已经搭建好了,最好把数据库也做一下高可用:
Docker搭建MySQL主主模式+Keepalived实现高可用集群

相关文章:

nacos集群模式+keepalived搭建高可用服务

实际工作中如果nacos这样的核心服务停掉了或者整个服务器宕机了,那整个系统也就gg了,所以像这样的核心服务我们必须要搞个3个或者3个以上的nacos集群部署,实现高可用; 部署高可用版本之前,首先你要会部署单机版的naco…...

吉利「银河」负重突围

吉利控股集团最新公布的数据显示,2022年,吉利控股集团汽车总销量超230万辆,同比增长4.3%。其中,新能源汽车销量超64万辆,同比增长100.3%。 在中国本土市场,2022年吉利集团旗下品牌乘用车总交付量为135.84万…...

QT之图形视图框架概述——Graphics View Framework

QT之图形视图框架概述——Graphics View Framework1. 概述2. 核心类3. 事件传递4. Graphics View 坐标系统5. 参考1. 概述 Graphics View Framework是子Qt 4.2引入的,用来取代之前版本中的QCanvas。Graphics View Framework提拱了用于大量2D图形项的管理和交互的能…...

【SQL开发实战技巧】系列(二十二):数仓报表场景(上) 从分析函数效率一定快吗聊一聊结果集分页和隔行抽样实现方式

系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…...

小米无线AR眼镜探索版细节汇总

在MWC 2023期间,小米正式发布了一款无线AR眼镜,虽然还没看过实机,但XDA提前上手体验,我们从中进行总结。首先我要说的是,小米这款眼镜和高通无线AR眼镜参考设计高度重叠,产品卖点几乎一致,只是增…...

Web3中文|Litra:简洁而优美的NFT流动性协议,能给NFT市场带来什么?

2021年,NFT元年2021年,无疑是 NFT 的“元年”。这一年推特创始人的首条推特被拍出250万美元,加密艺术家Beeple的数字作品“First 5000 Days”在佳士得以6900万美元价格成交,无聊猿最高上涨了1800倍。2021年11月,在Goog…...

SSL证书对虚拟主机的用处有哪些?

虚拟主机是指在同一台服务器上,通过不同的域名或IP地址为多个网站提供服务的一种网络主机。而SSL证书则是一种数字证书,它用于加密网站与用户之间的通信,确保数据传输的安全性和完整性。在虚拟主机上,SSL证书有以下几个用处&#…...

SpringCloud之MQ笔记分享

MQ异步通信 初始MQ 同步通信 优点:时效性较强,可以以及得到结果 Feign就属于同步方式–问题: 耦合问题性能下降(中间的等待时间)资源浪费级联失败 异步通信 优点 耦合度低性能提升,吞吐量高故障隔离…...

动态规划背包问题

背包问题的分类 拿到背包问题,最重要的是会归类到哪一种背包问题中,常见的考题里主要是01背包和完全背包,leetcode上连多重背包的题目都没有。实际完全背包问题就是01背包的一种。 对一和零这道题,很多人容易把m看成一个背包,n看成另一个背包,从而当做多重背包。然而这…...

OpenCV4.x图像处理实例-张嘴和闭嘴检测

张嘴和闭嘴检测 在活体验证中,张嘴和闭嘴检测也是一个重要的环节。本文将介绍如何通过检测人脸上唇和下唇的关键点,并计算上唇和下唇的关键点的距离来检测当前人脸状态是否处于张嘴或闭嘴。 张嘴和闭嘴检测主要步骤如下: 第一步,安装依赖库 示例中使用到OpenCV和MediaP…...

软考高级系统分析师系列论文之十二:论实时控制系统与企业信息系统集成在工业控制的常规应用

软考高级系统分析师系列论文之十二:论实时控制系统与企业信息系统集成在工业控制的常规应用 一、摘要二、正文三、总结一、摘要 本文通过“工控组态软件”项目的开发,着重讨论实时系统与信息系统的集成。近年来,国内外的组态软件取得了很大的发展,已广泛应用于企业生产。组…...

蓝桥杯入门即劝退(二十三)货物摆放问题

欢迎关注点赞评论,共同学习,共同进步! ------持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流! 你的点赞、关注、评论、是我创作的动力! -------希望我的文章…...

经验之谈——指标异常了怎么办?

本文参考了数据万花筒的文章,结合我自己工作经验。希望给大家一些帮助。 指标异常排查,是数据分析师的工作重点之一,是各行各业数据分析师都绕不开的话题。 本文试图回答: 1、指标波动的影响因素有哪些? 2、如何快速…...

影视领域解说电影怎样做才会更加出彩?

还有没有想要做影视解说的新手朋友~给大家分享一下影视解说快速上手的软件工具! 一、解说文案 文案是影视解说中最重要的步骤,如果你无法保证文案足够优秀,那么请务必让所有语句通顺,整体通篇下来让人知道你是在讲一个完整的故事…...

【Spring6】| Spring对IoC的实现(核心重点)

目录 一:Spring对IoC的实现 1. IoC 控制反转 2. 依赖注入 2.1 set注入 2.2 构造注入 3. set注入专题 3.1 注入外部Bean 3.2 注入内部Bean 3.3 注入简单类型 3.4 级联属性赋值(了解) 3.5 注入数组 3.6 注入List集合和Set集合 3.7…...

部门来了个测试工程师,听说是00后,实在是太卷了.....

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们部门来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…...

冲冲冲,力扣javascript刷题——数组总结

力扣javascript刷题——数组总结冲冲冲,力扣刷题——数组总结1.二分查找力扣704题:二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.x 的平方根367. 有效的完全平方数2.双指针法27. 移除元素26. 删除有序数组中的重复项283.移动零844. 比较…...

使用kotlin编写html dsl框架

前排提醒,这个框架就是我写着玩的,如果您已经会使用vue或其他前端框架,这篇文章可能对您没有什么意义。即使您不会如上提到的框架,也不要对该框架报有过高的期待,该框架更多的是,我自己的自娱自乐。 这里还…...

【谷粒学院】MybatisPlus(1~17)

1.项目介绍 2.项目背景介绍 3.项目商业模式介绍 4.项目功能模块介绍 5.项目技术点介绍 6.项目技术点-MybatisPlus介绍 官网:http://mp.baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做…...

C++的输入输出

目录 一、基本的输入输出 二、I/O库头文件 三、标准输出流(cout) 四、标准输入流(cin) 五、标准错误流(cerr) 六、标准日志流(clog) 一、基本的输入输出 C 标准库提供了一组丰…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...