docker搭建nacos集群

这篇具有很好参考价值的文章主要介绍了docker搭建nacos集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nacos 集群的工作原理
Nacos 集群中 Leader 节点是如何产生的?
Nacos 集群采用 Raft 算法实现。它是一种比较简单的选举算法,用于选举出 Nacos 集群中最重要的 Leader(领导)节点。

在 Nacos 集群中,每个节点都拥有以下三种角色中的一种。

Leader:领导者,集群中最重要的角色,用于向其他节点下达指令。

Candidate:参选者,参与竞选 Leader 的节点。

Follower:跟随者,用于接收来自 Leader 或者 Candidate 的请求并进行处理。

在集群中选举出 Leader 是最重要的工作,产生选举的时机有三个:

在 Nacos 节点启动后,还没有产生Leader时选举;

集群成员总量变更时重新选举;

当 Leader 停止服务后重新选举;

在开始介绍选举过程前,先理解任期(Term)的含义:
Raft 算法将时间划分成为任意不同长度的任期(Term)。任期用连续的数字进行表示。每一个任期的开始都是一次选举(Election),一个或多个候选人会试图成为 Leader。

为了便于理解,我们使用文字+表格的形式说明选举过程。

当最开始的时候,所有 Nacos 节点都没有启动。角色默认为 Follower(跟随者),任期都是 0。

当第一个节点(192...131)启动后,节点角色会变为 Candidate(参选者),131 节点在每一个任期开始时便会尝试向其他节点发出投票请求,征求自己能否成为 Leader(领导者)节点。只有算上自己获得超过半数的选票,这个 Candidate 才能转正为 Leader。在当前案例,因为 131 发起选举投票,但 132/133 两个节点不在线,尽管 131 会投自己一票,但在总 3 票中未过半数,因此无法成为 Leader。因为第一次选举没有产生 Leader,过段时间在下一个任期开始时,131 任期自增加 1,同时会再次向其他节点发起投票请求争取其他节点同意,直到同意票过半。

Nacos 集群的工作原理

在 Raft 算法中,成为 Leader 的必要条件是某个 Candidate 获得过半选票,如果 132 节点上线,遇到 131 再次发起投票。132 投票给 131 节点,131 获得两票超过半数就会成为 Leader,132 节点自动成为 Follower(跟随者)。之后 133 节点上线,因为集群中已有 Leader,因此自动成为 Follower。

Nacos 集群的工作原理

当 Leader 节点宕机或停止服务,会在剩余 2 个 Nacos 节点中产生新的 Leader。如下所示133获得两票成为 Leader,132 成为 Follower,131已经下线但角色暂时仍为 Leader。

Nacos 集群的工作原理

之后 131 恢复上线,但此时 Nacos 集群已有 Leader 存在,131 自动变为 Follower,且任期归0。

对于 Nacos 集群来说,只要 UP 状态节点不少于"1+N/2",集群就能正常运行。但少于“1+N/2”,集群仍然可以提供基本服务,但已无法保证 Nacos 各节点数据一致性。

以上就是 Nacos 基于 Raft 算法的 Leader 选举过程,确定 Leader 是维持 Nacos 集群数据一致的最重要前提,下面咱们来讲解在微服务注册时 Nacos 集群节点信息同步的过程。

Nacos 节点间的数据同步过程

Nacos 节点间的数据同步过程

在 Raft 算法中,只有 Leader 才拥有数据处理与信息分发的权利。因此当微服务启动时,假如注册中心指定为 Follower 节点,则步骤如下:

第一步,Follower 会自动将注册心跳包转给 Leader 节点;

第二步,Leader 节点完成实质的注册登记工作;

第三步,完成注册后向其他 Follower 节点发起“同步注册日志”的指令;

第四步,所有可用的 Follower 在收到指令后进行“ack应答”,通知 Leader 消息已收到;

第五步,当 Leader 接收过半数 Follower 节点的 “ack 应答”后,返回给微服务“注册成功”的响应信息。

