Лаб. работа 3 — Спотовые инстансы EC2
Цель работы
Ознакомиться с расчетом стоимости инстансов AWS, созданием спотовых инстансов, настройкой доменного имени, установкой Docker и HAProxy, развертыванием Redmine и настройкой TLS-сертификатов.
1. Сравнение стоимости аренды сервера
- Откройте AWS Pricing Calculator.
- Рассчитайте стоимость месячной аренды EC2-инстанса t3.small в следующих режимах (в произвольно выбранном регионе):
- Compute Savings Plans (1 год, без предоплаты)
- EC2 Instance Savings Plans (1 год, без предоплаты)
- On-demand (по требованию)
- Spot instances (спотовые инстансы) при среднем проценте скидки
- Сравните разницу в стоимости между этими вариантами.
- Добавьте скриншот в отчет.
2. Вход в веб-консоль AWS через IAM-аккаунт
- Перейдите на AWS Management Console.
- Введите учетные данные IAM-пользователя (логин и пароль).
3. Создание запроса на спотовый инстанс
- Откройте EC2 → Instances → Spot Requests.
- Создайте новый запрос:
- AMI Amazon Linux 2.
- Key pair name: (optional)
- Advanced launch parameters → Tags: Name, <Фамилия>, Instances, FleetФамилия>
- vCPUs: minimum 2, maximum 4
- Memory: minimum 2, maximum 4
- Capacity optimized
- Дождитесь создания инстанса и запомните его IP-адрес.
- Добавьте скриншот окна свойств запроса в отчет.
4. Создание доменного имени в Hosted Zone
- Откройте Route 53.
- Перейдите в Hosted Zones и выберите готовую зону.
- Создайте A-запись для доменного имени, указывая IP-адрес полученного сервера.
5. Подключение к инстансу через EC2 Instance Connect
- Перейдите в EC2 → Instances.
- Выберите созданный инстанс и нажмите Connect.
- Используйте EC2 Instance Connect для доступа в терминал сервера.
6. Установка Docker, Certbot и HAProxy
- Обновите систему:
- Установите Docker:
sudo amazon-linux-extras install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
newgrp docker
- Установите Certbot:
sudo amazon-linux-extras install -y epel
sudo yum install -y certbot
- Установите HAProxy:
sudo yum install -y haproxy
sudo systemctl enable haproxy
7. Запуск Redmine в Docker
- Запустите контейнер Redmine:
docker run -d --name redmine -p 8080:3000 redmine
- Проверьте работу в браузере по адресу
http://<IP-адрес>:8080.
8. Получение TLS-сертификата через Certbot
- Запустите команду для получения сертификата (замените
<DNS-имя сервера> на ваш домен):
sudo certbot certonly --standalone -d <DNS-имя сервера> --email <email-адрес> --agree-tos --non-interactive
- Объедините полученный сертификат с ключом
sudo cat /etc/letsencrypt/live/<DNS-имя сервера>/cert.pem \
/etc/letsencrypt/live/<DNS-имя сервера>/privkey.pem \
| sudo tee /etc/haproxy/cert_key.pem > /dev/null
9. Настройка HAProxy с TLS и проксирование к Docker-контейнеру
- Откройте конфигурацию HAProxy:
sudo nano /etc/haproxy/haproxy.cfg
- Закомментируйте разделы
frontend и backend
- Добавьте следующую конфигурацию:
frontend http_front
bind *:80
redirect scheme https unless { ssl_fc }
frontend https_front
bind *:443 ssl crt /etc/haproxy/cert_key.pem
default_backend site_back
backend site_back
server redmine 127.0.0.1:8080 check
- Проверьте конфигурацию HAProxy:
sudo haproxy -f /etc/haproxy/haproxy.cfg -c
- Запустите HAProxy:
sudo systemctl start haproxy
10. Проверка работы Redmine через HAProxy
- Откройте браузер и введите
https://<DNS-имя сервера>.
- Убедитесь, что сайт доступен по HTTPS и корректно проксируется через HAProxy.
11. Отмените запрос спотовых инстансов EC2
- Откройте EC2 → Instances → Spot Requests.
- Выделите свой запрос и отмените его Actions → Cancel Request.