Назад | Перейти на главную страницу

OpsCenter 5.1.3 сообщает агентам неправильный IP-адрес хоста

При добавлении новых узлов Cassandra в кластер мы также запускаем агент DataStax. По прошествии некоторого времени показано, что агент больше не подключен. Всякий раз, когда мы перезапускаем агент, регистрируется следующая ошибка:

ERROR [Initialization] 2015-12-15 10:42:25,309 Can't connect to Cassandra, retrying soon.
 com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.10.1:9042 (com.datastax.driver.core.TransportException: [/192.168.10.1:9042] Cannot connect))

IP-адрес 192.168.10.1 - это broadcast_address узла Кассандра. В rpc_address отличается, поэтому агент не может подключиться к узлу. Этот неправильный IP-адрес отправляется из OpsCenter агенту, как показано в файле журнала (переформатирован для лучшей читаемости):

INFO [StompConnection receiver] 2015-12-15 10:42:23,492 Got new config from OpsCenter: { :cassandra_port 9042, :rollups300_ttl 7776000, :destinations [], :restore_req_update_period 1, :cassandra_rpc_interface "192.168.10.1", :rollups60_ttl 7776000, :thrift_port 9160, :ec2_metadata_api_host "169.254.169.254", :metrics_enabled 1, :backup_staging_dir "", :rollups7200_ttl 7776000, :ssl_keystore nil, :metrics_ignored_column_families "", :cassandra_log_location "/var/log/cassandra/system.log", :config_md5 "49a3234ff4e1eca80f3b2c2027ae5d9c", :jmx_port 7199, :provisioning 0, :use_ssl 1, :max_pending_repairs 5, :rollups86400_ttl -1, :api_port "61621", :storage_keyspace "OpsCenter", :hosts ["192.168.10.1"], :metrics_ignored_solr_cores "", :metrics_ignored_keyspaces "system, system_traces, system_auth, dse_auth, OpsCenter", :rollup_subscriptions [], :cassandra_install_location ""}

После перезапуска OpsCenter, а затем агента агенту отправляется правильный IP-адрес, и ошибки больше не регистрируются.

Пока узел присоединяется, таблица system.peers не содержит записи для нового узла. Впоследствии он содержит правильные адреса.

Как мы можем заставить новых агентов использовать правильный адрес (rpc_address), кроме перезапуска OpsCenter при каждом добавлении новых узлов?

Обновление: установка хостов в address.yaml не работает

Просто попробовал установить hosts: ["192.168.8.1"] (который является rpc_address узла) в /var/lib/datastax-agent/conf/address.yaml. Поведение точно такое же. Кажется, что этот хост перезаписан тем, что предоставляет OpsCenter:

INFO [main] 2015-12-22 08:55:15,207 Loading conf files: /var/lib/datastax-agent/conf/address.yaml
INFO [main] 2015-12-22 08:55:15,258 Java vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.8.0_45
INFO [main] 2015-12-22 08:55:15,258 DataStax Agent version: 5.1.3
INFO [main] 2015-12-22 08:55:15,282 Default config values: {... :agent_rpc_broadcast_address "192.168.10.1", ... :hosts ["192.168.8.1"]}
...
INFO [StompConnection receiver] 2015-12-22 08:55:21,015 Got new config from OpsCenter: {... :cassandra_rpc_interface "192.168.10.1", ... :hosts ["192.168.10.1"] ...}
...
ERROR [Initialization] 2015-12-22 08:55:22,926 Can't connect to Cassandra, retrying soon.
 com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.10.1:9042 (com.datastax.driver.core.TransportException: [/192.168.10.1:9042] Cannot connect))
...
WARN [Initialization] 2015-12-22 08:55:32,652 Resetting cluster because {:hosts ["192.168.8.1"]} changed to {:hosts ["192.168.10.1"], :local_interface "192.168.10.1"}