Linux Labs

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

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

средняя ~30 мин
Не запущена Запускается обычно ~20 с
Сообщить о проблеме

Ситуация

Сайт магазина 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 на обеих машинах включены и работают с настройками из своих файлов — всё переживёт перезагрузку — ещё не проверялась

Подсказки

открыто 0 из 3 · открываются по одной
Подсказка 1
Показать решение после 3 неудачных проверок

Выйти из лабы?

Машина проработает ещё 10 минут и удалится. Файлы пропадут, выполненные цели останутся.

Загрузка…