This shows you the differences between two versions of the page.
Next revision | Previous revision Last revision Both sides next revision | ||
создание_отказоустойчивых_linux_решений_2020 [2020/01/22 14:37] val создано |
создание_отказоустойчивых_linux_решений_2020 [2020/01/24 11:19] val [7.2 Интеграция контейнеров с менеджером кластера] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Создание отказоустойчивых Linux решений ====== | + | ====== Создание отказоустойчивых Linux решений 2020 ====== |
===== Программа курса ===== | ===== Программа курса ===== | ||
Line 272: | Line 272: | ||
ip addr add 172.16.1.X/24 dev eth1 | ip addr add 172.16.1.X/24 dev eth1 | ||
send_arp 172.16.1.X `cat /sys/class/net/eth1/address` 172.16.1.254 ff:ff:ff:ff:ff:ff eth1 | send_arp 172.16.1.X `cat /sys/class/net/eth1/address` 172.16.1.254 ff:ff:ff:ff:ff:ff eth1 | ||
- | route delete default | + | ip route delete default |
- | route add default gw 172.16.1.254 | + | ip route add default via 172.16.1.254 |
</code><code> | </code><code> | ||
nodeN# cat /usr/share/ucarp/vip-down | nodeN# cat /usr/share/ucarp/vip-down | ||
Line 282: | Line 282: | ||
ip addr del 172.16.1.X/24 dev eth1 | ip addr del 172.16.1.X/24 dev eth1 | ||
- | route add default gw 192.168.X.254 | + | ip route add default via 192.168.X.254 |
</code><code> | </code><code> | ||
masternode# killall -USR2 ucarp | masternode# killall -USR2 ucarp | ||
Line 362: | Line 362: | ||
<code> | <code> | ||
+ | # cat /etc/network/interfaces | ||
+ | </code><code> | ||
+ | ... | ||
+ | iface eth0 inet static | ||
+ | |||
+ | pre-up iptables-restore < /etc/iptables.rules | ||
+ | post-up ip rule add prio 100 from 192.168.X.0/24 to 192.168.X.0/24 table main | ||
+ | ... | ||
+ | </code><code> | ||
nodeN# cat /usr/share/ucarp/vip-up | nodeN# cat /usr/share/ucarp/vip-up | ||
</code><code> | </code><code> | ||
Line 380: | Line 389: | ||
case $1 in | case $1 in | ||
ISP1) | ISP1) | ||
- | 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 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 rule add from 192.168.X.0/24 table 101 | + | ip rule add prio 200 from 192.168.X.0/24 table 101 |
- | 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 | ||
Line 391: | Line 398: | ||
;; | ;; | ||
ISP2) | ISP2) | ||
- | 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 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 rule add from 192.168.X.0/24 table 102 | + | ip rule add prio 200 from 192.168.X.0/24 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 | ||
Line 402: | Line 407: | ||
;; | ;; | ||
ISP1ISP2) | ISP1ISP2) | ||
- | 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 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 rule add from 192.168.X.0/25 table 101 | + | ip rule add prio 200 from 192.168.X.0/25 table 101 |
- | ip rule add from 192.168.X.128/25 table 102 | + | ip rule add prio 200 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 | ||
Line 431: | Line 434: | ||
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH | export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH | ||
- | ifconfig | grep -q 192.168.X.254 || exit 0 | + | ip addr | grep -q 192.168.X.254 || exit 0 |
- | route delete default | + | ip route delete default |
ISP='' | ISP='' | ||
- | route add default gw 172.16.1.254 | + | ip route add default via 172.16.1.254 |
ping -c3 ya.ru && ISP=ISP1 | ping -c3 ya.ru && ISP=ISP1 | ||
- | route delete default | + | ip route delete default |
- | route add default gw 172.16.2.254 | + | ip route add default via 172.16.2.254 |
ping -c3 ya.ru && ISP=${ISP}ISP2 | ping -c3 ya.ru && ISP=${ISP}ISP2 | ||
- | route delete default | + | ip route delete default |
echo $ISP | echo $ISP | ||
Line 601: | Line 604: | ||
==== 6.2 Автоматизация смены ролей узлов кластера ==== | ==== 6.2 Автоматизация смены ролей узлов кластера ==== | ||
+ | * Пакет Pacemaker [[Пакет Pacemaker#Удаление ресурсов]] | ||
* [[Решение DRBD#DRBD и Pacemaker]] | * [[Решение DRBD#DRBD и Pacemaker]] | ||
Line 608: | Line 612: | ||
* Устанавливаем на оба узла пакет [[Сервис iSCSI#iSCSI target]] | * Устанавливаем на оба узла пакет [[Сервис iSCSI#iSCSI target]] | ||
* Отключаем авто запуск сервиса | * Отключаем авто запуск сервиса | ||
- | * Останавливаем группу ресурсов кластера и удаляем ee [[Пакет Pacemaker#Управление ресурсами]] | ||
<code> | <code> | ||
Line 647: | Line 650: | ||
crm(live)configure# primitive pr_smbd systemd:smbd | crm(live)configure# primitive pr_smbd systemd:smbd | ||
- | crm(live)configure# edit gr_ip_fs | ||
+ | crm(live)configure# edit gr_ip_fs | ||
+ | или | ||
+ | crm(live)configure# group gr_ip_fs pr_ip pr_fs_r0 pr_smbd | ||
+ | </code><code> | ||
crm(live)configure# commit | crm(live)configure# commit | ||
</code> | </code> | ||
Line 685: | Line 691: | ||
* Отключение всех сервисов (особенно, ip, привязанного к eth), кроме зеркалируемого раздела [[Пакет Pacemaker#Управление ресурсами]] | * Отключение всех сервисов (особенно, ip, привязанного к eth), кроме зеркалируемого раздела [[Пакет Pacemaker#Управление ресурсами]] | ||
<code> | <code> | ||
- | node1# crm resource stop pr_ip pr_istgt pr_smbd | + | node1# crm resource stop pr_ip pr_smbd pr_istgt |
- | node1# crm configure delete pr_ip pr_istgt pr_smbd gr_ip_fs | + | node1# crm configure delete pr_ip pr_smbd gr_ip_fs pr_istgt |
</code> | </code> | ||
Line 698: | Line 704: | ||
auto br0 | auto br0 | ||
iface br0 inet static | iface br0 inet static | ||
+ | |||
+ | pre-up iptables-restore < /etc/iptables.rules | ||
+ | post-up ip rule add prio 100 from 192.168.X.0/24 to 192.168.X.0/24 table main | ||
+ | |||
address 192.168.X.N | address 192.168.X.N | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
Line 729: | Line 739: | ||
<code> | <code> | ||
nodeN# ps ax | grep carp | nodeN# ps ax | grep carp | ||
- | nodeN# ifconfig | grep carp | + | nodeN# ip a | grep carp |
nodeN# ps ax | grep dh | nodeN# ps ax | grep dh | ||
- | nodeN# ps ax | grep he | + | nodeN# crm status |
nodeN# mount | grep ext | nodeN# mount | grep ext | ||
</code> | </code> | ||
+ | |||
+ | * [[Решение DRBD#Решение ситуации Split-Brain при использовании Pacemaker]] | ||
=== 7.1.2 Подготовка виртуальных машин === | === 7.1.2 Подготовка виртуальных машин === | ||
Line 804: | Line 817: | ||
</code><code> | </code><code> | ||
... | ... | ||
+ | #debian9 | ||
lxc.network.type = veth | lxc.network.type = veth | ||
lxc.network.link = br0 | lxc.network.link = br0 | ||
Line 810: | Line 824: | ||
lxc.network.ipv4.gateway = 192.168.X.254 | lxc.network.ipv4.gateway = 192.168.X.254 | ||
+ | #debian10 | ||
lxc.net.0.type = veth | lxc.net.0.type = veth | ||
lxc.net.0.link = br0 | lxc.net.0.link = br0 | ||
Line 828: | Line 843: | ||
root@node1.corpX.un:~# lxc-attach -n server -- ps ax | root@node1.corpX.un:~# lxc-attach -n server -- ps ax | ||
+ | |||
+ | root@node1.corpX.un:~# lxc-attach -n server -- bash | ||
root@node1.corpX.un:~# ssh server | root@node1.corpX.un:~# ssh server | ||
Line 850: | Line 867: | ||
<code> | <code> | ||
+ | node1# crm configure show | grep order | ||
+ | |||
+ | node1# crm configure | ||
+ | </code><code> | ||
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 |