此外,对于其他无效的 Follower 节点,Leader 仍会不断重新发送,直到所有 Follower 的状态与 Leader 保持同步。

前提是必须已经安装了Mysql

docker进行镜像拉取

docker pull nacos/nacos-server:版本号

单机搭建nacos

下载好nacos配置好后复制三份分别是nacos-8847,nacos-8848,nacos-8849

修改application.properties中配置文件的端口号分别是8847,8848,8849

依次启动 3个Nacos(做三个启动脚本修改脚本文件中内容)

脚本示例(脚本在Linux系统中运行不能加注释会报错):

docker run -d \
#  hostname
-e PREFER_HOST_MODE=nacos \
# 单例/集群模式
-e MODE=cluster \
# nacos cluster地址
-e NACOS_SERVERS="47.100...:8847 47.100...:8848 47.100...:8849" \
# 开启mysql
-e SPRING_DATASOURCE_PLATFORM=mysql \
# mysql主节点host
-e MYSQL_SERVICE_HOST=127.0.0.1 \
# mysql主节点端口
-e MYSQL_SERVICE_PORT=3306 \
# 数据库用户名
-e MYSQL_SERVICE_USER=root \
# 数据库密码
-e MYSQL_SERVICE_PASSWORD=xxx \
-e MYSQL_SERVICE_DB_NAME=xxx(nacos_config) \
# 自定义nacos服务器IP
-e NACOS_SERVER_IP=47.100... \
# 指定映射端口 8848容器多映射9848 9849 端口
-p 8848:8848 \
-p 9848:9848 \
# 容器名
--name nacos-8848 \
# 挂载
-v /usr/local/docker/nacosCluster/nacos-8848/config/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:v2.0.4

新建多个修改的部分

-p 8847:8847 \
-p 9847:9847 \
# 容器名
--name nacos-8847 \
# 挂载
-v /usr/local/docker/nacosCluster/nacos-8847/config/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:v2.0.4

9949的修改同理
赋权 给三个脚本文件赋权

chmod -R 777 xxx.sh

nacos启动成功通过各自的地址进行访问

http://服务器IP:8847/nacos
http://服务器IP:8848/nacos
http://服务器IP:8849/nacos

docker nacos集群,docker,java,容器

多机搭建nacos集群

修改脚本文件中的

# nacos cluster地址
-e NACOS_SERVERS="机器1ip:8848 机器2ip:8848 机器3ip:8848" \

多机配置文件(application.properties)中的数据库使用同一个数据库文章来源地址https://www.toymoban.com/news/detail-515951.html

docker run -d --name nacos-8848 -p 8848:8848 -p 9848:9848 -p 9849:9849 --hostname nacos3 \
--add-host nacos1:43.142.90.78 \
--add-host nacos2:139.196.162.45 \
--add-host nacos3:192.168.56.10 \
-e PREFER_HOST_MODE=hostname \
-e MYSQL_SERVICE_HOST=43.142.90.78 \
-e MYSQL_SERVICE_DB_NAME=nacos-config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=lst0710. \
-e MYSQL_SERVICE_PORT=3306 \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848 " \
-v /usr/local/docker/nacos/config/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:v2.0.4

