Consul кластер не запускается

У меня есть конфигурация запуска AWS для кластера Consul. До сих пор он работал без проблем, но теперь он не работает. Запрос любого узла приводит к «ни один лидер не выбран».

Итак, я подключился к экземпляру по SSH. consul info приводит к Error querying agent: Get http://127.0.0.1:8500/v1/agent/self: dial tcp 127.0.0.1:8500: getsockopt: connection refused.

Затем я попробовал: $ ps -ef | grep consul consul 2760 1 0 Nov28 ? 00:01:38 /usr/local/bin/consul agent -server -config-file=/etc/consul.conf -data-dir=/tmp/consul -node=1.1.1.1_i-042b3e8f28c622a -bind=2.2.2.2 -config-dir=/etc/consul.d (здесь я скрыл IP и идентификаторы экземпляров)

Глядя на журнал, вижу:

==> WARNING: Expect Mode enabled, expecting 3 servers
==> Starting Consul agent...
==> Consul agent running!
           Version: 'v0.8.3'
           Node ID: '6e0b3c-ad49-90d7-c8e2-121144a4ba'
         Node name: '1.1.1.1_i-029b3e8f28622a'
        Datacenter: 'dc1'
            Server: true (bootstrap: false)
       Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600)
      Cluster Addr: 2.2.2.2 (LAN: 8301, WAN: 8302)
    Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
             Atlas: <disabled>

==> Log data will now stream in as it occurs:

    2017/11/28 13:19:36 [INFO] raft: Initial configuration (index=0): []
    2017/11/28 13:19:36 [INFO] serf: EventMemberJoin: 1.1.1.1_i-029b3e8f28c46622a 2.2.2.2
    2017/11/28 13:19:36 [INFO] serf: EventMemberJoin: 1.1.1.1_i-029b3e8f28c46622a.dc1 2.2.2.2
    2017/11/28 13:19:36 [INFO] raft: Node at 2.2.2.2:8300 [Follower] entering Follower state (Leader: "")
    2017/11/28 13:19:36 [INFO] consul: Adding LAN server 1.1.1.1_i-029b3e8f28c46622a (Addr: tcp/2.2.2.2:8300) (DC: dc1)
    2017/11/28 13:19:36 [INFO] consul: Handled member-join event for server "1.1.1.1_i-029b3e8f28c22a.dc1" in area "wan"
    2017/11/28 13:19:36 [INFO] agent: Joining cluster...
    2017/11/28 13:19:36 [INFO] agent: No EC2 region provided, querying instance metadata endpoint...
    2017/11/28 13:19:36 [INFO] agent: Discovered 0 servers from EC2
    2017/11/28 13:19:36 [WARN] agent: Join failed: No servers to join, retrying in 30s
    2017/11/28 13:19:43 [ERR] agent: failed to sync remote state: No cluster leader

Есть идеи, как это исправить?


person Johnny    schedule 29.11.2017    source источник


Ответы (3)


Вы должны загрузить кластер, чтобы разрешить первоначальное избрание лидера. Самый простой способ - использовать -bootstrap-expect с количеством серверов в кластере (используйте одинаковый флаг и значение для всех серверов).

Дополнительная информация о начальной загрузке кластера - https://www.consul.io/docs/guides/bootstrapping.html

и https://www.consul.io/docs/agent/options.html#_bootstrap

в вашем случае он говорит: «ПРЕДУПРЕЖДЕНИЕ: режим ожидания включен, ожидается 3 сервера», поэтому он ожидает 3 сервера перед загрузкой кластера. Я вижу, что вы используете только два? присоединитесь к другому, и он должен работать ... (менее 3 не рекомендуется для систем консенсуса).

person Gal Ben-Haim    schedule 16.12.2017

Есть лучший способ, вы можете использовать -bootstrap для указания узла сервера. Это избавляет от необходимости запускать 3 сервера для загрузки лидера выбора кластера консула.

person lixinglin    schedule 22.10.2019

Подробное объяснение Ubuntu - + AWS:

  1. Ваш файл должен выглядеть так: /etc/consul/base.json

 {
    "server": true,
    "ui": true,
    "bootstrap_expect":3,
    "bind_addr": "102.102.3.1",
    "performance": { "raft_multiplier": 1 },
    "enable_syslog": true,
    "retry_join": [ "provider=aws tag_key=HostIdentifier tag_value=us1-Consul-Prod addr_type=private_v4" ],
    "disable_remote_exec": true,
    "log_level":  "DEBUG",
    "data_dir":   "/var/lib/consul",
    "recursors": ["1.1.1.1"],
    "datacenter": "us1"
}

(retry_join - необязательно, если вы используете теги ec2), убедитесь, что у вас есть роль IAM, прикрепленная к экземпляру)

  1. перезапуск сервисного консула

  2. Выполнить - #consul operator raft list-peers вы должны увидеть лидера, иначе проверьте / var / log / syslog для получения дополнительных сведений для устранения неполадок

person Impermanence    schedule 31.07.2020