HAProxy stick-table хранит пользовательское значение - PullRequest
1 голос
/ 04 июня 2019

Я хотел бы сохранить пользовательское «значение» в stick-таблице и использовать его в другом ACL для выбора сервера.

У меня есть эта конфигурация, которая создает stick-table со значением заголовка«x-external-id» в качестве ключа и server-id в качестве значения.

frontend frontend
   bind 125.213.51.144:8080
   default_backend  backend

backend  backend
   balance roundrobin
   stick store-request req.hdr(x-external-id)
   stick-table type string len 50 size 200k nopurge
   server gw1 125.213.51.100:8080 check id 1
   server gw2 125.213.51.101:8080 check id 2

Эта конфигурация создала эту таблицу флешек:

# table: backend, type: string, size:204800, used:3
0x558955d52ac4: key=00000000000 use=0 exp=0 server_id=1
0x558955d53114: key=11111111111 use=0 exp=0 server_id=2
0x558955d87a34: key=22222222222 use=0 exp=0 server_id=2

Значение (идентификатор сервера) устанавливается HaProxy на основании того, что сервер обработал запрос.Но я хотел бы сохранить пользовательское значение здесь.Возможно ли это?

1 Ответ

0 голосов
/ 08 июня 2019

Судя по всему, HAPRoxy не позволяет хранить пользовательские значения.Только таблица-идентификатор сервера и счетчики отслеживания могут храниться в таблице stuick.

Итак, я определил два бэкэнда, по одному на каждый.Каждый клиент использует свой собственный бэкэнд и заполняет таблицу флешек.

Из другого раздела HAProxy я мог бы использовать table_server_id для поиска в sticktables и маршрутизации к бэкэнду, которому принадлежала sticktable, поддерживающий запись.

############## Frontend ################
frontend my-frontend
   bind 125.213.51.100:38989

   acl is_service1 req.hdr(x-external-id),table_server_id(stick-table-1) -m int gt 0 
   use_backend my-backend    if is_service1

   acl is_service2 req.hdr(x-external-id),table_server_id(stick-table-2) -m int gt 0  
   use_backend my-backend-2  if is_service2

   default_backend my-backend-default

############## Backend 1 ################
backend my-backend
   balance roundrobin
   server service1 125.213.51.100:18989 check id 1 inter 10s fall 1 rise 1
   server service2 125.213.51.200:18989 check id 2 backup

############## Backend 2 ################
backend my-backend-2
   balance roundrobin
   server service2 125.213.51.100:18989 check id 2 inter 10s fall 1 rise 1
   server service1 125.213.51.200:18989 check id 1 backup

############## Backend Default  ################
backend my-backend-default
   balance roundrobin
   server service1 125.213.51.100:18989 check id 1
   server service2 125.213.51.200:28989 check id 2
...