Nacos docker实现nacos高可用集群项目
目录
Nacos是什么?
Nacos在公司里的运用是什么?
使用docker构建nacos容器高可用集群
实验规划图:编辑
1、拉取nacos镜像
2、创建docker网桥(实现集群内的机器的互联互通(所有的nacos和mysql))
3、创建Mysql容器,并初始化数据库nacos_config数据库(不用添加注释,我是为了方便解释)
编辑编辑4、创建三个Nacos节点
5、测试访问
Nacos是什么?
Nacos(中文名:阿里巴巴注册中心和配置中心)是一个开源的动态服务发现、配置管理和服务管理平台,最初由阿里巴巴开发并开源。
Nacos 提供了以下核心功能:
服务发现和注册: Nacos 允许应用程序在微服务架构中注册自己的服务实例,并发现其他服务的实例。这有助于构建弹性、可扩展的微服务应用,使服务能够自动注册和发现。
动态配置管理: Nacos 提供了一个配置中心,允许将配置信息集中存储和管理。应用程序可以动态获取配置,而不需要重新启动,从而支持配置的动态更新。
服务健康检查: Nacos 可以定期检查注册的服务实例的健康状态,以确保它们正常运行。这对于自动发现和剔除不健康的实例非常重要。
动态 DNS 服务: Nacos 提供了一个 DNS 服务,可以通过服务名称动态解析到相应的服务实例的 IP 地址。这简化了微服务之间的通信,不需要硬编码 IP 地址。
灰度发布: Nacos 支持灰度发布(部分流量切换到新版本),以及基于权重的负载均衡,有助于实现无缝升级和降级。
多数据中心和跨区域复制: Nacos 具有多数据中心和跨区域复制的能力,支持全球分布式部署。
支持多种语言和开放API: Nacos 提供了多种编程语言的客户端库,同时也支持开放的 REST 和 gRPC API,使其易于集成到各种应用程序中。
Nacos 可以作为微服务架构中的关键基础设施组件,用于管理和协调微服务的注册、发现、配置和健康检查等方面。它有助于构建可扩展、高可用的微服务架构,并提供了许多功能,使微服务应用程序更易于开发、部署和管理。因此,Nacos 在现代应用程序和微服务生态系统中广泛应用。
Nacos在公司里的运用是什么?
Nacos在公司内的运用通常包括以下几个方面:
微服务架构支持:Nacos是一个用于服务注册与发现、配置管理和服务健康监测的平台,因此在微服务架构中广泛应用。公司可以使用Nacos来管理大规模微服务应用程序的服务发现、负载均衡、配置分发等方面的需求。
服务注册和发现:公司可以使用Nacos来注册和发现各种微服务实例。当新的微服务实例启动时,它们会向Nacos注册,这样其他微服务就可以动态地发现并与它们通信。这有助于简化微服务之间的通信和协调。
配置中心:Nacos提供了一个集中的配置管理系统,公司可以将应用程序的配置信息存储在Nacos中,并让应用程序动态地获取配置。这使得配置更加灵活,可以在运行时进行修改,而无需重新部署应用程序。
动态路由和负载均衡:Nacos支持动态路由,公司可以根据不同的条件将请求路由到不同的服务实例上。此外,Nacos也可以与负载均衡器集成,确保流量被均匀分布到不同的服务实例上,提高了系统的性能和可扩展性。
灰度发布和滚动升级:Nacos支持灰度发布策略,允许公司逐渐将新版本的服务引入生产环境,同时维护旧版本。这有助于降低风险,并在升级过程中实现零宕机。
健康检查和自动故障恢复:Nacos可以定期检查注册的服务实例的健康状态,如果某个实例出现故障,Nacos会自动将其从注册表中注销,并自动进行故障恢复。这有助于提高系统的可用性和稳定性。
事件监听和报警:Nacos支持事件监听机制,公司可以根据配置或服务状态的变化触发自定义操作,如通知、报警等。这有助于及时发现和应对问题。
多数据中心支持:对于跨多个数据中心的大型组织,Nacos支持多数据中心配置和服务注册,使得管理跨地理位置的服务部署变得更加容易。
总之,Nacos在公司内的应用主要是为了支持微服务架构和提供服务治理的各个方面,从而帮助公司更好地构建、管理和维护分布式应用程序,提高系统的可用性、可维护性和可扩展性。
使用docker构建nacos容器高可用集群
参考视频:【IT老齐315】3分钟Docker构建并接入Nacos 2.x高可用集群
实验规划图:
1、拉取nacos镜像
[root@localhost ~]# docker pull nacos/nacos-server:v2.2.2
2、创建docker网桥(实现集群内的机器的互联互通(所有的nacos和mysql))
[root@localhost conf]# docker network create -d bridge bdg-nacos-cluster
f935dccd695c530d961f540c7878ac8531285031b0b2da8bc15e30c7ebfc964d
3、创建Mysql容器,并初始化数据库nacos_config数据库(不用添加注释,我是为了方便解释)
[root@localhost ~]# cat creat_mysql_nacos.sh
mkdir /etc/nacos-mysql/initdb
cd /etc/nacos-mysql/initdbrm -f mysql-schema.sql
# 前提是你下载了wget,下面的网址是国内的mysql-schema.sql下载网址,并且nacos官方也会给我们提供mysql-schema.sql数据库
wget http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/sca2023/download/mysql-schema.sqldocker rm -f mysql-5.7.4
docker volume rm -f nacos-mysql-data
# 创建卷,用于保存nacos运行的数据文件
docker volume create nacos-mysql-data# 构建的mysql5.7.4的容器
docker run --name mysql-5.7.4 --hostname=mysql-5.7.4 -d \
-p=8306:3306 --network=bdg-nacos-cluster --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-v nacos-mysql-data:/var/lib/mysql \ #用于保存mysql内的数据
-v /etc/nacos-mysql/initdb:/docker-entrypoint-initdb.d \ #保存的我们下载的mysql-schema.sql
mysql:5.7.4 #镜像版本
[root@localhost ~]#
mysql-schema.sql数据库内表的作用如下:

4、创建三个Nacos节点
创建nacos1节点
export CNAME=nacos1
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logsdocker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql-5.7.4 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8848:8848 -p 9848:9848 -d \
nacos/nacos-server:v2.2.2
代码解释:
实现效果:
[root@localhost initdb]# export CNAME=nacos1
[root@localhost initdb]# docker rm -f ${CNAME}
Error response from daemon: No such container: nacos1
[root@localhost initdb]# docker volume rm -f ${CNAME}-logs
nacos1-logs
[root@localhost initdb]# docker volume create ${CNAME}-logs
nacos1-logs
[root@localhost initdb]# docker run -d --name ${CNAME} \
> --network=bdg-nacos-cluster --restart=always \
> --hostname=${CNAME} \
> -e PREFER_HOST_MODE=hostname \
> -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
> -e SPRING_DATASOURCE_PLATFORM=mysql \
> -e MYSQL_SERVICE_HOST=mysql-5.7.4 \ #mysql容器名称
> -e MYSQL_SERVICE_DB_NAME=nacos_config \
> -e MYSQL_SERVICE_PORT=3306 \
> -e MYSQL_SERVICE_USER=root \
> -e MYSQL_SERVICE_PASSWORD=123456 \
> -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
> -e NACOS_AUTH_IDENTITY_KEY=2222 \ #标准的身份认证信息,三台nacos都必须保持一致
> -e NACOS_AUTH_IDENTITY_VALUE=2xxx \
> -e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
> -v ${CNAME}-logs:/home/nacos/logs \
> -p 8848:8848 -p 9848:9848 -d \
> nacos/nacos-server:v2.2.2
2735cb302399c46c64342d1feda2aaf44bee4441cb8469dacc3cc166e6e649c4
[root@localhost initdb]#
创建nacos2节点
export CNAME=nacos2 # 修改部分
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logsdocker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql-5.7.4 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8849:8848 -p 9849:9848 -d \ # 修改部分
nacos/nacos-server:v2.2.2
创建nacos3节点
export CNAME=nacos3 # 修改部分
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logsdocker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql-5.7.4 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8850:8848 -p 9850:9848 -d \ # 修改部分
nacos/nacos-server:v2.2.2
5、测试访问
访问网址http://192.168.1.209:8848/nacos/
初始账号密码默认为nacos。
相关文章:

