我在三台机器上安装了 3 节点 Cassandra 集群(全部运行 Ubuntu 20.4)。
我可以通过 systemctl start cassandra 或通过 cassandra -f 命令启动。
但我注意到,如果我通过 systemctl start cassandra 启动,即使 systemctl status cassandra 显示服务处于活动状态并正在运行:
root@:~# systemctl status cassandra
root@csidclppa0056:~# systemctl status cassandra
cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Sun 2021-08-22 01:05:08 PDT; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 1423026 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS)
Tasks: 3 (limit: 154174)
Memory: 5.1G
CGroup: /system.slice/cassandra.service
└─1423129 java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -X>
但是,没有任何进程在侦听端口 7000、9042 或 7199。
因此,nodetool 状态失败,并显示以下错误消息:
nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.
cqlsh 也会失败,因为没有进程在监听端口 9042。
相反,如果我通过 cassandra -f 命令启动,所有三个端口都会被相关的 Cassandra 进程监听。因此命令 nodetool status 和 cqlsh 都按预期工作。
我在这里错过了什么吗?为什么 systemctl start cassandra 不能按预期工作?