【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_915921434 小时前
抓包鹰抓取系统 App 的流量,从底层读明文
网络协议·计算机网络·网络安全·adb·https·udp
long3161 天前
04-MySQL 扩展学习资料
数据库·mysql·adb
唐诺2 天前
Android USB ADB 调试方案完全解析
android·adb·usb
__Witheart__2 天前
3568 Android 设置首次烧录后 usb otg 口模式
android·adb·rockchip
淡淡的香烟3 天前
Android常用adb命令
android·adb
2601_965798475 天前
ForumLab Review: Fast PHP Script for SEO Forum Sites
android·adb·php
游戏开发爱好者86 天前
TraceEagle 代理抓包详解,无感代理、去证书绑定与 HTTP/3 解密能力解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
总捣什么乱16 天前
MySQL MySQL是怎么保证主备一致的?
android·mysql·adb
鹿鸣天涯6 天前
应急响应:MySQL日志分析
mysql·安全·adb·oracle