HAProxy stick-table 存储自定义值
HAProxy stick-table store a custom value
我想在 stick-table 中存储自定义 "value" 并在另一个 ACL 中将其用于 select 服务器。
我有这个配置,它使用 header 值 "x-external-id" 作为键和 server-id 作为它的值来创建 stick-table。
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:
# 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
值 (server-id) 由 HaProxy 根据处理请求的服务器设置。但我想在这里保存一个自定义值。可能吗?
显然 HAPROxy 不允许存储自定义值。 stuick table 中只能存储 server_id 和跟踪计数器。
所以我定义了两个后端,每个后端都是一根棍子table。每个客户端都点击自己的后端并填充棒 table。
从另一个 HAProxy 部分,我可以使用 table_server_id 在 sticktable 中查找并路由到拥有 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
我想在 stick-table 中存储自定义 "value" 并在另一个 ACL 中将其用于 select 服务器。
我有这个配置,它使用 header 值 "x-external-id" 作为键和 server-id 作为它的值来创建 stick-table。
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:
# 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
值 (server-id) 由 HaProxy 根据处理请求的服务器设置。但我想在这里保存一个自定义值。可能吗?
显然 HAPROxy 不允许存储自定义值。 stuick table 中只能存储 server_id 和跟踪计数器。
所以我定义了两个后端,每个后端都是一根棍子table。每个客户端都点击自己的后端并填充棒 table。
从另一个 HAProxy 部分,我可以使用 table_server_id 在 sticktable 中查找并路由到拥有 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