Nacos 集群部署 (源码包二进制2.2.0版本)
一、环境准备
1. 系统要求
-
3台或以上 Linux 服务器(CentOS 7+/Ubuntu 18.04+)
-
JDK 1.8+
-
MySQL 5.7+(推荐 8.0)
-
Nginx
2. 下载源码包
# 在三台服务器上都执行
cd /opt
wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz
tar -zxvf nacos-server-2.2.0.tar.gz
mv nacos /usr/local/
二、数据库配置
1. 创建数据库(在其中一台服务器执行)
-- 登录 MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE nacos_config;
-- 执行 Nacos 提供的 SQL 脚本
-- 从下载的源码包中获取
-- /usr/local/nacos/conf/mysql-schema.sql
source /usr/local/nacos/conf/mysql-schema.sql;
-- 创建用户并授权(推荐)
CREATE USER 'nacos'@'%' IDENTIFIED BY 'Nacos@123456';
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
FLUSH PRIVILEGES;
三、Nacos 集群配置
1. 配置 application.properties(所有节点)
vim /usr/local/nacos/conf/application.properties
# 数据源配置(所有节点相同)
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://数据库IP:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=Nacos@123456
# 集群配置
server.port=8848
nacos.inetutils.ip-address=当前节点IP # 重要:每台服务器改为自己的IP
2. 配置集群节点(所有节点)
vi /usr/local/nacos/conf/cluster.conf
# 所有节点的 IP:PORT(三台服务器内容相同)
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
3. 配置启动脚本(可选,调整内存)
vim /usr/local/nacos/bin/startup.sh
# 找到 JVM 配置,根据服务器内存调整
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"
四、启动 Nacos 集群
1. 以集群模式启动
# 三台服务器都执行
cd /usr/local/nacos/bin
sh startup.sh -m cluster
# 检查启动状态
tail -f /usr/local/nacos/logs/start.out
# 查看日志
tail -f /usr/local/nacos/logs/nacos.log
2. 验证集群状态
# 查看进程
ps-ef | grep nacos
# 检查端口
netstat -ntlp | grep8848
# 访问每个节点查看状态
curl http://192.168.1.101:8848/nacos/v1/ns/raft/state
curl http://192.168.1.102:8848/nacos/v1/ns/raft/state
curl http://192.168.1.103:8848/nacos/v1/ns/raft/state
五、Nginx 代理配置
1. 安装 Nginx(在单独服务器或其中一个节点)
# CentOS
(或者自行找本公众号源码包安装nginx)
yum install -y nginx
# Ubuntu
apt-get install -y nginx
2. 配置 Nginx
vi /etc/nginx/nginx.conf
http {
upstream nacos-cluster {
# 配置所有 Nacos 节点
server 192.168.1.101:8848;
server 192.168.1.102:8848;
server 192.168.1.103:8848;
}
server {
listen 80;
server_name nacos.example.com; # 改为你的域名或IP
# Nacos 代理
location /nacos {
proxy_pass http://nacos-cluster/nacos;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
# 支持 WebSocket(Nacos 2.0+)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 健康检查
location /nacos/health {
proxy_pass http://nacos-cluster/nacos/health;
}
}
}
4. 启动并配置 Nginx
# 检查配置文件
nginx -t
# 启动/重启 Nginx
systemctl start nginx
systemctl restart nginx
systemctl enable nginx
# 防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
六、验证部署
1. 访问 Nacos 控制台
http://Nginx服务器IP/nacos
默认账号:nacos
默认密码:nacos
2. 检查集群状态
# 通过 API 检查
curl http://Nginx服务器IP/nacos/v1/core/cluster/nodes
# 查看集群 leader
curl http://Nginx服务器IP/nacos/v1/ns/raft/leader
3. 服务注册测试
# 使用 API 注册服务
curl-X POST 'http://Nginx服务器IP/nacos/v1/ns/instance' \
-d'serviceName=test-service&ip=192.168.1.100&port=8080'
# 查询服务
curl-X GET 'http://Nginx服务器IP/nacos/v1/ns/instance/list?serviceName=test-service'
七、优化配置
1. Nacos 优化配置
# /usr/local/nacos/conf/application.properties
# JVM 调优
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
# 数据存储优化
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.syncRetryDelay=5000
# 日志配置
nacos.logging.default.config.enabled=false
2. 创建 systemd 服务(可选)
vi /etc/systemd/system/nacos.service
[Unit]
Description=Nacos Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m cluster
ExecStop=/usr/local/nacos/bin/shutdown.sh
Restart=on-failure
User=nobody
Group=nobody
[Install]
WantedBy=multi-user.target
3. 启动服务
systemctl daemon-reload
systemctl start nacos
systemctl enable nacos

夜雨聆风
