Linux Labs

Практики SRE: SLO, инциденты, отказоустойчивость / Ступень 7 из 8

Балансировщик и проверка здоровья

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 9 из 10 · лаба · 30 минсредняя

Адрес сайта не переезжает на запасную машину

Сайт магазина живёт на плавающем адресе, node2 должен подхватить его, если node1 упадёт. На учениях node1 выключили — и сайт пропал. Сделай так, чтобы адрес и сайт переезжали на node2 и возвращались.

Ситуация

Сайт магазина shop.lab.test живёт на плавающем адресе — VIP: имя указывает на адрес .100 в сети машин (строка в /etc/hosts обеих машин, там же — короткое имя vip). Адрес держит keepalived: в обычном режиме он у node1, а если node1 упадёт, его должен подхватить node2. На обеих машинах работает nginx с одной и той же страницей, только каждая подписана своим именем: shop: served by node1 или shop: served by node2.

На учениях остановили keepalived на node1 — так выглядит падение машины для её соседа. Адрес с node1 ушёл, а сайт пропал: на node2 ничего не переехало.

node1 — твой терминал. Команды на node2 выполняй через SSH: ssh node2 'команда' или войди в оболочку — ssh node2, назад — exit. sudo на обеих машинах работает без пароля. Где сейчас адрес и кто отвечает по нему:

ip -br a; ssh node2 ip -br a
curl -s http://shop.lab.test/

Задача

  1. В обычном режиме плавающий адрес — на node1, и только на нём; сайт http://shop.lab.test/ отвечает страницей node1.
  2. Когда keepalived на node1 останавливается, не позже чем через 10 секунд адрес на node2, а сайт по нему отвечает страницей node2.
  3. Когда keepalived на node1 снова запущен, не позже чем через 10 секунд адрес возвращается на node1.

«Проверить» само останавливает keepalived на node1, смотрит, куда ушёл адрес и кто отвечает по нему, потом запускает keepalived обратно и ждёт, когда адрес вернётся. Проверка занимает до 40 секунд.

Ограничения

  • Всё должно пережить перезагрузку обеих машин: службы включены, настройки лежат в файлах, а работающие службы прочитали эти файлы после правки.
  • Плавающим адресом управляет только keepalived: не назначай его вручную (ip addr add) и не прописывай в настройках сети.
  • node1 остаётся главной машиной: не меняй его настройки keepalived и не отдавай адрес node2 насовсем.

Интернета в лабе нет — только сеть между node1 и node2, всё нужное установлено. Устрой учения сам: sudo systemctl stop keepalived на node1, посмотри, где адрес и что отвечает сайт, затем sudo systemctl start keepalived.

Лаба · самостоятельно

Команды в этой лабе не даны: набирай их в терминале сам. Цели проверяются на машине после каждой команды.

Цели

0 из 4
  • В обычном режиме плавающий адрес — на node1 и только на нём, сайт http://shop.lab.test/ отвечает страницей node1 — ещё не выполнена
  • Когда keepalived на node1 останавливается, не позже чем через 10 с адрес на node2, а сайт по нему отвечает страницей node2 — ещё не выполнена
  • Когда keepalived на node1 снова запущен, не позже чем через 10 с адрес возвращается на node1 — ещё не выполнена
  • keepalived и nginx на обеих машинах включены и работают с настройками из своих файлов — всё переживёт перезагрузку — ещё не выполнена
Ctrl+Enter
Запустит машину node1 · Ubuntu 24.04

Машина запускается

Подсказки

0 из 3

Цели лабы

0 из 4
  • В обычном режиме плавающий адрес — на node1 и только на нём, сайт http://shop.lab.test/ отвечает страницей node1 — ещё не выполнена
  • Когда keepalived на node1 останавливается, не позже чем через 10 с адрес на node2, а сайт по нему отвечает страницей node2 — ещё не выполнена
  • Когда keepalived на node1 снова запущен, не позже чем через 10 с адрес возвращается на node1 — ещё не выполнена
  • keepalived и nginx на обеих машинах включены и работают с настройками из своих файлов — всё переживёт перезагрузку — ещё не выполнена
node1 Ubuntu 24.04

Цели лабы

0 из 4
  • В обычном режиме плавающий адрес — на node1 и только на нём, сайт http://shop.lab.test/ отвечает страницей node1 — ещё не выполнена
  • Когда keepalived на node1 останавливается, не позже чем через 10 с адрес на node2, а сайт по нему отвечает страницей node2 — ещё не выполнена
  • Когда keepalived на node1 снова запущен, не позже чем через 10 с адрес возвращается на node1 — ещё не выполнена
  • keepalived и nginx на обеих машинах включены и работают с настройками из своих файлов — всё переживёт перезагрузку — ещё не выполнена
Загрузка…