При някои видове разгръщания, особено когато богатите динамични приложения разчитат на голяма база данни, разделянето на сървъра на база данни от сървъра на приложения може да позволи на вашето приложение да се мащабира и да побере много по-голяма потребителска база. Определянето на отделен сървър, който да се използва единствено от MySQL, ще позволи на уеб сървъра на приложението да обслужва съдържание по-ефективно, докато сървърът на базата данни ще може да реагира по-бързо.
В резултат на това тези сървъри на бази данни могат по-ефективно да поддържат внедряване с голямо натоварване на трафика. Това може да ви помогне да постигнете по-висока производителност за редица приложения, от популярни пакети катоWordPress иDrupal до персонализирани приложения, написани на Ruby on Rails и Django.
Предварителни условия
В това ръководство ще използваме два Linode. Имайте предвид, че това е различно от простото внедряване на втори конфигурационен профил във вашия съществуващ акаунт в Linode, тъй като и двата сървъра ще трябва да работят едновременно. Предполагаме, че сте следвали ръководството за настройка и осигуряване на изчислителен екземпляр за двата Linode.
- За Linode, който изпълнява уеб сървъра, оттук нататък сървърът на приложения, трябва вече да имате инсталиран Apache (или предпочитания от вас уеб сървър). За нова инсталация следвайте ръководството LAMP за вашата дистрибуция. Ръководството LAMP включва MySQL, който не е необходимо да инсталирате.
- Специализираният MySQL Linode трябва да има инсталиран MySQL. Следвайте ръководството за инсталиране на сървър на база данни MySQL за вашата дистрибуция. Имайте предвид, че не е нужно да инсталирате Apache на специалния MySQL сървър.
Освен това ще искате да конфигурирате псевдоними за частния IP адрес на всеки Linode. Можете да следвате ръководството за конфигуриране на статичен IP на Linux за помощ с това. Важно е да се отбележи, че и двата Linode трябва да са в един и същ център за данни за да работи частната мрежа. Това позволява на сървърите да комуникират, без да се отчита трафикът спрямо вашата месечна квота за честотна лента. Необходимо е да рестартирате и двата Linode след конфигуриране на частните IP адреси.
Редактиране на /etc/hosts
Ще искате да създадете имена на хостове за всяка машина, за да можете да ги следите по-късно. Това също спестява работа, ако се окажете в ситуация, в която трябва да промените IP адреса на сървъра. Редактирайте /etc/hosts
файл, за да включите частния IP адреси на всеки Linode. Използвайте следния откъс от примерен /etc/hosts
файл като пример:
- Файл:/ etc/hosts
1
> 127.0.0.1 localhost 192.168.192.168 mysql.example.com mysql 192.168.192.169 app.example.com app
Не забравяйте да замените 192.168.192.168
и 192.168.192.169
с действителните частни IP адреси.
Въпреки че тази стъпка не е задължителна, конфигурирането на hosts
записите ще ви позволят да избегнете конфигурации на приложения за твърдо кодиране към конкретни IP адреси. Ще можете бързо да мигрирате сървърите на вашите приложения и бази данни към алтернативни сървъри, ако някога ви се наложи да промените IP адресите си.
Конфигуриране на MySQL сървър
Следващата стъпка е да промените /etc/mysql/my.cnf
файл на вашия MySQL сървър, за да слушате на вашия частен IP адрес. Използвайки любимия си редактор, отворете /etc/mysql/my.cnf
файл и поставете името на хоста на MySQL базата данни. За този пример името на хоста на базата данни MySQL е mysql
. Намерете bind-address
ред:
- Файл:/ etc/mysql/my.cnf
1
bind-address = mysql
Като алтернатива можете да използвате частния IP адрес. Запазете файла и изпълнете следната команда, за да рестартирате демона MySQL:
/etc/init.d/mysql restart
Предоставяне на достъп до база данни
На специалния сървър на база данни ще трябва да създадете потребителско име и парола за база данни с права за достъп. Това е възможно чрез подканата на MySQL. Издайте следната команда:
mysql -u root -p
Това ще осигури команден ред на MySQL. Издайте следните команди, като замените app
с името на хоста на Linode, изпълняващ сървъра на приложения, и силна парола на мястото на „PASSWORD“:
CREATE DATABASE webapplications;
GRANT ALL ON webapplications.* TO [email protected]'app' IDENTIFIED BY 'PASSWORD';
На този етап приложението ви може успешно да получи достъп до отдалечената база данни и вие сте готови да започнете да използвате сървъра на базата данни.
Използване на сървъра за база данни
От този момент нататък всичко е конфигурирано и вашият сървър на база данни е готов да приеме връзка от вашия уеб сървър. Вече трябва да можете да насочите приложението си към MySQL сървъра без инциденти. Важно е да запомните, че когато настройвате уеб приложения за работа с отдалечен MySQL сървър, трябва да създадете потребител с права за отдалечената система (както е показано по-горе).
Използването на MySQL на отделен сървър на база данни е много подобно на стартирането на локален сървър на база данни. Обикновено приложенията изискват от вас да посочите „име на хост на база данни“, а конвенционално сървърите на база данни, работещи на локалната машина, имат име на хост localhost
. Когато разделяте сървърите на база данни и сървъри на приложения, ще трябва да посочите името на хоста, както е зададено по-горе, в приложението.
Например настройките на базата данни inWordPress се съдържат в wp-config.php
файл, а името на хоста е посочено в следния формат:
- Файл:wp -config.php
1 2
/** MySQL hostname */ define('DB_HOST', 'mysql');
Имайте предвид, че методът за задаване на името на хоста варира от приложение до приложение. Освен това можете да замените конкретния IP адрес на сървъра на базата данни, вместо да използвате името на хоста, както е конфигурирано в /etc/hosts
по-горе.
Също така помислете за препратка към уебсайта externalMySQL за специфични заявки за MySQL и свързана помощ.
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Ръководства за уеб приложения
- Рамки за уеб приложения
- Системи за управление на бази данни