- Как перенести работающее приложение с AWS EC2 на DigitalOcean? — Обзор шагов.
- 1. Этап первый — Оценка и подготовка
- 2. Разработка целевой архитектуры в DigitalOcean
- 3. Перенос файлов и объектов (S3 → Пространства / EBS → Том)
- 4. Миграция базы данных (RDS → управляемая база данных или собственная база данных)
- 5. Развертывание приложений — параметры и команды
- 6. Сеть, безопасность и переключение без простоев
- 7. Полезные советы и сценарии для оперативного использования
- 8. После миграции — тестирование и оптимизация
- 9. Советы по управлению затратами и ресурсами
- 10. Типичные проблемы и их решения
- 11. Пример конфигурации Nginx для балансировщика нагрузки и вышестоящих серверов Droplets.
- 12. Советы по безопасности и соблюдение передовых методов.
- Заключение
- Часто задаваемые вопросы
Как перенести работающее приложение с AWS EC2 на DigitalOcean? — Обзор шагов.
В этом пошаговом и техническом руководстве мы объясним, как это сделать. Как перенести работающее приложение с AWS EC2 на DigitalOcean Перенос данных с минимальным временем простоя, с соблюдением требований безопасности и сетевой инфраструктуры.
- Первоначальная оценка и инвентаризация ресурсов (EC2, EBS, RDS, S3, ELB, группы безопасности, IAM)
- Разработка целевой архитектуры в DigitalOcean (Droplet, VPC, Volumes, Spaces, Load Balancer, Managed DB)
- Передача данных (файлы, S3 → Spaces, БД → Управляемая БД или реплика)
- Развертывание приложений (восстановление, контейнеризация или использование платформы приложений/Kubernetes)
- Переключение с минимальным временем простоя (репликация, плавающий IP-адрес, TTL DNS)
- Очистка и окончательная проверка AWS, а также меры безопасности и мониторинг.
1. Этап первый — Оценка и подготовка
каталогизация ресурсов
Составьте полный список всех связанных ресурсов: экземпляры EC2, тома и снимки EBS, группы безопасности, балансировщики нагрузки, роли/политики IAM и другие зависимые сервисы, такие как S3, RDS, ElastiCache и CloudFront.
Определите тип приложения Обязательно: Является ли приложение приложением с сохранением состояния (например, на основе базы данных), без сохранения состояния (например, фронтенд), контейнеризированным или требует использования графического процессора/рендеринга?
Определение функциональных и географических потребностей
Укажите такие параметры, как задержка сети, требования к графическому процессору, максимальное количество операций ввода-вывода в секунду и пропускную способность выходного канала.
Если вам нужен низкий пинг для торговли или игр, выберите местоположение, близкое к вашим конечным пользователям. DigitalOcean также предлагает различные регионы — проверьте, какой дата-центр DO находится ближе всего.
2. Разработка целевой архитектуры в DigitalOcean
Предложенные компоненты
Архитектурный проект включает в себя следующее:
- Капля Для приложений и сервисов (VPS)
- Управляемые базы данных (Postgres / MySQL) для устранения сложностей, связанных с репликацией и резервным копированием.
- Пространства (Совместимо с S3) для передачи объектов из S3
- Тома блочного хранения Для больших данных и обеспечения постоянного хранения информации
- Балансировщик нагрузки и Плавающий IP-адрес Для переключения без простоя
- ВПК Для сетевой изоляции и межсетевого экрана для контроля доступа.
- Если вам необходимы графические процессоры, используйте серверы с графическими процессорами или выделенные вычислительные серверы.
Выбор размера и типа капель
Для ресурсоемких приложений используйте виртуальные машины, оптимизированные для ЦП, а для приложений с большим объемом оперативной памяти — виртуальные машины или управляемые сервисы.
Для торговли или игр рекомендуется использовать выделенный VPS с низким пингом и выделенными сетевыми ресурсами в подходящем месте.
3. Перенос файлов и объектов (S3 → Пространства / EBS → Том)
S3 → Перемещение в космос
Для переноса объектов из S3 в Spaces используйте совместимые с S3 инструменты, такие как rclone Или s3cmd Использовать.
rclone config
rclone sync s3:my-bucket spaces:my-space --progressВы также можете экспортировать данные с помощью AWS CLI, а затем загрузить их с помощью doctl или s3cmd.
Передача файлов на сервер (EBS → Droplet)
Для больших объемов и статического контента из rsync Для синхронизации используйте:
rsync -azP --delete -e "ssh -i /path/to/key.pem" ubuntu@ec2-ip:/var/www/ /home/ubuntu/www/Если вам нужен снимок состояния, сначала сделайте снимок из EBS, сожмите его содержимое, а затем перенесите на Droplet.
4. Миграция базы данных (RDS → управляемая база данных или собственная база данных)
Параметры в зависимости от типа базы данных
MySQL/MariaDB:
Для минимизации времени простоя настройте реплику на DigitalOcean, а затем выполните переключение. Если вы используете RDS:
- Создайте управляемую базу данных в DO.
- Создайте внешнюю реплику из RDS или используйте mysqldump.
mysqldump -u user -p --single-transaction --quick --lock-tables=false dbname > dump.sql
mysql -h do-managed-host -u user -p dbname < dump.sqlPostgreSQL: Для обеспечения практически нулевой вероятности успеха рекомендуется использовать логическую репликацию (pg_dump/pg_restore) или потоковую репликацию.
pg_dump -Fc -h aws-rds-host -U user dbname > db.dump
pg_restore -d dbname -h do-host -U user db.dumpРешение, исключающее простои (пример MySQL)
Общий процесс:
- Включите бинарное логирование в AWS.
- Создайте сервер-реплику MySQL на DigitalOcean и подключите его в качестве подчиненного сервера к главному серверу на AWS.
- После синхронизации загрузите приложение на реплику и переведите её в режим повышенного доступа.
5. Развертывание приложений — параметры и команды
Метод 1 — Контейнеризация и реестр
Контейнеризация с использованием Docker/Kubernetes — лучший способ миграции без опоры на AMI. Соберите образ в CI и загрузите его в Docker Hub или GitLab Registry.
В DO можно использовать управляемый Kubernetes или виртуальные машины (droplets) с помощью docker-compose.
docker-compose pull
docker-compose up -d --remove-orphansМетод 2 — Традиционная реставрация
Традиционный способ заключается в установке пакетов, передаче кода с помощью rsync и запуске службы с помощью systemd или менеджера процессов, такого как PM2.
npm install --production
pm2 start app.js --name myappИспользование платформы приложений и управляемых сервисов
Платформа DigitalOcean App Platform обеспечивает CI/CD, автомасштабирование и автоматическое SSL-соединение, и подходит для веб-приложений, если вы не хотите управлять низкоуровневым сервером.
6. Сеть, безопасность и переключение без простоев
Плавающий IP-адрес и балансировщик нагрузки
Для переключения без простоя вы можете настроить балансировщик нагрузки в DO и использовать его. Плавающий IP-адрес Или используйте другую целевую группу.
Стратегия сине-зеленый Обычно это включает следующие шаги:
- Настройка «зеленой» среды в DO и полная публикация приложения.
- Медицинские осмотры
- Изменение плавающего IP-адреса или изменение целевой группы в балансировщике нагрузки
Сокращение времени жизни DNS (TTL) Не забудьте установить предварительное время переключения (например, TTL = 300 секунд или меньше), чтобы ускорить распространение сигнала.
Межсетевой экран и безопасность
Добавьте SSH-ключ к своей учетной записи DO и отключите вход по паролю:
Edit /etc/ssh/sshd_config: PermitRootLogin no, PasswordAuthentication noИспользуйте UFW для базового управления доступом:
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enableИспользуйте облачный брандмауэр в DO и настройте правила, аналогичные группам безопасности в WS. Установка. фейл2бан Также рекомендуется использовать SSL с Certbot или сертификат, управляемый балансировщиком нагрузки.
7. Полезные советы и сценарии для оперативного использования
Примеры doctl
Установка и аутентификация DO CLI:
doctl auth init --access-token <TOKEN>Пример создания Droplet:
doctl compute droplet create my-droplet --size s-2vcpu-4gb --image ubuntu-22-04-x64 --region nyc3 --ssh-keys <KEY_ID> --vpc-uuid <VPC_ID> --waitdoctl compute cdn create --origin my-space.nyc3.digitaloceanspaces.com ...rsync для инкрементальной синхронизации
rsync -azP --delete -e "ssh -i ~/.ssh/do_key" /var/www/ user@do-ip:/var/www/8. После миграции — тестирование и оптимизация
Оценка и мониторинг эффективности работы
Проанализируйте журналы, задержку и пропускную способность с помощью таких инструментов, как Prometheus/Grafana или New Relic. Проведите нагрузочное тестирование с помощью таких инструментов, как ab или siege, и проверьте количество операций ввода-вывода в секунду (IOPS) и пропускную способность сети.
Резервное копирование и аварийное восстановление
Включите создание моментальных снимков и автоматическое резервное копирование для виртуальных машин (Droplets) и управляемых баз данных и протестируйте план восстановления.
9. Советы по управлению затратами и ресурсами
Сравните стоимость AWS (EC2 + EBS + RDS + S3) и комбинации DO (Droplets + Volumes + Managed DB + Spaces).
Если вашему приложению требуется широкое сетевое покрытие, использование CDN и BGP/Anycast может уменьшить глобальную задержку.
10. Типичные проблемы и их решения
- Различия в версиях базы данных → Тестирование совместимости и миграция на тестовой площадке с использованием логических дампов.
- Большие файлы и медленная передача данных. → Сжатие tar+gzip, возобновление загрузки с помощью rsync и использование Spaces для доставки контента.
- Ошибки SSL и CORS после переключения → Проверьте цепочку сертификатов и настройки Nginx/балансировщика нагрузки.
11. Пример конфигурации Nginx для балансировщика нагрузки и вышестоящих серверов Droplets.
upstream app {
server 10.0.0.5:3000;
server 10.0.0.6:3000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}12. Советы по безопасности и соблюдение передовых методов.
- Использование SSH-ключи и активация 2FA В облачных учетных записях
- Ограничение доступа к IAM и ключам API.
- Выполнение сканирования уязвимостей и управление обновлениями.
- При необходимости включите защиту от DDoS-атак и WAF.
Заключение
Перенос работающего приложения с AWS EC2 на DigitalOcean — сложная задача, но при правильном планировании, включающем тщательную инвентаризацию, репликацию базы данных и использование плавающих IP-адресов или балансировщика нагрузки для переключения, можно минимизировать время простоя и воспользоваться преимуществами Droplets, Spaces и управляемых баз данных.
Команда готова оказать помощь в проектировании и внедрении инфраструктуры, особенно для сценариев, требующих использования графических процессоров (GPU), выделенных VPS-серверов для торговли или игр, CDN и сложных сетевых решений.









