在 CentOS7 上使用 docker 搭建 nacos 集群

本文详细介绍如何使用Docker部署Nacos集群,包括准备Nacos、MySQL和Nginx镜像,配置网络、启动服务及使用docker-compose进行集群编排。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 准备镜像

既然是部署 Nacos 集群,那么必须准备 Nacos 镜像
Nacos 默认内置一个 Derby 数据库,在集群模式中需要统一数据源,所以这边还需要一个 mysql 镜像
集群部署完毕之后,我们可以通过 ip:port 的方式访问集群中每一台机器。但是集群作为一个整体,更好地方式是通过 NGINX 做一个负载均衡,然后把访问均匀的打到不同的机器上。所以本文中还引入了一个 NGINX 镜像

  1. Nacos 镜像:https://hub.docker.com/r/nacos/nacos-server
  2. MySQL 镜像 https://hub.docker.com/_/mysql/tags?page=1&ordering=-last_updated
  3. Nginx 镜像:https://hub.docker.com/_/nginx
docker pull nginx
docker pull nacos/nacos-server
docker pull mysql:5.7.5

macOS 用户需要注意

需要注意的是,如果你的机器是 apple silicon m1 (pro/max) 的芯片,请使用支持 arm 架构的 nacos,我这边用的是 chenfengwei/nacos。如果使用 nacos:latest 则无法启动集群模式,nginx 我用的 homebrew 安装的,没用 docker 启动 NGINX。

docker pull chenfengwei/nacos:v1

配置 docker network

首先需要保证 Nacos 集群中各台主机能够互联互通,因为Nacos 集群中每台主机需要与其他主机通信。且不能通过 ip:port 的方式配置 cluster.conf 文件,除非能够保证集群中每台机器的 ip 地址不变。
为了实现容器内网络互通,并且给每台机器配置一个 hostname 的功能,需要使用到 docker network create 指令创建一个 bridge 类型的网络配置。

docker network create nacos

在这里插入图片描述
后续启动 nacos 服务时,都需要加上一个参数:--network nacos

Docker 命令行启动集群服务

启动 MySQL 服务

首先启动一台 MySQL 服务,由于 docker 容器在停止之后,存储到容器之中的数据不容易迁移,并且在删除镜像后还会丢失数据。此处选择将 mysql 的数据存储地址通过 -v 参数挂载到本机上。

通过 docker volume 来管理容器与宿主机之间的数据挂载,首先创建一个 docker volume

docker volume create nacos_persistence_mysql

同时也要保证 Nacos 集群中的机器能够访问 Nacos,所以在启动 MySQL 服务时也需要加上参数 --network nacos

docker run -d -p 13306:3306 \ 
--network nacos \
-v nacos_persistence_mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=11111111 \
--name nacos_db mysql:5.7.5
  1. --network nacos 使用前面创建的network nacos 。
  2. -v nacos_persistence_mysql:/var/lib/mysql 将 MySQL 容器内的数据挂载到刚刚创建的虚拟卷 。nacos_persistence_mysql 中。
  3. -e MYSQL_ROOT_PASSWORD=11111111 设置 root 用户的密码。
  4. --name nacos_db 设置容器名称,该名称也会作为在 network nacos 中的主机名 (hostname)。

启动 Nacos 集群

为了启动集群,首先要创建 cluster.conf,并通过 -v 参数挂载到容器内部的 conf 目录下。cluster.conf中的 ip 不能使用具体的 ip 地址,而是要使用容器的 hostname,既 docker run 命令中的 --name 参数值。
这里配置的内容为:
/etc/docker/containers_conf/nacos/cluster.conf内容如下:

nacos1:8848
nacos2:8848
nacos3:8848

根据配置文件中的内容,后面启动的三个Nacos 镜像的

在Linux环境中,使用Docker Compose搭建Nacos集群通常涉及以下几个步骤: 1. **环境准备**: - 安装DockerDocker Compose:确保你的系统已经安装了这两个工具,如果没有,可以分别通过包管理器如`apt-get`(Debian/Ubuntu)、`yum`(CentOS/RHEL)或Homebrew(macOS)安装。 2. **创建Docker Compose文件**: 创建一个名为`docker-compose.yml`的文件,内容如下: ```yaml version: '3' services: nacos-1: image: nacos/nacos-server:latest ports: - "8848:8848" - "8081:8081" volumes: - ./data/nacos-server-1:/data - ./conf/nacos-server-1.conf:/etc/nacos/server.properties nacos-server-2: image: nacos/nacos-server:latest ports: - "8849:8848" - "8082:8081" volumes: - ./data/nacos-server-2:/data - ./conf/nacos-server-2.conf:/etc/nacos/server.properties nacos-server-3: image: nacos/nacos-server:latest ports: - "8850:8848" - "8083:8081" volumes: - ./data/nacos-server-3:/data - ./conf/nacos-server-3.conf:/etc/nacos/server.properties ``` 这里假设你有一个配置文件夹`./conf`,包含每个节点的配置文件。 3. **启动集群**: - 打开终端,在`docker-compose.yml`所在的目录运行命令: ``` docker-compose up -d ``` `-d`表示后台运行(detached mode)。 4. **配置集群**: - Nacos提供了Zookeeper模式来实现高可用性和一致性。在`server.properties`文件中,添加以下配置: ```properties discovery.type=zookeeper discovery.zookeeper.address=nacos-server-1:8848,nacos-server-2:8848,nacos-server-3:8848 ``` 5. **验证集群**: - 可以分别访问每个服务的URL(默认http://localhost:8081),检查是否能正常工作,并确认它们在ZooKeeper上作为集群成员注册。 6. **注意事项**: - 如果需要设置更复杂的网络策略或者数据卷共享,可以根据需要调整Compose文件。 -
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值