Уеб клъстер със собствените си ръце - Грегъри Dobryakov

Bitrix днес представи новата си решение - ". Уеб клъстер" За тези, които не знаят - аз ще ви обясни, че това нещо може да побере vysokoposeschaemy проект не е на един, но на няколко сървъра, както и по всяко време да се добавят нови сървъри, за да се ускори вашия сайт. И както сигурно се оттеглят всеки сървър за поддръжка, ъпгрейди, или в случай на повреда. Разбира се, аз обичам първия си конкурент (в лицето на Umisoft), на първо място е необходимо да се разбере какво те предлагат коренно нов пазар.

Нищо. В добрия смисъл, нищо. Bitrix спря играем и "изобретяваме колелото" - явно имам същия екип смарт технология, така че вместо "велосипед" и те са направили всичко, тъй като реши да направи нормални хора. В този пост ще ви кажа с прости думи - това, което направиха точно, и как да се повтаря едно и също нещо във вашия проект.

Помислете за основната част от клъстера:

0. Cloud - Cloud, колекция от сървъри, на които всичко това ще се въртят.
1. Заредете стабилизатор - член на стабилизатор натоварване.
2. MySQL репликация - популярен вид групиране на база данни.
3. Мрежа на файловата система - разпределено съхранение на файл.

Както бе споменато по-горе, на клъстера - е набор от произволен брой уеб сървъри. Те могат да изпълняват една и съща задача или различен в зависимост от целта. Да започнем със сървъра: тук за тях са насърчавани да използват виртуални машини aws.amazon.com. Не бих казал, че това е разумно решение: virtualke априори бавно, но ключовият момент тук - простотата на създаването им. Той натисна бутона - да се създаде. И това не е по подразбиране "колата и настройва специално за вашите нужди. Можете да създадете график или дори динамично зареди се увеличава. Хит вашия сайт по-мощен поток от посетители - това е р-р-р-ал и създаде няколко нови машини. Приключила натоварване - машината е изключена. Красота.

Разбира се, както клъстер от сървъри може да действа всеки сървър в Интернет: дори виртуално, дори и желязо. За информация: вашия личен "amazonovsky" клъстер безплатно да направите сами всяко лице, което не е твърде мързеливи, за да започнете инсталирането на нова дистрибуция на сървър на Ubuntu.

Balancer трябва да разпределят входящите заявки посетители между клъстерните сървъри. Както се предлага да се използват Nginx, Google "Nginx натоварване баланс" и да получите един куп линкове към готови примери.

Разпределени съхраняване на файлове е необходимо да се гарантира, че всички сървъри имат един и същ набор от файлове. Ако потребителят е качил на картината "някъде" на един от сървърите, той трябва да се появи навсякъде. Защо? Тъй като информация на други потребители може да се даде на друг сървър. За изпълнение на другарите Битрикс препоръчват "csync2" - тя работи във фонов режим и глупаво синхронизира файлове между сървъри, които навсякъде това е същият.

Всичко. Така че сте направили клъстера. И сега - за фино регулиране:

Първото препятствие, на което работи в при превод проекта си (имам предвид проекта на друг CMS или samopisny) на този модел - ще бъде в операциите на базата данни. Долната линия е, че жалбата трябва да бъде в състояние да се прави разлика между "писмена форма" искания от "четене". С други думи, INSERT, UPDATE, DELETE и като създава, променя, и пуснете отчети трябва да бъдат извършени само от капитана. SELECT заявки, по принцип могат да се извършват навсякъде. За да се преквалифицират вашия двигател на този начин на мислене, тя се нуждае от много осезаем време.

В допълнение, bitriksoidy излезе с интересен детайл: като данните от капитана на роба се оттичат и с известно закъснение, те научи на системата да разпознае "критични" заявките за писане. При такова искане, всички данни, до края на изпълнение на PHP-скриптове са взети (SELECT) само с капитана, за да се избегнат грешки поради много закъснението.

Вторият мисълта, че трябва да се разглежда - това е специален сървър за изпълнение на задачата. Не е задължително да направи същото сървъра и ги зарежда едни и същи задачи. Нека някои от тях служат, например, онлайн магазин, и от друга страна - събира статистика.

Третата идея - групиране Memcached. Bitrix го заведе в горната част на презентацията си, но можете да го ползвате по-късно. Предимството му е, че е пряко добре с Nginx може да (не забравяйте първата точка?) И ви позволява да се даде на кешираните страници (или блокове) в действителност директно от RAM. Вашата задача - точно проблема скриптовете си - сложи кеширано съдържание в Memcached.

Как да се разработи проект на клъстер? Често задаван въпрос за представителите на уеб студиа. Да, точно същата като на нормален сървър. Клъстер, за да бъде просто един голям компютър, който току-що премина SSH и работа.