提供两种主流的部署方式:标准集群模式和使用 Nginx 进行负载均衡的模式。
下图清晰地展示了推荐的 Nginx 负载均衡模式集群架构:

部署前提
- 环境:准备 3 台或以上 Linux 服务器(或虚拟机)。不建议在单机上部署伪集群,除非仅为测试。
- 软件:
-
- JDK 1.8+。
- Nacos 服务器包(从 官网 下载)。
- MySQL 数据库(5.6.5+,推荐 5.7 或 8.0)。
- 网络:确保服务器间网络互通,并开放所需端口(如 8848, 7848, 9848, 9849 等)。
方式一:标准集群模式(直连模式)
这种模式下,客户端需要配置所有集群节点的地址。
步骤 1:初始化数据库
- 创建一个名为
nacos的数据库(字符集utf8mb4)。 - 找到 Nacos 解压目录下的
conf/nacos-mysql.sql文件。 - 在 MySQL 中执行这个 SQL 文件,初始化表结构。
mysql -u root -p nacos < /opt/nacos/conf/nacos-mysql.sql
步骤 2:配置数据库连接
修改每个 Nacos 节点的 conf/application.properties 文件,开启数据库连接。
# 启用数据库存储
spring.datasource.platform=mysql
# 配置数据库连接数量(根据压力调整)
db.num=1
db.url.0=jdbc:mysql://your-mysql-host:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=your_username
db.password.0=your_strong_password
将 your-mysql-host, your_username, your_strong_password 替换为你的实际数据库信息。
步骤 3:配置集群节点列表
修改每个 Nacos 节点的 conf/cluster.conf 文件。
- 如果文件不存在,复制
cluster.conf.example并重命名为cluster.conf。 - 在文件中列出集群中所有节点的 IP:PORT。
# 示例:假设有三台服务器,主机名分别为 node1, node2, node3
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
重要:
- 不能使用
127.0.0.1或localhost,必须使用主机名或能被其他节点访问的 IP 地址。 - 端口号必须写。
步骤 4:启动集群
在每一台服务器上,分别启动 Nacos。
# 进入Nacos的bin目录
cd /opt/nacos/bin
# 以集群模式启动
sh startup.sh -m cluster
# 或者直接(默认就是集群模式,但脚本会检查cluster.conf)
./startup.sh
步骤 5:验证集群
- 分别访问每个节点的 Web 控制台:
http://node1:8848/nacos,http://node2:8848/nacos,http://node3:8848/nacos。 - 在任意节点的 【集群管理】->【节点列表】 中,应该能看到所有三个节点,并且它们的健康状态为绿色(UP)。
- 可以注册一个配置或服务,然后在其他节点上查看是否同步,以验证数据一致性。
客户端配置
应用程序的 application.yml 需要配置所有集群节点的地址。
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
缺点:客户端需要维护所有节点的地址列表,增减节点时需要修改所有客户端的配置。
方式二:配合 Nginx 进行负载均衡(推荐生产使用)
这种方式通过一个统一的入口访问集群,对客户端透明,是生产环境的最佳实践。架构如上图所示。
步骤 1-3
与方式一的步骤完全相同:初始化DB、配置每个Nacos节点的application.properties和cluster.conf,并启动集群。
步骤 4:安装和配置 Nginx
- 在一台独立的服务器上安装 Nginx(也可以部署在某一台 Nacos 服务器上)。
- 修改 Nginx 的配置文件
nginx.conf(通常在/usr/local/nginx/conf/或/etc/nginx/下)。
# 在http块内添加一个upstream,指向nacos集群的所有节点
http {
upstream nacos-cluster {
# 下面配置三台nacos集群的地址
server 192.168.1.101:8848;
server 192.168.1.102:8848;
server 192.168.1.103:8848;
# 可以配置负载均衡策略,如weight、ip_hash等
# ip_hash; # 如果需要会话保持,可以开启
}
server {
listen 80;
# 你的域名,如果没有就用IP
server_name nacos.yourcompany.com;
location / {
proxy_pass http://nacos-cluster;
# 以下是一些常用代理设置
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;
}
}
}
- 检查配置并重新加载 Nginx。
nginx -t # 检查配置文件语法
nginx -s reload # 重新加载配置
步骤 5:通过 Nginx 访问和验证
- 访问 Nginx 代理的地址:
http://nacos.yourcompany.com/nacos(或http://nginx-server-ip/nacos)。 - 客户端配置只需指向 Nginx。
spring:
cloud:
nacos:
discovery:
server-addr: nacos.yourcompany.com:80 # 只需配置Nginx的地址和端口
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
优点:
- 对客户端透明:客户端无需感知后端有多少个 Nacos 节点。
- 高可用:即使某个 Nacos 节点宕机,Nginx 会自动将流量路由到健康的节点。
- 易于扩展:增减 Nacos 节点只需修改 Nginx 配置,客户端无需改动。
重要提醒
- 防火墙:确保开放相关端口。Nacos 2.0 开始,节点间通信除了
7848(用于Jraft选举),还新增了9848(用于GRPC通信)和9849(用于GRPC通信)。客户端到服务器的8848也必须开放。 - 版本一致性:确保集群内所有 Nacos 节点版本一致。
- 生产环境务必使用 MySQL:切勿使用内置的 Derby 数据库。
- 监控:做好 Nacos 集群和 MySQL 数据库的监控。
对于生产环境,强烈推荐采用【方式二:Nginx 负载均衡模式】。
1万+

被折叠的 条评论
为什么被折叠?



