一、nacos的简介
Nacos(命名源自 Naming and Configuration Service)是一个由阿里巴巴开源的、更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
核心功能:
服务发现与服务健康检查 (Naming)
动态配置管理 (Configuration)
动态 DNS 服务
核心功能详解
1. 服务发现与服务治理 (Service Discovery & Governance)
服务注册:微服务启动时,会将自己的元数据(如服务名、IP、端口)注册到 Nacos 服务器。
服务发现:消费者服务可以通过服务名从 Nacos 查询到提供者服务的健康实例列表,从而实现服务间的调用,无需关心服务的具体部署位置。
健康检查:Nacos 会定期对注册的服务实例进行健康检查(心跳机制),自动将不健康的实例从列表中剔除,保证服务调用的高可用性。
权重与路由:支持为服务实例配置权重,实现灰度发布和流量控制。
2. 动态配置管理 (Dynamic Configuration Management)
集中式配置:将应用程序的配置信息(如数据库连接、开关标志、参数设置)集中存储在 Nacos 中。
动态刷新:应用程序在运行时可以监听配置变化。当您在 Nacos 控制台上修改配置并发布后,所有相关的应用实例无需重启即可自动获取到最新的配置,极大地提高了运维效率。
多环境与多版本:支持通过
Data ID
、Group
、Namespace
等概念轻松管理不同环境(如开发、测试、生产)、不同集群的配置。配置回滚:记录所有配置的更改历史,可以方便地进行版本对比和一键回滚。
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中,记得先创建数据库。
到这里就是成功了。