当前位置: 首页 > 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 标准库提供了一组丰…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...