ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Docker部署Nacos服务注册与配置中心实战

Docker部署Nacos服务注册与配置中心实战

1. 项目概述

Nacos作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,已经成为云原生架构中不可或缺的基础组件。本文将详细介绍如何在Docker环境中部署Nacos服务注册与配置中心,并结合MySQL实现数据持久化。

2. 环境准备

2.1 基础环境要求

  • Docker 20.10.0+
  • Docker Compose 1.29.0+
  • MySQL 5.7+/8.0
  • 至少2GB可用内存

2.2 网络配置建议

确保Docker主机可以访问外网以下载镜像,同时建议为容器创建专用网络:

docker network create nacos_network

3. MySQL容器部署

3.1 启动MySQL容器

docker run -d \ --name nacos-mysql \ --network nacos_network \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=nacos \ -e MYSQL_DATABASE=nacos \ -e MYSQL_USER=nacos \ -e MYSQL_PASSWORD=nacos \ -v /data/mysql:/var/lib/mysql \ mysql:8.0

3.2 初始化Nacos数据库

从Nacos GitHub仓库获取初始化SQL脚本:

wget https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql docker exec -i nacos-mysql mysql -uroot -pnacos nacos < mysql-schema.sql

4. Nacos服务部署

4.1 单机模式部署

docker run -d \ --name nacos-standalone \ --network nacos_network \ -p 8848:8848 \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=nacos-mysql \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=nacos \ -e MYSQL_SERVICE_PASSWORD=nacos \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e NACOS_AUTH_ENABLE=true \ nacos/nacos-server:2.2.3

4.2 集群模式部署

创建docker-compose.yml文件:

version: '3' services: nacos1: image: nacos/nacos-server:2.2.3 container_name: nacos1 ports: - "8848:8848" - "9848:9848" environment: - MODE=cluster - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=nacos-mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_USER=nacos - MYSQL_SERVICE_PASSWORD=nacos - MYSQL_SERVICE_DB_NAME=nacos - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848 - NACOS_AUTH_ENABLE=true networks: - nacos_network nacos2: image: nacos/nacos-server:2.2.3 container_name: nacos2 ports: - "8849:8848" - "9849:9848" environment: - MODE=cluster - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=nacos-mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_USER=nacos - MYSQL_SERVICE_PASSWORD=nacos - MYSQL_SERVICE_DB_NAME=nacos - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848 - NACOS_AUTH_ENABLE=true networks: - nacos_network nacos3: image: nacos/nacos-server:2.2.3 container_name: nacos3 ports: - "8850:8848" - "9850:9848" environment: - MODE=cluster - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=nacos-mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_USER=nacos - MYSQL_SERVICE_PASSWORD=nacos - MYSQL_SERVICE_DB_NAME=nacos - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848 - NACOS_AUTH_ENABLE=true networks: - nacos_network networks: nacos_network: external: true

5. 安全配置

5.1 认证配置

在application.properties中配置:

nacos.core.auth.enabled=true nacos.core.auth.system.type=nacos nacos.core.auth.plugin.nacos.token.secret.key=YourSecretKeyHere

5.2 用户管理

通过API或控制台添加用户:

curl -X POST 'http://localhost:8848/nacos/v1/auth/users?username=admin&password=admin'

6. 服务注册与发现

6.1 Spring Boot应用配置

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.namespace=dev spring.cloud.nacos.discovery.group=DEFAULT_GROUP

6.2 配置中心使用

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=dev spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.config.file-extension=yaml

7. 运维管理

7.1 健康检查

curl http://localhost:8848/nacos/v1/ns/operator/health

7.2 监控指标

Nacos暴露的Prometheus指标端点:

http://localhost:8848/nacos/actuator/prometheus

8. 常见问题解决

8.1 数据库连接问题

错误现象:No DataSource set解决方案:

  1. 检查MySQL服务是否正常运行
  2. 验证数据库连接参数是否正确
  3. 确认nacos数据库已初始化

8.2 认证失败问题

错误现象:user not found解决方案:

  1. 确认NACOS_AUTH_ENABLE=true
  2. 检查用户名密码是否正确
  3. 验证token.secret.key配置是否一致

8.3 集群节点通信问题

错误现象:Fail to connect node解决方案:

  1. 检查各节点NACOS_SERVERS配置
  2. 验证网络连通性
  3. 检查9848/9849端口是否开放

9. 性能优化建议

9.1 JVM参数调整

JAVA_OPT="${JAVA_OPT} -Xms2g -Xmx2g -Xmn1g" JAVA_OPT="${JAVA_OPT} -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

9.2 MySQL优化

  1. 为config_info表添加合适索引
  2. 调整InnoDB缓冲池大小
  3. 定期清理历史版本数据

10. 版本升级策略

10.1 1.x到2.x升级

  1. 备份数据库
  2. 逐步替换节点
  3. 验证服务兼容性

10.2 补丁版本升级

docker pull nacos/nacos-server:2.2.3 docker-compose down docker-compose up -d

通过以上步骤,您可以快速搭建一个高可用的Nacos服务注册与配置中心。实际部署时请根据业务需求调整资源配置和安全策略。

返回列表