Подробное объяснение поддержки активности - Введение в инструмент управления LVS (IPVS) ipvsadm

балансировки нагрузки

Что такое ipvsadm?

ipvsadm — это инструмент, используемый для настройки, обслуживания или просмотра таблицы виртуальных серверов в ядре Linux.LVS (виртуальный сервер Linux) может создавать эластичные сетевые службы на основе двух или более узлов в кластере и активных узлов в кластере. может перенаправлять запросы на обслуживание на набор хостов, которые фактически предоставляют услуги, предоставляя два протокола, включая TCP и UDP, три режима пересылки пакетов (NAT/туннелирование/прямая маршрутизация) и восемь алгоритмов балансировки нагрузки (раунд-робин). наименьшее соединение, взвешенное наименьшее соединение, наименьшее соединение на основе местоположения, наименьшее соединение на основе местоположения с репликацией, хеширование назначения и хеширование источника).

Как использовать

ipvsadm предоставляет два основных формата использования, квадратные скобки обозначают необязательный параметр, а два формата команд соответствуют виртуальному серверу и реальному серверу соответственно.

ipvsadm COMMOND [protocol] service-address [scheduling-method] [persistence options]

или

ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options]

Первый формат команды используется для настройки виртуальной службы (виртуальной службы) и алгоритма, используемого для распределения запросов службы на реальные серверы, а другие параметры — это тайм-аут сохранения и сетевая маска для постоянных служб.

Второй формат команды используется для настройки реального сервера, связанного с существующим виртуальным сервером.При указании реального сервера необходимо указать метод пересылки пакетов и вес реального сервера относительно других реальных серверов под виртуальным сервером. в противном случае будет использоваться значение по умолчанию.

  • установить ipvsadm
[root@10-10-40-96 ~]# yum instal -y ipvsadm

Описание параметра команды

Соглашение заключается в том, что верхний регистр используется для виртуального сервера, а нижний — для реального сервера.

   -A, --add-service 添加virtual server, virtual server必须唯一(IP+端口+协议用于区分一个唯一的虚拟服务)

   -E, --edit-service 编辑虚拟服务

   -D, --delete-service 删除一个虚拟服务, 包括与之关联的真实服务器

   -C, --clear 清空虚拟服务表

   -R, --restore 通过标准输入恢复虚拟服务表(IPVS table)

   -S, --save 以可以通过-R参数恢复的格式导出虚拟服务表到标准输出

   -a, --add-server 添加一个真实服务器到一个虚拟服务

   -e, --edit-server 在一个虚拟服务当中编辑一个真实服务器

   -d, --delete-server 从一个虚拟服务当中移除一个真实服务器

   -L, -l, --list 列出虚拟服务表, 默认是列出所有虚拟服务表, 若需要列出某服务表, 后面指定服务地址即可

   -Z, --zero 清零一个所有服务的数据包 / 字节 / 速率计数器

Пример

  • Посмотреть IPVS
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
  -> 172.16.130.20:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • Сохранить IPVS

По умолчанию выводится на стандартный вывод, который можно перенаправить в текст для сохранения, что удобно для последующего импорта.

[root@10-10-88-192 ~]# ipvsadm -S -n
-A -t 10.10.88.188:7480 -s wlc -p 1800
-a -t 10.10.88.188:7480 -r 172.16.130.20:7480 -m -w 1
[root@10-10-88-192 ~]# ipvsadm -S -n > ipvs_info
[root@10-10-88-192 ~]#
  • Очистить IPVS
[root@10-10-88-192 ~]# ipvsadm -C
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@10-10-88-192 ~]#
  • восстановить (восстановить) IPVS

Примечание. По умолчанию восстановление выполняется со стандартного ввода.

[root@10-10-88-192 ~]# cat ipvs_info | ipvsadm -R
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
  -> 172.16.130.20:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • удалить реальный сервер
[root@10-10-88-192 ~]# ipvsadm -d -t 10.10.88.188:7480 -r 172.16.130.20:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
[root@10-10-88-192 ~]#

Примечание. После удаления реального сервера пункт назначения (конечная точка) будет перемещен в корзину (временную корзину), а затем удален через определенный период времени. Если в течение этого периода к реальному серверу снова можно будет получить доступ, он будет взят вернуть из корзины и продолжать использовать. Конкретные инструкции см. в комментариях к исходному коду IPVS.https://elixir.bootlin.com/linux/v3.0/source/net/netfilter/ipvs/ip_vs_ctl.c, после открытия режима отладки IPVS (debug_level=8)dmesg -HewВыход

[Sep26 11:08] IPVS: Enter: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1079
[ +0.000007] IPVS: Moving dest 172.16.130.20:7480 into trash, dest->refcnt=1
[ +0.000002] IPVS: Leave: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1101
[ +11.076403] IPVS: Removing destination 0/172.16.130.20:7480 from trash
  • добавить реальный сервер
[root@10-10-88-192 ~]# ipvsadm -a -t 10.10.88.188:7480 -r 172.16.130.22:7480 -m
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
  -> 172.16.130.22:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • Добавить виртуальный сервер
[root@10-10-88-192 ~]# ipvsadm -A -t 10.10.88.189:7480 -s wlc -p 1800
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
  -> 172.16.130.22:7480 Masq 1 0 0
TCP 10.10.88.189:7480 wlc persistent 1800
[root@10-10-88-192 ~]#
  • удалить виртуальный сервер
[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.189:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
  -> 172.16.130.22:7480 Masq 1 0 0

Если вы удалите виртуальный сервер напрямую, если есть реальный сервер, реальный сервер также будет удален.

[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.188:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@10-10-88-192 ~]#