Nacos docker实现nacos高可用集群项目

目录

Nacos是什么?

Nacos在公司里的运用是什么?

使用docker构建nacos容器高可用集群

实验规划图:​编辑

1、拉取nacos镜像

2、创建docker网桥(实现集群内的机器的互联互通(所有的nacos和mysql))

3、创建Mysql容器,并初始化数据库nacos_config数据库(不用添加注释,我是为了方便解释)

​编辑​编辑4、创建三个Nacos节点

5、测试访问

Nacos是什么?

Nacos(中文名:阿里巴巴注册中心和配置中心)是一个开源的动态服务发现、配置管理和服务管理平台,最初由阿里巴巴开发并开源。

Nacos 提供了以下核心功能:

  1. 服务发现和注册: Nacos 允许应用程序在微服务架构中注册自己的服务实例,并发现其他服务的实例。这有助于构建弹性、可扩展的微服务应用,使服务能够自动注册和发现。

  2. 动态配置管理: Nacos 提供了一个配置中心,允许将配置信息集中存储和管理。应用程序可以动态获取配置,而不需要重新启动,从而支持配置的动态更新。

  3. 服务健康检查: Nacos 可以定期检查注册的服务实例的健康状态,以确保它们正常运行。这对于自动发现和剔除不健康的实例非常重要。

  4. 动态 DNS 服务: Nacos 提供了一个 DNS 服务,可以通过服务名称动态解析到相应的服务实例的 IP 地址。这简化了微服务之间的通信,不需要硬编码 IP 地址。

  5. 灰度发布: Nacos 支持灰度发布(部分流量切换到新版本),以及基于权重的负载均衡,有助于实现无缝升级和降级。

  6. 多数据中心和跨区域复制: Nacos 具有多数据中心和跨区域复制的能力,支持全球分布式部署。

  7. 支持多种语言和开放API: Nacos 提供了多种编程语言的客户端库,同时也支持开放的 REST 和 gRPC API,使其易于集成到各种应用程序中。

Nacos 可以作为微服务架构中的关键基础设施组件,用于管理和协调微服务的注册、发现、配置和健康检查等方面。它有助于构建可扩展、高可用的微服务架构,并提供了许多功能,使微服务应用程序更易于开发、部署和管理。因此,Nacos 在现代应用程序和微服务生态系统中广泛应用。

Nacos在公司里的运用是什么?

Nacos在公司内的运用通常包括以下几个方面:

  1. 微服务架构支持:Nacos是一个用于服务注册与发现、配置管理和服务健康监测的平台,因此在微服务架构中广泛应用。公司可以使用Nacos来管理大规模微服务应用程序的服务发现、负载均衡、配置分发等方面的需求。

  2. 服务注册和发现:公司可以使用Nacos来注册和发现各种微服务实例。当新的微服务实例启动时,它们会向Nacos注册,这样其他微服务就可以动态地发现并与它们通信。这有助于简化微服务之间的通信和协调。

  3. 配置中心:Nacos提供了一个集中的配置管理系统,公司可以将应用程序的配置信息存储在Nacos中,并让应用程序动态地获取配置。这使得配置更加灵活,可以在运行时进行修改,而无需重新部署应用程序。

  4. 动态路由和负载均衡:Nacos支持动态路由,公司可以根据不同的条件将请求路由到不同的服务实例上。此外,Nacos也可以与负载均衡器集成,确保流量被均匀分布到不同的服务实例上,提高了系统的性能和可扩展性。

  5. 灰度发布和滚动升级:Nacos支持灰度发布策略,允许公司逐渐将新版本的服务引入生产环境,同时维护旧版本。这有助于降低风险,并在升级过程中实现零宕机。

  6. 健康检查和自动故障恢复:Nacos可以定期检查注册的服务实例的健康状态,如果某个实例出现故障,Nacos会自动将其从注册表中注销,并自动进行故障恢复。这有助于提高系统的可用性和稳定性。

  7. 事件监听和报警:Nacos支持事件监听机制,公司可以根据配置或服务状态的变化触发自定义操作,如通知、报警等。这有助于及时发现和应对问题。

  8. 多数据中心支持:对于跨多个数据中心的大型组织,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。

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

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

相关文章

环境变量与Path环境变量

“环境变量”和“path环境变量”其实是两个东西,这一点大家一定要区分开,不要混为一谈。 “环境变量”是操作系统工作环境设置的一些选项或属性参数。每个环境变量由变量名和文件路径组成的,可以设置很多个环境变量。 我们一般使用环境变量…

冒泡排序、选择排序、插入排序、希尔排序

冒泡排序 基本思想 代码实现 # 冒泡排序 def bubble_sort(arr):length len(arr) - 1for i in range(length):flag Truefor j in range(length - i):if arr[j] > arr[j 1]:temp arr[j]arr[j] arr[j 1]arr[j 1] tempflag Falseprint(f第{i 1}趟的排序结果为&#…

正规好用的电脑端抽奖软件有哪些?

这几个软件都是本人反复用过、反复比较的,且都超过5年。 1. 518抽奖软件 518抽奖软件,518我要发,超好用的年会抽奖软件,简约设计风格。 包含文字号码抽奖、照片抽奖两种模式,支持姓名抽奖、号码抽奖、数字抽奖、照片抽…

测试平台部署三——Nginx

测试平台部署——Nginx 一、nginx部署1、nginx的作用:2、案例1二、django静态文件配置和部署1、nginx工作原理2、反向代理一、nginx部署 1、nginx的作用: 静态文件服务器和反向代理django服务 进入nginx容器中 sudo docker run --rm -it nginx:alpine /bin/sh

岩土工程安全监测利器:振弦采集仪的发展

