bin/cassandra-cli报java.net.ConnectException: Connection refused错误

本文介绍了如何解决Cassandra无法远程连接的问题。通过修改hosts文件及cassandra.yaml配置文件中的listen_address和rpc_address字段,实现从远程主机访问Cassandra数据库。

 

hosts中

192.168.27.27  localhost

bin/cassandra-cli 

 

cassandra> connect localhost/9160 正常

cassandra> connect 192.168.27.27/9160 出现异常:

java.net.ConnectException: Connection refused

 而且无法进行远程连接。

 

需要修改 conf/ cassandra.yaml

将里面的

listen_address: 192.168.27.164(本地的静态IP地址,改为IP的目的是可以远程连接)

rpc_address: 192.168.27.164

这样就可以进行远程连接了。

 

注意:0.7版本前配置文件为conf/storage-conf.xml;0.70版本之后变化为conf/cassandra.yaml

需要修改conf/log4j-server.properties

 

这个错误表明 Cassandra 启动脚本在解析内存配置时出现问题,导致 Java 虚拟机(JVM)无法正确初始化堆内存(`-XmsM` 参数无效)。此外,仍然存在 `expr` 语法错误,可能是由于 Shell 环境或脚本兼容性问题。 --- ### **问题原因** 1. **`expr` 语法错误** - Cassandra启动脚本(`bin/cassandra`)使用了 `expr` 命令进行数值计算,但当前 Shell 环境可能不支持(如 `dash` 代替 `bash`)。 - 也可能是脚本中的变量未正确解析(如 `$JVM_OPTS` 或内存配置)。 2. **`Invalid initial heap size: -XmsM`** - Cassandra 的 JVM 内存配置(`conf/jvm.options` 或环境变量)可能被错误修改,导致 `-Xms`(初始堆内存)参数格式无效(如 `-XmsM` 而不是 `-Xms512M`)。 --- ### **解决方法** #### **1. 修复 `expr` 语法错误** ##### **方法 1:强制使用 `bash` 运行** ```bash sudo -u cassandra bash -c "/opt/apache-cassandra-3.11.17/bin/cassandra -f" ``` ##### **方法 2:修改脚本的 Shebang** 编辑 `/opt/apache-cassandra-3.11.17/bin/cassandra`,将第一行从: ```bash #!/bin/sh ``` 改为: ```bash #!/bin/bash ``` 然后重新运行。 --- #### **2. 修复 JVM 内存配置** ##### **检查 `jvm.options` 文件** ```bash cat /opt/apache-cassandra-3.11.17/conf/jvm.options | grep -E "Xms|Xmx" ``` 确保配置类似以下内容(根据服务器内存调整): ``` -Xms512M -Xmx512M ``` 如果发现异常(如 `-XmsM`),手动修正后保存。 ##### **临时覆盖内存参数** 如果不想修改配置文件,可以通过环境变量覆盖: ```bash sudo -u cassandra bash -c "export JVM_OPTS='-Xms512M -Xmx512M'; /opt/apache-cassandra-3.11.17/bin/cassandra -f" ``` --- #### **3. 检查 Java 版本** Cassandra 3.11.x 需要 **Java 8 或 11**: ```bash java -version ``` 如果未安装或版本不匹配,安装 OpenJDK 8: ```bash sudo apt update sudo apt install openjdk-8-jdk ``` 并确保 `JAVA_HOME` 正确: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ # 路径可能不同 echo "export JAVA_HOME=$JAVA_HOME" >> /home/cassandra/.bashrc sudo -u cassandra bash -c "source ~/.bashrc; /opt/apache-cassandra-3.11.17/bin/cassandra -f" ``` --- #### **4. 检查文件权限** 确保 `cassandra` 用户对 Cassandra 目录有完全权限: ```bash sudo chown -R cassandra:cassandra /opt/apache-cassandra-3.11.17/ sudo chmod -R 755 /opt/apache-cassandra-3.11.17/ ``` --- #### **5. 查看完整日志** 如果仍然失败,通过日志定位问题: ```bash sudo -u cassandra bash -c "/opt/apache-cassandra-3.11.17/bin/cassandra -f > /tmp/cassandra.log 2>&1" cat /tmp/cassandra.log ``` --- ### **总结步骤** 1. 使用 `bash` 运行脚本(避免 `expr` 错误)。 2. 检查并修复 `jvm.options` 中的 `-Xms/-Xmx` 配置。 3. 确保 Java 版本为 8 或 11,并正确设置 `JAVA_HOME`。 4. 确保 `cassandra` 用户对安装目录有权限。 5. 通过日志进一步排查。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值