2014-04-30 38 views
4

什麼可能我會丟失連接?我無法使用python卡桑德拉驅動器連接,但是我似乎能夠使用CQL模塊時,正常連接。我無法使用python卡桑德拉驅動

cluster = Cluster(
contact_points=['10.x.x.xx',], 
port=9160) 

session = cluster.connect() 
session.set_keyspace("mykeyspace") 

輸出:

cassandra.cluster.NoHostAvailable:( '無法連接到任何服務器',{'10 .0.x.xx ':ConnectionShutdown(' 連接到10.0.x.xx閉合」)})

另外,我從託管的虛擬機卡桑德拉與單個節點如果該事項。

回答

7

的DataStax Python的驅動程序(它是什麼樣子,你正在使用)使用本地協議,並且默認使用9042端口。如果您檢查您的conf文件(cassandra.yaml),請確保您有start_native_transport: true(默認值從1.2開始)

+0

嗚嗚,我試圖端口9042,但現在,我想這件事我敢打賭,我不能讓過去的防火牆。我改變了 - 種子:地址認爲這是問題,現在我無法讓卡桑德拉開火。我重新加載了原始的cassandra.yaml文件,但仍然沒有運氣。 – EnergyGeek

+0

呃...好東西,我有一個虛擬機的克隆。好吧,我再一次被防火牆擋住了。觀看我所有的數據打印是一件美麗的事情! – EnergyGeek

0

要在Cassandra驅動程序中使用本地協議是完全正確的。請注意,此驅動程序(版本2和所有語言版本)是使用本地協議的唯一方法 - 截至今日。當你使用CQLSH請繼續使用舊的節儉協議在端口9160

無論要使用遠程機器的升級端口在cassandra.yaml相應的IP地址從127.0.0.1(缺省)0.0.0.0。這基本上允許任何機器從遠程地址聯繫THRIFT/NATIVE。這些是兩個獨立的設置,因此您可以只調整一個或另一個。啓用此功能時,請確保已使用PasswordAuthenticator鎖定了Cassandra(默認爲none /任何人都可以使用)!根據虛擬機打開的遠程訪問網絡類型,可能不需要爲NAT類型。

在我的Red Hat默認防火牆沒有進行調整。將NATIVE端口打開到遠程主機足以使用憑據從任何地方進行連接。