前置准备

# 安装基础工具
yum install -y wget vim net-tools

# 确认 Java 环境(Nacos 2.x 和 ZK 都需要 JDK)
java -version

# 如果没有 JDK,先安装
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

一、搭建 ZooKeeper

1. 下载解压

cd /opt

# 下载(3.8.x 稳定版)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

# 解压
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin zookeeper

2. 创建配置文件

cd /opt/zookeeper

# 创建数据目录
mkdir -p /opt/zookeeper/data
mkdir -p /opt/zookeeper/logs

# 创建配置
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
# 基本配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
clientPort=2181

# 日志清理
autopurge.snapRetainCount=3
autopurge.purgeInterval=1

# 最大连接数
maxClientCnxns=200

# 单机模式不需要配置 server.x
# 集群模式示例:
# server.1=192.168.1.101:2888:3888
# server.2=192.168.1.102:2888:3888
# server.3=192.168.1.103:2888:3888

3. 配置环境变量(可选)

vim /etc/profile.d/zookeeper.sh
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile.d/zookeeper.sh

4. 启动 ZooKeeper

# 启动
/opt/zookeeper/bin/zkServer.sh start

# 查看状态
/opt/zookeeper/bin/zkServer.sh status

# 停止
/opt/zookeeper/bin/zkServer.sh stop

输出示例:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

5. 验证

# 连接测试
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

# 进入客户端后执行
ls /
quit
# 或者快速测试
echo ruok | nc 127.0.0.1 2181
# 返回 imok 表示正常

6. 设置开机自启

vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper
After=network.target

[Service]
Type=forking
User=root
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/bin/zkServer.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable zookeeper
systemctl start zookeeper
systemctl status zookeeper

二、搭建 Nacos

1. 下载解压

cd /opt

# 下载 Nacos 2.x
wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.tar.gz

# 解压
tar -zxvf nacos-server-2.3.2.tar.gz

2. 单机模式配置

vim /opt/nacos/conf/application.properties

关键配置确认:

# 端口
server.port=8848

# 单机模式(不需要 MySQL)
# spring.sql.init.platform 默认为空就是单机模式,用内嵌数据库

# 如果要用外部 MySQL(生产建议)
# spring.datasource.platform=mysql
# db.num=1
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# db.user=root
# db.password=your_password

3. 启动 Nacos

# 单机模式启动(必须加 -m standalone)
/opt/nacos/bin/startup.sh -m standalone

# 查看日志
tail -f /opt/nacos/logs/start.out

# 停止
/opt/nacos/bin/shutdown.sh

输出示例:

nacos is starting with standalone
nacos is started,check logs/nacos.log

4. 验证

# 访问控制台
curl http://127.0.0.1:8848/nacos/

# 或者浏览器访问
# http://你的IP:8848/nacos
# 默认账号密码:nacos / nacos

5. 设置开机自启

vim /etc/systemd/system/nacos.service
[Unit]
Description=Alibaba Nacos
After=network.target

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

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable nacos
systemctl start nacos
systemctl status nacos

三、开放防火墙端口

# ZooKeeper 端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent   # ZK 集群通信
firewall-cmd --zone=public --add-port=3888/tcp --permanent   # ZK 选举

# Nacos 端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent   # 主端口
firewall-cmd --zone=public --add-port=9848/tcp --permanent   # gRPC 端口(Nacos 2.x 必须开)
firewall-cmd --zone=public --add-port=9849/tcp --permanent   # gRPC 端口

# 重载防火墙
firewall-cmd --reload

# 确认
firewall-cmd --list-ports

Nacos 2.x 特别注意: 必须开放 9848 和 9849 端口,否则客户端连不上。


四、验证 Dubbo 注册

先把配置发布到 Nacos

浏览器打开 http://8.137.164.253:8848/nacos

配置管理 → 配置列表 → 新建配置

Data ID:    xj-nongjiao-portal
Group:      DEFAULT_GROUP
格式:       YAML
内容:       粘贴你的 dubbo 配置

确认 ZK 中有 Dubbo 服务注册

/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

# 查看 Dubbo 注册的服务
ls /dubbo
ls /dubbo/com.trading.xxx/providers

五、目录结构总览

/opt/
├── zookeeper/
│   ├── bin/
│   │   ├── zkServer.sh      # 服务管理脚本
│   │   └── zkCli.sh          # 客户端工具
│   ├── conf/
│   │   └── zoo.cfg            # 主配置文件
│   ├── data/                  # 数据目录
│   └── logs/                  # 日志目录
│
├── nacos/
│   ├── bin/
│   │   ├── startup.sh         # 启动脚本
│   │   └── shutdown.sh        # 停止脚本
│   ├── conf/
│   │   └── application.properties
│   └── logs/

六、常用运维命令速查

# ===== ZooKeeper =====
zkServer.sh start              # 启动
zkServer.sh stop               # 停止
zkServer.sh status             # 查看状态(leader/follower/standalone)
zkServer.sh restart            # 重启
zkCli.sh -server 127.0.0.1:2181   # 连接客户端

# ===== Nacos =====
startup.sh -m standalone       # 单机启动
shutdown.sh                    # 停止
tail -f /opt/nacos/logs/nacos.log  # 查看运行日志

# ===== 通用 =====
systemctl status zookeeper
systemctl status nacos
netstat -tlnp | grep 2181
netstat -tlnp | grep 8848

七、生产环境建议

建议项 说明
ZK 用集群模式 3 或 5 个节点,奇数个
Nacos 用集群模式 3 节点 + 外部 MySQL
Nacos 修改默认密码 首次登录后立即改 nacos 密码
内存配置 ZK 默认够用,Nacos 建议调 /opt/nacos/bin/startup.sh 中的 JVM 参数
日志定期清理 ZK 开了 autopurge,Nacos 需要手动或定时清理