我正在尝试从远程计算机连接到 Cassandra 安装。Cassandra 在默认端口 9160 上运行 Thrift 服务。但我无法连接数据库,并且总是出现连接超时异常。以下是详细信息。
- 尝试连接数据库的应用机器是 CentOS 7 VM
- Cassandra 在 Windows 10 的 9160 端口上运行
我运行了nmap
和netstat
命令来查看端口的状态,这些是我得到的输出
x.y.z.z
- 运行 Cassandra 的机器的 IP
a.b.c.d
- 运行应用程序的机器的 IP
从 abcd 运行 nmap 的输出:
Bash$ nmap -r -p 9160 x.y.z.z
Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-30 04:02 PDT
Nmap scan report for x.y.z.z
Host is up (0.0016s latency).
PORT STATE SERVICE
9160/tcp closed apani1
netstat
当我在 DB 机器上运行时( x.y.z.z
),我看到 DB 应用程序正在监听 9160 端口。
TCP x.y.z.z:63572 stackoverflow:https ESTABLISHED
TCP x.y.z.z:63735 stackoverflow:https ESTABLISHED
TCP x.y.z.z:64856 stackoverflow:https ESTABLISHED
TCP 127.0.0.1:6942 x.y.z.z:0 LISTENING
TCP 127.0.0.1:7000 x.y.z.z:0 LISTENING
TCP 127.0.0.1:9042 x.y.z.z:0 LISTENING
TCP 127.0.0.1:9042 x.y.z.z:55317 ESTABLISHED
TCP 127.0.0.1:9042 x.y.z.z:55329 ESTABLISHED
TCP 127.0.0.1:9160 x.y.z.z:0 LISTENING
TCP 127.0.0.1:50135 x.y.z.z:50136 ESTABLISHED
我在数据库机器中专门为端口 9160 添加了一条入站规则。但这没有帮助,我仍然收到连接超时错误。
我的问题:
- 为什么即使主机已启动并且端口正在监听,但数据库机器仍未连接?
- 为什么
nmap
命令显示端口已关闭?我可以从 cassandra 启动日志中看到,thrift 服务正在监听端口 9160。
答案1
数据库正在监听127.0.0.1:9160。这意味着它当前配置为仅监听环回 IP 地址。换句话说,它仅监听来自同一主机的连接。
文件中需要的参数cassandra.yaml
是rpc_address
。其默认值为 127.0.0.1。要允许应用程序连接到 Cassandra DB,应将该参数的值设置为x.y.z.z
,或者,unset
如果您希望 Cassandra 监听所有 IP 地址映射到数据库服务器主机名的接口,则应将该参数的值设置为 。