The documentation at the following page https://www.haproxy.com/documentation/hapee/1-8r1/onepage/#4-stick%20on makes this comment:
It is possible to share a table with other backends by referencing it using the "table" keyword. If another table is referenced, the server's ID inside the backends are used. By default, all server IDs start at 1 in each backend, so the server ordering is enough. But in case of doubt, it is highly recommended to force server IDs using their "id" setting.
This point "If another table is referenced, the server’s ID inside the backends are used." is vague in that what server id will it be using and from where?
Also this point “By default, all server IDs start at 1 in each backend, so the server ordering is enough.”, I’m not sure what it is referring to by server ordering is enough ?
Also, the following example is given in that doc:
In my testing when I share a table with another backend and then see what is in the table it only shows one record, for example.
# table: one, type: ip, size:1048576, used:1 0x1a7bb04: key=10.0.0.2 use=0 exp=17718 server_id=1
Since there is one record in the table and it is being shared by another backend and each back having it’s own servers then what is the logic to select a server in each backend?
In the doc note (see above) it states that it is highly recommended to use ids, when I do that for example.
backend one stick on src table two server s1 10.0.0.5:123 id 100 backend two stick-table type ip size 200k expire 30m stick on src server s1 10.0.0.7:222 id 200
When I view table two it still shows only one record:
# table: two, type: ip, size:1048576, used:1 0x1a7bb04: key=10.0.0.2 use=0 exp=17718 server_id=200
So then how would backend one server selection work when there is only one record in the table where the server id = 200 - which is not one of the ids in backend one ?