Перенести домен в AWS Elastic Beanstalk

Я планирую переместить существующий веб-сайт в среду Elastic Beanstalk. В настоящее время веб-сайт размещен на нескольких экземплярах ec2, которые находятся за балансировщиком нагрузки HAProxy. Балансировщик нагрузки находится за Nginx, который обрабатывает завершение SSL. Не все серверы находятся в VPC.

Итак, базовая схема аппаратной платформы выглядит следующим образом:

     NGinx - SSL termination
       |
     HAProxy - load balancing
       |
EC2 - EC2 - EC2 <-> RDS
       (non VPC)

Среда эластичного бобового стебля состоит из Elastic Load Balancer, который также обрабатывает SSL, и нескольких экземпляров EC2 для приложения.

Новая среда будет подключаться к новому экземпляру RDS (заполненному данными из старого), который находится в том же VPC.

Когда начнется миграция, я изменю DNS домена так, чтобы он указывал на хост среды EB, но при этом останется окно, в котором клиенты, которые кэшировали записи DNS, будут обращаться к старой среде, а старая база данных. Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное?

Новая среда будет подключаться к новому экземпляру RDS (заполненному данными из старого), который находится в том же VPC.

Когда начнется миграция, я изменю DNS домена, чтобы указать на среду EB host, но это оставит окно, в котором клиенты, которые кэшировали записи DNS, попадут в старую среду и старую базу данных. Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное?

Новая среда будет подключаться к новому экземпляру RDS (заполненному данными из старого), который находится в том же VPC.

Когда начнется миграция, я изменю DNS домена, чтобы он указывал на среду EB host, но это оставит окно, в котором клиенты, которые кэшировали записи DNS, попадут в старую среду и старую базу данных. Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное?

Когда начнется миграция, я изменю DNS домена так, чтобы он указывал на хост среды EB, но при этом останется окно, в котором клиенты, которые кэшировали записи DNS, будут обращаться к старой среде и старой базе данных. Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное?

Когда начнется миграция, я изменю DNS домена так, чтобы он указывал на хост среды EB, но при этом останется окно, в котором клиенты, которые кэшировали записи DNS, будут обращаться к старой среде и старой базе данных. Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Чтобы смягчить это, я подумал о настройке HAProxy в старой среде для маршрутизации запросов к балансировщику нагрузки в среде EB. Но я не уверен, как обрабатывать конфигурацию SSL для этой операции. Где мне настроить маршрутизацию запросов? В Nginx или HAproxy?

Кто-нибудь делал что-то подобное? Спасибо

0
задан 21 December 2017 в 11:52
2 ответа

Мы используем следующую конфигурацию с haproxy для сквозной передачи SSL в AWS ESS

userlist elk_user_list
    user elk-user1 password PASS

global
    log 127.0.0.1 local2
    stats socket /var/run/haproxy.sock
    tune.ssl.default-dh-param 2048


defaults
    log global
    mode http
    option httpchk GET /
    option log-health-checks
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000


resolvers dns
    nameserver public-0 172.23.16.2:53
    hold valid 15s


frontend elk-example-com
    # Ciphers list: https://weakdh.org/sysadmin.html
    bind *:443 ssl crt /etc/ssl/haproxy/elk.example.com.pem no-sslv3 npn http/1.1 ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
    option httplog
    default_backend amazon-elk

    # require authentication
    acl auth_ok http_auth(elk_user_list)
    acl ipwhitelist src xxx.xxx.xxx.xxx

    http-request allow if ipwhitelist
    http-request allow if auth_ok
    http-request auth realm 'Authorization required' unless ipwhitelist
    http-request deny


backend amazon-elk
    balance roundrobin
    option redispatch
    option forwardfor
    http-request del-header Authorization
    http-request set-header Host elk-production.us-west-1.es.amazonaws.com
    server site elk-production.us-west-1.es.amazonaws.com:443 resolvers dns check inter 1000 ssl ca-file /etc/ssl/haproxy/aws-ess-rootca.pem
1
ответ дан 4 December 2019 в 16:03

После дополнительных исследований я обнаружил, что могу настроить HAProxy на сквозную передачу SSL, установив его режим работы на TCP вместо HTTP (внешний и внутренний интерфейс) - это будет передавать запрос в ELB, который будет обрабатывать разгрузку SSL и передавать запрос серверам приложений.

Также мне придется удалить NGinx, поскольку он больше не будет нужен.

0
ответ дан 4 December 2019 в 16:03

Теги

Похожие вопросы