Load balancer on same stack for multi-region-hosts

Hi there!

I have a project I’m deploying using rancher-compose it basically have one container and one load balancer my infra consist on 3 hosts each of them in different regions (us-west, us-east and eu-west). When deploying I deploy with io.rancher.scheduler.global: true label for both my app container and my load balancer container and I get what I want one container of each on each of the host in different regions.

So this is my question: How can I do to force each of those load balancers to just redirect to the app container that it’s on the same region than the load balancer?

This is how my docker-compose.yml file looks like:

app:
  image: myregistry.com/mynamespace/myapp:latest
  env_file: .env
  labels:
    io.rancher.container.pull_image: always
    io.rancher.scheduler.global: true
    io.rancher.scheduler.affinity:host_label: environment=production,application=myapp
  stdin_open: true

lb:
  image: rancher/load-balancer-service
  ports:
    - 443:80
  links:
    - app:app
  labels:
    myapp.lb: 1
    io.rancher.scheduler.global: true
    io.rancher.loadbalancer.ssl.ports: '443'
    io.rancher.scheduler.affinity:host_label: environment=production,application=myapp
  stdin_open: true

At the minute the load balancer redirect to any of the containers as I think it’s just not aware of the regions, what I’m trying to avoid here it’s lag between those call so if someone from us west coast request my app it should be querying my host/container from us west.

Thanks

The load balancer by default round robins between all the containers of the service, so what you’re requesting is not possible.

You would have to create individual load balancers/apps for each region if you want that kind of limitation.

1 Like