Nacos docker实现nacos高可用集群项目
目录 Nacos是什么? Nacos在公司里的运用是什么? 使用docker构建nacos容器高可用集群 实验规划图:编辑 1、拉取nacos镜像 2、创建docker网桥(实现集群内的机器的互联互通(所有的nacos和mysql)&#x…...

基于Dubbo实现服务的远程调用
目录 前言 RPC思想 为什么使用Dubbo Dubbo技术框架 编辑 调用关系流程 基础实现 A.提供统一业务Api B.编辑服务提供者Product B.a 添加依赖 B.b 添加Dubbo 配置(基于yaml配置文件) B.c 编写并暴露服务 C.编辑服务消费者 C.a 添加依赖 C.b 添加Dubbo配置 C.c 引用…...

Redis事务的理解
介绍 Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。 事务提供了一种将多个命令请求打包,然后一次性、按照顺序地执行多个命令的机制,并且在事务执行期间,服务器不会因为其他客户端请求而中断事务的执行功能,他会将事务中的…...

PostgreSQL安装异常,服务无法启动导致创建服务器超时
win上安装pg后无法创建服务器,提示创建超时,发现服务列表里面pg15服务 并没有启动,启动服务器发现服务不了,截图忘记截了,复现不了,解决方法是 换个身份,然后继续启动,然后就可以在…...

汽车电子系统网络安全解决方案
声明 本文是学习GB-T 38628-2020 信息安全技术 汽车电子系统网络安全指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 汽车电子系统网络安全范围 本标准给出了汽车电子系统网络安全活动框架,以及在此框架下的汽车电子系统网络安全活动…...

切片机制和MR工作机制
切片机制 默认的切片大小和块大小一致,切片的个数决定了MapTask的个数。 数据倾斜问题:如果某个切片的大小太小,会浪费了MapTask申请的CPU资源。 如果剩余数据长度大于128*1.1, 就切片成2份,否则就不进行切分了。 InputFormat基…...

【postgresql 基础入门】基础架构和命名空间层次,查看数据库对象再也不迷路
postgresql 基础架构 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤&…...

是的,决定放弃算法去机器学习了
可是梦想啊!~她永存心间!!! 我啊~本是执着于这些算法的怪咖,梦想是icpc,ccpc~ 可是啊~ 在以后的科研和工作中,这些算法很多都是用不到的,学习算法更重要的目的是锻炼编程能力和分析…...

Python 03(循环语句)
Python03(循环语句) 文章目录 Python03(循环语句)一、while语句二、while实现猜数字三、while循环的嵌套while循环嵌套实例需求: 四、for循环1、什么 是for循环2、语法3、执行流程4、for循环的基本使用5、range()函数6…...

安科瑞铁塔基站能耗监控解决方案
安科瑞 华楠 1 背景概述 5G发展,基站先行。5G基站的选址建设,是保证5G信号覆盖的基础,因此5G基站建设是5G产业布局的一部分,也是5G成熟的基础。 2G、3G、4G均是低频段信号传输,宏基站几乎能应付所有的信号覆盖。但由…...

操作系统-线程复用
操作系统执行线程复用的过程涉及到线程调度和管理。线程复用是指操作系统能够有效地重用现有的线程来执行新的任务,而不必每次都创建新线程。这有助于减少线程创建和销毁的开销,提高系统性能。下面是操作系统如何执行线程复用的关键步骤: 线程…...

通达信自定义副图行业指标K线指标 HYZS_QD
行业指数:HY_INDEXC,NODRAW; DRAWKLINE(HY_INDEXH,HY_INDEXO,HY_INDEXL,HY_INDEXC); MA5:MA(HY_INDEXC,5),COLORWHITE; {MA10:MA(HY_INDEXC,10),COLORYELLOW,LINETHICK2}; DRAWTEXT_FIX(1,1,1,1,STRCAT(STRCAT(CON2STR(HY_INDEXADV,0),/),STRCAT(CON2STR(HY_INDEXDEC,0), ))),…...

MDK-Keil AC6 Compiler屏蔽特定警告
最近在使用STM32CubeMX生成MDK工程是,使用了 AC6 版本的编译器进行编译代码,然后发现了一些警告,但是在 AC5 版本下编译又正常。于是研究了下怎么屏蔽特定的警告,这里记录一下。 1. Keil AC6屏蔽特定警告 遇到的警告如下&#x…...

计算机网络的故事——了解Web及网络基础
了解Web及网络基础 文章目录 了解Web及网络基础一、使用 HTTP 协议访问 Web二、HTTP 的诞生三、网络基础 TCP/IP四、与 HTTP 关系密切的协议 : IP、TCP 和 DNS 一、使用 HTTP 协议访问 Web 根据Web浏览器指定的URL,从对应的服务器中获取文件资源,从而显…...

[系统安全] 五十三.DataCon竞赛 (2)2022年DataCon涉网分析之恶意样本IOC自动化提取详解
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…...

自动驾驶——估计预瞄轨迹YawRate
1.Introduction 在ADAS控制系统中,通常根据预瞄距离x去估计横向距离y,有如下关系: y a0 a1 x a2 * x^2 a3 * x^3 ,那么现在有个需求,希望根据上述x和y的关系,去估计规划预瞄轨迹yawRate 2.How to es…...

PMP证书考下来要多少费用?
PMP考试共有三项费用:分为考前费用、考后费用和续证费用。 第一项是考前费用: 1、培训费用,在英文报名时需要填写培训公司名称和35学时的培训证明。一般的培训公司收费不一,有些公司大概是三千元左右,而有些公司可能…...

C动态分配
动态分布与静态发布: 静态分配 1、 在程序编译或运行过程中,按事先规定大小分配内存空间的分配方式。int a [10] 2、 必须事先知道所需空间的大小。 3、 分配在栈区或全局变量区,一般以数组的形式。 4、 按计划分配。 动态分配 1、在程序运…...

C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)
了解程序环境和预处理 前言:一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6…...

