Перейти к содержанию

Настройка локального кластера

Настройка локальных кластеров для тестирования и разработки

Для тестирования и разработки быстрее и проще всего настроить локальный кластер. Промышленное развёртывание описано в разделе кластеризации .

Локальный автономный кластер

Запуск кластера

Чтобы развернуть автономный кластер etcd, выполните:

$ ./etcd
...

Если бинарный файл etcd отсутствует в текущем рабочем каталоге, он может находиться в $GOPATH/bin/etcd или /usr/local/bin/etcd. Укажите правильный путь при запуске.

Работающий участник etcd принимает клиентские запросы на localhost:2379.

Взаимодействие с кластером

Используйте etcdctl для взаимодействия с работающим кластером:

  1. Сохраните в кластере пример пары «ключ — значение»:

      $ ./etcdctl put foo bar
      OK

    Вывод OK означает, что пара успешно сохранена.

  2. Получите значение ключа foo:

    $ ./etcdctl get foo
    bar

    Если возвращено bar, взаимодействие с кластером etcd работает ожидаемым образом.

Локальный кластер из нескольких участников

Запуск кластера

В корне git-репозитория etcd находится Procfile, упрощающий настройку локального кластера из нескольких участников. Перейдите в корень дерева исходного кода etcd и выполните следующие действия:

  1. Установите goreman для управления приложениями на основе Procfile:

    $ go install github.com/mattn/goreman@latest
  2. Запустите кластер через goreman, используя штатный Procfile etcd:

    $ goreman -f Procfile start

    Участники запускаются и принимают клиентские запросы соответственно на localhost:2379, localhost:22379 и localhost:32379.

Взаимодействие с кластером

Используйте etcdctl для взаимодействия с работающим кластером:

  1. Выведите список участников:

    $ etcdctl --write-out=table --endpoints=localhost:2379 member list

    Список участников etcd выглядит следующим образом:

    +------------------+---------+--------+------------------------+------------------------+
    |        ID        | STATUS  |  NAME  |       PEER ADDRS       |      CLIENT ADDRS      |
    +------------------+---------+--------+------------------------+------------------------+
    | 8211f1d0f64f3269 | started | infra1 | http://127.0.0.1:2380  | http://127.0.0.1:2379  |
    | 91bc3c398fb3c146 | started | infra2 | http://127.0.0.1:22380 | http://127.0.0.1:22379 |
    | fd422379fda50e48 | started | infra3 | http://127.0.0.1:32380 | http://127.0.0.1:32379 |
    +------------------+---------+--------+------------------------+------------------------+
  2. Сохраните в кластере пример пары «ключ — значение»:

    $ etcdctl put foo bar
    OK

    Вывод OK означает, что пара успешно сохранена.

Проверка отказоустойчивости

Чтобы проверить отказоустойчивость etcd, остановите одного участника и попытайтесь получить ключ.

  1. Определите имя процесса участника, которого нужно остановить.

    Свойства кластера из нескольких участников перечислены в Procfile. Для примера возьмём участника с именем процесса etcd2.

  2. Остановите участника:

    # kill etcd2
    $ goreman run stop etcd2
  3. Сохраните ключ:

    $ etcdctl put key hello
    OK
  4. Получите ключ, сохранённый на предыдущем шаге:

    $ etcdctl get key
    hello
  5. Получите ключ у остановленного участника:

    $ etcdctl --endpoints=localhost:22379 get key

    Команда должна вывести ошибку из-за отсутствия соединения:

    2017/06/18 23:07:35 grpc: Conn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:22379: getsockopt: connection refused"; Reconnecting to "localhost:22379"
    Error:  grpc: timed out trying to connect
  6. Перезапустите остановленного участника:

    $ goreman run restart etcd2
  7. Получите ключ у перезапущенного участника:

    $ etcdctl --endpoints=localhost:22379 get key
    hello

    После перезапуска участника соединение восстанавливается, и etcdctl снова может успешно получить ключ. Дополнительные сведения приведены в разделе взаимодействия с etcd .