|
Тема |
Re: Майко мила. [re: Meнтa2K] |
|
Автор |
salle (един такъв) |
|
Публикувано | 04.01.06 02:30 |
|
|
Чак такъв мързел не бях виждал .... да не вземеш да си изцапаш пръстите ако пипнеш клавиатура с кирилица та предпочиташ нещо да ти конвертира шльокавицата.
Поне от самоуважение да беше коригирал безумния правопис.
"mng_server играе ли ролиата на load balancer ? "
Не. ndb_mgmd играе единствено ролята да раздава ролите т.е. конфигурациите на ndbd
Когато стартираш възел с данни (ndbd) той буквално си няма хабер кой е и за какво се бори. Търси mgmd и го пита "кой съм аз и какво да правя?" т.е. взима цялата си конфигурация от mgmd
Друга роля mgmd няма освен ако се явява и арбитър при гласуване в случай на разцепен клсътер (split brain), но това няма отношение към балансирането на заявките.
След като стартираш клъстера mgmd възела всъщност може и да се спре. Не е необходим за нормалната работа на клъстера. Ако обаче някой възел трябва да се рестартира няма да има откъде да си вземе конфигураицята независимо дали е възел с данни (ndbd) или mysqld.
Няма начин да изпращаш заявки към mgmd. Заявките ги изпращаш на MySQL сървърите (SQL възлите в терминологията на клъстера) а те от своя страна ги пращат към клъстера.
При стартиране всеки mysqld се обръща към ndb_mgmd и пита как да стигне до ndbd възлите.
Баланс на натоварването можеш да направиш на две нива.
Първо колкото повече процесори търкалят ndbd толкова по-добре на теория. На практика трафикът между възлите расте доста бързо и при повече възли може да се наложи да търсиш високоскоростна мрежа == скъпо.
Второто място е да добавиш много MySQL сървъри вързани към същия клъстер.
Да речем, че имаш клъстер от 8 ndbd с 2 реплики и всеки от 8-те ndbd е на отделна машина.
Всеки от възлите ще съдържа 2/8 от данните и при определени заявки и включен condition_pushdown при MySQL сървърите може винаги само един или два възела да обработват заявката.
Да речем, че към този клъстер връзваш 4 отделни mysqld всеки на собствена машина.
Тогава вече можеш да накараш httpd (независимо дали един или много) да разпределят заявките към 4-те mysqld.
Round robin DNS например може да изиграе ролята на най-прост (и най-неефективен) балансьор.
Единствено трябва да се погрижиш за факта, че сесиите към MySQL са локални за всеки MySQL сървър т.е. за многоредова транзакция трябва да изпратиш всички заявки към един и същ mysqld и да внимаваш за дефинирани променливи @var, TEMPORARY таблици, AUTO_INCREMENT и всичко останало което е свързано с конкретна сесия.
Така, че нивата на балансиране могат да бъдат три.
1) Между много възли с данни (ndbd)
2) Към многото ndbd да вържеш много MySQL сървъри (mysqld)
3) Към многото mysqld да вържеш много Apache-та
Върху 1) нямаш контрол. Клъстерът сам си решава как ще разпредели данните и съответно натоварването.
При 2) и 3) всичко зависи от въображението ... и финансовите средства с които разполагаш.
Препоръчвам ти да започнеш се една минимална конфигурация от 2 ndbd, 2 mysqld и 1 или 2 httpd за да проиграеш различни варианти.
И ... чети ....
|
| |
|
|
|