nacos的部署

发布于:2025-09-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、nacos的简介

Nacos(命名源自 Naming and Configuration Service)是一个由阿里巴巴开源的、更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

核心功能:

  • 服务发现与服务健康检查 (Naming)

  • 动态配置管理 (Configuration)

  • 动态 DNS 服务

核心功能详解

1. 服务发现与服务治理 (Service Discovery & Governance)

  • 服务注册:微服务启动时,会将自己的元数据(如服务名、IP、端口)注册到 Nacos 服务器。

  • 服务发现:消费者服务可以通过服务名从 Nacos 查询到提供者服务的健康实例列表,从而实现服务间的调用,无需关心服务的具体部署位置。

  • 健康检查:Nacos 会定期对注册的服务实例进行健康检查(心跳机制),自动将不健康的实例从列表中剔除,保证服务调用的高可用性。

  • 权重与路由:支持为服务实例配置权重,实现灰度发布和流量控制。

2. 动态配置管理 (Dynamic Configuration Management)

  • 集中式配置:将应用程序的配置信息(如数据库连接、开关标志、参数设置)集中存储在 Nacos 中。

  • 动态刷新:应用程序在运行时可以监听配置变化。当您在 Nacos 控制台上修改配置并发布后,所有相关的应用实例无需重启即可自动获取到最新的配置,极大地提高了运维效率。

  • 多环境与多版本:支持通过 Data IDGroupNamespace 等概念轻松管理不同环境(如开发、测试、生产)、不同集群的配置。

  • 配置回滚:记录所有配置的更改历史,可以方便地进行版本对比和一键回滚。

3. 动态 DNS 服务

  • 支持加权路由,让您更容易地实现中间层负载均衡、灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。

二、nacos的安装部署

部署文件docker-compose.yml

[root@hyy-1 nacos]# cat docker-compose.yml
version: "3"
services:
  nacos:
    hostname: nacos
    container_name: nacos
    image: harbor.weipos.com/nacos/nacos-server:v2.1.0        # 这个大家找镜像源地址
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
      - ./mysql-connector-java-8.0.33.jar:/home/nacos/extensions/mysql/mysql-connector-java-8.0.33.jar
    ports:
      - "7848:7848"
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    environment:
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
    restart: always

.env文件,单机模式

[root@hyy-1 nacos]# cat .env
PREFER_HOST_MODE=hostname
MODE=standalone
NACOS_SERVERS=自己的ip:8848
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=自己的ip
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=hyy123
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true

启动nacos

docker run \
--name nacos \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.1.150 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=hyy123 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8848:8848 \
-p 9848:9848 \
-d nacos/nacos-server:v2.1.0

编辑nacos的配置文件:

server.servlet.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql
db.num=1
#数据库地址
db.url.0=jdbc:mysql://192.168.1.150:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
#数据库账号密码
db.user.0=root
db.password.0=hyy123    #数据库密码
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
management.endpoints.web.exposure.include=*
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.istio.mcp.server.enabled=false

检查一下:

[root@hyy-1 nacos]# docker ps -a | grep nacos
7f96cec97a8d   nacos/nacos-server:v2.1.0                                "bin/docker-startup.…"   6 hours ago    Up 6 hours                      0.0.0.0:8848->8848/tcp, :::8848->8848/tcp, 0.0.0.0:9848->9848/tcp, :::9848->9848/tcp                                                                                                                                                                                nacos

将他自己携带的数据库文件导入到MySQL中,记得先创建数据库。

到这里就是成功了。