Геомирроринг

Во всех своих статьях я постоянно рассказывал про всевозможные панели управления, домены, проекты. Но я ни разу не упоминал о геомирроринге. Для тех, кто в танке: геомирроринг - это создание сети зеркалирующих друг друга серверов, которые находятся в разных странах.

Плюсов уйма: тут вам и стабилизация нагрузки на сервер, и повышенная безопасность (ведь взламывать придется не одну сеть), и повышение скорости работы, так как каналы будут менее загружены. Среди минусов хочу отметить основные: многие ваши сервера будут "вне поля действия рук", т.е. далеко от вас физически, если вы крупный хостер, то готовьтесь к довольно большому объему трафика, так как сервера будут постоянно друг друга зеркалировать. Но, несмотря на эти минусы, я хочу отметить, что экономическая выгода от такого подхода очевидна: во многих странах трафик значительно дешевле, чем в странах СНГ, да и авторитет хостинг-компании, у которой и скорость, и стабильность, и uptime, который стремится к 100%, будет расти и расти.
Приступлю к подробному описанию.
Случай №1.
Имеем сеть из 5-6 серверов в стране пребывания. Хотим построить сеть с геомиррорингом. Есть несколько способов. Самый примитивный и дорогой - full mirroring, т.е. заказываем в другой стране точно такое же количество серверов и полностью копируем ВСЁ. Тут вам помимо огромного объема трафика придется еще и параллельно поддерживать, по сути дела, разные, но взаимосвязанные сети, а это, поверьте, дело не из легких. Мне больше по душе способ распределенного геомирроринга: это когда серверы в разных странах "делят" задачи. Например, DNS и Web сервера находятся на территории одного государства, а сервер MySQL на территории другого. Также имеем еще один Web сервер, который зеркалирует основной. Можно включить в схему и Backup сервер, который по cron'у будет создавать резервные копии сайтов и баз MySQL; его можно реализовать на основе собственных скриптов или используя систему AMANDA. Этот сервер обязательно должен быть там, где вы можете достать до него физически, дабы иметь прямой доступ к жестким дискам.
Оба случая вполне реальны и довольно часто находят применение на практике, но мне в голову пришла одна идея, которая, как я думаю, позволит очень существенно сэкономить на трафике. Считаю, что лучше опишу его, стараясь максимально приблизить к реальности.
Начнем.
Что имеем на родине: 2 DNS сервера, один Web сервер с Apache, PHP, Perl и демоном FTP, Mail сервер, и один пока что "чистый сервер".
Что имеем за рубежом: 2 DNS и один Web сервер в одной стране, и 2 Web сервера в других странах.
Начнем построение нашей сети. DNS серверы, которые у нас на родине называем соответственно ns1.yourhost.com и ns2.yourhost.com, а те, что за рубежом – ns3.yourhost.com и ns4.yourhost.com. Самым главным из них будет NS1, все остальные мы настроим как Slave. Не забудьте настроить TSIG между ними, дабы повысить безопасность.
Приступим к Web серверам. Сначала определимся, где будем хранит пользовательские сайты – в /home или в /var/www. Лично я предпочитаю первый вариант. После этого настроим rsync для зеркалирования этого каталога и /etc/httpd. Можно написать небольшую систему, которая будет периодически снимать md5 checksum и сравнивать его, а в случае несовпадения – запускать rsync. Тем самым мы сэкономим трафик, так как синхронизация будет происходить лишь в случае необходимости.
Как мы помним, мы имеем один “чистый сервер”. Он будет исполнять роль глобального MySQL сервера. Тем самым мы конкретно сэкономим, так как не будем зеркалировать постоянно изменяющиеся данные. Есть и другой способ – на всех Web серверах ставить MySQL и разработать систему, которая будет отслеживать к ним запросы и соединяться с зеркалируемым сервером и выполнять такой же запрос. В большинстве случаев MySQL запросы весят не так много, и мы снова сэкономим на трафике, так как не будем из-за одного запроса зеркалировать всю базу данных. А “чистый” сервер можно будет использовать как Backup машину. В общем, схема выглядит так:

Free Image Hosting at www.ImageShack.us

QuickPost