Инструменты пользователя

Инструменты сайта


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

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
создание_отказоустойчивых_linux_решений [2019/03/13 14:40]
val
создание_отказоустойчивых_linux_решений [2019/04/26 11:48] (текущий)
val [5.1 Синхронизация каталогов]
Строка 3: Строка 3:
 ===== Программа курса ===== ===== Программа курса =====
  
-  * [[http://​www.specialist.ru/​course/​un5|Linux/FreeBSD. Уровень ​3. Создание отказоустойчивых кластерных решений]]+  * [[http://​www.specialist.ru/​course/​un5|Linux. Уровень ​6. Создание отказоустойчивых кластерных решений.]]
  
 ===== Цель курса ===== ===== Цель курса =====
Строка 19: Строка 19:
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-==== 1.1 Настройка систем ​====+=== 1.1 Настройка систем ===
  
-  * Адаптер 1 - Внутренняя сеть (LAN) +  * Адаптер 1 - eth0 - Внутренняя сеть (LAN) 
-  * Адаптер 2 - Сетевой мост (ISP1) +  * Адаптер 2 - eth1 - Сетевой мост (ISP1) 
-  * Адаптер 3 - Сетевой мост (класс) +  * Адаптер 3 - eth2 - Сетевой мост (класс) 
-  * Адаптер 4 - Сетевой мост (ISP2)+  * Адаптер 4 - eth3 - Сетевой мост (ISP2)
   * Добавить жесткий диск 2Gb   * Добавить жесткий диск 2Gb
  
 <​code>​ <​code>​
-[nodeN:~] # cat /etc/resolv.conf+nodeN# cat /etc/hostname
 </​code><​code>​ </​code><​code>​
-search ​corpX.un +nodeN.corpX.un
-nameserver 10.5.12.254+
 </​code><​code>​ </​code><​code>​
-[nodeN:~] # cat /etc/hosts+nodeN# cat /etc/hosts
 </​code><​code>​ </​code><​code>​
 127.0.0.1 ​              ​localhost 127.0.0.1 ​              ​localhost
Строка 40: Строка 39:
 192.168.X.2 ​            ​node2.corpX.un node2 192.168.X.2 ​            ​node2.corpX.un node2
  
-10.5.12.254              proxy+10.5.7.254              proxy
 </​code><​code>​ </​code><​code>​
-root@nodeN:~# cat /​etc/​network/​interfaces+nodeN# cat /​etc/​resolv.conf 
 +</​code><​code>​ 
 +search corpX.un 
 +nameserver 192.168.X.1 
 +nameserver 192.168.X.2 
 +</​code><​code>​ 
 +nodeN# cat /​etc/​network/​interfaces
 </​code><​code>​ </​code><​code>​
 auto lo auto lo
Строка 58: Строка 63:
 auto eth2 auto eth2
 iface eth2 inet static iface eth2 inet static
-        address 10.5.12.N*100+X+        address 10.5.7.N*100+X
         netmask 255.255.255.0         netmask 255.255.255.0
  
Строка 65: Строка 70:
         up ip link set eth3 up         up ip link set eth3 up
 </​code><​code>​ </​code><​code>​
-root@nodeN:~# cat /​etc/​hostname +nodeN# cat /​etc/​sysctl.conf
-</​code><​code>​ +
-nodeN.corpX.un +
-</​code><​code>​ +
-[nodeN:​~] ​# cat /​etc/​sysctl.conf+
 </​code><​code>​ </​code><​code>​
 ... ...
Строка 75: Строка 76:
 ... ...
 </​code><​code>​ </​code><​code>​
-[nodeN:~] # cat .bashrc+nodeN# cat .bashrc
 </​code><​code>​ </​code><​code>​
 ... ...
 export http_proxy=http://​proxy:​3128/​ export http_proxy=http://​proxy:​3128/​
 +export EDITOR=nano
 ... ...
 </​code><​code>​ </​code><​code>​
-root@nodeN:~# init 6+nodeN# init 6
  
 ... ...
  
-root@nodeN:~# apt update+nodeN# apt update
 </​code>​ </​code>​
  
  
-==== 1.2 Тестирование ​====+=== 1.2 Тестирование ===
 <​code>​ <​code>​
 nodeN# ping node1 nodeN# ping node1
Строка 97: Строка 99:
 nodeN# ping proxy nodeN# ping proxy
 </​code>​ </​code>​
 +
 +==== Вопросы ====
 +
 +  - НА кластер используется для повышения ...
 +  - НP кластер используется для повышения ...
 +  - Вероятность безотказной работы группы объектов равна ...
  
 ===== Модуль 2. Синхронизация файлов конфигураций узлов ===== ===== Модуль 2. Синхронизация файлов конфигураций узлов =====
Строка 107: Строка 115:
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-==== 2.1 С использованием сервиса SSH ===+=== 2.1 С использованием сервиса SSH ===
  
   * Настройка доступа по протоколу ssh пользователя root с node1 на node2 ([[Сервис SSH#​Разрешение доступа пользователя root на основании адреса клиента]])   * Настройка доступа по протоколу ssh пользователя root с node1 на node2 ([[Сервис SSH#​Разрешение доступа пользователя root на основании адреса клиента]])
Строка 127: Строка 135:
 </​code>​ </​code>​
  
-==== 2.2 С использованием пакета CSYNC2 ​====+=== 2.2 С использованием пакета CSYNC2 ===
  
-  ​[[Финальная ​настройка ​DNS сервера]] (устанавливаем ​и ЗАПУСКАЕМ на двух узлаx, настраиваем на node1)+**Сценарий:​** ​настроить ​DNS на node1, на node2 конфигурация появится ​автоматически ​
  
 +  * [[Финальная настройка DNS сервера]] ​
 +  * Устанавливаем и ЗАПУСКАЕМ на двух узлаx, настраиваем на node1
 +<​code>​
 +node1# sh dns.sh
  
-**Сценарий:​** настроить DNS на node1, на node2 конфигурация появится автоматически ​+node1# cat /​etc/​bind/​corpX.un 
 +</​code><​code>​ 
 +$TTL      3h 
 +@         ​SOA ​    ns root.ns ​ 1 1d 12h 1w 3h 
 +          NS      ns 
 + 
 +ns        A       ​192.168.X.1 
 +ns        A       ​192.168.X.2 
 +node1     ​A ​      ​192.168.X.1 
 +node2     ​A ​      ​192.168.X.2 
 +gate      A       ​192.168.X.254 
 +</​code><​code>​ 
 +node2# apt install bind9 
 +</​code>​
  
-  * [[Сервис NTP]]+  * [[Локализация ​системы#​Локализация временной зоны]]
   * [[Пакет CSYNC2]]   * [[Пакет CSYNC2]]
  
 <​code>​ <​code>​
-node1# csync2 -xvv +node1# csync2 -xv 
-</​code><​code>​ + 
-nodeNcat /​etc/​resolv.conf +node1host node1 
-</​code><​code>​ + 
-search corpX.un +node1# host node2 
-nameserver 192.168.X.1 + 
-nameserver 192.168.X.2+node1# host ns
 </​code>​ </​code>​
-==== 2.3 С использованием пакета Ansible ​====+=== 2.3 С использованием пакета Ansible ===
  
 **Сценарий:​** на обоих узлах создаем пользователя user1 с uid=10001 **Сценарий:​** на обоих узлах создаем пользователя user1 с uid=10001
  
-**Примечание:​** выполнить в модуле ​5-ть+**Примечание:​** выполнить в 5-м модуле
  
   * [[Сервис Ansible]]   * [[Сервис Ansible]]
 +
 +==== Вопросы ====
 +
 +  - Команда ssh-copy-id копирует ...
 +  - Где располагается файл с публичными ключами пользователей ssh?
 +  - На каком узле будет сохранен файл в результате выполнения команды ssh node2 iptables-save > /​etc/​iptables.rules
 +  - Что определяет параметр конфигурации auto younger в пакете csync2
 +  - Перечислите известные Вам варианты тиражирования файлов конфигурации в кластере?​
  
 ===== Модуль 3. Развертывание сервисов с интегрированной поддержкой отказоустойчивости ===== ===== Модуль 3. Развертывание сервисов с интегрированной поддержкой отказоустойчивости =====
Строка 162: Строка 195:
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
  
-==== 3.1 Отказоустойчивый DHCP сервер ​====+=== 3.1 Отказоустойчивый DHCP сервер ===
  
   * [[Сервис DHCP#​Установка]] cервиса DHCP   * [[Сервис DHCP#​Установка]] cервиса DHCP
 +<​code>​
 +nodeN# sh dhcp.sh
 +</​code>​
   * [[Сервис DHCP#​Отказоустойчивая конфигурация]] cервиса DHCP   * [[Сервис DHCP#​Отказоустойчивая конфигурация]] cервиса DHCP
   * [[Сервис DHCP#​Проверка конфигурации и запуск]] cервиса DHCP   * [[Сервис DHCP#​Проверка конфигурации и запуск]] cервиса DHCP
Строка 174: Строка 210:
   * В первый момент необходимо запустить оба сервера чтобы они синхронизировались.   * В первый момент необходимо запустить оба сервера чтобы они синхронизировались.
  
-Проверка:+=== 3.2 Проверка ​===
  
   * Добавляем в стенд Windows client1, останавливаем по очереди узлы, перезагружаем client1. Должен выдаваться один и тот же адрес (можно отключать интерфейс Windows, ipconfig /renew не использовать)   * Добавляем в стенд Windows client1, останавливаем по очереди узлы, перезагружаем client1. Должен выдаваться один и тот же адрес (можно отключать интерфейс Windows, ipconfig /renew не использовать)
  
-Вывод сообщений об ошибках:+=== 3.3 Отладка ​===
    
 <​code>​ <​code>​
-tail -/​var/​log/​syslog+ntpdate ​-u proxy 
 + 
 +# grep dhcp /​var/​log/​syslog
 </​code>​ </​code>​
 +==== Вопросы ====
 +
 +  - Есть ли необходимость в использовании дополнительного ПО для реализации отказоустойчивой конфигурации пакета isc-dhcp?
 +  - Сколько узлов может быть в отказоустойчивой конфигурации isc-dhcp?
 +  - Какие условия необходимы на начальном этапе развертывания отказоустойчивой конфигурации isc-dhcp?
 +  - Какие преимущества отказоустойчивой конфигурации isc-dhcp перед двумя независимыми dhcp серверами?​
  
 ===== Модуль 4. Развертывание отказоустойчивого шлюза в Internet ===== ===== Модуль 4. Развертывание отказоустойчивого шлюза в Internet =====
Строка 189: Строка 233:
  
   * [[https://​ru.wikipedia.org/​wiki/​CARP|CARP]]   * [[https://​ru.wikipedia.org/​wiki/​CARP|CARP]]
-  * [[https://​ru.wikipedia.org/​wiki/​Iproute2]]+  * [[https://​ru.wikipedia.org/​wiki/​Iproute2|Iproute2]]
  
 ==== Лабораторные работы ==== ==== Лабораторные работы ====
Строка 202: Строка 246:
 ==== 4.2 Отказоустойчивый nat ==== ==== 4.2 Отказоустойчивый nat ====
  
-Сценарий:​+**Сценарий**:
  
   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])   * Настроить NAT трансляцию для сети 192.168.X/​24 в реальный адрес ISP ([[Сервис NAT]])
Строка 208: Строка 252:
  
 <​code>​ <​code>​
-root@nodeN:~# apt install fake+nodeN# apt install fake
  
-root@nodeN:~# cat /​usr/​share/​ucarp/​vip-up+nodeN# cat /​usr/​share/​ucarp/​vip-up
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Строка 221: Строка 265:
 route add default gw 172.16.1.254 route add default gw 172.16.1.254
 </​code><​code>​ </​code><​code>​
-root@nodeN:~# cat /​usr/​share/​ucarp/​vip-down+nodeN# cat /​usr/​share/​ucarp/​vip-down
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Строка 228: Строка 272:
  
 ip addr del 172.16.1.X/​24 dev eth1 ip addr del 172.16.1.X/​24 dev eth1
-route delete default 
 route add default gw 192.168.X.254 route add default gw 192.168.X.254
 +</​code><​code>​
 +masternode# killall -USR2 ucarp
 +или
 +masternode# init 6
 </​code>​ </​code>​
- 
 ==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ==== ==== 4.3 Балансировка нагрузки и отказоустойчивость при использовании нескольких ISP ====
  
Строка 259: Строка 305:
 </​code>​ </​code>​
  
-=== 4.3.3 Использование маршрута по умолчанию для выбора ISP ===+=== 4.3.3 Подключение шлюзов и тестирование ISP2 ===
  
 <​code>​ <​code>​
Строка 269: Строка 315:
 send_arp 172.16.2.X `cat /​sys/​class/​net/​eth3/​address` 172.16.2.254 ff:​ff:​ff:​ff:​ff:​ff eth3 send_arp 172.16.2.X `cat /​sys/​class/​net/​eth3/​address` 172.16.2.254 ff:​ff:​ff:​ff:​ff:​ff eth3
 ... ...
 +route delete default
 #route add default gw 172.16.1.254 #route add default gw 172.16.1.254
 </​code><​code>​ </​code><​code>​
Строка 276: Строка 323:
 ip addr del 172.16.2.X/​24 dev eth3 ip addr del 172.16.2.X/​24 dev eth3
 ... ...
 +</​code><​code>​
 +masternode# killall -USR2 ucarp
 +...
 +masternode# grep carp /​var/​log/​syslog
 +
 +masternode# ip a | grep 172.16.2
 </​code>​ </​code>​
 +  * [[Настройка сети в Linux]]
 +<​code>​
 +masternode# ping 172.16.2.254
  
 +masternode# ip route add default via 172.16.2.254
 +
 +masternode# ping ya.ru
 +
 +masternode# ip route delete default
 +</​code>​
  
 === 4.3.4 Использование PBR для балансировки нагрузки === === 4.3.4 Использование PBR для балансировки нагрузки ===
  
-  ​PBR с использованием [[Сервисы Gateway и routing#​NetFilter iproute2 (Linux)]]+**Сценарий:​** 
 + 
 +  * Всем настроить NAT на два ISP ([[Сервисы Gateway и routing#Использование ​iproute2 для управления выбором ISP]]), iptables-restore можно "​привязать"​ к интерфейсу eth0 
 +  * Преподавателю продемонстрировать PBR в "​ручном"​ режиме ([[Сервисы Gateway и routing#​NetFilter iproute2 (Linux)]]
  
 === 4.3.5 Автоматизация балансировки/​отказоустойчивости выбора ISP === === 4.3.5 Автоматизация балансировки/​отказоустойчивости выбора ISP ===
Строка 292: Строка 358:
 ip route add default via 172.16.2.254 table 102 ip route add default via 172.16.2.254 table 102
 </​code><​code>​ </​code><​code>​
-nodeN# cat isp1_isp2.sh+masternode# killall -USR2 ucarp 
 +... 
 +masternode# grep carp /​var/​log/​syslog 
 + 
 +masternode# ip route show table all | grep 'table 10[12]'​ 
 +</​code><​code>​ 
 +# cat set_isp.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
  
-ip rule del from 192.168.X/​24 to 192.168.X/​24 table main +case $1 in 
-while ip rule del from any table 101;do true;done +        ISP1) 
-while ip rule del from any table 102;do true;done+                ​ip rule del from 192.168.X/​24 to 192.168.X/​24 table main 
 +                while ip rule del from any table 101;do true;done 
 +                while ip rule del from any table 102;do true;done
  
-ip rule add from 192.168.X.0/​25 table 101 +                ​ip rule add from 192.168.X.0/​24 table 101 
-ip rule add from 192.168.X.128/​25 table 102 +                ip rule add from 192.168.X/​24 to 192.168.X/​24 table main
-ip rule add from 192.168.X/​24 to 192.168.X/​24 table main+
  
-/sbin/ip route flush cache +                ​/sbin/ip route flush cache 
-/​usr/​sbin/​conntrack -F +                /​usr/​sbin/​conntrack -F 
-</​code><​code>​ +        ;; 
-nodeN# cat isp1.sh +        ISP2) 
-</​code><​code>​ +                ip rule del from 192.168.X/​24 to 192.168.X/​24 table main 
-#!/bin/sh +                while ip rule del from any table 101;do true;done 
-ip rule del from 192.168.X/​24 to 192.168.X/​24 table main +                while ip rule del from any table 102;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+
  
-ip rule add from 192.168.X.0/​24 table 101 +                ​ip rule add from 192.168.X.0/​24 table 102 
-ip rule add from 192.168.X/​24 to 192.168.X/​24 table main+                ip rule add from 192.168.X/​24 to 192.168.X/​24 table main
  
-/sbin/ip route flush cache +                ​/sbin/ip route flush cache 
-/​usr/​sbin/​conntrack -F +                /​usr/​sbin/​conntrack -F 
-</​code><​code>​ +        ;; 
-nodeN# cat isp2.sh +        ​ISP1ISP2) 
-</​code><​code>​ +                ip rule del from 192.168.X/​24 to 192.168.X/​24 table main 
-#!/bin/sh +                while ip rule del from any table 101;do true;done 
-ip rule del from 192.168.X/​24 to 192.168.X/​24 table main +                while ip rule del from any table 102;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+
  
-ip rule add from 192.168.X.0/​24 table 102 +                ​ip rule add from 192.168.X.0/​25 table 101 
-ip rule add from 192.168.X/​24 to 192.168.X/​24 table main+                ip rule add from 192.168.X.128/​25 ​table 102 
 +                ip rule add from 192.168.X/​24 to 192.168.X/​24 table main
  
-/sbin/ip route flush cache +                ​/sbin/ip route flush cache 
-/​usr/​sbin/​conntrack -F+                /​usr/​sbin/​conntrack -F 
 +        ;; 
 +esac
 </​code><​code>​ </​code><​code>​
 +nodeN# chmod +x set_isp.sh
 +
 +masternode# grep carp /​var/​log/​syslog
 +
 +masternode# /​root/​set_isp.sh ISP1ISP2
 +
 +backupnode# traceroute -n ya.ru
 +
 +C:​\Users\student>​tracert ya.ru
 +
 nodeN# cat select_isp.sh nodeN# cat select_isp.sh
 </​code><​code>​ </​code><​code>​
Строка 343: Строка 425:
 route delete default route delete default
  
-route add default gw 172.16.1.254 2>/​dev/​null || exit 0+ISP=''​
  
-ping -c3 ya.ru >/​dev/​null 2>&+route add default gw 172.16.1.254 
-ALIVE1=$?+ 
 +ping -c3 ya.ru && ISP=ISP1
  
 route delete default route delete default
Строка 352: Строка 435:
 route add default gw 172.16.2.254 route add default gw 172.16.2.254
  
-ping -c3 ya.ru >/​dev/​null 2>&+ping -c3 ya.ru && ISP=${ISP}ISP2
-ALIVE2=$?+
  
 route delete default route delete default
  
-test $ALIVE1 -eq 0 && conf_name="​isp1.sh"​ +echo $ISP 
-test $ALIVE2 -eq 0 && conf_name="​isp2.sh"​ +#exit 0
-test $ALIVE1 -eq 0 && test $ALIVE2 -eq && conf_name="​isp1_isp2.sh"​+
  
-# echo /root/$conf_name +touch /tmp/current_isp 
-exit 0+test $ISP = "`cat /​tmp/​current_isp`"​ && ​exit 0
  
-touch /​tmp/​conf_name +echo $ISP > /tmp/current_isp
-test $conf_name = "​`cat ​/tmp/conf_name`"​ && exit 0+
  
-echo $conf_name > /​tmp/​conf_name +/root/set_isp.sh ​$ISP
- +
-eval /root/$conf_name+
 </​code><​code>​ </​code><​code>​
 +nodeN# chmod +x select_isp.sh
 +
 +masternode# /​root/​select_isp.sh
 +
 nodeN# crontab -l nodeN# crontab -l
 </​code><​code>​ </​code><​code>​
Строка 376: Строка 458:
 </​code>​ </​code>​
 <​code>​ <​code>​
-nodeN# ip route show table 101+master_node# ip route show table 101
  
-nodeN# ip route show table 102+master_node# ip route show table 102
  
-nodeN# ip rule show+master_node# ip rule show
 </​code>​ </​code>​
 +
 +==== Вопросы ====
 +
 +  - Перечислите протоколы отказоустойчивого шлюза.
 +  - Для какой операционной системы впервые появилась реализация протокола CARP?
 +  - Какая утилита из набора iproute2 позволяет назначить/​удалить IP адрес на интерфейсе?​
 +  - В чем отличие поведения мастер хоста от других в протоколе CARP?
 +  - Поддерживает ли протокол CARP отказоустойчивость соединений?​
 +  - Поддерживает ли протокол CARP балансировку нагрузки?​
 +  - Что такое ucarp?
 +  - В каком пакете в Debian содержатся современные сетевые утилиты,​ пришедшие на смену классическим UNIX утилитам ifconfig, route, arp, netstat?
 +  - Какая утилита из набора iproute2 заменяет команду arp?
 +  - В какой пакет входит утилита send_arp в Debian, для чего нужна и какой вид трафика использует?​
 +  - Какой командой можно очистить таблицу ARP в Linux?
 +  - В чем принцип работы механизма PBR?
 +  - Можно ли балансировать трафик одного соединения между двумя ISP при использовании NAT?
 +  - Необходим ли маршрут "по умолчанию"​ на шлюзе для прохождения пользовательского трафика?​
 +  - Согласно какой таблице маршрутизации в Linux обрабатывается пакет, если для него нет правила,​ определяющего обработку в конкретной таблице?​
 +  - Что следует сделать с текущими активными соединениями после изменения правил PBR?
  
 ===== Модуль 5. Использование систем управления ресурсами кластера ===== ===== Модуль 5. Использование систем управления ресурсами кластера =====
Строка 411: Строка 512:
 www     ​A ​      ​192.168.X.10 www     ​A ​      ​192.168.X.10
 </​code><​code>​ </​code><​code>​
-node1# csync2 -xvv+node1# csync2 -xv
 </​code>​ </​code>​
  
   * На обоих узлах [[Сервис HTTP#​Установка и запуск сервера Apache]] (можно через Ansible)   * На обоих узлах [[Сервис HTTP#​Установка и запуск сервера Apache]] (можно через Ansible)
-  * На обоих узлах создаем пользователя user1 с uid=10001 ([[Управление учетными записями в Linux]], [[Управление учетными записями в FreeBSD]]) (можно через Ansible)+  * На обоих узлах создаем пользователя user1 с uid=10001 ([[Управление учетными записями в Linux]]) (можно через Ansible)
   * На обоих узлах включаем [[Сервис HTTP#​Использование домашних каталогов]] (можно через Ansible)   * На обоих узлах включаем [[Сервис HTTP#​Использование домашних каталогов]] (можно через Ansible)
   * [[Сервис Ansible]]   * [[Сервис Ansible]]
-  * Yстанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])+  * Устанавливаем сервер ftp на node1 и запускаем его ([[Сервис FTP#​Сервер ftp]])
   * Создаем тестовую www страницу для пользователя user1 используя протокол ftp на node1   * Создаем тестовую www страницу для пользователя user1 используя протокол ftp на node1
  
Строка 424: Строка 525:
  
   * [[Пакет RSYNC]]   * [[Пакет RSYNC]]
-  * [[Планирование выполнения заданий в Linux]]+  * Можно автоматизировать,​ ([[Планирование выполнения заданий в Linux]]), но, пока не нужно.
  
 ==== 5.2 Автоматизация смены ролей узлов кластера ==== ==== 5.2 Автоматизация смены ролей узлов кластера ====
Строка 445: Строка 546:
 === 5.2.2 Настройка менеджера кластера === === 5.2.2 Настройка менеджера кластера ===
  
-  * С использованием [[Пакет ​HEARTBEAT]] +  * [[Пакет HEARTBEAT]] (Демонстрирует преподаватель в методических целях) 
-  * С использованием ​[[Пакет Pacemaker]]+  * [[Пакет ​Corosync]] 
 +  * [[Пакет Pacemaker]]
  
 === 5.2.3 Автоматическую синхронизация домашних каталогов === === 5.2.3 Автоматическую синхронизация домашних каталогов ===
  
-  * Настроить автоматическую синхронизацию домашних каталогов с мастер узла на резервный ​с использованием сети кросс кабеля. +  * Настроить автоматическую синхронизацию домашних каталогов с мастер узла на резервный ​
-  * Запустить rsync на node1 +
- +
-Указываем в файле /etc/hosts имя slave указывающее на соседний сервер+
 <​code>​ <​code>​
-node1cat /etc/hosts+nodeNcrontab -l
 </​code><​code>​ </​code><​code>​
 ... ...
-10.M.Z.200+X slave +* * * * * ps ax | grep -v grep | grep -q '​proftpd:​ (accepting connections)'​ && ​/usr/bin/rsync -az --delete /home/ nodeM:/home/
-... +
-</code><​code>​ +
-node2# cat /etc/hosts +
-</code><​code>​ +
-... +
-10.M.Z.100+X slave +
-...+
 </​code>​ </​code>​
 +==== Вопросы ====
  
-<​code>​ +  - В чем преимущество использования rsync по сравнению с scp? 
-* * * * * ps ax | grep -v grep | grep -q '​proftpd(accepting connections)'​ && /usr/bin/rsync -az --delete /home/ slave:/​home/​ +  Что определяют разделители ​и :: в команде ​rsync
-</​code>​+  ​Реализацией какой части классического пакета heartbeat является пакет pacemaker?​ 
 +  ​Какие задачи классического пакета heartbeat НЕ решает пакет corosync? 
 +  ​В каком формате хранятся файлы конфигурации пакета corosync? 
 +  - В каком формате хранятся файлы конфигурации пакета pacemaker?​ 
 +  - По какой причине не следует редактировать файлы конфигурации пакета pacemaker в текстовом редакторе?​ 
 +  - Для чего используется утилита crm должна ли она быть установлена на все узлы кластера?​ 
 +  - Для чего используется утилита crm_mon и есть ли она на всех узлах кластера?​ 
 +  - Что надо настроить в пакете pacemaker, что бы все части, из которых состоит ресурс,​ запускались на одном узле кластера?​ 
 +  - Какой тип трафика может использоваться для связи узлов кластера corosync? 
 +  - Что нужно сделать для сервисов,​ управляемых менеджером кластера?​
  
 ===== Модуль 6. Развертывание отказоустойчивых файловых сервисов ===== ===== Модуль 6. Развертывание отказоустойчивых файловых сервисов =====
Строка 484: Строка 586:
 ==== 6.1 Синхронизация файловых систем ===== ==== 6.1 Синхронизация файловых систем =====
  
-  * Подключаем к обоим узлам по дополнительному диску ​+  * Подключаем к обоим узлам по дополнительному диску ​(2Gb)
   * [[Решение DRBD]]   * [[Решение DRBD]]
  
Строка 500: Строка 602:
 <​code>​ <​code>​
 nodeN# systemctl disable istgt nodeN# systemctl disable istgt
 +
 +node1# crm configure
  
 crm(live)configure#​ primitive pr_istgt lsb:istgt crm(live)configure#​ primitive pr_istgt lsb:istgt
Строка 510: Строка 614:
 </​code>​ </​code>​
  
-  * Настраиваем [[Сервис iSCSI#iSCSI initiator]] для Windows ​7+  * Настраиваем [[Сервис iSCSI#iSCSI initiator]] для Windows
  
 ==== 6.4 Настройка NAS сервера SMB/CIFS ==== ==== 6.4 Настройка NAS сервера SMB/CIFS ====
Строка 546: Строка 650:
   * Останавливаем MASTER сервер и дожидаемся монтирования на SLAVE узле "​половины"​ зеркалируемого раздела в каталог /disk2, назначение ip адреса 192.168.X.20 и запуск сервера samba    * Останавливаем MASTER сервер и дожидаемся монтирования на SLAVE узле "​половины"​ зеркалируемого раздела в каталог /disk2, назначение ip адреса 192.168.X.20 и запуск сервера samba 
   * Запускаем бывший MASTER узел и дожидаемся восстановления целостности зеркала   * Запускаем бывший MASTER узел и дожидаемся восстановления целостности зеркала
 +
 +==== Вопросы ====
 +
 +  - Какое решение можно использовать для блочной синхронизации дисковых устройств по сети?
 +  - При каком условии можно монтировать распределенное блочное хранилище на запись сразу на нескольких,​ содержащих его узлах?
 +  - Что определяет параметр wfc-timeout в пакете DRBD?
 +  - В каком состоянии будет DRBD RAID1 если узлы, входящие в него, в разное время поработали,​ независимо друг от друга, с разделом,​ в течение времени превышающем wfc-timeout?​
 +  - Чем отличаются системы NAS и SAN
 +  - В чем фундаментальное отличие протоколов CIFS и iSCSI?
  
 ===== Модуль 7. Развертывание контейнеров в отказоустойчивой конфигурации ===== ===== Модуль 7. Развертывание контейнеров в отказоустойчивой конфигурации =====
Строка 638: Строка 751:
 root@node1.corpX.un:​~#​ cp /​etc/​ssh/​sshd_config /​var/​lib/​lxc/​server/​rootfs/​etc/​ssh/​sshd_config root@node1.corpX.un:​~#​ cp /​etc/​ssh/​sshd_config /​var/​lib/​lxc/​server/​rootfs/​etc/​ssh/​sshd_config
  
-root@node1.corpX.un:​~#​ cp /etc/hosts /​var/​lib/​lxc/​server/​rootfs/​etc/​hosts+root@node1.corpX.un:​~#​ cp /etc/hosts /​var/​lib/​lxc/​server/​rootfs/​etc/​
  
 root@node1.corpX.un:​~#​ chroot /​var/​lib/​lxc/​server/​rootfs/​ /bin/bash root@node1.corpX.un:​~#​ chroot /​var/​lib/​lxc/​server/​rootfs/​ /bin/bash
Строка 646: Строка 759:
 server:/# apt update server:/# apt update
  
-server:/# apt purge resolvconf ​isc-dhcp-client+server:/# apt purge isc-dhcp-client
  
 server:/# apt install nano vim iputils-ping server:/# apt install nano vim iputils-ping
Строка 666: Строка 779:
 10.Z.M.254 proxy 10.Z.M.254 proxy
 </​code><​code>​ </​code><​code>​
-server:/# rm /​etc/​resolv.conf 
- 
 server:/# cat /​etc/​resolv.conf server:/# cat /​etc/​resolv.conf
 </​code><​code>​ </​code><​code>​
Строка 688: Строка 799:
 lxc.network.ipv4 = 192.168.X.30/​24 lxc.network.ipv4 = 192.168.X.30/​24
 lxc.network.ipv4.gateway = 192.168.X.254 lxc.network.ipv4.gateway = 192.168.X.254
-... 
 </​code>​ </​code>​
  
Строка 705: Строка 815:
  
 root@node1.corpX.un:​~#​ lxc-stop -n server root@node1.corpX.un:​~#​ lxc-stop -n server
- 
-root@node1.corpX.un:​~#​ systemctl start lxc@server 
  
 debian9_nodeN#​ mkdir /​etc/​systemd/​system/​lxc@server.service.d/​ debian9_nodeN#​ mkdir /​etc/​systemd/​system/​lxc@server.service.d/​
Строка 715: Строка 823:
 KillSignal=SIGRTMIN+3 KillSignal=SIGRTMIN+3
 </​code><​code>​ </​code><​code>​
 +root@node1.corpX.un:​~#​ systemctl start lxc@server
 +
 root@node1.corpX.un:​~#​ systemctl stop lxc@server root@node1.corpX.un:​~#​ systemctl stop lxc@server
 </​code>​ </​code>​
Строка 723: Строка 833:
  
 <​code>​ <​code>​
-NEW 
 primitive pr_lxc_server systemd:​lxc@server primitive pr_lxc_server systemd:​lxc@server
 group gr_fs_lxc pr_fs_r0 pr_lxc_server group gr_fs_lxc pr_fs_r0 pr_lxc_server
- 
-OLD 
-primitive pr_lxc_server systemd:​lxc@server 
- 
-primitive pr_lxc_server ocf:​heartbeat:​lxc params container=server config=/​var/​lib/​lxc/​server/​config 
- 
-order or_lxc_after_fs pr_fs_r0 pr_lxc_server 
-colocation col_lxc_on_drbd inf: pr_lxc_server ms_drbd_r0:​Master 
- 
-!!! Похоже порядок в группе имеет значение и здесь ошибка !!! 
-group gr_lxc_fs pr_lxc_server pr_fs_r0 
- 
-crm_resource --resource pr_lxc_server --cleanup --node node45.bmstu.ru 
-crm resource stop pr_lxc_server 
-crm resource move pr_lxc_server node46.bmstu.ru 
-crm resource move pr_fs_r0 node45.bmstu.ru 
- 
-systemctl start lxc@server 
-/​etc/​init.d/​lxc start server 
 </​code>​ </​code>​
  
Строка 752: Строка 842:
   * [[UA mail]]   * [[UA mail]]
   * [[Сервер dovecot]]   * [[Сервер dovecot]]
 +
 +==== Вопросы ====
 +
 +  - Что лучше, контейнерная виртуализация или аппаратная?​
  
 ==== Дополнительные задания ====  ==== Дополнительные задания ==== 
создание_отказоустойчивых_linux_решений.1552477225.txt.gz · Последние изменения: 2019/03/13 14:40 — val