微服务之Nacos和Zookeeper搭建
前置准备
# 安装基础工具
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 需要手动或定时清理 |
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 秦叶知AI
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地