Nacos 新版本为什么要开放 9848 端口?
背景
Nacos 从 2.0 版本开始引入了 gRPC 协议作为客户端与服务器之间的通信方式,而 9848 端口是 gRPC 协议的默认端口。因此,新版本的 Nacos 需要开放 9848 端口以支持 gRPC 通信。
本文将详细解释 Nacos 新版本开放 9848 端口的原因、作用以及如何配置。
1. 为什么需要 gRPC?
Nacos 2.0 引入 gRPC 的主要目的是为了提升性能和扩展性:
-
性能优化:gRPC 基于 HTTP/2 协议,支持多路复用、二进制传输等特性,相比 HTTP/1.1 具有更高的传输效率和更低的延迟。
-
双向通信:gRPC 支持双向流式通信,适合 Nacos 的配置动态更新和服务发现场景。
-
扩展性:gRPC 提供了更好的扩展性,支持多种编程语言,方便 Nacos 客户端和服务器的跨语言集成。
2. 为什么是 9848 端口?
-
默认端口:Nacos 2.0 将 9848 端口作为 gRPC 通信的默认端口。
-
端口分离:
-
8848 端口:用于 HTTP 协议,兼容旧版本的 Nacos 客户端。
-
9848 端口:用于 gRPC 协议,支持新版本的 Nacos 客户端。
-
-
安全性:通过端口分离,可以更好地管理不同协议的流量,便于防火墙和安全组规则的配置。
3. 新版本 Nacos 的端口说明
端口 | 协议 | 用途 |
---|---|---|
8848 | HTTP | 兼容旧版本客户端,提供 RESTful API。 |
9848 | gRPC | 支持新版本客户端,提供高性能通信。 |
7848 | gRPC | 用于 Nacos 集群节点间的通信。 |
4. 如何开放 9848 端口
如果你的 Nacos 服务器运行在云服务器或本地环境中,需要确保 9848 端口对客户端开放。
4.1 云服务器(如阿里云、腾讯云等)
4.2 本地服务器
-
-
登录云服务器控制台。
-
找到安全组配置,添加入站规则:
-
协议:TCP
-
端口范围:9848
-
源 IP:允许访问的客户端 IP 地址(或
0.0.0.0/0
允许所有 IP)。
-
-
使用以下命令开放 9848 端口:
bash
复制
sudo ufw allow 9848
-
如果使用
iptables
,可以添加以下规则:bash
复制
sudo iptables -A INPUT -p tcp --dport 9848 -j ACCEPT sudo service iptables save
-
-
5. 如何禁用 gRPC(可选)
如果你不希望使用 gRPC,可以强制 Nacos 客户端使用 HTTP 协议。在客户端配置中添加以下参数:
yaml
复制
spring:cloud:nacos:config:server-addr: 127.0.0.1:8848protocol: HTTP # 强制使用 HTTP 协议discovery:server-addr: 127.0.0.1:8848protocol: HTTP # 强制使用 HTTP 协议
6. 注意事项
-
-
兼容性:Nacos 2.0 仍然支持 HTTP 协议(8848 端口),因此旧版本客户端可以继续使用。
-
性能权衡:如果禁用 gRPC,可能会影响配置动态更新和服务发现的性能。
-
安全性:开放 9848 端口时,确保仅允许受信任的客户端访问。
-