欢迎光临
我们一直在努力

手把手教你用Docker Compose部署Nacos集群(达梦数据库版)

在微服务架构中,注册中心和配置中心是核心基础设施,而Nacos作为阿里开源的一站式解决方案,兼具两者功能,稳定性和易用性拉满。对于生产环境,单节点Nacos存在单点故障风险,集群部署是必选项。

本文将基于「三台服务器 + Dcoker + Nacos + DM8」的服务器环境,带大家一步步用Docker Compose部署高可用Nacos集群,每一步都附具体命令和配置,新手也能轻松上手! 在这里插入图片描述

一、环境准备与规划

1. 服务器基础信息(示例配置)

提前规划好三台服务器的角色和端口,避免端口冲突,以下为示例配置,可根据实际环境调整:

服务器IP节点角色
192.168.1.101 Nacos节点1
192.168.1.102 Nacos节点2
192.168.1.103 Nacos节点3

2. 前置检查与依赖配置

确保三台服务器均满足以下条件,避免部署中途踩坑:

(1)Docker与Docker Compose验证

执行以下命令,确认Docker(20.10+版本)和Docker Compose(v2+版本)已安装且正常运行:

docker -v
docker compose version

若版本过低或未安装,建议先升级或安装,避免兼容性问题。

(2)达梦(DM8)数据库配置

