Это пятая часть Развертывать Rails в Amazon ECS почта. Это часть более широкой серии под названием Больше, чем «привет мир» в Docker Анкет Сериал получит вас от Привет, мир в Docker, чтобы развернуть ваше приложение в AWS.
- Строительными Rails + Sidekiq Web Apps в Docker
- Развернуть рельсы в Amazon ECS
- Концепции
- Нажмите изображение в ECR
- Создать базу данных RDS, определение задачи и балансировщик нагрузки
- Создайте кластер ECS и соедините все вместе
- Настройте Sidekiq — мы здесь
- Автоматизировать развертывания с AWS Codedeploy
- Глубокое погружение на кодовую корзину AWS
В этом посте мы расширим настройку ECS, которую мы создали, добавив функциональность Sidekiq. Мы сделаем это по:
- Создание сервера Redis, который будет выполнять задачи для Sidekiq
- Создание службы ECS Хостинг наш Sidekiq Server
- Подключение сервиса Web и Sidekiq к этому серверу Redis
Для этого шага следуйте инструкциям в разделе 7, но изменение следующих конфигураций:
- (7.3) Положить Docker-Rails-App-Sidekiq Как имя определения задачи
- (7.5) Используйте «Sidekiq» в качестве имени контейнера вместо «Интернета».
- (7.6) Положить
sidekiq, -c, config/sidekiq.yml
для команды. Это команда запуска Sidekiq. Вы можете указать еще один файл конфигурации YML, если ваш называется по -разному.
Для этого шага следуйте инструкциям в разделе 10, но изменение перечисленных ниже. Поскольку эта служба Sidekiq никогда не получит трафик, нам не нужно прикреплять его к балансировщику нагрузки. Эта услуга будет только периодически получать задания из базы данных Redis, которую мы собираемся сделать.
- (10.2) Выберите «Определение задачи» Семейство Docker-Rails-App-Sidekiq Анкет Для имени выберите
простой рубий-ап-сидекик
Анкет - (10.3) Для балансировщика нагрузки нажмите «Нет».
Службы Sidekiq нуждаются в базе данных Redis для извлечения задач. Эти задачи либо запланированы, чтобы периодически запустить, либо приправлены веб -службами, которые мы создали в последнем посте.
Чтобы сделать вещи простыми, мы собираемся создать экземпляр EC2 для запуска сервера приложений базы данных REDIS. Затем мы настроим нашу службу Sidekiq ECS, чтобы подключиться к этой базе данных Redis.
(15.1) Запустите экземпляр EC2
Для нашего экземпляра EC2 выберите экземпляр Ubuntu 18.04 T2.micro. Для этого примера достаточно T2.micro, но отметите, что это может отличаться от того, насколько ваша рабочая нагрузка использует Redis и Sidekiq. Если ваше приложение также использует Redis для кэширования, то это хорошая идея, чтобы сделать этот экземпляр больше.
Вот варианты сети, которые вы должны применить:
- Обязательно выберите тот же VPC, который вы выбрали при создании кластера ECS в Раздел 9 Анкет
- Выберите публичную подсеть.
- Выберите Auto-Assign Public IP быть правдой.
Как правило, нам не нужен сервер базы данных Redis, чтобы быть доступным для общественности. Но чтобы сделать вещи простыми для этого примера, мы хотим, чтобы он был общедоступным, чтобы мы могли публично подключиться к экземпляру EC2 и установить Redis. В производственных средах (которые обычно должны быть более защищенными) вы обычно сначала подключаетесь к экземпляру Jumpbox, прежде чем подключиться к этому экземпляру EC2 Hosting Redis. Затем экземпляр EC2 помещается в Частный подсеть и не назначается публичный IP.
Придерживайтесь по умолчанию для страниц хранения и тегов.
Далее мы создадим группу безопасности с именем Мой докер-Редж-С.Г. Анкет Создайте правило, которое позволяет трафик из порта 22 (чтобы вы могли SSH в экземпляр) и из порта 6379 (чтобы любой мог получить доступ к нашему экземпляру Redis).
Установка порта 6379, доступный для общественности, не является лучшей практикой. Мы не хотим, чтобы кто -то мог подключаться к этому серверу Redis. Даже если у вас есть защищенный пароль, все, что он может занять, это несколько минут для сложной атаки грубой силы, чтобы взломать ее.
(15.2) Настройте экземпляр EC2
Теперь, когда у нас есть наше экземпляр EC2, давайте подключимся к нему. Перейдите на вкладку Services, затем найдите EC2. В левом меню нажмите на экземпляры. Вы должны быть в состоянии увидеть только что созданный вами экземпляр. Как только его статус станет «запуском», нажмите кнопку подключения в правом верхнем углу. Вы должны быть в состоянии увидеть инструкции о том, как подключиться к экземпляру.
Если вы не использовали свой открытый ключ, вам нужно сделать chmod 400 yourkey.pem
изменить свои разрешения. Это необходимый шаг для того, чтобы вы могли использовать ключ. Затем подключитесь к экземпляру с помощью команды SSH, показанной на изображении ниже. Если это не работает, это обычно просит вас изменить корень
к Ubuntu
или EC2-USER
, в зависимости от ОС, которую вы использовали.
(15.3) Установите Redis
После подключения к экземпляру установите Redis, используя инструкции в этом Цифровая океаническая документация Анкет
(15.4) Настройте Redis
Есть некоторые изменения, которые вы должны внести в свою конфигурацию Redis. Эти изменения позволят нам подключиться к экземпляру Redis. Вы можете сделать это по vi/etc/redis/redis.conf
Анкет
- Комментарий
Bind 127.0.0.1:: 1
- Сделать
Защищенный режим да
кзащищенный режим нет
(15.5) Запустить сервер Redis
Тогда тип Sudo SystemCtl перезапустить Redis.service
Чтобы сделать ваши изменения эффективными. Сделать PS -EF | Греп Рейлс
Чтобы убедиться, что ваш процесс работает:
Теперь, когда у нас есть экземпляр REDIS и сервер Sidekiq ECS, недостающая часть — это то, как мы позволим сервису Web ECS бросить задания в экземпляр базы данных REDIS и как мы позволим сервису Sidekiq ECS извлекать задания из экземпляра базы данных Redis. Для этого нам придется изменить определения задач и сервисов Sidekiq ECS, чтобы включить Redis_url
переменная среды.
(16.1) На вкладке «Сервис» найдите ECS и нажмите на него. Нажмите на «Определение задачи» в левой стороне. Затем нажмите на определение задачи Интернета ( Docker-Rails-App
).
(16.2) Нажмите «Создать новую ревизию»
(16.3) Добавить Redis_url
Переменная среда в определении контейнера для Интернета.
Вы должны быть в состоянии увидеть что -то вроде этого:
(16.4) Повторите шаги с 16.1 до 16.3 для определения задачи Sidekiq ( docker-rails-app-sidekiq
).
Теперь, когда у нас есть обновленное определение задачи как для Web, так и для Sidekiq, пришло время развернуть!
(17.1) Нажмите на Простой Ruby-App оказание услуг. На этой странице нажмите «Обновление»
(17.2) Выберите последнюю пересмотр определения задачи этой услуги. Затем отметьте «присильно новое развертывание», чтобы убедиться, что эта новая версия развернута сразу же.
(17.3) Следите за своим развертыванием здесь. Требуется несколько минут, чтобы ваши изменения вступили в силу. Вы должны увидеть здесь, если ваша новая версия была развернута. Ваше приложение было развернуто, если Первичный
Имеет беговый счет 1+
(17.4) Повторите те же шаги для службы Sidekiq ( простой Ruby-app-sidekiq
)
Используя URL из Раздела 12, обратитесь к веб -сайту еще раз. Вы должны быть в состоянии нажать кнопку «Подобные». Эта кнопка «Подобная кнопка» сообщит службе Web ECS, чтобы бросить задачу на сервере базы данных Redis. Служба Sitekiq ECS получает эту задачу от Redis и добавляет 1 к loce_count, как указано на работника.
Развертывание приложения Dockerized Rails в производстве занимает много тяжелой работы в начале Но как только настройка будет сделана, вы сможете насладиться преимуществами Docker и ECS: более низкие затраты, более быстрые развертывания, более быстрые откаты, более простые разработки и многое другое.
Теперь, когда вы заполнили свое собственное приложение для образцов Rails в Docker, вы сможете распространить его на свои собственные производственные среды.
Если у вас есть какие -либо комментарии, предложения или просто хотите сообщить мне, как эта серия помогла вам, не стесняйтесь оставить комментарий ниже или написать мне! Я хотел бы услышать от вас!
Особая благодарность моему редактору Аллену за то, что сделал мои сообщения более последовательными Анкет
Оригинал: «https://dev.to/raphael_jambalos/deploy-rails-in-amazon-ecs-part-5-integrate-sidekiq-and-redis-for-background-processing-150f»