我的主题可能会说这是一个重复的问题,但事实并非如此。我已经尝试了所有可能的方法来搜索这个问题,但未能解决我的问题。
我的PC上运行了Windows 8.1。我已经使用Hyper-V将Ubuntu 16.04版本安装为VM。我在我的Ubuntu系统上安装了Cassandra 3.7。
Cassandra能够从本地主机连接,即从Ubuntu系统连接。我创建了键空间和所有,但是当我尝试从我的golang代码连接Casandra时,我收到错误。
package main
import (
"fmt"
"log"
"github.com/gocql/gocql"
)
func main() {
// connect to the cluster
cluster := gocql.NewCluster("192.168.137.217") //Put comma separated IPs in case of multiple cluster
cluster.Keyspace = "broker_keyspace"
cluster.Consistency = gocql.Quorum
session, _ := cluster.CreateSession()
defer session.Close()
}
192.168.137.217是我的VM的IP地址。我得到的错误是说9042端口不允许连接。这段代码我试图从我的Windows 8.1系统(它是运行Cassandra的VM的主机)运行。我确实试图telnet,发现9042端口没有打开主机连接。
我开始使用cassandra.yaml配置文件,但现在它甚至没有在Ubuntu系统上工作。我无法使用
获取节点状态nodetool status
我在cassandra.yaml文件中的常用配置如下所示。
rpc_address: localhost
listen_address: localhost
我还在/etc/cassandra/cassandra-env.sh文件中取消注释了以下行,并将公共名称更新为127.0.0.1。
# add this if you're having trouble connecting:
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"
我使用 service cassandra restart 重新启动了cassandra,但当我尝试 nodetool status 时,它会给出以下错误。
nodetool:无法连接到'127.0.0.1:7199' - ConnectException:'Connection refused'。
很抱歉这个问题很长,但是请帮助我真的厌倦了这个问题,在过去的6-7个小时内非常努力。
谢谢..
答案 0 :(得分:1)
您是否尝试过不使用localhost并实际使用192.168.137.217地址 - JMX,rpc,listen等等?那会是个问题吗?另外,假设这只是PC上的开发虚拟机 - 也许可以检查防火墙是否已关闭?
答案 1 :(得分:0)
您可以按照以下步骤解决上述问题。
更改 cassandra.yaml (etc/cassandra/cassandra.yaml
)
- start_rpc: true
- rpc_address: 0.0.0.0
取消注释
broadcast_rpc_address: 1.2.3.4