代码之家  ›  专栏  ›  技术社区  ›  Xavier Prudent

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

  •  1
  • Xavier Prudent  · 技术社区  · 6 年前

    我有两个Ubuntu16.04节点,上面安装了java版本为“1.8.0_181”的Cassandra 3.11.3。我想把这两个节点合并成一个Cassandra集群。他们的实习知识点是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
    

    检查卡桑德拉跑了:

    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
    

    一切正常。

    我现在想联系卡桑德拉:

    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
    

    得到(在一个巨大的信息中):

    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_端口更改为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 回复  |  直到 6 年前
        1
  •  1
  •   Aaron    6 年前

    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
    

    注意:如果没有启用auth,则可以省略-u和-p。但如果这是真的,那么您应该真正地更改集群以启用auth。