This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
бюджетная_безотказная_сеть_для_кластера [2025/04/06 11:05] val [Шаг 3. Настраиваем bonding] |
бюджетная_безотказная_сеть_для_кластера [2025/04/09 04:49] (current) val [Запись вебинара] |
||
---|---|---|---|
Line 13: | Line 13: | ||
===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
- | * Тэги: | + | * Тэги: Linux, Bond, Ethernet, Cluster, Arp, High availability |
+ | * [[https://val.bmstu.ru/unix/video/Семинар%20Бюджетная%20безотказная%20сеть%20для%20кластера%2008.04.2025.mp4]] | ||
===== Методическая подготовка ===== | ===== Методическая подготовка ===== | ||
Line 19: | Line 20: | ||
===== Шаг 1. Что у нас есть для начала ===== | ===== Шаг 1. Что у нас есть для начала ===== | ||
- | * [[Мониторинг кластера Kubernetes]] | + | * [[Мониторинг кластера Kubernetes]] или [[Решение Ceph]] или [[Пакет Pacemaker]] |
* [[Сети Cisco и Linux у Вас дома]] | * [[Сети Cisco и Linux у Вас дома]] | ||
- | ===== Шаг 2. Добавляем второй сетевой адаптер ===== | + | * [[Утилита curl]] для тестирования работы приложения |
- | <code> | + | ===== Шаг 2. Создаем оказоустойчивую сеть ===== |
- | (venv1) server:~# ansible all -a 'init 0' -i /root/kubespray/inventory/mycluster/hosts.yaml | + | |
- | </code> | + | * Используя [[Материалы по GNS]], создаем оказоустойчивую сеть: cloud LAN и Switch1,2,3 |
- | * Создаем проект [[Материалы по GNS]] | + | |
- | * Добавляем в GNS VM kubeN и два сетевых адаптера | + | ===== Шаг 3. Настраиваем bonding, добавляем второй сетевой адаптер и включаем в оказоустойчивую сеть ===== |
- | * Добавляем в GNS cloud LAN и Switch1 | + | |
- | ===== Шаг 3. Настраиваем bonding ===== | ||
<code> | <code> | ||
(venv1) server:~# ansible all -f 4 -m apt -a 'pkg=ifenslave state=present update_cache=true' -i /root/kubespray/inventory/mycluster/hosts.yaml | (venv1) server:~# ansible all -f 4 -m apt -a 'pkg=ifenslave state=present update_cache=true' -i /root/kubespray/inventory/mycluster/hosts.yaml | ||
</code> | </code> | ||
- | * [[Настройка сети в Linux#Настройка bonding]] | + | |
+ | * По очереди, на каждом узле проводим [[Настройка сети в Linux#Настройка bonding]] | ||
<code> | <code> | ||
+ | server# cat /tmp/interfaces | ||
+ | ... | ||
+ | iface bond0 inet static | ||
+ | address 192.168.24.22N | ||
+ | ... | ||
+ | |||
server# scp /tmp/interfaces kubeN:/etc/network/interfaces | server# scp /tmp/interfaces kubeN:/etc/network/interfaces | ||
- | server# ssh kubeN init 6 | + | server# ssh kubeN init 0 |
+ | </code> | ||
+ | * Удаляем на узле адаптер Vbox, добавляем его в GNS, указываем два сетевых адаптера, подключаем к Switch1,2 и запускаем | ||
- | server# ssh kube1 kubectl get nodes | + | * Проверяем работоспособность узла |
+ | <code> | ||
+ | cmder> kubectl get nodes | ||
+ | |||
+ | nodeN# ceph -s | ||
+ | |||
+ | nodeN# crm_mon | ||
</code> | </code> | ||
Line 47: | Line 61: | ||
<code> | <code> | ||
+ | kube1:~# kubectl get pods --field-selector=status.phase!=Running -A -o wide | ||
+ | |||
kube1:~# kubectl delete pod --field-selector=status.phase==Succeeded -A | kube1:~# kubectl delete pod --field-selector=status.phase==Succeeded -A | ||
kube1:~# kubectl delete pod --field-selector=status.phase==Failed -A | kube1:~# kubectl delete pod --field-selector=status.phase==Failed -A | ||
</code> | </code> | ||
- | ===== Шаг 4. Настраиваем и тестируем отказоустойчивую сеть ===== | + | ===== Шаг 4. Тестируем отказоустойчивую сеть ===== |
+ | * Удаляем отдельные линки ([[Настройка сети в Linux#Настройка bonding]]) | ||
+ | * Ждем сообщение от мониторинга ([[Сервис Prometheus]] и [[Сервис Prometheus#prometheus-alertmanager]]) | ||
+ | * Удаляем по очереди Switch1,2 (не забыть подключать к Switch3) | ||
+ | * Пробуем устроить Ethernet петлю | ||
+ | <code> | ||
+ | kube1:~# tcpdump -nniany arp | ||
- | * Добавляем в GNS Switch2 и подключаем cloud LAN через Switch3 | + | kube1:~# ip n flush all |
+ | </code> | ||
- | ===== Вернуть обратно ===== | + | ===== Вопросы ===== |
+ | ===== Домашнее задание ===== | ||
+ | |||
+ | - Написать ansible playbook для настройки bond ifupdown | ||
+ | - Используя GNS, проверить гипотезу о возможности использования одного IP адреса двумя компьютерами | ||
+ | |||
+ | ===== Вернуть обратно ===== | ||
+ | <code> | ||
+ | (venv1) server.corp24.un:~# ansible all -a 'init 0' -i /root/kubespray/inventory/mycluster/hosts.yaml | ||
+ | </code> | ||
- Остановить проект | - Остановить проект | ||
+ | - Удалить все объекты из проекта | ||
- Удалить VM из GNS | - Удалить VM из GNS | ||
- Удалить проект | - Удалить проект | ||
- Откатить VM kubeN на snapshot | - Откатить VM kubeN на snapshot | ||
+ | - Запустить кластер |