2012-01-02

Tags: cassandra , java

如果你多個Cassandra節點都是躲在各自的firewall後面執行,要讓這些節點能正常運作,下面這些port必需開啟(這是指Cassandra 1.0.6版,其它早期版本的port不見得會相同),不然Cassandra的ring會串不起來,相互間無法溝通。

  1. 7000:這是node間傳輸資料的TCP port。cassandra.yam裡的storage_port: 7000就是這個設定。
  2. 7001:這是node間利用SSL傳輸資料的port。cassandra.yam裡的ssl_storage_port: 7001就是這個設定。如果沒用到SSL加密傳輸,這個port可以不開。
  3. 9160:這是Client端Thrift API用到的port。cassandra.yam裡的rpc_port: 9160就是這個設定。Cassandra-CLI、Hector API...etc這些client端查詢資料的工具都靠這個port連上Cassandra。
  4. 7199:這是JMX用到的port。如果Cassandra建在Linux下,cassandra-env.sh裡的JMX_PORT="7199"就是這個設定。如果你要讓nodetool這個admin工具可以remote admin cassandra,要開這個port。不過我是不建議開這個port,真的要管理還是連到server上操作會比較好,系統也比較安全。此外,就算是7199 port開了,遠端其實還是連不上Cassandra,這是因為JMX服務啟動時,除了7199之外,系統會動態隨機產生另一個需要用到的port,如果firewall沒把這個port也打開,是無法讓nodetool工具remote連上系統的。當然...這是有解的,解法在硬大 師的這篇文章中,有興趣的可以去看看。
簡單來說,7000、9160一定要開,不然cassandra ring會串不起來,client端會無法存取server。7001、7199要不要開,就看個人需求來考量了...:)