CentOS 7 部署 Nacos

  • A+

Nacos 是阿里巴巴推出的一款动态服务发现、配置管理和服务管理平台,致力于解决微服务架构中的服务发现、配置管理、服务治理等核心问题。其名称来源于 "Dynamic Naming and Configuration Service" 的缩写,具有开源、轻量、高可用等特点,广泛应用于 Spring Cloud、Dubbo 等微服务生态。

Nacos 的核心功能

  1. 服务发现与注册
    • 支持基于 DNS 和 RPC 的服务发现,适配 Spring Cloud、Dubbo 等主流微服务框架。
    • 服务提供者可自动将服务信息注册到 Nacos 服务器,消费者通过 Nacos 获取服务地址列表,实现动态负载均衡。
    • 提供健康检查机制,自动剔除不可用服务,保障服务调用的可靠性。
  2. 配置管理
    • 集中管理多环境、多应用的配置信息(如数据库连接、接口地址等),支持动态更新配置,无需重启服务即可生效。
    • 支持配置的版本控制、灰度发布(部分服务先更新配置)、配置回滚等功能,降低配置变更风险。
    • 提供配置监听机制,服务可实时感知配置变化并作出响应(如刷新缓存)。
  3. 服务治理
    • 支持服务元数据管理(如服务描述、标签),便于服务分类和筛选。
    • 提供服务流量控制、熔断降级等能力(需结合 Sentinel 等组件),保障系统稳定性。
    • 可视化控制台:通过 Web 界面直观管理服务、配置、集群等信息,简化运维操作。

Nacos 的架构设计

Nacos 架构分为服务端客户端两部分:

  • 服务端
    • 采用集群部署保证高可用,支持主从复制和数据一致性(基于 Raft 协议)。
    • 存储层分为内存存储(临时配置、服务实例,支持动态更新)和持久化存储(默认使用 MySQL,存储持久化配置、历史版本等)。
  • 客户端
    • 集成到微服务应用中,通过 SDK 与服务端通信,实现服务注册、配置拉取等功能。
    • 本地缓存配置信息,减少与服务端的交互,提升性能。

Nacos 与同类工具的对比

工具优势劣势
Nacos一站式解决服务发现 + 配置管理,生态兼容好功能较新,部分场景成熟度待验证
Eureka轻量、易用,适合 Spring Cloud 生态仅支持服务发现,无配置管理功能
Consul支持服务发现、配置管理、分布式锁配置管理功能较弱,部署较复杂
Apollo配置管理功能强大,支持细粒度权限控制仅专注配置管理,需配合其他工具做服务发现

Nacos 的典型应用场景

  1. 微服务注册中心:替代 Eureka、Consul,作为 Spring Cloud/Dubbo 服务的注册中心,实现服务自动发现。
  2. 动态配置中心:集中管理多环境配置(如开发、测试、生产),支持配置热更新,避免重复部署。
  3. 灰度发布支持:通过配置分组或标签,实现部分服务先更新配置,验证无误后全量发布。
  4. 高可用集群部署:在分布式系统中,通过 Nacos 集群保证服务注册和配置管理的稳定性。

一、依赖软件安装

安装 JDK 8

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version

安装 MySQL 5.7(使用 shell 脚本安装

登录 MySQL ,需修改初始密码并创建 Nacos 数据库

# 登录MySQL(输入初始密码)
mysql -u root -p

# 创建Nacos数据库(编码需为UTF-8)
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

# 授权root用户访问
GRANT ALL PRIVILEGES ON nacos_config.* TO 'root'@'%' IDENTIFIED BY 'xxx.com';
FLUSH PRIVILEGES;

# 退出MySQL
exit

二、下载与安装 Nacos

下载 Nacos 安装包,Nacos 的官方下载地址为:https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.tar.gz,这里使用的是 nacos-server-1.4.3 版本

上传nacos-server-1.4.3.tar.gz

# 解压安装包
tar -zxvf nacos-server-1.4.3.tar.gz -C /usr/local/

配置 MySQL 数据源

导入初始化 SQL

# 进入nacos的conf目录
cd /usr/local/nacos/conf

# 执行初始化SQL(替换密码为实际MySQL密码)
mysql -u root -p nacos_config < nacos-mysql.sql

修改 Nacos 配置文件

vim /usr/local/nacos/conf/application.properties

添加以下内容

# 启用MySQL数据源
spring.datasource.platform=mysql

# 数据库数量
db.num=1

# 数据库连接信息
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=xxx.com

三、启动与验证 Nacos

启动 Nacos 服务

# 进入nacos的bin目录
cd /usr/local/nacos/bin

# 单机模式启动(使用bash命令)
bash startup.sh -m standalone

启动成功后,会显示类似以下日志

nacos is starting with standalone
nacos is starting,you can check the /usr/local/nacos/logs/start.out

验证部署结果

在浏览器输入:http://服务器IP:8848/nacos,使用默认账号密码(nacos/nacos)登录。

CentOS 7 部署 Nacos
CentOS 7 部署 Nacos

查看日志确认状态

# 查看启动日志
tail -f /usr/local/nacos/logs/start.out

# 查看运行日志
tail -f /usr/local/nacos/logs/start.out

四、设置开机自启

创建系统服务文件

cat > /usr/lib/systemd/system/nacos.service << EOF
[Unit]
Description=nacos service
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecStop=/usr/local/nacos/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

生效并设置自启

# 重新加载系统服务
systemctl daemon-reload
# 启动nacos服务
systemctl start nacos
# 设置开机自启
systemctl enable nacos
# 验证服务状态
systemctl status nacos
xxx