无法启动Cassandra:端口已在使用中

时间:2018-08-08 00:39:10

标签: cassandra cqlsh

我有两个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分别是当前节点的内部IP。

然后我在每个节点上重新启动Cassandra

sudo service cassandra restart

并检查Cassandra是否运行:

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似乎已在使用中。我杀死了相应的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)

我更改了权限,但错误仍然存​​在。在故事的这一点上,我的想法已经用完了。我试图实现的目标似乎很简单,所以我想其他人肯定也遇到了类似的问题。

1 个答案:

答案 0 :(得分:1)

nodetool状态输出在这里说明了一切。您一切正常。因此,请还原端口使用方面的所有更改。

由于您的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。但是,如果是这样,那么您应该真正更改集群以启用身份验证。