Ха-Прокси с 3-мя приложениями Springboot - PullRequest
1 голос
/ 13 января 2020

У меня есть 3 приложения для весенней загрузки, каждое из которых работает на свой порт. Может кто-нибудь подсказать мне, как настроить Ha Proxy, чтобы продемонстрировать балансировку нагрузки между 3 приложениями (может сделать несколько экземпляров). Есть ли какая-то особенность в весенней загрузке, которая интегрирует Ha Proxy? Что нужно изменить в конфигурационном файле Ha Proxy?

1 Ответ

2 голосов
/ 13 января 2020

На самом деле, есть несколько способов достичь этого. Но я не думаю, что в весенней загрузке есть что-то, что можно интегрировать с HAProxy, потому что это два разных процесса, и оба они работают независимо и ничего не связаны друг с другом, как вы, возможно, знаете, что делает весенняя загрузка. И HAProxy является балансировщиком нагрузки, а также прокси-сервером для процессов TCP и HTTP, которые распределены по нескольким серверам.

Это объясняет первую часть вашего вопроса.

Теперь, на самом деле, как вы можете достичь этого, полностью зависит от того, как вы хотите настроить это.

  1. Запускать отдельные приложения как службу, как вы, и направлять трафик c к каждому из них на основе URL.

  2. Еще одно развертывание отдельные приложения на одном tomcat и с помощью контекстного пути в свойствах вашего приложения вы можете перенаправить traffi c из внешнего мира на tomcat, а tomcat позаботится обо всем.

И там могут быть другие способы сделать это, кто-то может добавить в будущем к этому ответу. Но в любом случае для этого вам нужно использовать прокси-сервер, это может быть либо HAProxy, Nginx, либо что-то, что соответствует цели.

Итак, принимая ваш подход, давайте предположим, что ваши приложения работают на порт 8081, 8082, 8083. Ваша настройка HAProxy должна выглядеть примерно так.

frontend www_http
    mode            http
    bind            *:80
    bind            *:443 ssl crt /etc/ssl/certs/mycompany.pem

    # passing on that browser is using https
    reqadd X-Forwarded-Proto:\ https
    # for Clickjacking
    rspadd X-Frame-Options:\ SAMEORIGIN

    # prevent browser from using non-secure
    rspadd Strict-Transport-Security:\ max-age=15768000
    redirect        scheme https code 301 if !{ ssl_fc }

    stats enable
    stats refresh 30s
    stats show-node
    stats realm Haproxy\ Statistics
    stats uri /haproxy?stats

    acl app1 hdr(host) -i app1.mycompany.com
    acl app2 hdr(host) -i app2.mycompany.com
    acl app3 hdr(host) -i app3.mycompany.com

    # Just incase if you are using path instead of subdomain. But it's commented.
    # acl app1 url_beg /app1
    # acl app2 url_beg /app2
    # acl app3 url_beg /app3

    use_backend app_1_backend if app1
    use_backend app_2_backend if app2
    use_backend app_3_backend if app3

# backend for app 1
backend app_1_backend
    timeout client  300000
    timeout server  300000
    redirect scheme https if !{ ssl_fc }
    server app-1 127.0.0.1:8081 check
    http-response set-header X-TS-Server-ID %s

# backend for app 2
backend app_2_backend
    timeout client  300000
    timeout server  300000
    redirect scheme https if !{ ssl_fc }
    server app-2 127.0.0.1:8082 check
    http-response set-header X-TS-Server-ID %s

# backend for app 3
backend app_3_backend
    timeout client  300000
    timeout server  300000
    redirect scheme https if !{ ssl_fc }
    server app-3 127.0.0.1:8083 check
    http-response set-header X-TS-Server-ID %s

Это базовая настройка c, но вы можете добавить свои параметры и изменить все, как вам нравится.

Надеюсь, это поможет.

...