This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
создание_отказоустойчивых_linux_решений [2022/03/21 07:23] val [Лабораторные работы] |
создание_отказоустойчивых_linux_решений [2022/11/24 14:29] val [5.2 Автоматизация смены ролей узлов кластера] |
||
---|---|---|---|
Line 4: | Line 4: | ||
* [[http://www.specialist.ru/course/un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]] | * [[http://www.specialist.ru/course/un5|Linux. Уровень 6. Создание отказоустойчивых кластерных решений.]] | ||
- | |||
- | ===== Ссылка на вебинар ===== | ||
Line 33: | 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]] | ||
==== Лабораторные работы ==== | ==== Лабораторные работы ==== | ||
Line 46: | Line 45: | ||
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 | ||
Line 54: | Line 55: | ||
</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 уже добавлен | ||
Line 69: | Line 71: | ||
ubuntu# init 6 | ubuntu# init 6 | ||
</code> | </code> | ||
+ | |||
+ | * PuTTY !!! | ||
<code> | <code> | ||
Line 181: | Line 185: | ||
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 191: | Line 195: | ||
... | ... | ||
</code><code> | </code><code> | ||
- | node2# /etc/keepalived/keepalived.conf | + | node2# cat /etc/keepalived/keepalived.conf |
</code><code> | </code><code> | ||
... | ... | ||
Line 209: | Line 213: | ||
node1# ssn2 sysctl -f | node1# ssn2 sysctl -f | ||
</code> | </code> | ||
+ | или | ||
+ | <code> | ||
+ | node1# scn2 /etc/sysctl.d/20-my-forward.conf | ||
+ | node1# ssn2 sysctl -p --system | ||
+ | </code> | ||
=== 2.4 Синхронизация с использованием пакета CSYNC2 === | === 2.4 Синхронизация с использованием пакета CSYNC2 === | ||
Line 234: | Line 243: | ||
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 242: | Line 253: | ||
<code> | <code> | ||
node1# csync2 -xv | node1# csync2 -xv | ||
+ | </code> | ||
+ | <code> | ||
+ | nodeN# host ns node1 | ||
+ | nodeN# host ns node2 | ||
</code> | </code> | ||
<code> | <code> | ||
Line 249: | Line 264: | ||
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 293: | Line 307: | ||
=== 3.2 Проверка === | === 3.2 Проверка === | ||
- | * !!! Вместо тестирования отказоустойчивости выпольнить лабораторную работу 4.3.1 | + | * !!! Тестирование отказоустойчивости выполнить в лабораторной работе 4.2 |
<code> | <code> | ||
Line 316: | Line 330: | ||
==== Теория ==== | ==== Теория ==== | ||
+ | * [[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 333: | Line 347: | ||
* Настроить 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 463: | Line 479: | ||
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 561: | Line 577: | ||
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 569: | Line 587: | ||
* Использование [[Сервис 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 624: | Line 642: | ||
</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 661: | Line 679: | ||
* Pacemaker [[Пакет Pacemaker#Удаление ресурсов]] | * Pacemaker [[Пакет Pacemaker#Удаление ресурсов]] | ||
+ | * Pacemaker [[Пакет Pacemaker#Управление конфигурацией]] (уменьшение вероятности split-brain) | ||
* [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1) | * [[Решение DRBD#DRBD и Pacemaker]] (оставить приклрепление к node1) | ||
* Можно показать на отдельном стенде [[Решение DRBD#Конфигурация с двумя primaries]] | * Можно показать на отдельном стенде [[Решение DRBD#Конфигурация с двумя primaries]] | ||
Line 674: | Line 693: | ||
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 740: | ||
<code> | <code> | ||
- | master# watch cat /proc/drbd | + | slave# watch cat /proc/drbd |
- | master# crm_mon | + | slave# crm_mon |
</code> | </code> | ||
Line 727: | Line 748: | ||
* Запускаем бывший 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 764: | Line 785: | ||
@ MX 10 server1 | @ MX 10 server1 | ||
</code><code> | </code><code> | ||
+ | node1# named-checkconf -z | ||
+ | |||
node1# csync2 -xv | node1# csync2 -xv | ||
</code> | </code> | ||
Line 825: | Line 848: | ||
</code> | </code> | ||
- | * Создание ветки дочерней системы/шаблона | + | * Создание ветки дочерней системы/шаблона (в большой группе занимает 5 минут) |
| | ||
<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 | + | root@node1.corpX.un:~# lxc-create -t download -n server-template -- -d ubuntu -r focal -a amd64 |
</code> | </code> | ||
Line 847: | Line 870: | ||
</code> | </code> | ||
- | * !!! Методическая рекомендация - запустить процесс установки Ceph (лабораторная работа 8.3) | + | * !!! Методическая рекомендация - запустить процесс установки Ceph (лабораторная работа 8.3) настроив proxy через [[Переменные окружения]] |
* Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе/шаблоне | * Настраиваем hostname, hosts, DNS client и учетную запись root в гостевой системе/шаблоне | ||
Line 923: | Line 946: | ||
<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 936: | Line 960: | ||
server1# apt install ansible git | server1# apt install ansible git | ||
- | </code> | ||
- | * Сервис Git [[Сервис Git#Клонирование и обновление локального репозитория из сетевого]] | + | server1# git 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> | ||
Line 958: | Line 978: | ||
- Настройка 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 966: | Line 986: | ||
===== Модуль 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. Сценарий - авария узла]] |