Azure от Microsoft — один из лидеров рынка облачных услуг, предоставляющий широкий спектр услуг и инструментов для любого бизнеса. Однако, несмотря на обширные возможности Azure, российские компании сталкиваются с необходимостью переноса данных в другое облако из-за того, что Microsoft ограничивает свои функции для отечественного бизнеса. Это не слишком сложный, но достаточно трудоемкий процесс, который требует тщательного планирования. И мы рассмотрим ключевые аспекты переноса данных с Azure в наше облако.
Перед тем как приступить к переносу, обязательно создайте резервные копии всех данных и конфигураций, а также протестируйте процесс восстановления — это выручит вас, если что-то пойдет не так. После этого можно приступать к созданию принимающей инфраструктуры.
Здесь важно учесть, что окружение нового сервера должно быть таким же, как и на старом, установлено соответствующее ПО, в том числе для работы с базами данных. И Timeweb Cloud дает возможность гибко настроить принимающую инфраструктуру.
Зарегистрировавшись на Timeweb Cloud, перейдите в панель управления и выберите следующий пункт меню (выделен красной рамкой):
Теперь настраиваем параметры с учетом имеющихся на Azure:
Операционная система и ПО (обратите внимание на вкладку «Мои образы», где можно загрузить собственную ОС, которой нет в списке):
Конфигурация. Здесь ориентируемся на имеющуюся конфигурацию на Azure и выбираем подходящие настройки. Если подходящего тарифа нет, то переключаемся на вкладку «Произвольная» и подбираем конфигурацию вручную.
Сеть. При создании сервера можно выбрать, выдавать ли серверу публичный IPv4. Он понадобится, если нужно обеспечить доступ к сервису из интернета. Также можно добавить сервер в приватную сеть, если требуется изолировать сетевую инфраструктуру от внешнего доступа.
Дополнительные опции для сохранности данных и безопасности (DDoS-защита доступна только в Москве и Санкт-Петербурге):
Авторизация. Процесс создания ключа SSH подробно описывается здесь.
Загрузка скриптов cloud-init. Подробнее о сценариях здесь.
Информация. Обратите внимание на опцию «Выбрать проект» — это удобный метод организации серверов по сервисам (проектам).
Теперь проверяем настройки и жмем «Заказать». Сервер будет создан, а для дальнейшей работы нам понадобится IP и пароль. Поэтому для удобства можно сохранить их где-нибудь в текстовом виде, хотя их всегда можно найти и в личном кабинете.
cloud
Итак, после настройки сервера-приемника приступаем к переносу файлов и директорий.
Чтобы получить доступ к созданному серверу Timeweb Cloud, вводим команду вида, заменяя IP-адрес на реальный:
ssh root@IP-адрес
Те, у кого старые версии Windows (до Windows 10 1809), могут использовать утилиту PuTTY. В новые версии данной ОС уже встроен клиент OpenSSH. Через PuTTY можно получить доступ так:
После получения доступа вводим логин root
и его пароль.
После успешного подключения ставим на новый сервер всё то, что у нас на сервере Azure.
Перенос выполняем через rsync
(присутствует почти во всех ОС семейства Linux). Вот как она выглядит:
rsync
незаменима для синхронизации данных, в том числе в пределах одного сервера. Если она не установлена, то вводим:
sudo apt install rsync
А для CentOS/RHEL:
yum install rsync
Далее ставим Screen. Эта утилита обеспечивает возможность непрерывного переключения между терминалами.
sudo apt install screen
Для Fedora и CentOS:
yum install screen
Для подключения вводим: screen
. Дальнейшие команды запускаем через Ctrl+a вместе с нажатием целевой клавиши. Вот основные команды Screen:
Подробный перечень инструкций Screen смотрите на скриншоте (а еще есть наша инструкция и справка на GitHub).
Для копирования с Azure на Timeweb Cloud вводим:
rsync -a user1@source_server:/path/to/file /path/to/destination --log-file=mylog.log
--log-file=mylog.log
— здесь указываем реальное значение нашего лога.user1@source_server:/path/to/file
— вместо user1
вводим логин с Azure, вместо source_server
— IP сервера Azure, а /path/to/file
заменяем на нужную директорию. А в user2@destination_server:/path/to/destination
указываем значения для сервера-приемника (Timeweb Cloud).К примеру, нам нужно выполнить перенос директории /myproject/mydir
. Получится примерно такая команда (замените нули цифрами, соответствующими вашим реальным IP):
rsync -a azure_user@54.000.000.000:/myproject/mydir twc_user@185.00.00.000:/myproject/mydir --log-file=mylog.log
Вам может потребоваться настройка прав доступа, что можно сделать, изучив эту инструкцию. Протестировать перенос данных в «боевых условиях» вы можете на нашем тестовом домене, а уже затем перенести данные на рабочий.
Перед тем, как выполнить перенос базы данных (далее БД), нужно провести ее аудит, то есть оценить размер, структуру и другие особенности. Далее осуществляется планирование, создается детальный план переноса, включая действия по резервному копированию и тестированию, просчитывается время простоя.
После этого создается резервная копия БД, которая проверяется на работоспособность после восстановления. В MySQL это делается так:
Или можно это сделать через терминал с помощью следующей команды:
mysqldump --no-tablespaces -u'user' base -p'passwd' > dump_bd_name.sql
Если у вас PostgreSQL, то создать там резервную БД тоже несложно: нужно будет из командной строки запустить команду pg_dump
, например:
pg_dump –U superuser –F c db > dump.dump
где вместо superuser
ставим реальное имя суперпользователя, вместо db
— имя нужной базы данных, а вместо dump.dump
имя дамп-файла.
Теперь можно создавать новую БД на сервере-приемнике. В этой инструкции подробно освещаются все вопросы, связанные с переносом баз данных под управлением MySQL (о том, как создавать базы данных, читайте здесь), а в этой статье подробно рассказывается о том, как установить PostgreSQL. Также у нас есть услуга «База данных как сервис». Для этого в панели управления выберите пункт «Базы данных» и затем кликните на подходящий вариант:
Ниже выберите настройки, которые уже описывались в разделе «Подготовка и создание принимающей инфраструктуры». А с подключением и загрузкой дампа базы данных поможет привычный phpMyAdmin или же adminer — веб-интерфейс, который заменяет командную строку и поддерживает работу с MySQL и PostgreSQL. Adminer — быстрая и минималистичная альтернатива phpMyAdmin, а подробную информацию о нём можно получить на официальном сайте.
Также для загрузки данных через терминал непосредственно на удаленный сервер можно воспользоваться следующими командами в bash.
Для MySQL:
mysql -h <host> -P <port> -u <user> -p <database_name> < dump.sql
Для PostgreSQL:
psql -h <host> -p <port> -U <user> -d <database_name> -f dump.sql
Эти команды позволяют загружать дамп БД напрямую на удаленный сервер, минуя промежуточные шаги.
После переноса данных в созданную БД проверяется их целостность и корректность и обновляются конфигурации. А чтобы перенос БД прошел безболезненно, учитывайте возможные ограничения по скорости передачи данных между серверами. Для оптимальной работы сервер и DBaaS можно объединить в приватную сеть. Подробнее об этом читайте здесь (раздел «Приватные сети»).
Завершение переноса — это не конец процесса миграции. Далее потребуется протестировать все перенесенные данные, приложения и сервисы в новом облаке и проверить их работоспособность и производительность. Добавим, что проблем с производительностью не возникнет, если подобрать правильную аппаратную конфигурацию на сервере-приемнике.
Для мониторинга производительности в облаке Azure используется собственное ПО — Azure Monitor. А на Timeweb Cloud можно использовать даже более функциональные инструменты. Например, такие, как Datadog, New Relic, Prometheus, Grafana, Elastic, которые поддерживают интеграции в том числе и с платформами контейнеризации приложений.
И после успешной проверки работоспособности и мониторинга производительности перенос данных можно считать завершенным. А на этом всё: читайте наши статьи по переносу данных и миграции с других облачных платформ.
Переносите свои проекты в облако<br>Timeweb Cloud
1. Подготовка
2. Настройка принимающей инфраструктуры
3. Перенос данных
rsync
и screen
для удобного управления.rsync
для копирования данных с Azure на Timeweb Cloud.4. Перенос баз данных
mysqldump
или pg_dump
).5. Завершение и тестирование
На этом проверку можно считать завершенной — перенос окончен.