Я планирую переместить существующий веб-сайт в среду 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?
Кто-нибудь делал что-то подобное? Спасибо
Мы используем следующую конфигурацию с 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
После дополнительных исследований я обнаружил, что могу настроить HAProxy на сквозную передачу SSL, установив его режим работы на TCP вместо HTTP (внешний и внутренний интерфейс) - это будет передавать запрос в ELB, который будет обрабатывать разгрузку SSL и передавать запрос серверам приложений.
Также мне придется удалить NGinx, поскольку он больше не будет нужен.