使用 Docker Compose 部署 Nacos 集群

Nacos 是一个开源的动态服务发现、配置管理和服务管理平台,广泛用于微服务架构中。对于大型系统,集群部署能够提高系统的可用性和可靠性。本文将详细介绍如何使用 Docker Compose 部署 Nacos 集群。

环境准备

要开始使用 Docker Compose 部署 Nacos,您需要确保以下环境准备完毕:

  • 安装 Docker
  • 安装 Docker Compose

您可以通过以下命令检查 Docker 和 Docker Compose 是否安装成功:

docker --version
docker-compose --version

设计 Nacos 集群

在本示例中,我们将构建一个包含 3 个 Nacos 节点的集群。我们将通过 Docker Compose 创建一个 docker-compose.yml 文件来定义这个集群的服务。

flowchart TD
    A[用户请求] --> B[Docker Compose]
    B --> C[Nacos 服务 1]
    B --> D[Nacos 服务 2]
    B --> E[Nacos 服务 3]

如上图所示,用户请求将通过 Docker Compose 同时处理多个 Nacos 服务实例。

编写 Docker Compose 文件

创建一个名为 docker-compose.yml 的文件,内容如下:

version: '3.8'
services:
  nacos-server:
    image: nacos/nacos-server:latest
    container_name: nacos-server
    ports:
      - "8848:8848"
    environment:
      - MODE=cluster
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=password
      - MYSQL_SERVICE_DB=nacos_config
    depends_on:
      - mysql
    networks:
      - nacos-network
  
  mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: nacos_config
    networks:
      - nacos-network

networks:
  nacos-network:
    driver: bridge

配置文件详解

  1. 版本:使用 Docker Compose 的 3.8 版本。
  2. 服务
    • nacos-server:Nacos 服务器,运行在 Docker 容器中,映射端口 8848。
    • mysql:MySQL 数据库,作为数据源。
  3. 环境变量
    • MODE=cluster:指定 Nacos 在集群模式下运行。
    • 数据库连接配置可以在这里进行设置。
  4. 依赖配置nacos-server 依赖于 mysql 服务。
  5. 网络:定义了一个名为 nacos-network 的桥接网络,以确保服务间的连通性。

启动 Nacos 集群

docker-compose.yml 文件所在的目录下,执行以下命令启动 Nacos 集群:

docker-compose up -d

该命令将会在后台启动 Nacos 服务和 MySQL 数据库。您可以通过以下命令查看运行状态:

docker-compose ps

访问 Nacos 控制台

Nacos 启动成功后,您可以在浏览器中访问 Nacos 控制台:

http://localhost:8848/nacos

默认的登录用户名和密码都是 nacos

集群扩展

如果您想要增加 Nacos 节点数量,只需在 docker-compose.yml 文件中增加 nacos-server 的副本,示例如下:

nacos-server-2:
  image: nacos/nacos-server:latest
  container_name: nacos-server-2
  ports:
    - "8849:8848"
  environment:
    - MODE=cluster
    - SPRING_DATASOURCE_PLATFORM=mysql
    ...
  networks:
    - nacos-network

nacos-server-3:
  image: nacos/nacos-server:latest
  container_name: nacos-server-3
  ports:
    - "8850:8848"
  environment:
    - MODE=cluster
    - SPRING_DATASOURCE_PLATFORM=mysql
    ...
  networks:
    - nacos-network

这样,您可以通过不同的端口访问不同的 Nacos 实例。

总结

本文介绍了如何使用 Docker Compose 部署 Nacos 集群,涵盖了环境准备、配置文件编写、集群启动以及扩展。通过这种方式,您能够快速构建一个高可用且易于扩展的 Nacos 服务环境。希望这能帮助您在微服务架构中更好地管理服务和配置。