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
>