登录
首页 >  Golang >  Go问答

在 AWS 上如何使用 gocql 连接到 Cassandra 集群?

来源:stackoverflow

时间:2024-02-11 17:12:24 282浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在 AWS 上如何使用 gocql 连接到 Cassandra 集群?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我已经完成了三节点 cassandra 集群的设置。这个是在aws上,服务器端口是开放的。三台服务器相互连接良好,工作完美。 我已经设置了

authenticator: allowallauthenticator

在我的 cassandra.yaml 文件中

我想与go cql建立连接,这是连接代码

cluster := gocql.newcluster("x.xxx.xxx.xxx")
cluster.keyspace = "keyspace_name"
cluster.consistency = gocql.quorum
cluster.protoversion = 4
cluster.connecttimeout = time.second * 10

session, err := cluster.createsession()
if err != nil {
    fmt.println(err)
}

但是 go cql 给我发回了这条消息。

2020/09/26 09:53:44 gocql: unable to dial control conn x.xxx.xxx: dial tcp 127.0.0.1:9042: connectex: No connections could be made because the target machine actively refused them.
2020/09/26 09:53:44 gocql: unable to create session: control: unable to connect to initial hosts: dial tcp x.xxx.xxx.xxx:9042: connectex: No connections could be made because the target machine actively refused them.
panic: runtime error: invalid memory address or nil pointer dereference

正确答案


您很有可能在应用中使用私有 ip 地址连接到节点,但这些节点无法远程访问,因为根据定义,它们是私有地址。

您需要确保已将节点配置为使用:

listen_address: 
rpc_address: 

节点使用 listen_address 相互通信,而客户端使用 rpc_address 连接到集群,这就是为什么需要使用 ec2 实例的可公开访问的 ip 地址进行配置。

正确配置节点后,将您的应用配置为使用公共 ip 作为接触点:

cluster := gocql.NewCluster("public_ip1,public_ip2,...")

这应该允许您的应用连接到集群。干杯!

本篇关于《在 AWS 上如何使用 gocql 连接到 Cassandra 集群?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>