Hi Nathan,

There might be a mistake in your configuration.
Since you configured a port on the server directive line, then HAProxy
will forward all the traffic to this port, whatever the incoming port
was.
I doubt this is what you want.

Second, both backends are using sitck table from the other backend...
So you don't have the same persistence for each service.
Better having one stick table in a backend and point to it from the
other backend.

Third, the tcp-check does not work like this.

Here is how I would do your configuration:

frontend servername:80
    bind servername:80
    bind servername:8080
    default_backend server

backend server
    option tcp-check
    tcp-check connect port 80
    tcp-check connect port 8080
    stick-table type ip size 1
    stick on dst
    server server-01-ext server01 check inter 5000
    server server-02-ext server02 check inter 5000


Baptiste


On Tue, Apr 22, 2014 at 1:22 PM, Nathan Reilly <[email protected]> wrote:
> Hi Baptiste,
>
> You put me in the right track, I had over-complicated my config, here is the
> working config for anyone who's interested:
>
> frontend servername:80
>     bind servername:80
>     bind servername:8080
>     acl int dst_port 8080
>     acl ext dst_port 80
>     use_backend server-int if int
>     use_backend server-ext if ext
>     default_backend server-ext
>
> backend server-ext
>     option tcp-check port 80
>     option tcp-check port 8080
>     stick-table type ip size 1
>     stick match dst table server-int
>     stick on dst
>     server server-01-ext server01:80 check inter 5000
>     server server-02-ext server02:80 check inter 5000
>
> backend server-int
>     option tcp-check port 80
>     option tcp-check port 8080
>     stick-table type ip size 1
>     stick match dst table server-ext
>     stick on dst
>     server server-01-int server01:8080 check inter 5000
>     server server-02-int server02:8080 check inter 5000
>
> Thanks for your help, it's truly appreciated.
>
> Cheers,
> Nathan
>
>
> On Mon, Apr 21, 2014 at 2:07 PM, Baptiste <[email protected]> wrote:
>>
>> Hi Nathan,
>>
>> Why not simply using a single frontend with two binds pointing to one
>> backend?
>> It would do the trick.
>> Concerning checking, you can use the tcp-check feature to ensure both
>> ports are available on each server.
>>
>> Baptiste
>>
>> On Mon, Apr 21, 2014 at 1:20 PM, Nathan Reilly <[email protected]>
>> wrote:
>> > Hello all,
>> >
>> > I have a situation that I have been trying to get working for days, yet
>> > can't seem to get there. There are two sets of requirements, I can get
>> > either requirements working in isolation, but not together.
>> > First requirement is I need an active/passive failover pair, and in the
>> > case
>> > of failure of one server, connections must stick to the available server
>> > until it fails, so if connections are initially to server1, then it
>> > fails,
>> > all connections go to server2, even when server1 comes back online,
>> > server2
>> > must keep servicing requests until it fails, and so on.
>> >
>> >
>> > Second requirement is that I have two backend servers, each with two
>> > 'services'. These services are linked, so if either service goes down,
>> > the
>> > entire server must be marked as down.
>> >
>> > See config so far below,
>> >
>> > frontend ext servername:80
>> >     acl server-01-down nbsrv(server-01) lt 2
>> >     acl server-02-down nbsrv(server-02) lt 2
>> >     use_backend server-ext-01 if server-02-down
>> >     use_backend server-ext-02 if server-01-down
>> >     default_backend server-ext-01
>> >
>> > frontend int servername:8080
>> >     stick-table type ip size 1 expire 5d
>> >     stick on dst
>> >     acl server-01-down nbsrv(server-01) lt 2
>> >     acl server-02-down nbsrv(server-02) lt 2
>> >     use_backend server-esb-01 if server-02-down
>> >     use_backend server-esb-02 if server-01-down
>> >     default_backend server-esb-01
>> >
>> > backend server-01
>> >     server server-01-ext server01-ext:80 check inter 5000
>> >     server server-02-int server01-int:8080 check inter 5000
>> >
>> > backend server-02
>> >     server server-02-ext server02-ext:80 check inter 5000
>> >     server server-02-int server02-int:8080 check inter 5000
>> >
>> > backend server-ext-01
>> >     stick-table type ip size 1 expire 5d
>> >     stick on dst
>> >     server server-01-ext server01-ext:80 check inter 5000
>> >
>> > backend server-ext-02
>> >     stick-table type ip size 1 expire 5d
>> >     stick on dst
>> >     server server-02-ext server02-ext:80 check inter 5000
>> >
>> > backend server-int-01
>> >     stick-table type ip size 1 expire 5d
>> >     stick on dst
>> >     server server-01-int server01-int:8080 check inter 5000
>> >
>> > backend server-int-02
>> >     stick-table type ip size 1 expire 5d
>> >     stick on dst
>> >     server server-02-int server02-int:8080 check inter 5000
>> >
>> > Any assistance or recommendations would be greatly appreciated,
>> >
>> > Thanks in advance,
>> >
>> > Nathan
>
>

Reply via email to