Поиск по сайту:

Как перенести сервер Linux на новое оборудование


Независимо от того, переходите ли вы на более мощные серверы, перемещаетесь ли вы в новые регионы или добавляете новые экземпляры, миграцию сервера Linux можно упростить, применяя правильные стратегии и зная правильные команды. Мы обсудим, как перенести ваш сервер на новую машину с минимальными хлопотами.

Стратегии миграции

Простейшей и наиболее эффективной стратегией является сине-зеленое развертывание: запустите и запустите новый сервер, а затем, когда он будет готов к работе, перенаправьте на него трафик и удалите старый сервер, как только убедитесь, что проблем нет. При балансировке нагрузки этот процесс может происходить поэтапно, что еще больше снижает вероятность проблем с доступностью.

Сине-зеленое развертывание включает в себя копирование всех файлов, пакетов и кода со старого сервера на новый. Это может быть так же просто, как вручную установить необходимые пакеты, такие как веб-сервер NGINX, а затем скопировать конфигурацию с существующего сервера. Вы также можете сделать полную резервную копию диска и создать из нее новый сервер.

Конечно, сейчас самое подходящее время подумать, можете ли вы использовать контейнеры или автоматическое масштабирование. Контейнеры Docker можно легко остановить, запустить и перенести, скопировав базовые тома данных (или используя общее хранилище данных, такое как EFS). Автомасштабирование различается в зависимости от поставщиков, но если вы добавляете новую копию своего сервера для удовлетворения растущего спроса, это может быть правильным для вашего бизнеса. Вы также можете использовать автоматическое масштабирование с контейнерами Docker на многих платформах, таких как AWS ECS.

Настройка как для контейнеров, так и для автоматического масштабирования требует, чтобы вы проделали большую часть той же работы, что и для переноса сервера вручную, например, автоматизировали установку пакетов и собственного кода, поэтому, если вы планируете снова выполнить миграцию в будущем , вам следует подумать сейчас, что вам лучше переключиться на контейнеры или настроить автоматическое масштабирование.

Если вас интересуют контейнеры, вы можете прочитать наше руководство по началу работы с Docker, чтобы узнать больше, или прочитать наше руководство по использованию автоматического масштабирования в AWS или Google Cloud Platform.

Установка пакетов

Если вы не совсем уверены, что вы установили на старый сервер, лучший способ проверить это — получить список всех установленных служб. Это покажет большинство основных вещей, которые вам нужно установить:

service --status-all

Причина предпочтения служб листинга заключается в том, что список установленных пакетов может быть очень длинным, при этом также устанавливаются все второстепенные зависимости. На моем тестовом сервере Ubuntu было установлено более 72 000 пакетов, поэтому их список не очень полезен, учитывая, что все они будут установлены в любом случае при установке основных служб, необходимых новому серверу.

Если вы хотите, вы можете перечислить их все с помощью следующей команды:

sudo apt list --installed

Для поиска в списке пакетов определенного пакета вы можете использовать:

sudo apt -qq list program_name --installed

В любом случае вам нужно составить список пакетов, которые необходимо установить, и установить их на новый сервер.

Перенос диска сервера с помощью rsync

Вы можете заархивировать диск с помощью tar, но tar обычно предназначен для архивирования отдельных файлов или каталогов, а не всего диска. Если вы перемещаете много данных, у вас может не хватить места для локального резервного копирования (возможно, это даже причина для обновления!).

В этом случае вам нужно использовать команду rsync для загрузки данных непосредственно на целевой сервер. rsync подключится через SSH и синхронизирует два каталога; в этом случае мы хотим передать локальный каталог на удаленный сервер, например:

rsync -azAP /etc/nginx username@remote_host:/etc/nginx

Вот и вся команда — вы должны увидеть индикатор выполнения по мере ее передачи (используя сжатие с флагом -z), а когда это будет сделано, вы увидите файлы в целевом каталоге на новом сервере. . Возможно, вам придется запустить это несколько раз, чтобы скопировать каждый каталог; вы можете использовать этот онлайн-генератор команд rsync для создания команды для каждого запуска.

Если хотите, можете попробовать скопировать всю корневую файловую систему на новый сервер, за исключением некоторых системных файлов:

sudo rsync -azAP / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} username@remote_host:/

Если вы просто хотите сделать резервную копию нескольких каталогов, вы можете использовать простую команду tar для создания одного файлового архива:

tar -czvf nginxconfig.tar.gz /etc/nginx

В результате будет создан один файл, который можно передать на целевой сервер с помощью scp или по FTP. Затем извлеките файл в целевой каталог:

tar -xzvf nginxconfig.tar.gz -C /etc/nginx

Перенос базы данных

Если вам нужно перенести базу данных, вы захотите сделать резервную копию и создать дамп исходной базы данных. Для MySQL это будет:

mysqldump -uUser -pPass -hHost --single-transaction database > backup.bak

Для MongoDB это будет:

mongodump --host=mongodb.example.net --port=27017

Затем вам нужно восстановить базу данных на целевом сервере. Для MySQL это будет:

mysql -u [user] -p [database_name] < [filename].sql

а для MongoDB это будет:

mongorestore <options> <connection-string> <directory or file to restore>

Для других баз данных вы сможете найти соответствующие команды в Интернете.

Переключение IP-адресов на новую систему

Конечно, вы захотите убедиться, что все работает, как задумано, прежде чем продолжить, но как только это произойдет, вы захотите переключить трафик на новый сервер.

Самый простой способ сделать это — изменить записи DNS. После обновления клиенты и службы будут отправлены на новый сервер. Однако это происходит одновременно, поэтому, если у вас есть балансировщик нагрузки, было бы лучше медленно переводить трафик на новый экземпляр.

Если вы используете AWS или аналогичный провайдер с эластичными IP-адресами, вы можете поменять адрес, чтобы он указывал на новый сервер, который не потребует обновления DNS. На вкладке «Эластичные IP-адреса» в консоли EC2 выберите «Действие» > «Связать эластичный IP-адрес».

Это позволит вам изменить ассоциацию, которая мгновенно перенаправит трафик на новый экземпляр.