5. Обзор команд CLI¶
- balancer detailed (on|off)¶
Включить/выключить более детальный вывод информации в
balancer show persistence mappings
- balancer show service all¶
Отобразить информацию по всем сервисам. Будут выведены следующие значения:
Значения
Описание
intervals.gc 1000
Период в миллисекундах, с которым выполняется поток Garbage Collector.
intervals.rate 2000
Период в миллисекундах, с которым считается скорость изменения статистик пoтоком Rate.
intervals.persist 5000
Период в миллисекундах, с которым выполняется поток Persistence.
intervals.wait_dst 2000
Период в миллисекундах, с которым поток Wait Destination выполняет проверку сетевой связности с RS (route, ARP).
sizes.service_map_size 1048576
Размер таблицы сервисов.
sizes.persistence_map_size 1048576
Размер таблицы Persistence.
sizes.max_workers_num 8192
Максимальное количество RS.
sizes.free_workers_num 8190
Количество свободных RS.
sizes.max_services_num 192
Максимальное количество сервисов.
current.services 2
Текущее количество сервисов.
current.workers 0
Не определено.
settings.force_close_all_proto 0
0 - оставляем соединение в случае недоступности RS
1 - незамедлительно сбрасываем соединение в случае недоступности RS
Тут речь идет о протоколе TCP. В случае UDP не имеет смысла держать соединение открытым, оно принудительно закрывается в независимости от значения этого параметра. Если связность восстановится, его можно пересоздать. Проверка проводится при обработке EVENT, который происходит при истечении timeout соединения.
stat.force_close 0
Количество принудительно закрытых соединений из-за потери сетевой связности RS.
stat.persist_sync_no_space 0
Нет свободной ячейки в таблице Persistence, новая запись не создалась через сообщение синхронизации.
stat.persist_sync_new 0
Количество записей persistence, созданных через сообщения синхронизации.
stat.persist_sync_update 0
Количество обновлений persistence, полученных через сообщения синхронизации.
stat.persist_sync_error_wrong_worker 0
В обновлении записи persistence, полученном через сообщение синхронизации, идентификатор RS не совпадает с тем, что записан в локальной таблице.
stat.persist_no_free_conn 0
Не получилось создать новое соединение через сообщение синхронизации, потому что закончились свободные соединения в пуле.
stat.persist_wrong_sid 0
В конфигурации балансировщика не удалось найти сервис, который упоминается в сообщении синхронизации. Обработка сообщения будет остановлена.
stat.persist_unknow_worker 0
В конфигурации балансировщика не удалось найти RS, который упоминается в сообщении синхронизации. Обработка сообщения будет остановлена.
stat.persist_disabled_worker 0
RS, который упоминается в сообщении синхронизации, находится в состоянии отличном от ENABLE. Обработка сообщения будет остановлена.
stat.persist_dead_by_timer 0
Количество записей, удаленных из таблицы Persistence по истечении timeout.
stat.sync_inactive 0
Всегда 0.
stat.sync_match 0
Cоединение, которое упоминается в сообщении синхронизации, найдено в таблице соединений. Информация о времени последнего использования и состоянии TCP (для TCP-соединений) будет обновлена.
stat.sync_unmatch 0
Cоединение, которое упоминается в сообщении синхронизации, найдено в таблице соединений, но с другим RS. Информация о RS будет обновлена.
stat.add_worker 2
Количество вызовов API, в которых добавляется RS.
stat.edit_worker 0
Количество вызовов API, в которых редактируется RS.
stat.remove_worker 0
Количество вызовов API, в которых удаляется RS.
stat.add_service 2
Количество вызовов API, в которых добавляется сервис.
stat.edit_service 0
Количество вызовов API, в которых редактируется сервис.
stat.remove_service 0
Количество вызовов API, в которых удаляется сервис.
stat.sch_add_worker 2
Количество добавлений RS в планировщик.
stat.sch_remove_worker 0
Количество удалений RS из планировщика.
stat.sch_init 2
Количество реинициализаций структур планировщика. Реинициализация происходит при изменении состояния RS на ENABLE или из ENABLE в любое другоe.
stat.sch_init_empty 2
Количество инициализаций планировщика. В этот момент в сервисе отсутсвуют RS в состоянии ENABLE.
stat.sch_deinit 0
Количество деинициализаций планировщика при изменении/удалении сервиса.
stat.worker_state_enabled 2
stat.worker_state_disabled 0
stat.worker_state_dead 0
stat.worker_state_wait_dst 2
Количество раз, которое RS был добавлен в очередь проверки сетевой связности (routing и ARP).
stat.worker_to_free 0
Количество удалений RS. Количество переходов из состояния DEAD в состояние FREE.
stat.worker_reset_persist 0
Количество вызовов подсистемы принудительного удаления записей persistence, которая срабатывает при переходе RS из состояния ENABLE в любое другое. Записи persistence при этом могут отсутствовать, удалять в этом случае нечего.
stat.persist_clear_mismatch 0
Количество раз, когда подсистема принудительного удаления записей persistence действительно удалила какие-то записи из таблицы Persistence, потому что они существовали. Срабатывает при переходе RS из из состояния ENABLE в любое другое.
stat.update_dst 528
Количество проверок сетевой связности (routing, ARP) с RS. Выполняется служебным потоком Wait Destination.
stat.sync_change 643
Количество синхронизаций после изменения настроек между Control Plane и Data Plane. Построена эта синхронизация на Lock-free механизме Read-Copy-Update (RCU).
service id 191
Идентификационный номер сервиса (SID).
Кроме вышеуказанной информации будет выведена следующая:
ap num vip port proto 0 5.61.23.13 80 tcp workers 4 scheduler wrr persist mask 0 persist timeout 0ms conn rate limit 0 worker_8188: 10.124.128.213 TUN weight 100 ON routing info: src_ip port dst_mac mtu 0 172.10.1.200 eth2 00:00:0c:07:ac:36 1500 total_conn 10 active_conn 0 persist_conn 0 in_packets 43850 in_bytes 3560037 out_packets 10 out_bytes 686 total_conn_ps 1 active_conn_ps 1 persist_conn_ps 0 in_packets_ps 1 in_bytes_ps 7 out_packets_ps 1 out_bytes_ps 7 service id 190 ap num vip port proto 0 172.10.1.201 80 udp workers 1 scheduler wrr persist mask 0 persist timeout 0ms conn rate limit 0 worker_8190: 172.10.1.100 DR weight 1 ON routing info: src_ip port dst_mac mtu 0 172.10.1.200 eth2 ee:60:d2:29:34:a6 1500 total_conn 0 active_conn 0 persist_conn 0 in_packets 0 in_bytes 0 out_packets 0 out_bytes 0 total_conn_ps 0 active_conn_ps 0 persist_conn_ps 0 in_packets_ps 0 in_bytes_ps 0 out_packets_ps 0 out_bytes_ps 0 src_ip dst_ip iface dst_mac UA flags 172.10.1.200 172.10.1.100 eth2 EE:60:D2:29:34:A6 UA
- balancer show persistence mappings¶
Вывести таблицу Persistence.
expired vip client worker 6:0 TCP 172.10.1.201:80 172.10.1.1 172.10.1.100
- balancer show service ip A.B.C.D port A¶
Вывести информацию по сервису (фильтр по IP:Port).
- service A add (tcp|udp) A.B.C.D <1-65535> scheduler (wrr|wlc|sh) persist mask size A timeout A¶
Аналог
ipvsadm –A
.
- service del (tcp|udp) A.B.C.D <1-65535>¶
Аналог
ipvsadm -D
.
- service A edit scheduler (wrr|wlc|sh) persist mask size A timeout A¶
Аналог
ipvsadm –E
.
- service A add worker ip A.B.C.D (dr|tunnel)¶
- service A add worker ip A.B.C.D (dr|tunnel) weight A¶
Аналог
ipvsadm -a
.
- service A del worker ip A.B.C.D¶
Аналог
ipvsadm -d
.
- [no] enable close all proto¶
Незамедлительно закрыть соединения всех протоколов в случае потери сетевой связности с RS. Если эта опция не активирована, то в случае недоступности RS принудительно закроются только UDP-соединения. TCP-соединения будут ждать естественного завершения. Посмотреть текущее значение параметра можно тут.
- balancer service A edit conn_rate_limit A¶
Задать Connection Rate для сервиса по SID (максимальная скорость создания новых соединений).
- balancer service edit_conn_rate_limit ip A.B.C.D port A conn_rate_limit A¶
Задать Connection Rate для сервиса по IP:Port.
- show connections info¶
Запросить информацию о состоянии балансировщика, статистики по соединениям, отброшенным пакетам, утилизации CPU и многое другое. Вывод команды будет следующим:
data plane info cpus utilization: worker 0.00 poll 0.00 combo 0.00 DP core 0 lcore 3 CPU utilization for last 1002 msec part core % system % tsc worker.idle 100.00 100.00 2405195316 worker.busy 0.00 0.00 4926 poll.idle 0.00 0.00 0 poll.rx 0.00 0.00 0 poll.tx 0.00 0.00 0 busy 0.00 0.00 4926 idle 100.00 100.00 2405195316 worker 0 rx_queues get put 0 3041 3041 tx_queues get put 0 0 0 data-plane statistics: dp__aux_send 3041 dp__released 0 dp__event_add 0 dp__ip_less3 2974 dp__ip_by8 7 dp__ip_by4 1 dp__ip_by1 1 dp__ip_tail 2 dp__non_aliased_icmp 0 dp__non_balanced_packet 0 dp__icmp_non_supported_l4 0 dp__translated_icmp 0
Ниже можно увидеть описание некоторых Data Plane счетчиков:
Значения
Описание
dp__aux_send 2
Количество пакетов, отправленных на обработку в AUX-поток.
dp__released 0
Количество пакетов, отброшенных в процессе обработки. Отброшенные пакеты возвращаются в MBUF-пул.
dp_event_add 1
Количество добавленных EVENT.
dp__ip_less3 5
Количество чтений из очередей сетевых интерфейсов, которые вернули меньше 4 пакетов. Прочитать из очереди система пытается 32 пакета за раз.
dp__ip_by8 0
Для оптимизации работы цикл обработки пакетов развернут: сначала идет цикл, где за одну итерацию обрабатывается по 8 пакетов. Счетик считает количество таких итераций. Цикл запускается только в том случае, если чтение из очереди сетевого интерфейса вернуло больше 8 пакетов за раз.
dp__ip_by4 0
Если после выполения цикла, который описан выше, количество необработанных пакетов осталось больше или равно 4, запускается процесс обработки сразу четырех пакетов. Счетчик показывает количество выполнений данного условия.
dp__ip_by1 0
Количество пакетов, обработанных по одному после описанных выше оптимизаций.
dp__ip_tail 0
Счетчик показывает количество ненулевых (был вычитан хотя бы один пакет) чтений из очередей сетевых интерфейсов.
dp__non_aliased_icmp 0
Не определено.
dp__non_balanced_packet 0
Количество пакетов, для которых по Destination IP:Port не удалось найти соответствующий сервис в конфигурации балансировщика. Пакет отправится в OC Linux через AUX-поток.
dp__icmp_non_supported_l4 0
Неподдерживаемый протокол в ICMP-ошибке (поддерживается только TCP). Пакет отправится в OC Linux через AUX-поток.
dp__translated_icmp 0
Количество обработанных ICMP-ошибок.
dp__non_translated_icmp 0
Не поддерживаемый тип ICMP-пакетов. Поддерживается только Destination Unreachable. Пакет отправится в OC Linux через AUX-поток.
dp__non_ipv4_size 0
Количество пакетов с размером меньше минимального для IPv4. Пакет отправится в OC Linux через AUX-поток.
dp__l2_multicast 0
Количество пакетов на мультикастный Ethernet-адрес. Пакет отправится в OC Linux через AUX-поток.
dp__non_ipv4 0
Всегда 0.
dp__fragmented 0
Количество фрагментированных пакетов, отправленных на сборку в AUX-поток.
dp__not_supported_l4 0
Не поддерживаемый L4 протокол (поддерживаются TCP, UDP, ICMP).
dp__fragmentation_dont_frag 0
Всегда 0.
dp__fragmentation_no_mem 0
Не получилось выделить пакеты из MBUF-пула, чтобы выполнить IP-фрагментацию.
dp__fragmentation_bogus_size 0
Некорректный размер фрагментированного пакета.
dp__non_aliased_l4 0
Всегда 0.
dp__through_local 0
Количество отправленных пакетов на localhost. На локальном хосте можно добавить IP-адрес и завести его как RS в настройках vLB. Часть пакетов отбалансируется на localhost.
dp__conn_reset 0
Количество соединений, отброшенных Drop entry механизмом.
dp__conn_no_mem 0
Не получилось выделить новое соединение из пула соединений. Пул соединений создается при старте системы.
dp__fragmentation_no_frags 0
Не удалось выполнить IP-фрагментацию, пакет будет отброшен. В текущей реализации фрагментации есть ограничение на количество фрагментов, полученных в ходе данного процесса. Сейчас пакет не может быть разбит больше, чем на 64 фрагмента.
dp__non_aliased 0
Невозможно создать TCP-соединение по данному пакету. Отсутствует флаг SYN, и/или в пакете присутствуют флаги RST и/или FIN.
dp__out_to_big_icmp 0
Отправлена ICMP-ошибка Packet Too Big. Ошибка формируется в случае невозможности провести IP-фрагментацию, потому что в пакете установлен Don’t fragment Flag.
dp__out_to_big_icmp_v6 0
Отправлена ICMPv6-ошибка Packet Too Big. vLB не фрагментирует IPv6-пакеты.
dp__non_balanced_packet_v6 0
Количество IPv6-пакетов, которые не были отбалансированы, потому что в конфигурации балансировщика не найден соответствующий сервис. Пакет отправится в OC Linux через AUX-поток.
dp__non_aliased_v6 0
Невозможно создать TCP-соединение по пришедшему IPv6 пакету. Отсутствует флаг SYN, и/или в пакете присутствуют флаги RST и/или FIN.
dp__through_local_v6 0
Количество отправленных IPv6-пакетов на localhost. На локальном хосте можно добавить IPv6-адрес и завести его как RS в настройках vLB. Часть пакетов отбалансируется на localhost.
dp__not_supported_l4_v6 0
Неподдерживаемый L4 протокол, поддерживаются TCP, UDP, ICMP для IPv6-пакетов.
dp__end_of_packet_v6 0
Неполный пакет. Внутри ICMPv6-ошибки получили обрезанный L4 заголовок. Пакет отправится в OC Linux через AUX-поток.
dp__icmp_in_icmp_v6 0
ICMPv6-ошибка на ICMPv6-пакет. Поддерживается ошибки только для TCP и UDP. Пакет отправится в OC Linux через AUX-поток.
dp__icmp_info_message_v6 0
Получено ICMPv6-сообщение, тип которого не соответствует ICMP-ошибке. Пакет отправится в OC Linux через AUX-поток.
dp__icmp_not_supported_l4_v6 0
Неподдерживаемый L4 протокол в ICMPv6-ошибке. Поддерживаются только TCP и UDP. Для ICMP есть отдельный счетчик.
release__ttl 0
TTL в IP-заголовке оказался равным 0. Пакет будет отброшен.
release__sched_failed 0
Не удалось отбалансировать пакет по следующим причинам:
Нет активного RS в настройках сервиса.
Не получилось добавить запись в таблицу Persistence, потому что не нашлось свободной ячейки в бакете.
Пакет будет отброшен.
release__xmit_failed 0
Всегда 0.
release__no_service 0
Всегда 0.
release__reuse_no_service 0
При попытке переиспользовать соединения в настройках балансировщика не удалось найти соответствующий сервис. Пакет будет отброшен.
release__ip_fragmented 0
Всегда 0.
release__wrong_tcp_flags 0
Всегда 0.
release__malformed_ipv4 0
Некорректный IPv4-пакет. Длина заголовка IPv4, которая определена в пакете, меньше минимального размера. Пакет будет отброшен.
release__icmp_ip_malformed 0
Некорректный ICMP-пакет. Внутри ICMP-ошибки содержится IP-пакет. Длина заголовка IPv4, которая там определена, меньше минимального размера.
release__rate_limit_exceeded 0
Превышен лимит скорости создания соединений. Пакет будет отброшен.
release__reuse_no_service_v6 0
То же, что и release__reuse_no_service, только для IPv6-пакетов.
release__malformed_ip_packet_v6 0
Некорректный IPv6-пакет. Длина payload, которая указана в заголовках L4 и длина, которая указана в заголовках IPv6 не коррелирют между собой. Пакет будет отброшен.
release__malformed_ip_icmp_packet_v6 0
Внутри ICMPv6-ошибки содержится обрезанный IPv6-пакет. Пакет будет отброшен.
sessions__removed 0
Количество соединений, удаленных по истечению timeout.
sessions__created 1
Количество созданных соединений.
sessions__requested 1
Количество запросов на создание соединения.
sessions__reused 0
Количество переиспользованных соединений. Переиспользуются соединения с идентичным набором параметров (IP-адреса, порты клиента/сервера и протокол). Механизм переиспользования срабатывает, когда мы получаем TCP SYN пакет с параметрами уже существующего соединения. Переиспользуется именно запись в таблице соединений, RS в этом случае выбирается заново.
sessions__reused_v6 0
То же самое, что и sessions__reused, но для IPv6-пакетов.
balancer__persist_match 0
Соединение отбалансировано по уже созданной записи в таблице Persistence.
balancer__sch_action 1
Количество вызовов планировщика для поиска RS.
balancer__sch_action_commit 1
Количество изменений во внутренних структурах планировщика. Происходят они после каждого выбранного планировщиком RS. В них хранится служебная информация, которая используется при выборе планировщиком следующего RS.
balancer__persist_no_space 0
Не удалось создать новую запись persistence. Не нашлось свободной ячейки в бакете соответствующей таблицы.
balancer__persist_match_locked 0
RS выбран по уже созданной записи в таблице Persistence.
balancer__no_worker 0
Информация о RS удалена из соединения по следующим причинам:
Соединение в процессе удаления из таблицы.
Соединение в процессе сброса Drop entry механизмом.
Соединение в процессе реинициализации механизмом переиспользования.
Пакет отправится в OC Linux через AUX-поток.
balancer__dead_worker 0
Всегда 0.
balancer__no_sch 0
Планировщик сервиса не инициализирован. Отсутствуют RS в состоянии ENABLE.