Практики SRE: SLO, инциденты, отказоустойчивость / Ступень 7 из 8 · шаг 9 из 10
Адрес сайта не переезжает на запасную машину
Ситуация
Сайт магазина 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/
Задача
- В обычном режиме плавающий адрес — на node1, и только на нём; сайт
http://shop.lab.test/отвечает страницей node1. - Когда keepalived на node1 останавливается, не позже чем через 10 секунд адрес на node2, а сайт по нему отвечает страницей node2.
- Когда 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 на обеих машинах включены и работают с настройками из своих файлов — всё переживёт перезагрузку — ещё не проверялась