User Tools

Site Tools


создание_отказоустойчивых_linux_решений

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
создание_отказоустойчивых_linux_решений [2022/03/21 07:20]
val created
создание_отказоустойчивых_linux_решений [2024/06/04 16:09]
val [7.1 Linux Containers в зеркалируемом разделе]
Line 4: Line 4:
  
   * [[http://​www.specialist.ru/​course/​un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]]   * [[http://​www.specialist.ru/​course/​un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]]
- 
-===== Ссылка на вебинар ===== 
  
  
Line 12: Line 10:
   * Научиться настраивать отказоустойчивую конфигурацию сервисов Linux на "​железном"​ оборудовании в сети предприятия.   * Научиться настраивать отказоустойчивую конфигурацию сервисов Linux на "​железном"​ оборудовании в сети предприятия.
  
-===== План обновлений ===== 
  
-  - Прозрачная миграция сети ЛИН2 в ЛИН6 
-  - DRBD без OCFS поскольку с ним будет CEPH 
-  - server1/2 вместо server для демонстрации шаблонов контейнеров 
 ===== Модуль 0. Подготовка стенда в классе ===== ===== Модуль 0. Подготовка стенда в классе =====
  
Line 37: Line 31:
   * [[https://​ru.wikipedia.org/​wiki/​%D0%92%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B1%D0%B5%D0%B7%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BD%D0%BE%D0%B9_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B|Вероятность безотказной работы]]   * [[https://​ru.wikipedia.org/​wiki/​%D0%92%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B1%D0%B5%D0%B7%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BD%D0%BE%D0%B9_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B|Вероятность безотказной работы]]
   * [[https://​www.youtube.com/​watch?​v=-izJHCPKvCg|youtube Отказоустойчивый микрокластер своими руками / Виталий Гаврилов (Ленвендо)]] Схема сети на 4-й минуте   * [[https://​www.youtube.com/​watch?​v=-izJHCPKvCg|youtube Отказоустойчивый микрокластер своими руками / Виталий Гаврилов (Ленвендо)]] Схема сети на 4-й минуте
 +  * [[https://​ru.wikipedia.org/​wiki/​VRRP|VRRP]]
  
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
 === 1.1 Импорт VM Linux === === 1.1 Импорт VM Linux ===
 +
 +<​code>​
 +Запустите с правами Administrator
  
 C:​\cmder\cmder.exe C:​\cmder\cmder.exe
  
-<​code>​ 
 bash bash
  
 cd cd
 +
 +test -d conf && rm -r conf
  
 git clone http://​val.bmstu.ru/​unix/​conf.git git clone http://​val.bmstu.ru/​unix/​conf.git
  
 cd conf/​virtualbox/​ cd conf/​virtualbox/​
 +
 +!!! 6 - это номер курса, вместо X укажите Ваш номер стенда,​ если не знаете его, спросите преподавателя !!!
  
 ./setup.sh X 6 ./setup.sh X 6
 </​code>​ </​code>​
  
-=== 1.2 Аппаратная настройка систем ===+=== 1.2 Аппаратная настройка систем ​node1 и node2 ===
  
   * Адаптер 1 - eth0 - Виртуальный адаптер хоста (LAN)   * Адаптер 1 - eth0 - Виртуальный адаптер хоста (LAN)
   * Адаптер 2 - eth1 - Сетевой мост (ISP1) только для node1 и node2   * Адаптер 2 - eth1 - Сетевой мост (ISP1) только для node1 и node2
 +  * 2, а если есть возможность,​ 4 Gb RAM
   * Жесткий диск размер 4G уже добавлен   * Жесткий диск размер 4G уже добавлен
  
 === 1.3 Импорт VM Windows === === 1.3 Импорт VM Windows ===
 +
 +  * Подключаем,​ запускаем,​ преподаватель демонстрирует работу со статическими настройками IP
  
 === 1.4 Исходная настройка сети шлюза === === 1.4 Исходная настройка сети шлюза ===
Line 72: Line 76:
 </​code>​ </​code>​
  
-<​code>​ +  * PuTTY !!!
-gate# sh conf/​dhcp.sh +
-</​code>​+
  
-=== 1.5 Тестирование сети === +=== 1.5 Подготовка отказоустойчивой конфигурации ===
-<​code>​ +
-windows> ping 1.1.1.1 +
-</​code>​ +
- +
-=== 1.6 Подготовка отказоустойчивой конфигурации ===+
  
   * [[Сервис Keepalived]] (сервис не перезапускать!)   * [[Сервис Keepalived]] (сервис не перезапускать!)
Line 119: Line 116:
 </​code>​ </​code>​
  
-=== 1.Тестирование сети ===+=== 1.Тестирование сети ===
 <​code>​ <​code>​
 node1# ping ya.ru node1# ping ya.ru
- 
-windows> ping 1.1.1.1 
 </​code>​ </​code>​
  
Line 183: Line 178:
 node1# ssh node2 node1# ssh node2
  
-node2# cat /​etc/​hostname+ubuntu# cat /​etc/​hostname
 </​code><​code>​ </​code><​code>​
-node2.corp13.un+node2.corpX.un
 </​code><​code>​ </​code><​code>​
 node2# cat /​etc/​network/​interfaces node2# cat /​etc/​network/​interfaces
Line 193: Line 188:
 ... ...
 </​code><​code>​ </​code><​code>​
-node2# /​etc/​keepalived/​keepalived.conf+node2# ​cat /​etc/​keepalived/​keepalived.conf
 </​code><​code>​ </​code><​code>​
 ... ...
 +#    state MASTER
     state BACKUP     state BACKUP
 ... ...
Line 207: Line 203:
  
 <​code>​ <​code>​
-node1# scn2 /​etc/​sysctl.conf+node1# scn2 /etc/sysctl.d/​20-my-forward.conf
  
-node1# ssn2 sysctl -f+node1# ssn2 sysctl -p --system
 </​code>​ </​code>​
- 
 === 2.4 Синхронизация с использованием пакета CSYNC2 === === 2.4 Синхронизация с использованием пакета CSYNC2 ===
  
Line 236: Line 231:
 gate      A       ​192.168.X.254 gate      A       ​192.168.X.254
 </​code><​code>​ </​code><​code>​
 +node1# named-checkconf -z
 +
 node1# ssn2 apt install bind9 node1# ssn2 apt install bind9
 </​code>​ </​code>​
Line 244: Line 241:
 <​code>​ <​code>​
 node1# csync2 -xv node1# csync2 -xv
 +</​code>​
 +<​code>​
 +node1# host ns node1
 +node1# host ns node2
 </​code>​ </​code>​
 <​code>​ <​code>​
Line 251: Line 252:
 nameserver 192.168.X.1 nameserver 192.168.X.1
 nameserver 192.168.X.2 nameserver 192.168.X.2
 +</​code><​code>​
 +nodeN# host ns 
 </​code>​ </​code>​
-<​code>​ +
-nodeN# host ns node1 +
-nodeN# host ns node2 +
-</​code>​+
 === 2.5 Синхронизация с использованием пакета Ansible === === 2.5 Синхронизация с использованием пакета Ansible ===
  
Line 284: Line 284:
   * [[Сервис DHCP#​Установка]] cервиса DHCP   * [[Сервис DHCP#​Установка]] cервиса DHCP
 <​code>​ <​code>​
 +node1# sh conf/​dhcp.sh
 +
 node2# sh conf/​dhcp.sh node2# sh conf/​dhcp.sh
 </​code>​ </​code>​
Line 295: Line 297:
 === 3.2 Проверка === === 3.2 Проверка ===
  
-  * !!! Вместо тестирования отказоустойчивости выпольнить лабораторную работу 4.3.1 +  * !!! Тестирование отказоустойчивости выполнить ​в лабораторной работе 4.2 
 +  * Тестируем на системе Windows
 <​code>​ <​code>​
 windows> ipconfig /release windows> ipconfig /release
Line 318: Line 320:
 ==== Теория ==== ==== Теория ====
  
 +  * [[https://​ru.wikipedia.org/​wiki/​VRRP|VRRP]]
   * [[https://​ru.wikipedia.org/​wiki/​CARP|CARP]]   * [[https://​ru.wikipedia.org/​wiki/​CARP|CARP]]
-  * [[https://​ru.wikipedia.org/​wiki/​VRRP|CARP]] 
   * [[https://​ru.wikipedia.org/​wiki/​Iproute2|Iproute2]]   * [[https://​ru.wikipedia.org/​wiki/​Iproute2|Iproute2]]
  
Line 335: Line 337:
  
   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])
 +  * После этого **преподавателю** отключить маршруты в локальные сети стендов
  
-  * !!! Вместо тестирования ​отказоустойчивости выпольнить лабораторную работу 4.3.1 +  * !!! Либо протестировать отказоустойчивый шлюз с одним провайдером на этом этапе, либо совместить с выполнением лабораторной работы 4.3.1
 ==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ==== ==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ====
 +
 +  * Дополнительная лабораторная работа
  
 === 4.3.1 Добавление сетевых карт для подключения к ISP2 === === 4.3.1 Добавление сетевых карт для подключения к ISP2 ===
Line 393: Line 397:
 **Сценарий:​** **Сценарий:​**
  
-  * Всем настроить NAT на два ISP ([[Сервисы Gateway и routing#​Использование iproute2 для управления выбором ISP]]), iptables-restore можно "​привязать"​ к интерфейсу eth0 +  * Настроить NAT на два ISP ([[Сервисы Gateway и routing#​Использование iproute2 для управления выбором ISP]]) 
-  * Преподавателю продемонстрировать ​PBR в "​ручном"​ режиме ([[Сервисы Gateway и routing#​NetFilter iproute2 (Linux)]])+  * PBR в "​ручном"​ режиме ([[Сервисы Gateway и routing#​NetFilter iproute2 (Linux)]])
  
  
Line 465: Line 469:
 node2# tracepath ya.ru node2# tracepath ya.ru
  
-windows> tracert ya.ru+windows> tracert ​-d ya.ru
  
 nodeN# cat select_isp.sh nodeN# cat select_isp.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
- 
-TESTIP=1.1.1.1 
  
 ip a | grep -q '​192.168.*254'​ || exit 0 ip a | grep -q '​192.168.*254'​ || exit 0
 +
 +TESTIP=1.1.1.1
  
 ISP=''​ ISP=''​
Line 563: Line 567:
 www       ​A ​      ​192.168.X.10 www       ​A ​      ​192.168.X.10
 </​code><​code>​ </​code><​code>​
 +node1# named-checkconf -z
 +
 node1# csync2 -xv node1# csync2 -xv
 </​code>​ </​code>​
Line 571: Line 577:
   * Использование [[Сервис Ansible]] для автоматизации задач (финальные работы 8.1 и 8.2 выполнить утром 3-го дня)   * Использование [[Сервис Ansible]] для автоматизации задач (финальные работы 8.1 и 8.2 выполнить утром 3-го дня)
   * Устанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])   * Устанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])
-  * Создаем тестовую www страницу для пользователя user1 используя протокол ftp на node1+  * Копируем любые файлы, подключаясь user1 по протоколу протокол ftp на node1
  
 <​code>​ <​code>​
Line 580: Line 586:
 Каталог:​ public_html Каталог:​ public_html
  
-В Браузере:​ http://​node1/​~user1+В Браузере:​ http://​node1.corpX.un/~user1
 </​code>​ </​code>​
  
Line 626: Line 632:
 </​code><​code>​ </​code><​code>​
 ... ...
-* * * * * ps ax | grep -v grep | grep -q 'proftpd: (accepting connections)'​ && /​usr/​bin/​rsync -az --delete /home/ nodeM:/​home/​+* * * * * ps ax | grep -q '[p]roftpd: (accepting connections)'​ && /​usr/​bin/​rsync -az --delete /home/ nodeM:/​home/​
 </​code>​ </​code>​
 ==== Вопросы ==== ==== Вопросы ====
Line 663: Line 669:
  
   * Pacemaker [[Пакет Pacemaker#​Удаление ресурсов]]   * Pacemaker [[Пакет Pacemaker#​Удаление ресурсов]]
 +  * Pacemaker [[Пакет Pacemaker#​Управление конфигурацией]] (уменьшение вероятности split-brain)
   * [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1) ​   * [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1) ​
   * Можно показать на отдельном стенде [[Решение DRBD#​Конфигурация с двумя primaries]]   * Можно показать на отдельном стенде [[Решение DRBD#​Конфигурация с двумя primaries]]
Line 676: Line 683:
 fs        A       ​192.168.X.20 fs        A       ​192.168.X.20
 </​code><​code>​ </​code><​code>​
 +node1# named-checkconf -z
 +
 node1# csync2 -xv node1# csync2 -xv
 </​code>​ </​code>​
Line 721: Line 730:
  
 <​code>​ <​code>​
-master# watch cat /proc/drbd+slave# watch cat /proc/drbd
  
-master# crm_mon+slave# crm_mon
 </​code>​ </​code>​
  
Line 729: Line 738:
   * Запускаем бывший MASTER узел и дожидаемся восстановления целостности зеркала   * Запускаем бывший MASTER узел и дожидаемся восстановления целостности зеркала
  
-  * !!! (Лучше после демонстрации SplitBrain) Останавливаем группу ресурсов кластера и [[Пакет Pacemaker#​Удаление ресурсов]]+  * !!! (Лучше после демонстрации SplitBrain ​в конце лабораторной работы 7.1.1) Останавливаем группу ресурсов кластера и [[Пакет Pacemaker#​Удаление ресурсов]]
 <​code>​ <​code>​
 master# crm resource stop pr_srv_smbd pr_ip_smbd master# crm resource stop pr_srv_smbd pr_ip_smbd
Line 766: Line 775:
 @         ​MX ​ 10  server1 @         ​MX ​ 10  server1
 </​code><​code>​ </​code><​code>​
 +node1# named-checkconf -z
 +
 node1# csync2 -xv node1# csync2 -xv
 </​code>​ </​code>​
Line 784: Line 795:
  
         bridge_ports eth0         bridge_ports eth0
-        #bridge_hw 08:00:27:12:34:0N  #if generate same mac on nodes (Debian11)+        #bridge_hw 08:00:27:23:45:0N  #if generate same mac on nodes (Debian11/12)
  
         address 192.168.X.N         address 192.168.X.N
Line 820: Line 831:
   * [[Технология LXC#​Установка и настройка lxc]] на обоих узлах   * [[Технология LXC#​Установка и настройка lxc]] на обоих узлах
   * Готовимся все, относящееся к виртуальным системам,​ хранить на зеркалируемом разделе   * Готовимся все, относящееся к виртуальным системам,​ хранить на зеркалируемом разделе
 +  * [[https://​www.claudiokuenzler.com/​blog/​1206/​debian-bullseye-11.3-lxc-container-static-ip-config-not-working|LXC containers with static IP in config not working anymore after Debian Bullseye 11.3 update]]
  
 <​code>​ <​code>​
Line 827: Line 839:
 </​code>​ </​code>​
  
-  * Создание ветки дочерней системы/​шаблона+  * Создание ветки дочерней системы/​шаблона ​(в большой группе занимает 5 минут, попробовать настроить proxy через [[Переменные окружения]])
   ​   ​
 <​code>​ <​code>​
 root@node1.corpX.un:​~#​ mkdir -p /​disk2/​var/​lib/​lxc/​ root@node1.corpX.un:​~#​ mkdir -p /​disk2/​var/​lib/​lxc/​
  
-root@node1.corpX.un:​~# lxc-create -t download -n server-template -- --no-validate ​-d ubuntu -r focal -a amd64+node1_ubuntu# lxc-create -t download -n server-template -- -d ubuntu -r focal -a amd64 
 + 
 +node1_debian#​ lxc-create -t debian -n server-template
 </​code>​ </​code>​
  
Line 844: Line 858:
 server-template:/#​ apt update server-template:/#​ apt update
  
-server-template:/#​ apt purge netplan.io+server-template:/#​ apt purge netplan.io ​isc-dhcp-client
  
-server-template:/#​ apt install nano ssh+server-template:/#​ apt install nano ssh iputils-ping
 </​code>​ </​code>​
  
-  * !!! Методическая рекомендация - запустить процесс установки Ceph (лабораторная работа 8.3)+  * !!! Методическая рекомендация - запустить процесс установки Ceph (лабораторная работа 8.3) настроив proxy через [[Переменные окружения]] и [[Сервис Ansible#​Использование модулей]] Ansible
  
   * Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе/​шаблоне   * Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе/​шаблоне
Line 870: Line 884:
 </​code><​code>​ </​code><​code>​
 server-template:/#​ passwd ubuntu server-template:/#​ passwd ubuntu
 +  или
 +server-template:/#​ useradd -m -s /bin/bash -G sudo student
 +server-template:/#​ passwd student
 </​code>​ </​code>​
 Ctrl-D Ctrl-D
Line 925: Line 942:
  
 <​code>​ <​code>​
-primitive pr_lxc_server1 systemd:​lxc@server1 meta resource-stickiness=100+#primitive pr_lxc_server1 systemd:​lxc@server1 meta resource-stickiness=100 
 +primitive pr_lxc_server1 systemd:​lxc@server1
  
 group gr_fs_lxc pr_fs_r0 pr_lxc_server1 group gr_fs_lxc pr_fs_r0 pr_lxc_server1
Line 938: Line 956:
  
 server1# apt install ansible git server1# apt install ansible git
-</​code>​ 
  
-  * Сервис Git [[Сервис Git#Клонирование и обновление локального репозитория из сетевого]]+server1git clone http://​val.bmstu.ru/​unix/​conf.git
  
-<​code>​ 
 server1# ansible-playbook conf/​ansible/​roles/​mail.yml server1# ansible-playbook conf/​ansible/​roles/​mail.yml
 </​code>​ </​code>​
- 
  
   * Roundcube http://​server1.corpX.un/​mail   * Roundcube http://​server1.corpX.un/​mail
-  * [[Thunderbird]] 
  
 <​code>​ <​code>​
 +node1# crm configure delete location cli-prefer-pr_fs_r0
 +
 node1# crm resource move gr_fs_lxc node2 node1# crm resource move gr_fs_lxc node2
 </​code>​ </​code>​
Line 960: Line 976:
  
   - Настройка IP на node3-7, [[Сервис Ansible#​Настройка групп управляемых систем]],​ [[Сервис Ansible#​Настройка транспорта ssh]] и [[Сервис Ansible#​Использование модулей]] Ansible для тестирования связи с ними   - Настройка IP на node3-7, [[Сервис Ansible#​Настройка групп управляемых систем]],​ [[Сервис Ansible#​Настройка транспорта ssh]] и [[Сервис Ansible#​Использование модулей]] Ansible для тестирования связи с ними
-  - [[Сервис Ansible#​Использование ролей]] Ansible для настройки файлов конфигурации сети на node3-7 +  - [[Сервис Ansible#​Использование ролей]] Ansible для настройки файлов конфигурации сети на node3-7  
-  - [[Сервис Ansible#​Использование модулей]] Ansible для инсталляции Ceph на node3-7+  - [[Сервис Ansible#​Использование модулей]] Ansible для инсталляции Ceph на node3-7 ​(в большой группе ставится 45 минут)
   - [[Ceph - просто добавь узлов!#​Шаг 2. Установка и настройка Ceph]] сразу добавить 6-й узел как OSD   - [[Ceph - просто добавь узлов!#​Шаг 2. Установка и настройка Ceph]] сразу добавить 6-й узел как OSD
   - [[Сервис iSCSI#iSCSI initiator]]   - [[Сервис iSCSI#iSCSI initiator]]
Line 968: Line 984:
 ===== Модуль 9. Кластерная файловая система OCFS2 ===== ===== Модуль 9. Кластерная файловая система OCFS2 =====
  
 +  * !!! Методическая рекомендация - СРАЗУ после установки пакетов для ocfs запустить процесс установки пакетов для kvm
   * [[Сервис OCFS2]]   * [[Сервис OCFS2]]
  
-===== Модуль 10. Система визуализации KVM =====+===== Модуль 10. Система виртуализации KVM =====
  
   * Методическая рекомендация - выключить win10 clientN (конфликт имен и путаница с ip адресами)   * Методическая рекомендация - выключить win10 clientN (конфликт имен и путаница с ip адресами)
-  * [[Технология KVM]]+  ​* Проверить,​ включена ли [[Технология VirtualBox#​Вложенная виртуализация]] в VirtualBox 
 +  ​* [[Технология KVM]] (в большой группе ставится 10 минут)
  
 ===== Модуль 11. Тестирование отказоустойчивости ===== ===== Модуль 11. Тестирование отказоустойчивости =====
  
   - Переместить все ресурсы на node1, обесточить его и убедиться что все ресурсы (winxp1 и server1) запустились на node2 (на winxp1 может начаться проверка диска)   - Переместить все ресурсы на node1, обесточить его и убедиться что все ресурсы (winxp1 и server1) запустились на node2 (на winxp1 может начаться проверка диска)
-  - Остановить/​запустить node2 (рекомендуется сперва корректно остановить winxp1), убедиться что все ресурсы (winxp1 и server1) запускается+  - Остановить node2 (рекомендуется сперва корректно остановить winxp1) 
 +  - запустить node2, убедиться что все ресурсы (winxp1 и server1) запустились (можно node1 и проверить письмо про splitbrain) 
   - Выяснить,​ через какой узел подключается [[Сервис multipath]] на node2 по iSCSI к RBD Ceph   - Выяснить,​ через какой узел подключается [[Сервис multipath]] на node2 по iSCSI к RBD Ceph
   - Выполнить для этого узла [[Ceph - просто добавь узлов!#​Шаг 4. Сценарий - авария узла]]   - Выполнить для этого узла [[Ceph - просто добавь узлов!#​Шаг 4. Сценарий - авария узла]]
создание_отказоустойчивых_linux_решений.txt · Last modified: 2024/06/04 16:16 by val