Назад | Перейти на главную страницу

Как создать системное зеркало?

У меня есть база данных и веб-сервер, настроенные на одном компьютере, и я хочу зеркалировать систему на другом компьютере. Исходная база данных работает под управлением ubuntu 9.1, в новой системе установлен ubuntu 11.04 (но его можно стереть, это совершенно новый ящик). Я представляю себе, что я подключаю обе системы к своему маршрутизатору, заставляю их каким-то образом узнавать друг друга, а затем данные будут волшебным образом перемещаться от одной к другой. Что я могу сделать, чтобы начать этот процесс?

РЕДАКТИРОВАТЬ: Думаю, я неправильно использую слово «зеркало». Я хочу скопировать рабочую систему в новую систему. Затем я хочу периодически копировать данные туда и обратно, чтобы убедиться, что они синхронизированы. Периодическое копирование вторично; изначально я просто хочу переместить данные от одного к другому (включая базу данных mysql, веб-сайт, все исправления и т. д.). О более поздних копиях я побеспокоюсь позже.

РЕДАКТИРОВАТЬ2 для большей ясности, я думаю, лучшее описание того, что я хочу сделать, - это сделать резервную копию одной машины времени, а затем восстановить на другой. В идеале я бы пропустил промежуточный этап перехода на внешний жесткий диск.

Чтобы просто сделать прямое зеркало битов, используйте dd. Это дупликатор битового потока. Достаточно стандартный материал.

Вот еще немного информации, с которой можно начать:

http://thetechshop.org/showthread.php?177-Using-dd-and-netcat-to-clone-mirror-a-drive
http://wiki.linuxquestions.org/wiki/Some_dd_examples
http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/
http://www.codecoffee.com/tipsforlinux/articles/036.html

Другое дело - поддерживать синхронизацию. Вы можете время от времени переделывать исходную копию, если это соответствует вашим потребностям. Или вы можете сделать некоторую комбинацию rsync, чтобы синхронизировать корневой веб-узел, а затем использовать один из многих доступных методов для синхронизации mysql. Это совершенно другая банка с червями, которую вам нужно исследовать самостоятельно. Я уверен, что есть несколько старых вопросов о том, что уже существует на сервере.

ОБНОВИТЬ

Основываясь на ваших комментариях и обновлениях, вы должны сосредоточиться на том, чтобы одна коробка работала полностью. Либо переместите дампы mysql и корневые веб-файлы в ящик ubuntu 11, затем настройте его так, чтобы он функционировал одинаково, и переведите его в рабочее стабильное состояние. Чтобы получить эти файлы, используйте SCP, он позволяет легко передавать файлы через SSH. Или вы можете попробовать привести коробку ubuntu 9 в полностью рабочее состояние.

Затем, когда выбранный вами сервер находится в хорошем месте, вы можете использовать DD и netcat, или ssh, или любое количество способов сделать прямое побитовое зеркальное копирование на другой компьютер.

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

Вы МОЖЕТЕ это сделать, хотя я не уверен, что то, как вы должны это сделать, будет для вас полностью полезным. Это в основном зависит от вашего владения DNS в вашей сети, и теперь вы хотите использовать все.

Я действительно раздумывал над идеей создать что-то подобное для себя.

Главное, что нужно знать, это то, что как только вы настроите два блока достаточно одинаково (все необходимые модули Apache и т. Д.) ... Тогда у вас есть несколько вещей, которые вам нужно соблюдать, чтобы все это работало:

  1. Веб-корень - у вас есть файлы, конфигурация Apache называет их вашим DocumentRoot - здесь хранятся файлы, размещенные на вашем веб-сайте. Вам нужно будет синхронизировать этот каталог. По умолчанию это должно быть / var / www / (хотя, если вы попадаете на виртуальные хосты, вам нужно указать другие местоположения, я помещаю свое в / www / [имя домена] /.

  2. База данных - вы сказали, что у вас задействована база данных .. Очевидно, вам нужно будет скопировать ее соответственно. Если вы работаете с MySQL, вы МОЖЕТЕ использовать mysqldump для извлечения базы данных. Погуглите, чтобы узнать, как сделать резервную копию и восстановить с помощью mysqldump.

  3. Файлы конфигурации - если ваш случай действительно прост, вам, вероятно, потребуется сделать это только один раз. Ваш веб-сайт настроен в программном обеспечении вашего веб-сервера (я предположил, что это Apache) через файл конфигурации (возможно, несколько в зависимости от). Если вы используете виртуальный хостинг на Apache 2.x, то у вас, вероятно, будет файл конфигурации для каждого сайта, который вы размещаете на этом сервере. Возможно, вам понадобится / вы захотите синхронизировать это. Имейте в виду, что вам, по крайней мере, придется «перезагрузить» конфигурацию apache после ее замены на машине.

Итак, процесс, как я вижу, будет включать использование чего-то вроде rsync для копирования файлов. Вы можете выполнять ssh-вызовы, которые выполняют и завершают что-то, что вам также понадобится (возможно, чтобы вызвать какой-нибудь скрипт на принимающей стороне, чтобы сделать все, что вам может понадобиться).

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

Для исходных зеркал:

  1. Файлы конфигурации для Apahce и MySql - скорее всего, вам нужно будет сделать это вручную, поскольку между версиями могут быть некоторые изменения в их структуре
  2. Веб-сайт - просто скопируйте структуру каталогов / файлов
  3. База данных - зависит от движка, но если его MySql - mysqldump, а затем импортировать в новый

Для периодического обновления:

  1. Файлы конфигурации - опять же, это можно сделать вручную. Но обычно не так часто менять файлы конфигурации, или даже если это так, изменения незначительны.
  2. Веб-сайт - я бы приложил некоторые усилия, чтобы поместить все файлы в какую-то систему управления версиями - скажем, svn, и обновить оба сервера из него, а не непосредственно на server1, а затем скопировать на server2
  3. База данных - либо снова mysqldump, а затем восстановление на server2, либо настройка конфигурации master / slave, чтобы данные всегда были синхронизированы.