Nacos集群需依赖DM8存储配置数据(内置Derby仅适用于单节点),需确保DM8可被三台服务器访问,并完成以下操作:

  • 登录达梦数据库,创建NACOS专用数据库和用户

  • 下载并导入Nacos初始化SQL脚本(适配Nacos 2.x版本)

  • (3)端口开放配置
    端口描述
    8848 主端口,客户端、控制台及OpenAPI所使用的HTTP端口
    9848 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
    9849 服务端gRPC请求服务端端口,用于服务间同步等
    7848 Jraft请求服务端端口,用于处理服务端间的Raft相关请求

    Nacos集群需要开放以下端口,确保节点间通信正常,以CentOS防火墙为例(Ubuntu可调整为ufw命令):

    firewall-cmd –add-port=8848/tcp –permanent
    firewall-cmd –add-port=9848/tcp –permanent
    firewall-cmd –add-port=9849/tcp –permanent
    firewall-cmd –add-port=8849/tcp –permanent
    firewall-cmd –add-port=7848/tcp –permanent
    firewall-cmd –reload # 刷新防火墙规则

    使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。

    3. 准备好Nacos达梦数据库驱动

    1.参考Nacos插件说明:Nacos插件

    2.也可以直接使用本文提供的插件,支持Nacos2.X版本,文末有下载方式

    二、编写Docker Compose配置文件

    以下操作需在三台服务器上分别执行,核心差异仅为「本机IP」配置,其余参数保持一致。

    1. 创建Nacos目录结构

    创建挂载目录,用于持久化Nacos配置、日志和数据,避免容器重启后数据丢失:

    # 创建基础目录
    mkdir -p /opt/nacos/{conf,logs,data,plugins}

    # 设置目录权限(避免容器权限不足)
    chmod -R 777 /opt/nacos/*

    2. 编写application.properties文件

    进入/opt/nacos/conf目录,创建application.properties文件,以下以192.168.1.101节点为例,其他节点保持一致。

    spring.sql.init.platform=dm
    spring.datasource.platform=dm
    db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
    db.num=1
    db.url.0=jdbc:dm://达梦数据库IP:端口/NACOS?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    db.user=NACOS
    db.password=test12345

    # 开启鉴权
    nacos.core.auth.enabled=true
    nacos.core.auth.server.identity.key=serverIdentity
    nacos.core.auth.server.identity.value=security
    nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

    3. 编写docker-compose.yml文件

    进入/opt/nacos目录,创建docker-compose.yml文件,以下以192.168.1.101节点为例,其他节点仅需修改标注部分。

    services:
    nacos:
    image: nacos/nacosserver:v2.3.2slim # 推荐稳定版本,可按需升级
    container_name: nacoscluster101
    ports:
    "8848:8848"
    "9848:9848"
    "9849:9849"
    "7848:7848"
    environment:
    MODE: cluster # 启动模式:集群模式(单节点为standalone)
    NACOS_SERVER_IP: 192.168.1.101
    # JVM参数配置(根据服务器内存调整,避免内存溢出)
    JVM_XMS: 512m # 初始堆内存
    JVM_XMX: 512m # 最大堆内存
    JVM_XMN: 256m # 年轻代内存
    DB_POOL_CONFIG_DRIVERCLASSNAME: dm.jdbc.driver.DmDriver # 指定使用达梦数据库驱动
    NACOS_SERVERS: 192.168.1.101:8848 192.168.1.102:8848 192.168.1.103:8848 # 集群所有节点IP
    volumes:
    # 加载达梦数据库驱动
    ./plugins/nacosdmdatasourcepluginext1.0.0SNAPSHOT.jar:/home/nacos/plugins/nacosdmdatasourcepluginext1.0.0SNAPSHOT.jar
    ./conf/application.properties:/home/nacos/conf/application.properties
    ./logs:/home/nacos/logs
    ./data:/home/nacos/data
    privileged: true
    restart: always

    其他节点修改说明
    • 192.168.1.102节点:修改container_name为nacos-cluster-102,NACOS_SERVER_IP改为192.168.1.102

    • 192.168.1.103节点:修改container_name为nacos-cluster-103,NACOS_SERVER_IP改为192.168.1.103

    • NACOS_SERVERS参数保持不变,必须包含三台节点的IP和端口。

    三、启动Nacos集群

    配置文件编写完成后,在三台服务器上分别执行启动命令,逐步拉起集群节点。

    1. 启动容器

    # 进入Nacos目录
    cd /opt/nacos

    # 后台启动容器(-d参数表示后台运行)
    docker compose up -d

    # 查看容器状态,确认是否启动成功
    docker compose ps

    若输出结果中nacos容器的状态为「Up」,说明容器启动成功;若为「Exited」,需查看日志排查问题。

    2. 查看启动日志

    通过日志确认Nacos是否正常启动,以及集群节点是否成功加入:

    # 实时查看Nacos启动日志
    docker compose logs -f nacos

    # 或查看挂载的日志文件(更清晰)
    tail -f /opt/nacos/logs/start.out

    启动成功标识:日志中出现「Nacos started successfully in cluster mode.」,且无报错信息,说明节点启动正常并加入集群。 在这里插入图片描述

    四、集群功能验证

    启动完成后,需从「节点状态」「配置同步」「故障转移」三个维度验证集群可用性,确保满足生产环境需求。

    1. 节点状态验证

    在浏览器中访问任意节点的Web控制台,地址:http://<服务器IP>:8848/nacos,默认用户名/密码:nacos/nacos。

    登录后,点击左侧菜单栏【集群管理】→【节点列表】,若能看到三台节点均为「UP」状态,说明集群搭建成功。 在这里插入图片描述

    2. 配置同步验证

    集群的核心功能是配置同步,需验证跨节点配置一致性:

  • 在192.168.1.101节点控制台,点击【配置管理】→【配置列表】,点击「+」添加配置:

    • Data ID:test-nacos.yml

    • Group:DEFAULT_GROUP

    • 配置内容:test: nacos-cluster-demo

  • 分别访问192.168.1.102和192.168.1.103节点的控制台,查看配置列表,若能看到刚才添加的配置,说明配置同步正常。

  • 3. 故障转移验证

    模拟节点故障,验证集群容错能力:

  • 在192.168.1.101节点停止Nacos容器:
  • cd /opt/nacos
    docker compose stop nacos

  • 访问192.168.1.102节点控制台,查看节点列表,101节点状态变为「DOWN」,剩余两台节点仍为「UP」,且可正常读写配置。

  • 重启192.168.1.101节点的Nacos容器,一段时间后查看节点列表,101节点重新变为「UP」,说明集群自动恢复。

  • 五、生产环境优化与避坑指南

    1. 必做优化项(生产环境必备)

    • 修改默认密码:登录控制台后,在【权限管理】→【用户管理】中修改nacos用户密码,避免弱密码泄露风险。

    • 开启鉴权:在/opt/nacos/conf/application.properties中添加「nacos.core.auth.enabled=true」,强制开启身份验证,防止未授权访问。

    • 调整JVM参数:根据服务器内存配置JVM参数,建议服务器内存≥2G,JVM_XMS和JVM_XMX设置为1G,避免内存不足导致服务卡顿。

    • 日志滚动配置:修改/opt/nacos/conf/nacos-logback.xml,配置日志滚动策略(按大小/时间分割),避免日志文件占满磁盘。

    2. 常见问题排查

    (1)达梦数据库连接失败

    排查方向:① 达梦数据库是否开启远程访问;② 账号密码是否正确;③ 防火墙是否放行5236端口;④ 达梦数据库服务是否正常运行;⑤Nacos达梦驱动是否匹配,(NACOS v2.2.1 一直没有测试成功,故升级为2.3.2)

    (2)集群节点状态为DOWN

    排查方向:① 节点间网络是否互通(ping + telnet 8848/9848端口);② NACOS_SERVERS参数是否写错(IP/端口是否正确);③ 防火墙是否未开放集群通信端口。

    (3)启动内存不足

    解决方案:调整docker-compose.yml中的JVM_XMS/JVM_XMX参数,降低内存占用,或升级服务器内存。

    六、总结

    本文基于Docker Compose实现了Nacos集群的快速部署,核心要点的是:

  • 三台节点需统一配置NACOS_SERVERS参数,确保包含所有节点IP,同时正确设置本机NACOS_SERVER_IP;

  • 依赖达梦8存储配置数据,务必提前完成数据库初始化和权限配置;

  • 部署后需从节点状态、配置同步、故障转移三个维度验证集群可用性,避免生产环境踩坑。

  • 按照本文步骤操作,即可快速搭建高可用Nacos集群,为微服务架构提供稳定的注册中心和配置中心支持。如果部署过程中遇到问题,欢迎在评论区留言交流!

    赞(0)
    未经允许不得转载:171主机测评 » 手把手教你用Docker Compose部署Nacos集群(达梦数据库版)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址