Налаштування локального кластера

Налаштування локальних кластерів для тестування та розробки

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

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

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

Виконайте наступне, щоб розгорнути кластер 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 працює як очікується.

Локальний кластер з кількома членами

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

Procfile у корені git-репозиторію etcd надається для легкого налаштування локального кластера з кількома членами. Щоб запустити кластер з кількома членами, перейдіть до кореня дерева вихідного коду 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, прочитайте розділ взаємодія з etcd.