web-dev-qa-db-fra.com

ELB peut-il rediriger une demande en fonction de l'URL?

J'essaie de configurer mon serveur d'applications derrière Amazon Elastic Load Balancer. Je pense avoir un serveur dédié pour l'ancienne version et tous les autres serveurs dédiés pour la nouvelle version. Je pense mettre en application ceci en utilisant la version id dans le paramètre de chemin

par exemple.

Version actuelle (3.0): http://example.com/APPNAME/service

Ancienne version (2.2): http://example.com/APPNAME/v2.2/service

J'aimerais savoir:

  1. Est-ce que ELB est capable d’examiner les requêtes HTTP?
  2. ELB peut-il rediriger une demande en fonction du paramètre de chemin d'URL?
45
subhashlg26

Cela fait des années que vous avez posté votre question, mais Amazon a récemment annoncé la fonctionnalité d'équilibrage de la charge des applications (couche 7). Cela devrait soutenir ce que vous recherchez. 

Fondamentalement, vous pouvez définir différents groupes cibles vers lesquels le trafic est routé en fonction d'une "règle" (par exemple, un modèle de chemin d'URL). Les règles peuvent être hiérarchisées au besoin.

Voir les détails à https://aws.Amazon.com/elasticloadbalancing/applicationloadbalancer/

2
jstell

Voici une solution possible que j'ai vue. Ce n'est pas aussi idéal que d'utiliser Nginx Plus natif pour l'équilibrage de charge, mais si vous devez utiliser ELB, cela fonctionne.

Imaginons une architecture comme celle-ci:

                        ELB
                         |
          Server 1    Server 2   Server...
          (Current)   (Current)  (Current)
              \           |         /
                      Server X
                      (Legacy)

Chacun des serveurs de la première couche exécute l'implémentation "actuelle". Ils exécutent également Nginx ou Apache en tant que serveur Web (il s'agit généralement d'une meilleure pratique devant n'importe quelle application Web, IMO) devant la couche d'application.

Chacun des fichiers de configuration Nginx/Apache contient une ligne recherchant le paramètre URL indiquant qu'il s'agit d'un appel hérité qui transmet la demande au serveur X. S'il ne s'agit pas d'un appel hérité, il continue simplement la demande vers l'application "actuelle".

L'inconvénient est que vous utilisez quelques cycles dans les serveurs actuels pour envoyer un proxy vers le serveur hérité, mais votre architecture est assez simple et vous avez un flux centralisé. 

0
mwielbut