【Nacos】集群搭建过程

【Nacos】集群搭建过程

集群建议奇数节点(3/5),Raft 协议需要多数派;所有节点版本必须完全一致;生产环境必须使用外部 MySQL,不要用内置 Derby 数据库。

【一】环境准备

JDK:JDK8 或 JDK17

MySQL:5.6.5+ / 8.0,所有 Nacos 节点共用同一套 MySQL

3 台服务器示例 IP:

node1:192.168.1.101

node2:192.168.1.102

node3:192.168.1.103

开放防火墙端口(全部节点)Nacos

端口 作用
8848 http 客户端端口
9848 gRPC 客户端端口(2.x 必须)
9849 节点间 gRPC 同步端口
7848 Raft 集群通信端口

下载 nacos 安装包,三台机器全部解压

bash 复制代码
tar -zxvf nacos-server-2.3.2.tar.gz -C /usr/local/
cd /usr/local/nacos

【二】mysql数据库初始化

创建数据库 nacos_config

sql 复制代码
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

执行 nacos 自带初始化脚本 conf/mysql-schema.sql

bash 复制代码
mysql -uroot -p nacos_config < /usr/local/nacos/conf/mysql-schema.sql

【三】修改配置文件(三台节点全部要改,配置完全一样)

【1】application.properties

conf/application.properties,修改数据库部分,注释掉 derby 相关配置

bash 复制代码
server.port=8848

# 使用mysql,关闭内置derby
spring.sql.init.platform=mysql

# 数据库数量,单套mysql填1
db.num=1
db.url.0=jdbc:mysql://192.168.1.200:3306/nacos_config?characterEncoding=utf8&connectTimeout=3000&socketTimeout=6000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=你的mysql密码

# 开启鉴权(生产建议开启)
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos

【2】cluster.conf(集群节点列表)

复制模板生成集群配置

bash 复制代码
cd conf
cp cluster.conf.example cluster.conf
vim cluster.conf

写入全部集群节点 IP: 端口,三台机器该文件内容完全相同,不能写 127.0.0.1/localhost

bash 复制代码
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848

【3】JVM 参数(可选,生产调优)

conf/nacos-env.sh,根据机器内存调整,测试环境最小 1G

bash 复制代码
export JAVA_OPT="${JAVA_OPT} -Xms1g -Xmx1g -Xmn512m"

【四】启动集群(三台机器分别执行)

必须指定 -m cluster 集群模式启动,默认是单机 standalone 模式

bash 复制代码
cd /usr/local/nacos/bin
sh startup.sh -m cluster

查看启动日志

bash 复制代码
tail -f /usr/local/nacos/logs/start.out
tail -f /usr/local/nacos/logs/nacos.log

【五】验证集群

(1)访问控制台,任意节点地址:http://192.168.1.101:8848/nacos

默认账号密码 nacos/nacos

(2)进入控制台 → 集群管理 → 节点列表,能看到 3 个节点,状态UP代表集群组建成功,会自动选出 Leader、Follower。

(3)测试:在其中一个节点新增配置,刷新另外节点,配置同步,代表集群正常。

如果节点显示 DOWN:检查防火墙端口、cluster.conf 的 IP 是否内网真实 IP、数据库是否连通、版本是否一致。

【六】六、Nginx 负载均衡(生产推荐)

客户端不直接访问单个 nacos 节点,通过 nginx 做负载均衡,gRPC 需要 TCP 转发,不能只做 http 代理Nacos。

bash 复制代码
stream {
    upstream nacos-cluster {
        server 192.168.1.101:8848;
        server 192.168.1.102:8848;
        server 192.168.1.103:8848;
    }
    upstream nacos-grpc {
        server 192.168.1.101:9848;
        server 192.168.1.102:9848;
        server 192.168.1.103:9848;
    }
    server {
        listen 8848;
        proxy_pass nacos-cluster;
    }
    server {
        listen 9848;
        proxy_pass nacos-grpc;
    }
}

客户端连接地址填写 nginx 的 IP:8848 即可。

相关推荐
2501_9160088916 小时前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
2501_916008893 天前
全平台抓包工具,Windows、iPhone、Linux三个平台抓包测试
网络协议·计算机网络·网络安全·ios·adb·https·udp
鸽芷咕6 天前
MySQL Server 鸿蒙 PC 适配全记录:以混合工具链完成 C++23 交叉编译与 HNP 交付
adb·harmonyos·c++23
游戏开发爱好者88 天前
网络连接排查指南,谁在电脑后台偷跑流量,哪些程序在联网
网络协议·计算机网络·网络安全·ios·adb·https·udp
实心儿儿8 天前
MySQL 的安装
数据库·mysql·adb
2601_962300478 天前
基于Python与Tkinter的ADB Monkey自动化测试脚本开发
python·adb·tkinter·android测试·gui自动化
flower_drop10 天前
基于 WebUSB 与 CDP:在浏览器端实现 Android 设备通信与无证书抓包实践
android·chrome·测试工具·adb·bug·edge浏览器
蜡台11 天前
# 已解决|MySQL 8\.4\.11 密码正确仍报错1045 \(28000\) Access denied 终极修复方案
android·mysql·adb
leoZ23111 天前
2026-09-08-mysql-57-init-walkthrough
前端·javascript·数据库·vue.js·opencv·mysql·adb
2501_9159214311 天前
抓包工具对比:Charles、TraceEagle、Wireshark、Fiddler 与 Proxyman
网络协议·计算机网络·网络安全·ios·adb·https·udp