Маршрутизация на основе заголовков запросов с использованием AWS Load Balancer или nginx - PullRequest
0 голосов
/ 22 января 2019

Сценарий : у меня 2 клиента. скажем, клиент A и клиент B. Оба клиента имеют один общий идентификатор (например, UUID). Мое приложение (это c ++) настроено так, что оба клиента должны подключаться к одному серверу.

Я планирую добавить (AWS) ELB / nginx перед моим приложением. Итак, Проблема в том, что когда мы получили запрос от клиента A, он пройдет через ELB и подключится к одному из узлов. Когда клиент B отправляет запрос в ELB, я не уверен, что он подключится к тому же узлу, где подключен клиент A. Клиент B должен подключиться к тому узлу, где был подключен клиент A.

В МОЕМ СЦЕНАРИИ оба клиента должны подключаться к одному и тому же узлу. Клиенты всегда приходят в паре с общим идентификатором. Что следует использовать в этом случае?

Мое приложение докеризовано, и я использую kubenetes для развертываний.

1 Ответ

0 голосов
/ 22 января 2019

Вы можете настроить Nginx Ingress Controller и использовать annotation:

nginx.ingress.kubernetes.io/server-snippet

Ваш Ingress может выглядеть следующим образом:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |
 set $agentflag 0;

 if ($http_user_agent ~* "(Mobile)" ){
 set $agentflag 1;
 }

 if ( $agentflag = 1 ) {
 return 301 https://m.example.com;
 }

Пожалуйста, проверьте более подробное объяснение Аннотации для ingress-nginx на Github.

Если у вас более одного узла, вы можете запланировать POD на одном узле, используя Node affinity. Этого также можно достичь, используя nodeSelector, который является простой версией Node affinity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...