无法启动 Cassandra:端口已被使用
Cannot start Cassandra : Port already in use
我有两个 Ubuntu 16.04 节点,我在上面安装了 java 版本“1.8.0_181”的 Cassandra 3.11.3。我想将这两个节点合并到一个 Cassandra 集群中。他们的实习ip是172.16.10.20和172.16.10.30.
在每个 /etc/cassandra/cassandra.yaml 文件上,我修改了以下行:
cluster_name: 'my_cluster'
- seeds: "172.16.10.20,172.16.10.30"
listen_address: XXXX
rpc_address: XXXX
其中XXXX分别为当前节点的intern ip
然后我在每个节点上重新启动 Cassandra
sudo service cassandra restart
并检查 Cassandra 运行s :
sudo service cassandra status
cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Wed 2018-08-08 00:31:42 UTC; 3s ago
Docs: man:systemd-sysv-generator(8)
和集群
nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.16.10.20 190.11 KiB 256 100.0% 84dded4c-c74e-45f4-9481-ff837fec229d rack1
UN 172.16.10.30 265.06 KiB 256 100.0% 4695fef4-70c7-46b2-a0bd-8b752fe5beb6 rack1
一切正常。
我现在想连接到 Cassandra:
cqlsh
并得到:
Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
稍后谷歌搜索,我想手动启动cassandra
cassandra
并得到(在一个巨大的消息中):
ERROR [main] 2018-08-07 23:02:51,365 CassandraDaemon.java:708 - Port already in use: 7199; nested exception is:
java.net.BindException: Address already in use (Bind failed)
7199 端口似乎已被占用。我kill了对应的pid,把/etc/cassandra/cassandra-env.sh中的JMX_PORT改成7200...同样的问题,据说端口正在使用,加上报错
00:33:06,236 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[SYSTEMLOG] - openFile(/var/log/cassandra/system.log,true) call failed. java.io.FileNotFoundException: /var/log/cassandra/system.log (Permission denied)
我已经更改了权限,但错误仍然存在。在这个故事的这一点上,我 运行 没有想法了。我想要实现的目标看起来很简单,所以我想其他人一定 运行 遇到了类似的问题。
nodetool status 输出说明了一切。你拥有一切 运行 就好了。因此,还原端口使用方面的任何更改。
由于您的 nodetool 状态显示您的节点 IP 是 172.16.10.20 和 172.16.10.30,请尝试 运行 cqlsh 并提供其中一个 IP。 cqlsh 默认尝试连接到 127.0.0.1,这在多节点集群中不起作用。
cqlsh 172.16.10.20 -u yourusername -p yourpassword
注意:如果您没有启用身份验证,则可以省略 -u 和 -p。但如果这是真的,那么您真的应该更改您的集群以启用身份验证。
我有两个 Ubuntu 16.04 节点,我在上面安装了 java 版本“1.8.0_181”的 Cassandra 3.11.3。我想将这两个节点合并到一个 Cassandra 集群中。他们的实习ip是172.16.10.20和172.16.10.30.
在每个 /etc/cassandra/cassandra.yaml 文件上,我修改了以下行:
cluster_name: 'my_cluster'
- seeds: "172.16.10.20,172.16.10.30"
listen_address: XXXX
rpc_address: XXXX
其中XXXX分别为当前节点的intern ip
然后我在每个节点上重新启动 Cassandra
sudo service cassandra restart
并检查 Cassandra 运行s :
sudo service cassandra status
cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Wed 2018-08-08 00:31:42 UTC; 3s ago
Docs: man:systemd-sysv-generator(8)
和集群
nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.16.10.20 190.11 KiB 256 100.0% 84dded4c-c74e-45f4-9481-ff837fec229d rack1
UN 172.16.10.30 265.06 KiB 256 100.0% 4695fef4-70c7-46b2-a0bd-8b752fe5beb6 rack1
一切正常。
我现在想连接到 Cassandra:
cqlsh
并得到:
Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
稍后谷歌搜索,我想手动启动cassandra
cassandra
并得到(在一个巨大的消息中):
ERROR [main] 2018-08-07 23:02:51,365 CassandraDaemon.java:708 - Port already in use: 7199; nested exception is:
java.net.BindException: Address already in use (Bind failed)
7199 端口似乎已被占用。我kill了对应的pid,把/etc/cassandra/cassandra-env.sh中的JMX_PORT改成7200...同样的问题,据说端口正在使用,加上报错
00:33:06,236 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[SYSTEMLOG] - openFile(/var/log/cassandra/system.log,true) call failed. java.io.FileNotFoundException: /var/log/cassandra/system.log (Permission denied)
我已经更改了权限,但错误仍然存在。在这个故事的这一点上,我 运行 没有想法了。我想要实现的目标看起来很简单,所以我想其他人一定 运行 遇到了类似的问题。
nodetool status 输出说明了一切。你拥有一切 运行 就好了。因此,还原端口使用方面的任何更改。
由于您的 nodetool 状态显示您的节点 IP 是 172.16.10.20 和 172.16.10.30,请尝试 运行 cqlsh 并提供其中一个 IP。 cqlsh 默认尝试连接到 127.0.0.1,这在多节点集群中不起作用。
cqlsh 172.16.10.20 -u yourusername -p yourpassword
注意:如果您没有启用身份验证,则可以省略 -u 和 -p。但如果这是真的,那么您真的应该更改您的集群以启用身份验证。