岩土工程安全监测利器:振弦采集仪的发展 岩土工程安全监测是保障建筑物、地下工程和地质环境安全稳定运行的重要手段。传统上,监测手段主要依靠人工巡视以及基础设施安装的传感器,但是这些方法都存在着缺陷。人工巡视存在的问题是数据采集精…

Linux驱动【day2】

mychrdev.c: #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include<linux/uaccess.h> #include<linux/io.h> #include"head.h" unsigned int major; // 保存主设备号 char kbuf[128]{0}; unsigned int…

【linux基础(五)】Linux中的开发工具(上)---yum和vim

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到开通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux中的开发工具 1. 前言2.…

4、Nginx 配置实例-反向代理

文章目录 4、nginx 配置实例-反向代理4.1 反向代理实例一4.1.1 实验代码 4.3 反向代理实例二4.3.1 实验代码 【尚硅谷】尚硅谷Nginx教程由浅入深 志不强者智不达&#xff1b;言不信者行不果。 4、nginx 配置实例-反向代理 4.1 反向代理实例一 实现效果&#xff1a;使用 nginx…

窗口函数-分组排序:row_number()、rank() 、dense_rank()、ntile()

窗口函数语法结构&#xff1a; 分析函数() over(partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置) 开窗函数和聚合函数区别&#xff1a; 聚合函数会对一组值进行计算并返回一个值&#xff0c;常见的比如sum()&#xff0c;count()&#xff0c;ma…

Python入门学习13(面向对象)

一、类的定义和使用 类的使用语法&#xff1a; 创建类对象的语法&#xff1a; ​​​​​​​ class Student:name None #学生的名字age None #学生的年龄def say_hi(self):print(f"Hi大家好&#xff0c;我是{self.name}")stu Student() stu.name &q…

FFMPEG视频压缩与Python使用方法

一、简介 FFMPEG 是一个完整的&#xff0c;跨平台的解决方案&#xff0c;记录&#xff0c;转换和流音频和视频。 官网&#xff1a;https://ffmpeg.org/ 二、安装 1、Linux&#xff1a; sudo apt install ffmpeg 2、Mac: brew install ffmpeg 3、Windows: 下载文件&#…

基于googlenet网络的动物种类识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................. % 获取输入层的尺寸 Inp…

Pytorch Advanced(一) Generative Adversarial Networks

生成对抗神经网络GAN&#xff0c;发挥神经网络的想象力&#xff0c;可以说是十分厉害了 参考 1、AI作家 2、将模糊图变清晰(去雨&#xff0c;去雾&#xff0c;去抖动&#xff0c;去马赛克等)&#xff0c;这需要AI具有“想象力”&#xff0c;能脑补情节&#xff1b; 3、进行数…

centos 下 Makefile 独立模块编译ko

1、安装编译内核环境包 编译需要用到kernel 源码&#xff0c;centos 下需先安装 kernel-devel 包&#xff0c;要下与自己kernel 对应版本 yum install kernel-devel 2、首先从内核或自己写的模块&#xff0c;发到编译环境中 注&#xff1a;就像我自己拷贝一个 bcache 驱动的目…

从零开始在树莓派上搭建WordPress博客网站并实现公网访问

文章目录 序幕概述1. 安装 PHP2. 安装MySQL数据库3. 安装 Wordpress4. 设置您的 WordPress 数据库设置 MySQL/MariaDB创建 WordPress 数据库 5. WordPress configuration6. 将WordPress站点发布到公网安装相对URL插件修改config.php配置 7. 支持好友链接样式8. 定制主题 序幕 …

时序预测 | MATLAB实现LSSVM最小二乘支持向量机时间序列预测未来

时序预测 | MATLAB实现LSSVM最小二乘支持向量机时间序列预测未来 目录 时序预测 | MATLAB实现LSSVM最小二乘支持向量机时间序列预测未来预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现LSSVM时间序列预测未来(最小二乘支持向量机)&#xff1b; 2.运行环境Mat…

LabVIEW更改Tab所选标签的颜色

LabVIEW更改Tab所选标签的颜色 在开发过程中&#xff0c;有时会出现要将不同tab页设置不同颜色的情况。此VI允许编程方式更改前面板选项卡控件上选项卡的颜色。它是突出显示所选选项卡的理想选择 在某些应用程序中&#xff0c;用户希望在按下时突出显示选项卡控件。此VI使用事…

借助ChatGPT使用Pandas实现Excel数据汇总

一、问题的提出 现在有如下一个Excel表&#xff1a; 上述Excel表中8万多条数据&#xff0c;记录的都是三年以来花菜类的销量&#xff0c;现在要求按月汇总实现统计每个月花菜类的销量总和&#xff0c;如果使用Python的话要给出代码。 二、问题的解决 1.首先可以用透视表的方…

idea配置git(gitee)并提交(commit)推送(push)

Intellij Idea VCS | 版本控制 - 知乎 IDEA项目上传到gitee仓库_idea上传代码到gitee_robin19712的博客-CSDN博客 git程序下载国内镜像地址&#xff1a; https://registry.npmmirror.com/binary.html?pathgit-for-windows/v2.42.0.windows.2/ 解压后放到固定路径&#xff1a…

ADW300物联网电表支持MODBUSTCP协议、MQTT协议-安科瑞黄安南

摘要 随着通信技术的应用越来越广泛&#xff0c;具有通信功能的电子产品越来越多&#xff0c;同时也随着Wi-Fi无线覆盖网络区域的形成&#xff0c;如何利用无线网络覆盖广、带宽高、低使用费率的优势组建物联网系统&#xff0c;变成了一个很实际的问题。 安科瑞也紧跟趋势推出…