Nacos 作为阿里开源的服务发现与配置管理工具,在微服务架构中应用广泛,更是 Dubbo 入门部署的核心依赖(Dubbo 需借助 Nacos 实现服务注册与发现)。本文将详细讲解两种最常用的 Nacos 部署方式——Docker 容器部署(快速便捷,适合测试/生产轻量化部署)和虚拟机部署(稳定可控,适合生产环境定制化配置),搭配 Dubbo 入门验证步骤,步骤清晰、附带避坑指南,新手既能搞定 Nacos 部署,也能快速入门 Dubbo 服务调用。
一、前置准备(必看)
无论哪种部署方式,需提前满足以下基础条件,避免部署过程中出现异常:
- 网络通畅:能正常访问 Docker Hub(Docker 部署)、外网(虚拟机部署需下载依赖);
- 权限充足:Docker 部署需拥有 Docker 操作权限,虚拟机部署需 root 或 sudo 权限;
- 端口空闲:确保 8848、9848、9849 三个端口未被其他服务占用(可通过
netstat -tuln | grep 端口号检查)。
二、Docker 部署 Nacos(v2.3.1 版本)
Docker 部署的优势在于无需配置依赖、一键启动,适合快速搭建测试环境,或生产环境中追求部署效率的场景,本次选用官方稳定版 v2.3.1。
步骤1:拉取 Nacos 官方镜像
打开终端,执行以下命令,从 Docker Hub 拉取 Nacos 2.3.1 版本镜像(镜像体积约 1G 左右,耐心等待拉取完成);若拉取缓慢,可切换阿里云镜像源,解决国内网络卡顿问题:
# 官方镜像拉取命令
docker pull nacos/nacos-server:v2.3.1
# 阿里云镜像拉取命令(拉取更快,推荐国内用户)
docker pull registry.cn-hangzhou.aliyuncs.com/nacos/nacos-server:v2.3.1
# 阿里云镜像拉取后,统一镜像名称(确保后续启动命令正常执行)
docker tag registry.cn-hangzhou.aliyuncs.com/nacos/nacos-server:v2.3.1 nacos/nacos-server:v2.3.1
步骤2:验证镜像拉取成功
拉取完成后,执行以下命令查看本地镜像列表,确认镜像是否存在:
docker images
若输出结果中包含 nacos/nacos-server,且 TAG 为 v2.3.1,则说明镜像拉取成功。
步骤3:启动 Nacos 容器
首先说明 Nacos 核心端口的作用(避免后续端口冲突或访问失败):
- 8848:Nacos 核心服务端口,用于网页端访问、API 调用;
- 9848:客户端 gRPC 请求端口,用于微服务客户端(如 Spring Cloud 项目)向 Nacos 服务端发起连接和请求;
- 9849:服务端 gRPC 通信端口,用于 Nacos 集群模式下,各服务节点之间的同步通信(单机模式也需开放,避免启动异常)。
执行以下命令,启动 Nacos 容器(单机模式,适合测试/小型部署):
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone --restart=always nacos/nacos-server:v2.3.1
命令参数说明(关键参数必看):
-d:后台运行容器;--name nacos:给容器命名为 nacos(方便后续操作,可自定义);-p 端口映射:将容器内的 8848、9848、9849 端口映射到宿主机对应端口;-e MODE=standalone:指定 Nacos 以单机模式启动(集群模式需额外配置,本文暂不讲解);--restart=always:设置容器开机自启,避免宿主机重启后 Nacos 服务中断;nacos/nacos-server:v2.3.1:指定启动的镜像及版本(必须与拉取的版本一致)。
步骤4:验证 Nacos 启动成功
有两种验证方式,任选其一即可:
- 终端验证:执行
docker ps,查看容器状态,若 STATUS 为Up,说明容器启动成功; - 网页验证:打开浏览器,访问
http://localhost:8848/nacos(若部署在远程服务器,将 localhost 替换为服务器 IP),输入默认账号密码nacos/nacos,能成功登录控制台,即说明 Nacos 服务正常启动。
三、虚拟机部署 Nacos(Linux 环境)
虚拟机部署(以 CentOS 7/8 为例)适合生产环境,可灵活配置 JVM 参数、数据存储方式(如 MySQL),稳定性更强。前提是虚拟机已安装 JDK(Nacos 依赖 JDK 8 及以上版本,推荐 JDK 1.8)。
步骤1:前提检查(JDK 验证)
执行以下命令,检查 JDK 是否安装成功:
java -version
若输出 JDK 版本(如 1.8.0_xxx),则无需额外操作;若未安装,可直接执行以下命令快速安装 JDK 1.8(CentOS 环境),自动配置环境变量,无需手动操作:
yum install java-1.8.0-openjdk-devel -y
安装完成后,再次执行 java -version,确认输出 1.8.0_xxx 版本即可。
步骤2:进入 Nacos 安装目录
假设 Nacos 已解压安装到 /usr/local/nacos 目录(若路径不同,替换为自己的安装路径),执行以下命令进入 bin 目录(启动脚本所在目录):
cd /usr/local/nacos/bin/
步骤3:启动 Nacos(单机模式)
执行启动脚本,指定单机模式启动:
./startup.sh -m standalone
启动成功后,终端会提示 “nacos is starting with standalone”,若提示 “No such file or directory”,检查路径是否正确,或给脚本添加执行权限(chmod +x startup.sh)。
步骤4:验证 Nacos 启动状态
执行以下命令,查看 Nacos 进程是否启动(Nacos 是 Java 项目,进程名为 jar):
jps
若输出结果中包含 Nacos 相关进程(如 Bootstrap),说明 Nacos 服务已启动。
步骤5:开放防火墙端口(关键步骤)
虚拟机部署时,若防火墙处于开启状态,会拦截 Nacos 端口,导致外部无法访问,需关闭防火墙或开放对应端口(推荐关闭防火墙,生产环境可配置防火墙规则开放端口),具体命令如下:
# 1. 查看防火墙状态
firewall-cmd --state
# 2. 关闭防火墙(临时关闭,重启虚拟机后失效)
systemctl stop firewalld
# 3. (可选)设置防火墙开机不自启(永久关闭,推荐测试环境)
systemctl disable firewalld
# 4. (生产环境推荐)防火墙保持开启,仅开放 Nacos 所需端口
firewall-cmd --permanent --add-port=8848/tcp --add-port=9848/tcp --add-port=9849/tcp
# 5. 重启防火墙,使端口开放规则生效
firewall-cmd --reload
步骤6:网页验证访问
打开浏览器,访问 http://虚拟机IP:8848/nacos,输入默认账号密码 nacos/nacos,能成功登录控制台,即说明虚拟机部署的 Nacos 服务正常。
四、Dubbo入门验证(Nacos部署后必做)
Nacos 部署完成后,我们通过 Dubbo 官方示例项目dubbo-samples完成 Dubbo 入门验证,确认 Nacos 能正常支撑 Dubbo 服务的注册与发现,快速上手 Dubbo 服务调用流程。
步骤1:拉取 Dubbo 入门示例项目
打开终端,执行以下命令拉取官方示例项目(需提前安装 Git):
git clone https://github.com/apache/dubbo-samples.git
步骤2:启动 Dubbo 服务提供者
进入示例项目的 Spring Boot 提供者目录,执行编译启动命令,将服务注册到 Nacos(适配 Windows、Linux/Mac 双系统,路径可根据自身项目解压位置灵活调整):
# Windows 环境:切换到提供者目录
cd D:\dubbo\dubbo-samples\1-basic\dubbo-samples-spring-boot\dubbo-samples-spring-boot-provider
# Linux/Mac 环境:切换到提供者目录
cd ~/dubbo-samples/1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider
# 编译并启动提供者应用(双系统通用)
mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.springboot.demo.provider.ProviderApplication"
启动成功后,服务会自动注册到 Nacos 控制台,可登录 Nacos(http://localhost:8848/nacos),在“服务管理-服务列表”中看到该 Dubbo 服务。
步骤3:启动 Dubbo 服务消费者
打开新的终端,进入消费者目录,启动消费者应用,调用提供者服务,完成 Dubbo 入门调用验证(双系统路径适配):
# Windows 环境:切换到消费者目录
cd D:\dubbo\dubbo-samples\1-basic\dubbo-samples-spring-boot\dubbo-samples-spring-boot-consumer
# Linux/Mac 环境:切换到消费者目录
cd ~/dubbo-samples/1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-consumer
# 编译并启动消费者应用(双系统通用)
mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.springboot.demo.consumer.ConsumerApplication"
该命令的核心作用:启动 Dubbo 消费者,通过 Nacos 发现已注册的提供者服务,发起远程调用,验证 Dubbo 服务调用链路通畅,同时巩固 Nacos 服务发现功能的实际应用。
步骤4:接口调用验证(可选)
若需直观查看服务调用结果,可打开命令提示符(CMD)或终端,执行以下 curl 命令,直接调用 Dubbo 服务接口:
curl --header "Content-Type: application/json" --data '["Dubbo"]' http://localhost:50052/org.apache.dubbo.springboot.demo.DemoService/sayHello/
调用成功后,将返回响应:"Hello Dubbo",说明 Dubbo 入门验证完成,Nacos 与 Dubbo 整合正常。
Dubbo入门关键说明
- 本次验证基于 Dubbo Spring Boot 版本,简化了配置,适合新手入门;
- 核心逻辑:提供者将服务注册到 Nacos,消费者从 Nacos 获取提供者地址,发起远程调用,这是 Dubbo 微服务的核心流程;
- 若执行 curl 命令提示“不是内部或外部命令”,可安装 curl 工具,或改用 Postman 发起 POST 请求,具体操作步骤:打开 Postman,选择请求方式为 POST,输入请求地址
http://localhost:50052/org.apache.dubbo.springboot.demo.DemoService/sayHello/;在“Headers”栏添加键值对:Content-Type: application/json;在“Body”栏选择“raw”,格式切换为 JSON,输入请求体["Dubbo"],点击发送,即可看到返回响应"Hello Dubbo",完成验证。
五、总结
两种部署方式各有优势:Docker 部署快速便捷,适合快速测试、轻量化场景;虚拟机部署稳定可控,适合生产环境定制化需求。根据自身场景选择即可,部署完成后,可结合 Dubbo 入门示例(拉取 dubbo-samples 项目)验证服务调用,快速上手 Dubbo 微服务开发。
补充说明:生产环境建议配置 MySQL 持久化(修改 Nacos 的 application.properties 文件,配置 MySQL 连接信息),避免 Nacos 重启后配置丢失;后续可进一步学习 Nacos 集群部署,提升服务稳定性,为 Dubbo 进阶学习打下基础。
版本兼容提示:Nacos v2.3.1 兼容 JDK 8-11、Dubbo 2.7.x 及以上版本,建议按此版本搭配部署,避免版本不兼容导致异常。