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_решений [2021/12/10 14:59]
val [Настройка виртуальной системы как сервер электронной почты]
создание_отказоустойчивых_linux_решений [2023/10/04 15:10]
val [Лабораторные работы]
Line 4: Line 4:
  
   * [[http://​www.specialist.ru/​course/​un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]]   * [[http://​www.specialist.ru/​course/​un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]]
- 
-===== Ссылка на вебинар ===== 
  
  
Line 11: Line 9:
  
   * Научиться настраивать отказоустойчивую конфигурацию сервисов Linux на "​железном"​ оборудовании в сети предприятия.   * Научиться настраивать отказоустойчивую конфигурацию сервисов Linux на "​железном"​ оборудовании в сети предприятия.
 +
  
 ===== Модуль 0. Подготовка стенда в классе ===== ===== Модуль 0. Подготовка стенда в классе =====
Line 20: Line 19:
   * Записать логин пароль и IP (сообщить преподавателю) рабочей станции   * Записать логин пароль и IP (сообщить преподавателю) рабочей станции
   * Проверить наличие дистрибутивов и образов   * Проверить наличие дистрибутивов и образов
 +
 +
 +
  
 ===== Модуль 1. Развертывание систем и сети кластера ===== ===== Модуль 1. Развертывание систем и сети кластера =====
Line 28: Line 30:
   * [[https://​ru.wikipedia.org/​wiki/​%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D0%BE%D1%83%D1%81%D1%82%D0%BE%D0%B9%D1%87%D0%B8%D0%B2%D1%8B%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80|Отказоустойчивый кластер]]   * [[https://​ru.wikipedia.org/​wiki/​%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D0%BE%D1%83%D1%81%D1%82%D0%BE%D0%B9%D1%87%D0%B8%D0%B2%D1%8B%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80|Отказоустойчивый кластер]]
   * [[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://​ru.wikipedia.org/​wiki/​VRRP|VRRP]]
  
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-=== 1.Импорт VM Linux ===+=== 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.Аппаратная настройка систем ===+=== 1.Аппаратная настройка систем ​node1 и node2 ===
  
-  * Адаптер 1 - eth0 - Внутренняя ​сеть (LAN) +  * Адаптер 1 - eth0 - Виртуальный адаптер хоста (LAN) 
-  * Адаптер 2 - eth1 - Сетевой мост (ISP1) +  * Адаптер 2 - eth1 - Сетевой мост (ISP1) только для node1 и node2 
-  * Адаптер 3 - eth2 - Сетевой мост (класс) +  * 2, а если ​есть возможность, 4 Gb RAM
-  * Адаптер 4 - eth3 - Сетевой мост ​(ISP2)+
   * Жесткий диск размер 4G уже добавлен   * Жесткий диск размер 4G уже добавлен
  
-=== 1.2 Настройка сети систем ​===+=== 1.3 Импорт VM Windows ​===
  
-  * Методическая рекомендация настроить только первый узел (node1). Второй узел настроить в следующем модуле.+=== 1.4 Исходная настройка сети шлюза ===
  
 <​code>​ <​code>​
-node1ifconfig eth2 inet 10.5.5.100+X/​24+ubuntush net_gate.sh
  
-nodeNcat /​etc/​hostname +ubuntuinit 6 
-</​code>​<​code>​ +</​code>​
-nodeN.corpX.un +
-</​code><​code>​ +
-nodeN# cat /​etc/​hosts +
-</​code><​code>​ +
-127.0.0.1 ​              ​localhost+
  
-192.168.X.1 ​            ​node1.corpX.un node1 +  * PuTTY !!!
-192.168.X.2 ​            ​node2.corpX.un node2+
  
-10.5.5.254 ​             proxy +<​code>​ 
-</​code>​<​code>​ +gatesh conf/dhcp.sh 
-nodeNcat /etc/resolv.conf +</​code>​ 
-</​code><​code>​ + 
-search corpX.un +=== 1.5 Тестирование сети === 
-nameserver 192.168.X.1 +<​code>​ 
-nameserver 192.168.X.2 +windows> ping 1.1.1.1 
-</​code><​code>​ +</​code>​ 
-nodeN# cat /​etc/​network/​interfaces+ 
 +=== 1.6 Подготовка отказоустойчивой конфигурации === 
 + 
 +  * [[Сервис Keepalived]] (сервис не перезапускать!) 
 + 
 +<​code>​ 
 +gate# cat /​etc/​network/​interfaces
 </​code><​code>​ </​code><​code>​
 auto lo auto lo
Line 88: Line 97:
 auto eth0 auto eth0
 iface eth0 inet static iface eth0 inet static
-        address 192.168.X.N+        address 192.168.X.1
         netmask 255.255.255.0         netmask 255.255.255.0
  
Line 95: Line 104:
         up ip link set eth1 up         up ip link set eth1 up
  
-auto eth2 +#auto eth2 
-iface eth2 inet static +#iface eth2 inet manual 
-        address 10.5.5.N*100+X +       up ip link set eth2 up 
-        netmask 255.255.255.0 +</​code>​ 
- +<​code>​ 
-auto eth3 +gate# cat /​etc/​hostname
-iface eth3 inet manual +
-        up ip link set eth3 up+
 </​code><​code>​ </​code><​code>​
-nodeN# cat /etc/sysctl.conf+node1.corpX.un
 </​code><​code>​ </​code><​code>​
-... +gate# cat /etc/hosts
-net.ipv4.ip_forward=1 +
-...+
 </​code><​code>​ </​code><​code>​
-nodeN# cat .bashrc+127.0.0.1               ​localhost 
 + 
 +192.168.X.1 ​            ​node1.corpX.un node1 
 +192.168.X.2 ​            ​node2.corpX.un node2
 </​code><​code>​ </​code><​code>​
-... +gate# init 6
-export http_proxy=http://​proxy:​3128/​ +
-... +
-</​code><​code>​ +
-nodeN# init 6+
 </​code>​ </​code>​
  
- +=== 1.Тестирование сети ===
-=== 1.Тестирование ​настроек ​сети ===+
 <​code>​ <​code>​
-nodeN# ping proxy+node1# ping ya.ru
  
-nodeN# apt update+windows> ping 1.1.1.1
 </​code>​ </​code>​
  
Line 137: Line 140:
 ==== Теория ==== ==== Теория ====
  
-  * [[http://habrahabr.ru/tag/csync2/|csync2 или как облегчить работу с кластером]]+  * [[https://habr.com/en/post/120702/|csync2 или как облегчить работу с кластером]]
   * [[https://​ru.wikipedia.org/​wiki/​Ansible|Ansible]]   * [[https://​ru.wikipedia.org/​wiki/​Ansible|Ansible]]
  
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-=== 2.1 С использованием сервиса SSH ===+=== 2.1 Запуск node2 === 
 + 
 +=== 2.2 Синхронизация с использованием сервиса SSH ===
  
   * Настройка доступа по протоколу ssh пользователя root с node1 на node2 ([[Сервис SSH#​Разрешение доступа пользователя root на основании адреса клиента]])   * Настройка доступа по протоколу ssh пользователя root с node1 на node2 ([[Сервис SSH#​Разрешение доступа пользователя root на основании адреса клиента]])
Line 163: Line 168:
  
 <​code>​ <​code>​
-node1# ​ssh node2 hostname +node1# ​
 scp /etc/hosts node2:/etc/ scp /etc/hosts node2:/etc/
-scp /​etc/​resolv.conf node2:/etc/ 
-scp /​etc/​sysctl.conf node2:/etc/ 
-scp .bashrc node2: 
 scp /​etc/​hostname node2:/etc/ scp /​etc/​hostname node2:/etc/
 scp /​etc/​network/​interfaces node2:/​etc/​network/​ scp /​etc/​network/​interfaces node2:/​etc/​network/​
  
 +node1# ssh node2 route add default gw 192.168.X.254
  
 +node1# ssh node2 apt update
 +node1# ssh node2 apt install keepalived
 +
 +scp /​etc/​keepalived/​keepalived.conf node2:/​etc/​keepalived/​keepalived.conf
 +scp /​usr/​local/​bin/​vrrp.sh node2:/​usr/​local/​bin/​vrrp.sh
 </​code>​ </​code>​
  
-  * Павим файлы конфигурации на node2, перезапускаем,​ тестируем сеть+  * Правим файлы конфигурации на node2, перезапускаем,​ тестируем сеть 
 + 
 +<​code>​ 
 +node1# ssh node2 
 + 
 +ubuntu# cat /​etc/​hostname 
 +</​code><​code>​ 
 +node2.corpX.un 
 +</​code><​code>​ 
 +node2# cat /​etc/​network/​interfaces 
 +</​code><​code>​ 
 +... 
 +        address 192.168.X.2 
 +... 
 +</​code><​code>​ 
 +node2# cat /​etc/​keepalived/​keepalived.conf 
 +</​code><​code>​ 
 +... 
 +#    state MASTER 
 +    state BACKUP 
 +... 
 +</​code><​code>​ 
 +node2# init 6 
 +</​code>​ 
 + 
 +=== 2.3 Использование BASH алиасов и функций для удобства === 
   * [[Настройка командных интерпретаторов#​bash]] алиасы и функции   * [[Настройка командных интерпретаторов#​bash]] алиасы и функции
  
-=== 2.С использованием пакета CSYNC2 ===+<​code>​ 
 +node1# scn2 /​etc/​sysctl.conf 
 + 
 +node1# ssn2 sysctl -f 
 +</​code>​ 
 +  или 
 +<​code>​ 
 +node1# scn2 /​etc/​sysctl.d/​20-my-forward.conf 
 + 
 +node1# ssn2 sysctl -p --system 
 +</​code>​ 
 +=== 2.Синхронизация с использованием пакета CSYNC2 ===
  
 **Сценарий:​** настроить DNS на node1, на node2 конфигурация появится автоматически ​ **Сценарий:​** настроить DNS на node1, на node2 конфигурация появится автоматически ​
  
-  * [[Финальная настройка DNS сервера]] ​+  * [[Финальная настройка DNS сервера]] ​(как это было на "​ЛИН СЕРВ"​)
   * Устанавливаем и ЗАПУСКАЕМ на двух узлаx, настраиваем на node1   * Устанавливаем и ЗАПУСКАЕМ на двух узлаx, настраиваем на node1
 <​code>​ <​code>​
Line 202: Line 246:
 gate      A       ​192.168.X.254 gate      A       ​192.168.X.254
 </​code><​code>​ </​code><​code>​
-node1# ​ssn2 apt update+node1# ​named-checkconf -z
  
 node1# ssn2 apt install bind9 node1# ssn2 apt install bind9
Line 212: Line 256:
 <​code>​ <​code>​
 node1# csync2 -xv node1# csync2 -xv
- 
-nodeN# host ns node1 
-nodeN# host ns node2 
 </​code>​ </​code>​
-=== 2.С использованием пакета Ansible ===+<​code>​ 
 +node1# host ns node1 
 +node1# host ns node2 
 +</​code>​ 
 +<​code>​ 
 +nodeN# cat /​etc/​resolv.conf 
 +</​code><​code>​ 
 +search corpX.un 
 +nameserver 192.168.X.1 
 +nameserver 192.168.X.2 
 +</​code><​code>​ 
 +nodeN# host ns  
 +</​code>​ 
 + 
 +=== 2.Синхронизация с использованием пакета Ansible ===
  
 **Сценарий:​** на обоих узлах создаем пользователя user1 с uid=10001 **Сценарий:​** на обоих узлах создаем пользователя user1 с uid=10001
Line 239: Line 294:
   * man dhcpd.conf (DHCP FAILOVER)   * man dhcpd.conf (DHCP FAILOVER)
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
- 
-=== 3.0 Импорт VM Windows === 
  
 === 3.1 Отказоустойчивый DHCP сервер === === 3.1 Отказоустойчивый DHCP сервер ===
Line 246: Line 299:
   * [[Сервис DHCP#​Установка]] cервиса DHCP   * [[Сервис DHCP#​Установка]] cервиса DHCP
 <​code>​ <​code>​
-nodeN# sh conf/​dhcp.sh+node2# sh conf/​dhcp.sh
 </​code>​ </​code>​
  
Line 253: Line 306:
   * [[Сервис DHCP#​Мониторинг выданных адресов]] cервиса DHCP   * [[Сервис DHCP#​Мониторинг выданных адресов]] cервиса DHCP
    
-Примечания: +Примечание: в первый момент необходимо запустить оба сервера чтобы они синхронизировались.
- +
-  * В качестве шлюза указан не существующий ip адрес 192.168.X.254,​ он будет назначаться в следующей лабораторной работе. +
-  * В первый момент необходимо запустить оба сервера чтобы они синхронизировались.+
  
 === 3.2 Проверка === === 3.2 Проверка ===
  
-  * Добавляем в стенд Windows client1, ​останавливаем по очереди узлыперезагружаем client1. Должен выдаваться ​один и тот же адрес (можно ​отключать интерфейс Windows или ipconfig /release ../renew)+  * !!! Тестирование отказоустойчивости выполнить ​в лабораторной работе ​4.2
  
-=== 3.3 Отладка === 
-  
 <​code>​ <​code>​
-# ntpdate -u proxy+windows> ipconfig /release
  
-# grep dhcp /var/log/syslog+windows> ipconfig ​/renew 
 + 
 +windows> ipconfig ​/all 
 + 
 +windows> ping ya.ru
 </​code>​ </​code>​
 +
 ==== Вопросы ==== ==== Вопросы ====
  
Line 280: Line 333:
 ==== Теория ==== ==== Теория ====
  
 +  * [[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/​Iproute2|Iproute2]]   * [[https://​ru.wikipedia.org/​wiki/​Iproute2|Iproute2]]
Line 288: Line 342:
  
   * [[Протокол CARP]]   * [[Протокол CARP]]
-  * [[Протокол VRRP]] и [[Сервис Keepalived]] ​+  * [[Сервис Keepalived]] ​
  
 <​code>​ <​code>​
-C:\>ping gate+windows> ping gate
 </​code>​ </​code>​
 ==== 4.2 Отказоустойчивый nat ==== ==== 4.2 Отказоустойчивый nat ====
- 
-**Сценарий**:​ 
  
   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])
-  * Модифицировать ​скрипты up и down с целью назначения/​удаления реального ​адреса ISP на внешнем интерфейсе и указания маршрута по умолчанию через провайдера для мастер узла ​и через мастер узел ​для резервного.+  * После ​этого ​**преподавателю** отключить маршруты в локальные сети стендов
  
-<​code>​ +  * !!! Либо протестировать отказоустойчивый шлюз с одним провайдером на этом этапе, либо совместить с выполнением лабораторной работы 4.3.1 
-nodeN# apt install fake+==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ====
  
-nodeN# cat /​usr/​share/​ucarp/​vip-up +  * Дополнительная лабораторная работа
-</​code><​code>​ +
-#!/bin/sh+
  
-/sbin/ifup $1:ucarp+=== 4.3.Добавление сетевых карт для подключения к ISP2 ===
  
-ip addr add 172.16.1.X/​24 dev eth1 +<​code>​ 
-send_arp 172.16.1.X `cat /sys/class/net/​eth1/​address` 172.16.1.254 ff:​ff:​ff:​ff:​ff:​ff eth1 +root@nodeN:​~# cat /etc/network/interfaces
- +
-ip route delete default +
-ip route add default via 172.16.1.254+
 </​code><​code>​ </​code><​code>​
-nodeN# cat /​usr/​share/​ucarp/​vip-down +... 
-</​code><​code>​ +auto eth2 
-#!/bin/sh +iface eth2 inet manual 
- +        up ip link set eth2 up
-/​sbin/​ifdown $1:ucarp +
- +
-ip addr del 172.16.1.X/24 dev eth1 +
-ip route add default via 192.168.X.254+
 </​code>​ </​code>​
  
-  ​* [[Сигналы#Отправка сигнала]]+   * [[Сервис Keepalived]] - добавляем eth2 
 +   * По очереди останавливаем узлы ​и добавляем Адаптер 3 - eth2 - Сетевой мост (ISP2)
  
 <​code>​ <​code>​
-masternode# killall -USR2 ucarp +nodeN# ip a | grep eth2
-или +
-masternode# init 6 +
-</​code>​ +
-==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ==== +
- +
-=== 4.3.1 Добавление сетевых карт для подключения к ISP2 === +
- +
-  * eth3 isp2              bridge to nic 172.16.2/​24 +
- +
-<​code>​ +
-root@nodeN:~cat /​etc/​network/​interfaces +
-</​code><​code>​ +
-... +
-auto eth3 +
-iface eth3 inet manual +
-        up ip link set eth3 up+
 </​code>​ </​code>​
  
Line 361: Line 389:
 </​code>​ </​code>​
  
-=== 4.3.3 Подключение шлюзов и тестирование ISP2 ===+=== 4.3.3 Тестирование ISP2 ===
  
 <​code>​ <​code>​
-nodeNcat /​usr/​share/​ucarp/​vip-up +node1# ip a | grep 172.16.2
-</​code><​code>​ +
-#!/bin/sh +
-... +
-ip addr add 172.16.2.X/24 dev eth3 +
-# send_arp 172.16.2.X `cat /​sys/​class/​net/​eth3/​address` 172.16.2.254 ff:​ff:​ff:​ff:​ff:​ff eth3 +
-... +
-ip route delete default +
-#ip route add default via 172.16.1.254 +
-</​code><​code>​ +
-nodeN# cat /​usr/​share/​ucarp/​vip-down +
-</​code><​code>​ +
-... +
-ip addr del 172.16.2.X/​24 dev eth3 +
-... +
-</​code><​code>​ +
-masternode# killall -USR2 ucarp +
-... +
-masternode# grep carp /​var/​log/​syslog+
  
-masternodeip a | grep 172.16.2 +node1ping 172.16.2.254 
-</​code>​ + 
-  * [[Настройка сети в Linux]] +node1# ip route del default 
-<​code>​ +node1ip route add default via 172.16.2.254
-masternodeping 172.16.2.254+
  
-masternodeip route add default via 172.16.2.254+node1ping ya.ru
  
-masternodeping ya.ru+node1tracepath ​ya.ru
  
-masternode# ip route delete ​default+node1# ip route del default
 </​code>​ </​code>​
  
Line 406: Line 415:
  
 === 4.3.5 Автоматизация балансировки/​отказоустойчивости выбора ISP === === 4.3.5 Автоматизация балансировки/​отказоустойчивости выбора ISP ===
 +
 +  * [[Сервис Keepalived]] - добавляем таблицы 101 и 102
  
 <​code>​ <​code>​
-nodeNcat /​usr/​share/​ucarp/​vip-up +node1# ip route show table 101
-</​code><​code>​ +
-... +
-ip route add default via 172.16.1.254 ​table 101 +
-ip route add default via 172.16.2.254 table 102+
  
-#### /​root/​select_isp.sh +node1ip route show table 102
-</​code><​code>​ +
-masternode# killall -USR2 ucarp +
-... +
-masternode# grep carp /​var/​log/​syslog+
  
-masternode# ip route show table all | grep 'table 10[12]'​ +nodeN# cat set_isp.sh
-</​code><​code>​ +
-# cat set_isp.sh+
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Line 431: Line 432:
                 while ip rule del from any table 101;do true;done                 while ip rule del from any table 101;do true;done
                 while ip rule del from any table 102;do true;done                 while ip rule del from any table 102;do true;done
 +                ip route delete default
  
                 ip rule add from 192.168.X.0/​24 table 101                 ip rule add from 192.168.X.0/​24 table 101
                 ip rule add from 192.168/16 to 192.168/16 table main                 ip rule add from 192.168/16 to 192.168/16 table main
 +
 +                ip route add default via 172.16.1.254
  
                 /sbin/ip route flush cache                 /sbin/ip route flush cache
Line 442: Line 446:
                 while ip rule del from any table 101;do true;done                 while ip rule del from any table 101;do true;done
                 while ip rule del from any table 102;do true;done                 while ip rule del from any table 102;do true;done
 +                ip route delete default
  
                 ip rule add from 192.168.X.0/​24 table 102                 ip rule add from 192.168.X.0/​24 table 102
                 ip rule add from 192.168/16 to 192.168/16 table main                 ip rule add from 192.168/16 to 192.168/16 table main
 +
 +                ip route add default via 172.16.2.254
  
                 /sbin/ip route flush cache                 /sbin/ip route flush cache
Line 453: Line 460:
                 while ip rule del from any table 101;do true;done                 while ip rule del from any table 101;do true;done
                 while ip rule del from any table 102;do true;done                 while ip rule del from any table 102;do true;done
 +                ip route delete default
  
                 ip rule add from 192.168.X.0/​25 table 101                 ip rule add from 192.168.X.0/​25 table 101
                 ip rule add from 192.168.X.128/​25 table 102                 ip rule add from 192.168.X.128/​25 table 102
                 ip rule add from 192.168/16 to 192.168/16 table main                 ip rule add from 192.168/16 to 192.168/16 table main
 +
 +                ip route add default via 172.16.1.254
 +                #ip route add default via 172.16.2.254 ​
  
                 /sbin/ip route flush cache                 /sbin/ip route flush cache
Line 465: Line 476:
 nodeN# chmod +x set_isp.sh nodeN# chmod +x set_isp.sh
  
-masternodegrep carp /var/log/syslog+node1# /root/set_isp.sh ISP1ISP2
  
-masternode/​root/​set_isp.sh ISP1ISP2+node1ip rule show
  
-masternodeip rule show+node2tracepath ya.ru
  
-backupnode# traceroute -n ya.ru +windows> tracert ​-d ya.ru
- +
-C:​\Users\student>tracert ya.ru+
  
 nodeN# cat select_isp.sh nodeN# cat select_isp.sh
Line 481: Line 490:
 ip a | grep -q '​192.168.*254'​ || exit 0 ip a | grep -q '​192.168.*254'​ || exit 0
  
-ip route delete default+TESTIP=1.1.1.1
  
 ISP=''​ ISP=''​
  
-ip route add default ​via 172.16.1.254 +ip route del $TESTIP 
- +ip route add $TESTIP ​via 172.16.1.254 
-ping -c3 ya.ru && ISP=ISP1 +ping -c3 $TESTIP ​&& ISP=ISP1
- +
-ip route delete default +
- +
-ip route add default via 172.16.2.254+
  
-ping -c3 ya.ru && ISP=${ISP}ISP2+ip route del $TESTIP 
 +ip route add $TESTIP via 172.16.2.254 
 +ping -c3 $TESTIP ​&& ISP=${ISP}ISP2
  
-ip route delete default+ip route del $TESTIP
  
 echo $ISP echo $ISP
Line 506: Line 513:
  
 /​root/​set_isp.sh $ISP /​root/​set_isp.sh $ISP
 +
 </​code><​code>​ </​code><​code>​
 nodeN# chmod +x select_isp.sh nodeN# chmod +x select_isp.sh
  
-masternode# /​root/​select_isp.sh+node1# /​root/​select_isp.sh
  
-masternode# cat /​tmp/​current_isp+node1# cat /​tmp/​current_isp
  
 nodeN# crontab -l nodeN# crontab -l
Line 518: Line 526:
 </​code>​ </​code>​
 <​code>​ <​code>​
-master_node#​ ip route show table 101 
- 
-master_node#​ ip route show table 102 
- 
 master_node#​ ip rule show master_node#​ ip rule show
 </​code>​ </​code>​
Line 530: Line 534:
   - Для какой операционной системы впервые появилась реализация протокола CARP?   - Для какой операционной системы впервые появилась реализация протокола CARP?
   - Какая утилита из набора iproute2 позволяет назначить/​удалить IP адрес на интерфейсе?​   - Какая утилита из набора iproute2 позволяет назначить/​удалить IP адрес на интерфейсе?​
-  - В чем отличие поведения мастер хоста от других в протоколе CARP? +  - В чем отличие поведения мастер хоста от других в протоколе CARP/VRRP
-  - Поддерживает ли протокол CARP отказоустойчивость соединений?​ +  - Поддерживает ли протокол CARP/VRRP отказоустойчивость соединений?​ 
-  - Поддерживает ли протокол CARP балансировку нагрузки?​+  - Поддерживает ли протокол CARP/VRRP балансировку нагрузки?​
   - Что такое ucarp?   - Что такое ucarp?
   - В каком пакете в Debian содержатся современные сетевые утилиты,​ пришедшие на смену классическим UNIX утилитам ifconfig, route, arp, netstat?   - В каком пакете в Debian содержатся современные сетевые утилиты,​ пришедшие на смену классическим UNIX утилитам ifconfig, route, arp, netstat?
Line 558: Line 562:
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-Сценарий:​ отказоустойчивый www хостинг или web хранилище пользовательских файлов+Сценарий:​ отказоустойчивое ftp хранилище пользовательских файлов ​с web доступом
  
   * Содержимое домашних каталогов мастер сервера периодически копируется на резервный. ​   * Содержимое домашних каталогов мастер сервера периодически копируется на резервный. ​
Line 574: Line 578:
 </​code><​code>​ </​code><​code>​
 ... ...
-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 582: Line 588:
   * На обоих узлах создаем пользователя user1 с uid=10001 ([[Управление учетными записями в Linux]]) (можно через Ansible)   * На обоих узлах создаем пользователя user1 с uid=10001 ([[Управление учетными записями в Linux]]) (можно через Ansible)
   * На обоих узлах включаем [[Сервис HTTP#​Использование домашних каталогов]] (можно через Ansible)   * На обоих узлах включаем [[Сервис HTTP#​Использование домашних каталогов]] (можно через Ansible)
-  * [[Сервис Ansible]]+  * Использование ​[[Сервис Ansible]] ​для автоматизации задач (финальные работы 8.1 и 8.2 выполнить утром 3-го дня)
   * Устанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])   * Устанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])
-  * Создаем тестовую www страницу для пользователя user1 используя протокол ftp на node1+  * Копируем любые файлы, подключаясь user1 по протоколу протокол ftp на node1
  
 <​code>​ <​code>​
Line 592: Line 598:
  
 Каталог:​ public_html Каталог:​ public_html
-Файл: ​   index.html (Можно любой :) 
  
-В Браузере:​ http://​node1/​~user1+В Браузере:​ http://​node1.corpX.un/~user1
 </​code>​ </​code>​
  
Line 615: Line 620:
 debian11# systemctl disable proftpd debian11# systemctl disable proftpd
 </​code>​ </​code>​
- 
-  * Представим,​ что узлы соединены кросс кабелем через eth2 интерфейсы 
  
 === 5.2.2 Настройка менеджера кластера === === 5.2.2 Настройка менеджера кластера ===
Line 623: Line 626:
   * [[Пакет Corosync]]   * [[Пакет Corosync]]
   * [[Пакет Pacemaker]]   * [[Пакет Pacemaker]]
-  * [[Пакет PCS]]+  * [[Пакет PCS]] (сделать резервную копию /​etc/​corosync/​corosync.conf)
  
 <​code>​ <​code>​
Line 642: Line 645:
 </​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 673: Line 676:
 ==== 6.1 Развертывание распределенного RAID 1 ===== ==== 6.1 Развертывание распределенного RAID 1 =====
  
-  * Подключаем к обоим узлам по дополнительному диску ​(размер по умолчанию)+  * Подключаем к обоим узлам по дополнительному диску
   * [[Решение DRBD]]   * [[Решение DRBD]]
  
Line 679: Line 682:
  
   * Pacemaker [[Пакет Pacemaker#​Удаление ресурсов]]   * Pacemaker [[Пакет Pacemaker#​Удаление ресурсов]]
-  * [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1)+  ​* Pacemaker [[Пакет Pacemaker#​Управление конфигурацией]] (уменьшение вероятности split-brain) 
 +  ​* [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1) ​ 
 +  * Можно показать на отдельном стенде [[Решение DRBD#​Конфигурация с двумя primaries]]
  
-==== 6.3 Настройка SAN сервера iSCSI ==== +==== 6.3 Настройка NAS сервера SMB/CIFS ====
- +
-  * Демонстрирует преподаватель +
-  * Устанавливаем на оба узла пакет [[Сервис iSCSI#iSCSI target]] +
- +
-<​code>​ +
-nodeN# systemctl disable istgt +
- +
-node1# crm configure +
- +
-crm(live)configure#​ primitive pr_srv_istgt lsb:istgt +
- +
-crm(live)configure#​ primitive pr_ip_istgt ocf:​heartbeat:​IPaddr2 params ip=192.168.X.15 cidr_netmask=32 nic=eth0 +
- +
-crm(live)configure#​ group gr_ip_fs pr_fs_r0 pr_ip_istgt pr_srv_istgt +
- +
-crm(live)configure#​ commit +
-</​code>​ +
- +
-  * Настраиваем [[Сервис iSCSI#iSCSI initiator]] для Windows +
- +
-==== 6.4 Настройка NAS сервера SMB/CIFS ====+
  
   * В зону corpX.un добавляем запись fs A 192.168.X.20   * В зону corpX.un добавляем запись fs A 192.168.X.20
Line 710: Line 694:
 </​code><​code>​ </​code><​code>​
 ... ...
-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 719: Line 705:
  
 <​code>​ <​code>​
-root@nodeN:​~#​ service smbd stop +root@nodeN:​~#​ 
-root@nodeN:​~# ​service nmbd stop+ 
 +service smbd stop 
 +service nmbd stop 
 + 
 +systemctl disable smbd 
 +systemctl disable nmbd 
  
-root@nodeN:​~#​ systemctl disable smbd 
-root@nodeN:​~#​ systemctl disable nmbd 
 </​code>​ </​code>​
  
-  * Настраиваем на МАСТЕР ​узле [[Файловый сервер SAMBA#​Публичный каталог доступный на запись]] ​в каталоге /​disk2/​samba +  * Настраиваем на обоих ​узлах [[Файловый сервер SAMBA#​Публичный каталог доступный на запись]] 
-  * Копируем ​на BACKUP ​узел файл конфигурации samba+  * Создаем ​каталог /​disk2/​samba на мастер ​узле
   * Настраиваем менеджер кластера на монтирование на мастер узле зеркалируемого раздела в каталог /disk2, назначение ip адреса 192.168.X.20 и запуск сервера samba   * Настраиваем менеджер кластера на монтирование на мастер узле зеркалируемого раздела в каталог /disk2, назначение ip адреса 192.168.X.20 и запуск сервера samba
  
Line 738: Line 728:
  
 crm(live)configure#​ group gr_ip_fs pr_fs_r0 pr_ip_smbd pr_srv_smbd crm(live)configure#​ group gr_ip_fs pr_fs_r0 pr_ip_smbd pr_srv_smbd
 +
 +или
 +
 +crm(live)configure#​ group pr_fs_r0 pr_ip_smbd pr_srv_smbd
  
 или или
Line 749: Line 743:
  
 <​code>​ <​code>​
-master# cat /proc/drbd+slavewatch cat /proc/drbd
  
-master# crm_mon ​-1+slave# crm_mon
 </​code>​ </​code>​
  
Line 757: Line 751:
   * Запускаем бывший 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 784: Line 778:
 ==== 7.1 Linux Containers в зеркалируемом разделе ==== ==== 7.1 Linux Containers в зеркалируемом разделе ====
  
-  * В зону corpX.un добавляем запись ​server ​A 192.168.X.30+  * В зону corpX.un добавляем запись ​server1 ​A 192.168.X.31
  
 <​code>​ <​code>​
Line 790: Line 784:
 </​code><​code>​ </​code><​code>​
 ... ...
-server ​    A       ​192.168.X.30 +server1 ​  A       ​192.168.X.31 
-         MX  10  ​server+server2 ​  ​A ​      ​192.168.X.32 
 +        ​MX  10  ​server1
 </​code><​code>​ </​code><​code>​
 +node1# named-checkconf -z
 +
 node1# csync2 -xv node1# csync2 -xv
 </​code>​ </​code>​
Line 799: Line 796:
 === 7.1.1 Настройка bridge на узлах и сервисах === === 7.1.1 Настройка bridge на узлах и сервисах ===
  
-  * [[Технология LXC#​Подготовка сети]] для LXC +  * [[Технология LXC#​Подготовка сети]] для LXC на одной системе 
-  * Сервис CARP/[[Сервис Keepalived]] и bridge+
 <​code>​ <​code>​
 nodeN# apt install bridge-utils nodeN# apt install bridge-utils
Line 811: Line 808:
  
         bridge_ports eth0         bridge_ports eth0
-        #bridge_hw 08:​00:​27:​12:​34:​0N ​ #Debian11 ​generate same mac on nodes+        #bridge_hw 08:​00:​27:​12:​34:​0N ​ #if generate same mac on nodes (Debian11)
  
         address 192.168.X.N         address 192.168.X.N
-        ​netmask 255.255.255.0+        ...
         ​         ​
-... 
- 
-iface br0:ucarp inet static 
-        address 192.168.X.254 
-        netmask 255.255.255.255 
-... 
 </​code>​ </​code>​
  
 +  * [[Сервис Keepalived]] и bridge
   * Сервис DHCP и bridge   * Сервис DHCP и bridge
  
Line 839: Line 831:
  
 <​code>​ <​code>​
-nodeN# ​ps ax | grep carp+nodeN# ​ip a
  
-nodeN# ps ax | grep dhcp +node1# mount | egrep 'ext|ocfs'
- +
-node1# mount | grep ext+
  
 nodeN# cat /proc/drbd nodeN# cat /proc/drbd
 </​code>​ </​code>​
  
-  * Может понадобиться [[Решение DRBD#​Решение ситуации Split-Brain]] +  * Может понадобиться [[Решение DRBD#​Решение ситуации Split-Brain]] ​или, в нашем случае [[Решение DRBD#Решение ситуации Split-Brain при использовании Pacemaker]]
- +
-<​code>​ +
-node2service pacemaker stop +
- +
-node2# drbdadm invalidate r0 +
- +
-node2# service pacemaker start +
-</​code>​+
  
 === 7.1.2 Подготовка виртуальных машин === === 7.1.2 Подготовка виртуальных машин ===
Line 862: Line 844:
   * [[Технология 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 869: Line 852:
 </​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/​
  
-node1 debian10 ​      # lxc-create -t debian -n server -- -r buster +root@node1.corpX.un:​~#​ lxc-create -t download ​-n server-template -- -d ubuntu -r focal -a amd64
-root@node1.corpX.un:​~#​ lxc-create -t debian ​-n server+
 </​code>​ </​code>​
  
-  * Установка ПО в дочерней системе ​на MASTER узле+  * Установка ПО в дочерней системеаблоне
  
 <​code>​ <​code>​
-root@node1.corpX.un:​~# ​cp /​etc/​ssh/​sshd_config ​/​var/​lib/​lxc/​server/​rootfs/​etc/ssh/sshd_config+root@node1.corpX.un:​~# ​chroot ​/​var/​lib/​lxc/​server-template/rootfs/ /bin/bash
  
-root@node1.corpX.un:~cp /etc/hosts /​var/​lib/​lxc/​server/​rootfs/​etc/​+root@node1:/PS1='server-template:​\w#​ '
  
-root@node1.corpX.un:~chroot /​var/​lib/​lxc/​server/​rootfs/​ /bin/bash+server-template:/apt update
  
-root@node1:/# PS1='​server:​\w#​ '+server-template:/# apt purge netplan.io
  
-server:/# apt update+server-template:/# apt install nano ssh 
 +</​code>​
  
-server:/# apt purge isc-dhcp-client +  * !!! Методическая рекомендация ​запустить процесс установки Ceph (лабораторная работа 8.3) настроив proxy через [[Переменные окружения]] и [[Сервис Ansible#Использование модулей]] Ansible
- +
-server:/apt install nano vim iputils-ping +
-</​code>​+
  
-  * Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе+  * Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе/​шаблоне
  
 <​code>​ <​code>​
 server:/# cat /​etc/​hostname server:/# cat /​etc/​hostname
 </​code><​code>​ </​code><​code>​
-server.corpX.un+server-template.corpX.un
 </​code><​code>​ </​code><​code>​
-server:/# cat /etc/hosts+server-template:/# cat /etc/hosts
 </​code><​code>​ </​code><​code>​
 127.0.0.1 localhost 127.0.0.1 localhost
  
-192.168.X.30 server.corpX.un server+192.168.X.30 server-template.corpX.un server-template
 </​code><​code>​ </​code><​code>​
-server:/# passwd+server-template:/#​ cat /​etc/​systemd/​resolved.conf 
 +</​code><​code>​ 
 +[Resolve] 
 +DNS=192.168.X.1 192.168.X.2 
 +</​code><​code>​ 
 +server-template:/# passwd ​ubuntu
 </​code>​ </​code>​
 +Ctrl-D
  
-  * Настраиваем lxc для запуска гостевой системы в контейнере на MASTER узле+  * Настраиваем lxc для запуска гостевой системы/​шаблона ​в контейнере
  
 <​code>​ <​code>​
-root@node1.corpX.un:​~#​ cat /​var/​lib/​lxc/​server/​config+root@node1.corpX.un:​~#​ cat /​var/​lib/​lxc/​server-template/config
 </​code><​code>​ </​code><​code>​
 +...
 +lxc.rootfs.path = dir:/​var/​lib/​lxc/​server-template/​rootfs
 +lxc.uts.name = server-template
 ... ...
 lxc.net.0.type = veth lxc.net.0.type = veth
Line 925: Line 914:
 </​code>​ </​code>​
  
-  * Тестируем работу виртуальной системе ​на MASTER узле+  * Создание системы из шаблона
  
 <​code>​ <​code>​
-root@node1.corpX.un:​~# ​lxc-info -n server+root@node1.corpX.un:​~# ​
  
-root@node1.corpX.un:​~#​ lxc-start -n server+SRC_CONTAINER=server-template 
 +DST_CONTAINER=server1
  
-root@node1.corpX.un:~# lxc-info -n server+SRC_IP=192.168.X.30 
 +DST_IP=192.168.X.31
  
-root@node1.corpX.un:​~# ​lxc-attach -n server -- ps ax+time cp -rp /var/lib/lxc/​$SRC_CONTAINER/​ /​var/​lib/​lxc/​$DST_CONTAINER/​
  
-root@node1.corpX.un:​~#​ ssh server+find /​var/​lib/​lxc/​$DST_CONTAINER/​rootfs/​etc/​ -type f -exec sed -i''​ -e "​s/​$SRC_CONTAINER/​$DST_CONTAINER/"​ -e "​s/​$SRC_IP/​$DST_IP/"​ {} \;
  
-root@node1.corpX.un:​~#​ lxc-stop -n server+sed -i'' ​-e "​s/​$SRC_CONTAINER/​$DST_CONTAINER/"​ -e "​s/​$SRC_IP/​$DST_IP/"​ /​var/​lib/​lxc/​$DST_CONTAINER/​config
  
-root@node1.corpX.un:​~#​ systemctl start lxc@server+</​code>​ 
 + 
 +  * Тестируем работу виртуальной системе на MASTER узле 
 + 
 +<​code>​ 
 +root@node1.corpX.un:​~#​ lxc-info -n server1 
 + 
 +root@node1.corpX.un:​~#​ systemctl start lxc@server1 
 + 
 +root@node1.corpX.un:​~#​ ssh ubuntu@server1
  
-root@node1.corpX.un:​~#​ systemctl stop lxc@server+root@node1.corpX.un:​~#​ systemctl stop lxc@server1
 </​code>​ </​code>​
  
Line 950: Line 950:
  
 <​code>​ <​code>​
-primitive ​pr_lxc_server ​systemd:​lxc@server +#primitive ​pr_lxc_server1 ​systemd:​lxc@server1 meta resource-stickiness=100 
-group gr_fs_lxc pr_fs_r0 pr_lxc_server +primitive pr_lxc_server1 systemd:​lxc@server1
-</​code>​+
  
-==== Настройка виртуальной системы как сервер электронной почты ==== +group gr_fs_lxc pr_fs_r0 pr_lxc_server1
- +
-<​code>​ +
-server# apt install ansible git+
 </​code>​ </​code>​
  
-  * [[Сервис Ansible]] +==== Настройка ​виртуальной системы как сервер электронной почты ​и тестирование отказоустойчивости ==== 
-  * [[Сервис Ansible#​Использование ролей]] + 
-  * [[Сервис Git#Клонирование и обновление ​локального репозитория из сетевого]]+  * [[Сервис SSH#PuTTY]]
  
 <​code>​ <​code>​
-server# ansible-playbook conf/​ansible/​roles/​mail.yml+server1$ sudo -i
  
-или+server1# apt install ansible git
  
-node1nano conf/ansible/roles/mail.yml+server1git clone http://val.bmstu.ru/unix/conf.git
  
-node1nano /etc/ansible/hosts+server1ansible-playbook conf/ansible/roles/​mail.yml
 </​code>​ </​code>​
-==== Тестирование отказоустойчивости ==== 
  
-  ​* [[Сервис SSH#​PuTTY]] +  * Roundcube http://server1.corpX.un/​mail
-  ​* Roundcube http://server.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 988: Line 983:
 ===== Модуль 8. Распределенное отказоустойчивое хранилище Ceph ===== ===== Модуль 8. Распределенное отказоустойчивое хранилище Ceph =====
  
-  ​[[Сервис Ansible#​Использование модулей]] +  ​- Настройка IP на node3-7, [[Сервис Ansible#​Настройка групп управляемых систем]],​ [[Сервис Ansible#​Настройка транспорта ssh]] и [[Сервис Ansible#​Использование модулей]] ​Ansible для тестирования связи с ними 
-  ​[[Ceph - просто добавь узлов!#​Шаг 2. Установка и настройка Ceph]]+  ​- [[Сервис Ansible#​Использование ролей]] Ansible для настройки файлов конфигурации сети на node3-7  
 +  - [[Сервис Ansible#​Использование модулей]] Ansible для инсталляции Ceph на node3-7 (в большой группе ставится 45 минут) 
 +  - [[Ceph - просто добавь узлов!#​Шаг 2. Установка и настройка Ceph]] ​сразу добавить 6-й узел как OSD 
 +  - [[Сервис iSCSI#iSCSI initiator]] 
 +  - [[Сервис multipath]] 
 + 
 +===== Модуль 9. Кластерная файловая система OCFS2 ===== 
 + 
 +  * !!! Методическая рекомендация - СРАЗУ после установки пакетов для ocfs запустить процесс установки пакетов для kvm 
 +  * [[Сервис OCFS2]] 
 + 
 +===== Модуль 10. Система виртуализации KVM ===== 
 + 
 +  * Методическая рекомендация - выключить win10 clientN (конфликт имен и путаница с ip адресами) 
 +  * Проверить,​ включена ли [[Технология VirtualBox#​Вложенная виртуализация]] в VirtualBox 
 +  * [[Технология KVM]] (в большой группе ставится 10 минут) 
 + 
 +===== Модуль 11. Тестирование отказоустойчивости ===== 
 + 
 +  - Переместить все ресурсы на node1, обесточить его и убедиться что все ресурсы (winxp1 и server1) запустились на node2 (на winxp1 может начаться проверка диска) 
 +  - Остановить node2 (рекомендуется сперва корректно остановить winxp1) 
 +  - запустить node2, убедиться что все ресурсы (winxp1 и server1) запустились (можно node1 и проверить письмо про splitbrain) 
 + 
 +  - Выяснить,​ через какой узел подключается [[Сервис multipath]] на node2 по iSCSI к RBD Ceph 
 +  - Выполнить для этого узла [[Ceph - просто добавь узлов!#​Шаг 4. Сценарий - авария узла]] 
  
-==== Дополнительные задания ====  
  
создание_отказоустойчивых_linux_решений.txt · Last modified: 2023/10/05 09:43 by val