7000 是什么
7000 有两个身份:在 Apache Cassandra 中它是节点间通信端口,承载 gossip 协议与数据传输,启用节点间加密后改用 7001;在注册表中它同时登记给 AFS3 文件服务。日常遇到的多是前者,因为 Cassandra 集群部署后默认就使用 7000。
为什么它决定集群成败
排查 Cassandra 集群最基本的一步就是验证 7000 是否互通。客户端连接走 9042(CQL 原生协议),如果网络策略只放行 9042,会出现「客户端能连上单节点、集群却始终组不起来」这种看起来矛盾的现象。
基本信息
| 服务 | Cassandra 节点间通信 / AFS3 文件服务 |
|---|---|
| 协议 | TCP,默认 7000,加密用 7001 |
| 客户端端口 | 9042(CQL 原生协议) |
| 用途 | 分布式数据库节点间同步 |
| 安全等级 | 仅集群内网 |
典型使用场景
- 新节点加入集群时验证能否与现有节点建立通信
- 排查「节点无法加入集群」:第一步确认 7000 是否互通
- 启用节点间加密后确认通信端口由 7000 切换到 7001
- 集群扩容前统一网络策略,避免部分节点不可达
- 资产核查时确认 7000 是否只对集群内网开放
连通与状态检查
连通与状态检查
nodetool status # 查看节点状态与负载分布
ss -lntp | grep -E '7000|9042' # 确认监听端口
nc -zv db2 7000 # 验证节点间连通性节点间加密相关配置
节点间加密相关配置
# cassandra.yaml
# internode_encryption: all # 开启后节点间通信改走 7001
# server_encryption_options:
# internode: all
# keystore: /etc/cassandra/keystore
# truststore: /etc/cassandra/truststore端口分工
| 端口 | 用途 | 说明 |
|---|---|---|
| 7000 | 节点间通信 | gossip 与数据传输 |
| 7001 | 节点间加密通信 | 启用加密后使用 |
| 9042 | 客户端接入 | CQL 原生协议 |
| 7199 | JMX 管理 | 端口随发行版配置而不同 |
网络策略只放行客户端端口是常见疏忽:集群内部通信被拦时,各节点会互相视为不可用,nodetool 显示出的状态组合不合常理,这时要把节点间与管理端口一起核对。
故障为什么是渐进的
这个端口同时承载集群状态传播与数据复制,因此中断后的表现往往不是立刻报错,而是状态逐步异常:先出现部分节点互相看不到,随后写入开始降级。观察指标变化的时间线,有助于把网络问题与应用自身的故障区分开。
运维建议:把节点状态与端口连通性一起纳入日常巡检,扩容或改网络策略后立刻做一次全节点互通验证,能在问题扩大前发现单点链路异常。