亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AllNodesFailedException:無法到達任何聯系點

AllNodesFailedException:無法到達任何聯系點

汪汪一只貓 2023-08-16 16:31:58
我通過docker在三個數據中心(DC1、DC2和DC3)中設置了三個Cassandra節點(cas1、cas2和cas3)。我想使用 Java API 在 cas1 建立會話,但它無法連接并引發異常。我嘗試過手動設置端口并尋找可用的解決方案,但它們不起作用。cas1創建:docker run --name cas1 -p 19041:9042 -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=DC1 -e CASSANDRA_RACK=RAC1 -d cassandraJava代碼:InetAddress addr = InetAddress.getByName("172.17.0.2");InetSocketAddress addrSoc = new InetSocketAddress(addr,19041);CqlSession session = CqlSession.builder().addContactPoint(addrSoc).build();預期結果:會話應該已建立。錯誤 :datastax.oss.driver.api.core.AllNodesFailedException:無法到達任何聯系點,請確保您提供了有效的地址(顯示前 1 個,使用 getErrors() 了解更多信息:com.datastax.oss.driver.internal.core .metadata.DefaultNode@605c5ab0(null,/172.17.0.2:19041): com.datastax.oss.driver.api.core.connection.ConnectionInitException: [s0|control|connecting...] 初始化查詢啟動: 寫入錯誤)
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

面臨同樣的問題。通過在配置類中將節點 ip(172.18.0.2) 更改為全局 ip '127.0.0.1' 來解決。


我使用 docker-compose 命令來運行 cassandra。請查看我的 docker-compose.yml 文件:


version: '3'

services:

 n1:

  build: .

  image: cassandra-with-cqlshrc

  networks:

   - cluster

  ports:

   - "9042:9042"

networks:

 cluster:

我的 Java 中的 CassandraConfiguration 文件:


@Configuration

@EnableCassandraRepositories

public class CassandraConfiguration extends AbstractCassandraConfiguration {


    @Override

      public String getContactPoints() {

        return "127.0.0.1";

      }


      @Override

      protected String getKeyspaceName() {

        return "stockmarket";

      }

     

      @Override

      protected int getPort() {

          return 9042;

      }

}


查看完整回答
反對 回復 2023-08-16
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

有效。我使用 IP:127.0.0.1 而不是全局 IP 和端口 19041(我明確配置的)并且它成功連接。



查看完整回答
反對 回復 2023-08-16
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

所有 DataStax 驅動程序都從內置數據中心故障轉移和來自接觸點的本地推理轉向。

如果使用 Spring/Springboot,則必須指定數據中心名稱。將此行添加到您的 application.properties 中:?spring.data.cassandra.local-datacenter=datacenter1

對于數據中心的名稱,“datacenter1”是默認名稱。您可以在 cqlsh 中使用以下命令找到數據中心的名稱:select data_center from system.local;

另外,不要忘記關閉 cqlsh 會話,因為它可能會導致在下一個請求中到達單節點 cassandra 集群時出現一些問題。

Session.close()


查看完整回答
反對 回復 2023-08-16
  • 3 回答
  • 0 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號