User Tools

Site Tools


протокол_carp

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
протокол_carp [2016/04/15 10:44]
val
протокол_carp [2021/07/08 08:04] (current)
admin [Смена ролей узлов]
Line 1: Line 1:
 ====== Протокол CARP ====== ====== Протокол CARP ======
  
 +  * [[https://​ru.wikipedia.org/​wiki/​VRRP|VRRP]]
 +  * [[https://​ru.wikipedia.org/​wiki/​CARP|CARP]]
   * [[Сервис NTP]]   * [[Сервис NTP]]
  
-===== Ubuntu =====+===== Debian/Ubuntu =====
  
 +  * [[https://​serverfault.com/​questions/​298776/​ucarp-promote-slave-to-master|ucarp:​ promote slave to master]]
 +  * [[https://​askubuntu.com/​questions/​1149275/​using-netplan-with-ucarp|Using netplan with ucarp]] + systemd
 ==== Установка ==== ==== Установка ====
 <​code>​ <​code>​
-root@nodeN:​~#​ apt-get install ucarp+root@nodeN:​~#​ apt install ucarp
 </​code>​ </​code>​
  
Line 15: Line 19:
  
 root@nodeN:​~#​ less /​etc/​network/​if-up.d/​ucarp root@nodeN:​~#​ less /​etc/​network/​if-up.d/​ucarp
- 
-root@nodeN:​~#​ ifdown eth0 
  
 root@nodeN:​~#​ cat /​etc/​network/​interfaces root@nodeN:​~#​ cat /​etc/​network/​interfaces
Line 25: Line 27:
         address 192.168.X.N         address 192.168.X.N
         netmask 255.255.255.0         netmask 255.255.255.0
 +
         ucarp-vid 1         ucarp-vid 1
         ucarp-vip 192.168.X.254         ucarp-vip 192.168.X.254
Line 34: Line 37:
 ... ...
 </​code><​code>​ </​code><​code>​
-root@nodeN:​~# ​cat /​usr/​share/​ucarp/​vip-up+root@nodeN:​~# ​less /​usr/​share/​ucarp/​vip-up
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Line 40: Line 43:
 /sbin/ifup $1:ucarp /sbin/ifup $1:ucarp
 </​code><​code>​ </​code><​code>​
-root@nodeN:​~# ​cat /​usr/​share/​ucarp/​vip-down+root@nodeN:​~# ​less /​usr/​share/​ucarp/​vip-down
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Line 49: Line 52:
 ==== Запуск ==== ==== Запуск ====
 <​code>​ <​code>​
 +root@nodeN:​~#​ ifdown --force eth0
 +
 root@nodeN:​~#​ ifup eth0 root@nodeN:​~#​ ifup eth0
 </​code>​ </​code>​
  
 ==== Проверка ==== ==== Проверка ====
 +
 +  * [[Сигналы#​Отправка сигнала]]
 +
 <​code>​ <​code>​
 root@nodeN:​~#​ ps ax | grep carp root@nodeN:​~#​ ps ax | grep carp
  
 root@nodeN:​~#​ ifconfig eth0:ucarp root@nodeN:​~#​ ifconfig eth0:ucarp
 +
 +root@nodeN:​~#​ pkill -USR1 ucarp
 +
 +root@nodeN:​~#​ killall -USR1 ucarp
 +
 +root@nodeN:​~#​ grep carp /​var/​log/​syslog
 </​code>​ </​code>​
  
-=== Остановка ===+==== Смена ролей узлов ====
 <​code>​ <​code>​
-root@nodeN:~ifdown eth0:ucarp+wincmd:\> arp -a 
 + 
 +masternodepkill -USR2 ucarp 
 + 
 +masternode# killall -USR2 ucarp 
 + 
 +wincmd:​\>​ arp -a
 </​code>​ </​code>​
 +
  
 ===== FreeBSD (user land) ===== ===== FreeBSD (user land) =====
Line 68: Line 89:
 ==== Установка ==== ==== Установка ====
 <​code>​ <​code>​
-[nodeN:~] # pkg_add -r ucarp+[nodeN:~] # pkg install ​ucarp
 </​code>​ </​code>​
  
 ==== Настройка ==== ==== Настройка ====
 <​code>​ <​code>​
-[node1:~] # cat /​etc/​rc.conf+[nodeN:~] # less /​usr/​local/​etc/​rc.d/​ucarp 
 + 
 +[nodeN:~] # cat /​etc/​rc.conf
 </​code><​code>​ </​code><​code>​
 ... ...
 +ucarp_src="​192.168.X.N"​
 ucarp_enable="​YES"​ ucarp_enable="​YES"​
 ucarp_vhid="​1"​ ucarp_vhid="​1"​
 ucarp_if="​em0"​ ucarp_if="​em0"​
-ucarp_src="​192.168.X.1"​ 
 ucarp_addr="​192.168.X.254"​ ucarp_addr="​192.168.X.254"​
-# ucarp_advskew="​50"​ 
-# ucarp_preempt="​YES"​ # For always use master with lover advskew 
 ucarp_pass="​secret"​ ucarp_pass="​secret"​
-ucarp_upscript="/​usr/​local/​etc/vip-up.sh+ucarp_upscript="/​usr/​local/​sbin/ucarp-up" 
-ucarp_downscript="/​usr/​local/​etc/vip-down.sh"+ucarp_downscript="/​usr/​local/​sbin/ucarp-down"
 </​code><​code>​ </​code><​code>​
-[node2:~] # cat /etc/rc.conf+[nodeN:~] # cat /usr/local/​sbin/​ucarp-up
 </​code><​code>​ </​code><​code>​
 +#!/bin/sh
 ... ...
-ucarp_enable="​YES"​ +/​sbin/​ifconfig ​"$1" ​alias "$2" ​netmask 255.255.255.255
-ucarp_vhid="​1"​ +
-ucarp_if="em0" +
-ucarp_src="​192.168.X.2" +
-ucarp_addr="​192.168.X.254" +
-# ucarp_advskew="​100"​ +
-# ucarp_preempt="​YES"​ +
-ucarp_pass="​secret"​ +
-ucarp_upscript="/​usr/​local/​etc/​vip-up.sh"​ +
-ucarp_downscript="/​usr/​local/​etc/​vip-down.sh"​+
 </​code><​code>​ </​code><​code>​
-[nodeN:~] # cat /usr/local/etc/vip-up.sh+[nodeN:~] # cat /usr/local/sbin/ucarp-down
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
-ifconfig em0 inet 192.168.X.254/32 alias+... 
 +/sbin/​ifconfig "​$1"​ -alias "​$2"​ 
 +...
 </​code><​code>​ </​code><​code>​
-[nodeN:~] # chmod +x /usr/local/etc/vip-up.sh +[nodeN:~] # service ucarp start 
-</​code><​code>​ +</code> 
-[nodeN:~# cat /usr/local/etc/vip-down.sh+ 
 +===== Дополнительные материалы ===== 
 + 
 +  * [[http://serverfault.com/questions/​179263/​multiple-ucarp-vips-on-single-interface-with-debian-ubuntu|Multiple UCARP VIPs on single Interface with Debian/​Ubuntu]] 
 + 
 +==== Ubuntu вариант запуска процесса вручную ==== 
 + 
 +=== Установка === 
 +<​code>​ 
 +root@nodeN:​~#​ apt-get install ucarp 
 +</​code>​ 
 + 
 +=== Настройка === 
 +<​code>​ 
 +root@nodeN:~# cat /etc/vip-up.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
-ifconfig em0 inet 192.168.X.254/​32 ​-alias+/sbin/ip addr add 192.168.X.254/​32 ​dev "​$1"​
 </​code><​code>​ </​code><​code>​
-[nodeN:~chmod +x /usr/local/​etc/​vip-down.sh+root@nodeN:​~# ​cat /​etc/​vip-down.sh
 </​code><​code>​ </​code><​code>​
-[nodeN:~# /usr/local/etc/rc.d/ucarp start+#!/bin/sh 
 +/sbin/ip addr del 192.168.X.254/​32 dev "​$1"​ 
 +</​code><​code>​ 
 +root@nodeN:​~# ​chmod +x /etc/vip-up.sh ​/etc/vip-down.sh
 </​code>​ </​code>​
  
-==== Дополнительные материалы ====+=== Запуск (можно прописать в /​etc/​rc.local) ​=== 
 +<​code>​ 
 +root@node1:​~#​ ucarp -i eth0 -s 192.168.X.1 -v 1 -p secret -a 192.168.X.254 -u /​etc/​vip-up.sh -d /​etc/​vip-down.sh -z -B
  
-  * [[http://serverfault.com/questions/179263/​multiple-ucarp-vips-on-single-interface-with-debian-ubuntu|Multiple UCARP VIPs on single Interface with Debian/Ubuntu]]+root@node2:~# ucarp -i eth0 -s 192.168.X.2 -v 1 -p secret -a 192.168.X.254 -u /etc/vip-up.sh -d /etc/vip-down.sh ​--
 +</​code>​ 
 +Примечания:​ 
 + 
 +  * Не смотря на ОБЯЗАТЕЛЬНОЕ наличие ключа ​-a 192.168.X.254 адрес повторно приходится присваивать/​удалять в скриптах 
 +  * If you want a "​preferred"​ master to immediately become a master even if another host is already the master: a) add the --preempt (or -P) switch to *all* hosts b)use a lower skew (-k) or a lower base for the "​preferred"​ one. 
 + 
 +=== Проверка === 
 +<​code>​ 
 +root@nodeN:​~#​ ip addr show dev eth0 
 +</​code>​ 
 + 
 +=== Остановка === 
 +<​code>​ 
 +root@nodeN:​~#​ killall ucarp 
 +</code>
  
-=== FreeBSD (kernel land) ===+==== FreeBSD (kernel land) ====
  
   * [[http://​www.freebsd.org/​doc/​en/​books/​handbook/​carp.html|Common Address Redundancy Protocol (CARP) (freebsd handbook)]]   * [[http://​www.freebsd.org/​doc/​en/​books/​handbook/​carp.html|Common Address Redundancy Protocol (CARP) (freebsd handbook)]]
Line 130: Line 179:
 [[Управление ядром и модулями в FreeBSD]] [[Управление ядром и модулями в FreeBSD]]
  
-== Настройка ==+=== Настройка ​===
  
 <​code>​ <​code>​
Line 154: Line 203:
 </​code>​ </​code>​
  
-== Проверка ==+=== Проверка ​===
 <​code>​ <​code>​
 nodeN# ifconfig carp0 nodeN# ifconfig carp0
протокол_carp.1460706240.txt.gz · Last modified: 2016/04/15 10:44 by val