Docker部署EMQX
1、简介 EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。 Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。 MQTT 是轻量的 (Lightweight)、发布订阅模式 (Pu…...

Spring Cloud(Finchley版本)系列教程(二) 客户端负载均衡Ribbon
Spring Cloud(Finchley版本)系列教程(二) 客户端负载均衡Ribbon 目前主流的负载均衡方案有两种,一种是集中式均衡负载,在消费者与服务提供者之间使用独立的代理方式进行负载,比如F5、Nginx等。另一种则是客户端自己做负载均衡,根据自己的请求做负载,Ribbon就属于客户端自…...

好玩的js特效
记录一些好玩的js特效 1、鱼跳跃特效 引入jquery:https://code.jquery.com/jquery-3.7.1.min.js 源码如下: <!--引入jquery--> <script src"https://code.jquery.com/jquery-3.7.1.min.js"></script> <!--引入跳跃源码--> <s…...

java实现带有html格式和附件的符合RFC822规范的eml格式的信件原文组装
1. 传递html格式的eml信件正文 html传递就是解析成带有< html>标签的字符串在正文中传递即可 From:综合运行平台 to:111qq.com // 重点是格式设置成text/html 编码的话需要设置成UTF-8,不然可能直接在正文中展示html标签,为不是解析成具体的样式…...

如何使用PyTorch训练LLM
推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 像LangChain这样的库促进了上述端到端AI应用程序的实现。我们的教程介绍 LangChain for Data Engineering & Data Applications 概述了您可以使用 Langchain 做什么,包括 LangChain 解决的问题…...

uniapp 手机 真机测试 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可
uniapp 手机 真机测试 打开手机 找到手机的 版本号 点击 知道提示 (启动开发者模式) 然后 在进行usb的连接打开 运行uniapp 到手机基台 手机确认 即可 四, 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可...

RTSP流媒体服务器EasyNVR视频平台以服务方式启动异常却无报错,该如何解决?
EasyNVR是基于RTSP/Onvif协议的安防视频云服务平台,可实现设备接入、实时直播、录像、检索与回放、云存储、视频分发、级联等视频能力服务,可覆盖全终端平台(电脑、手机、平板等终端),在智慧工厂、智慧工地、智慧社区、…...

【List篇】使用Arrays.asList生成的List集合,操作add方法报错
早上到公司,刚到工位,测试同事就跑来说"功能不行了,报服务器异常了,咋回事";我一脸蒙,早饭都顾不上吃,要来了测试账号复现了一下,然后仔细观察测试服务器日志,发现报了一个…...

c++的类模板里,可以直接为静态变量赋值么?
一直以来,咱们学的是,给类模板里的静态变量赋值,要在类外面。但对于类常量,则可以直接在定义时赋值。起因是看STL源码时有这么的写法,又验证了一下。 但是在类模板里直接定义静态活动变量是不可以的,即去…...

【录用案例】CCF-C类,1/2区SCIEI,3个月14天录用,30天见刊,11天检索
计算机科学类SCI&EI 【期刊简介】IF:5.5-6.0,JCR1/2区,中科院2区 【检索情况】SCI&EI 双检(CCF-C类) 【征稿领域】边缘计算、算法与机器学习的结合研究 录用案例:3个月14天录用,录用…...

qt day 3
1.完成自定义的记事本文件的保存功能 ------------------------------------------------------------------------- widget.cpp ------------------------------------------------------------------------- #include "widget.h" #include "ui_widget.h"…...