到了这里,关于docker搭建nacos集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Nacos】基于k8s容器化部署Nacos集群

    近期,在机器上部署了三个节点的nacos集群服务用于几个小型微服务的注册配置中心,并使用了Nginx简单代理了一下,随即简单研究了下集群部署分布式部署稍微提高可用性。部署完后能够正常使用,但是发现一个问题,刷新Nacos集群节点列表,总会有一个或者两个节点时不时

    2024年02月11日
    浏览(40)
  • 使用镜像搭建nacos集群

    1 先安装docker 2 进去/etc/docker目录修改deamon.json 文件 如果有deamon.json文件则直接添加,没有的话创建一个 在文件中添加如下内容退出保存 3 启动docker 并拉去镜像 1 建立一个存储nocas中数据的数据库 并运行以下脚本 在要启动nacos 的机器上运行以下命令 这里的数据库地址是测试

    2024年02月15日
    浏览(36)
  • 搭建nacos集群

    前提必须先安装docker https://blog.csdn.net/sha1024/article/details/126137299?spm=1001.2014.3001.5502 下载 国内镜像源 新建文件夹和目录 新建compose.yml编排文件 启动compose.ym文件 测试一下连接 初始化一下脚本 编写docker-compose.yml文件 master节点 node节点1 查看各自编排好的容器 docker-compose命令格式

    2023年04月22日
    浏览(20)
  • 【SpringCloud Alibaba -- Nacos】Linux 搭建 Nacos 集群

    centos安装docker https://docs.docker.com/engine/install/centos/ MySql8 mysql数据库配置 数据库脚本 nacos/conf/nacos-mysql.sql Nacos2 application.properties 修改为mysql cluster.conf 配置你三台nacos的地址 修改startup.sh ( nacos1版本同一台机器修改启动脚本,nacos2应该不用了 ) 复制俩份nacos,修改其对应的port N

    2024年02月05日
    浏览(52)
  • Linux 上安装部署Nacos、Docker 创建Nacos容器

    Nacos是一个开源的分布式服务发现和配置管理平台,它可以帮助开发人员实现微服务架构中的服务注册、发现和动态配置管理。 步骤1:准备工作 在开始安装Nacos之前,确保您已经具备以下条件: Linux环境 :您可以选择使用Ubuntu、CentOS或其他基于Linux的发行版。 Java环境 :Na

    2024年02月03日
    浏览(40)
  • Nacos docker实现nacos高可用集群项目

    目录 Nacos是什么? Nacos在公司里的运用是什么? 使用docker构建nacos容器高可用集群 实验规划图:​编辑 1、拉取nacos镜像 2、创建docker网桥(实现集群内的机器的互联互通(所有的nacos和mysql)) 3、创建Mysql容器,并初始化数据库nacos_config数据库(不用添加注释,我是为了方便

    2024年02月09日
    浏览(29)
  • SpringCloud-Nacos集群搭建

    本文详细介绍了如何在SpringCloud环境中搭建Nacos集群,为读者提供了一份清晰而详尽的指南。通过逐步演示每个关键步骤,包括安装、配置以及Nginx的负载均衡设置,读者能够轻松理解并操作整个搭建过程。  Nacos(Naming and Configuration Service)是一个用于服务发现、动态配置管理

    2024年02月20日
    浏览(29)
  • linux环境搭建nacos集群详解

    官网集群部署:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 集群架构如下: 搭建集群首先要具备 JDK环境 ,其次需要, 1个Nginx+3个nacos注册中心+1个mysql ,集群按正常来说应该要具备三台服务器,我这里设备有限,就在一台机器上来搭建集群了!Nginx主要用他作为负载均衡。如

    2024年02月09日
    浏览(31)
  • Nacos2.2.1 集群搭建

    Nacos默认端口是8848,2.0版本后另外还占用9848,9849两个端口,这两个是gRPC端口,用于服务端与客户端通讯,所以在单机上配置集群节点,节点要配置的端口不能连续,否则在启动时报端口占用的错误。 端口 与主端口(8848)偏移量 作用 9848 1000 客户端gRPC请求服务端口,用户客

    2024年02月12日
    浏览(26)
  • Docker之nacos集群部署

    Nacos 是一个开源的注册中心和配置中心,用于实现微服务架构中的服务发现、服务治理和动态配置管理。在 Docker 中使用 Nacos,你可以通过拉取官方提供的 Docker 镜像并运行容器的方式来快速部署  镜像拉取命令详解: 当前命令为创建Nacos容器(没有Nacos镜像会自动拉取Nacos镜

    2024年01月20日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包