В этой статье рассказывается, как настроить трехузловую базу данных MySQL 5. кластер серверов: два узла хранения и один
узел управления.
Кластер представляет собойбалансировщик нагрузки высокой доступности
, состоящий из двух узлов, использующих установочный пакет Ultra Monkey
, обеспечивающий устройство «heartbeat» (используется для проверки работоспособности другого узла) и
ldirectord (распределение запросов по узлам кластера MySQL). .В этой статье каждый из наших узлов использует систему Debian Sarge Linux. Установка других дистрибутивов Linux может немного
отличаться. Мы используем MySQL версии 5.0.19. Если вы не хотите использовать MySQL 5, вы также можете использовать MySQL 4.1,
хотя
я еще не проверял ее.Эта статья представляет собой практическое руководство по применению; она не требует слишком много теории. В Интернете можно найти много теории о кластеризации.
Для одного сервера
я использую следующий сервер Debian, все они находятся в одном сегменте сети (в этом примере: 192.168.0.x):
sql1.test.com: 192.168.0.101 Узел кластера MySQL 1
sql2.test.com: 192.168. 0.102 Узел кластера MySQL 2
loadb1.test.com: 192.168.0.103 Балансировка нагрузки 1 / Сервер управления кластером MySQL
loadb2.test.com: 192.168.0.104 Балансировка нагрузки 2
Кроме того, нам нужен виртуальный IP-адрес: 192.168.0.105. Он организует балансировку нагрузки для этого кластера MySQL, чтобы
приложения могли получать доступ к кластеру через единый IP-адрес.
Несмотря на то, что мы хотим использовать два узла в кластере MySQL, нам все равно нужен третий узел, сервер управления кластером MySQL
, по одной основной причине: если один из узлов кластера MySQL выходит из строя, а сервер управления кластером MySQL не работает, то
Тогда данные на двух узлах кластера будут противоречивыми («разделенный мозг»). Он нужен нам для настройки кластера MySQL.
Поэтому для нашей установки обычно требуется пять компьютеров:
2 узла кластера MySQL + 1 сервер управления кластером + 2 балансировщика нагрузки = 5.
Поскольку сервер управления кластером не использует много ресурсов, система будет пустой. поэтому мы можем разместить наш
первый
балансировщик нагрузки на той же машине, что и он, что сэкономит нам один сервер, поэтому в идеале нам нужно всего четыремашины.
2. Настраиваем сервер управления кластером MySQL.
Сначала нам необходимо скачать MySQL 5.0.19 и установить сервер управления кластером (ndb_mgmd) и клиент управления кластером (ndb_mgm — который
можно использовать для мониторинга работы кластера). шаги указаны в файле loadb1.test.com (192.168.0.103):
loadb1.test.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get /Загрузки/ MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql- max-5.0 .19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/ bin/ndb_mg *
cd /usr/src
rm -rf /usr/src/mysql-mgm
Далее мы должны создать файл конфигурации кластера /var/lib/mysql-cluster/config.ini:
loadb1.test.com:
mkdir /var /lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
————-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Раздел для кластера узел управления
[ NDB_MGMD]
# IP-адрес узла управления (этой системы)
HostName=192.168.0.103
# Раздел для узлов хранения
[NDBD]
# IP-адрес первого узла хранения
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# IP-адрес второго узла хранения
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# один [MYSQLD] на каждый узел хранения
[MYSQLD]
[MYSQLD]
———-
В реальном приложении , пожалуйста, измените файл. Замените IP-адрес на соответствующий IP-адрес.
Затем мы запускаем сервер управления кластером:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Нам также необходимо иметь возможность автоматически запускать сервер управления при запуске сервера, поэтому мы создаем очень простой
сценарий инициализации и соответствующее стартовое соединение:
loadb1.test.com:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init. d/ ndb_mgmd
update-rc.d ndb_mgmd defaults
Три узла кластера MySQL конфигурации (узлы хранения).
Теперь мы установим mysql-max-5.0.19 на sql1.test.com и sql2.test.com соответственно:
sql1.example.com/ sql2 .example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql - max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:mysql .
chown -R данные mysql
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
Затем мы создаем файл конфигурации MySQL /etc/my.cnf на каждом узле:
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# IP-адрес кластера узел управления
ndb-connectstring=192.168.0.103
[mysql_cluster]
# IP-адрес узла управления кластером
ndb-connectstring=192.168.0.103
—
убедитесь, что вы вводите правильный IP-адрес на сервере управления кластером.
Далее мы создаем каталог данных и запускаем сервер MySQL на каждом узле кластера:
sql1.test.com/sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd – Initial
/ etc/init.d/mysql.server start
(Помните: мы запускаем MySQL только в первый раз или при
изменении /var/lib/mysql-cluster/config.ini на loadb1.test.com. Используйте только ndbd –initial)
Теперь пришло время установить пароль для корневой учетной записи MySQL:
sql1.test.com / sql2.test.com:
mysqladmin -u root пароль yourrootsqlpassword
Нам нужно запустить узел кластера при запуске сервера, поэтому мы создаем инициализацию ndbd. сценарий и соответствующее
соединение при запуске системы:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc.
4. Тестирование кластера MySQL.
Настройка кластера MySQL завершена, теперь пришло время его протестировать. На сервере управления кластером
(loadb1.test.com) запустите клиент управления кластером ndb_mgm, чтобы проверить, подключены ли узлы кластера:
loadb1.test.com:
ndb_mgm
Вы увидите это:
– NDB Cluster – Management Client –
ndb_mgm >
В Enter show;
show в командной строке;
выходные данные должны быть такими:
ndb_mgm> show;
Соединение с сервером управления по адресу: localhost:1186
Конфигурация кластера
———————
[ndbd(NDB)] 2 node( s)
id= 2 @ 192.168.0.101 (Версия: 5.0.19, Группа узлов: 0, Главный)
id=3 @ 192.168.0.102 (Версия: 5.0.19, Группа узлов: 0)
[ndb_mgmd(MGM)] 1 узел(и) )
id=1 @192.168.0.103 (Версия: 5.0.19)
[mysqld(API)] 2 узла(ов)
id=4 @192.168.0.101 (Версия: 5.0.19)
id=5 @192.168.0.102 (Версия: 5.0.19)
ndb_mgm>
Если вы видите, что все ваши узлы подключены. Тогда все будет хорошо!
Введите
quit,
чтобы выйти из клиентской консоли ndb_mgm.
Теперь мы создаем тестовую базу данных на узле sql1.test.com, создаем тестовую таблицу и
заполняем некоторые тестовые данные:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER ;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
quit;
(Посмотрите на оператор CREATE выше: таблицы всех баз данных, которые мы хотим кластеризовать, должны использовать ENGINE=NDBCLUSTER!
Если вы используете другой ENGINE, то кластеризация будет выполнена). не работает!)
Результат SELECT должен быть:
mysql> SELECT * FROM testtable;
+——
+
| +
——
+
1 строка в наборе (0,03 секунды)
Теперь мы находимся в
режиме «Создание». та же база данных на узле sql2.test.com (да, нам все равно придется ее создать, ноданные будут скопированы на sql2.test.com
после создания тестовой таблицы
, поскольку тестовая таблица использует ENGINE=NDBCLUSTER):sql2. test.com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
SELECT * FROM testtable;
Результат SELECT должен быть таким же, как результат sql1.test.com выше:
mysql> SELECT * FROM testtable
+—; —+
| i |
+——+
| 1 |
+——+
1 строка в наборе (0,04 сек.)
Мы видим, что данные скопированы с узла sql1.test.com на узел sql2.example.com. Теперь
вставляем еще одну строку в тестовую таблицу:
sql2.test.com:
INSERT INTO testtable () VALUES (2)
Теперь
вернемся к узлу sql1.example.com и проверим, видим ли мы вновь вставленную строку:
sql1.example.com:
mysql
-u root -p
USE
mysqlclustertest;
SELECT * FROM testtable
quit;
вывод
должен выглядеть следующим образом:
mysql> SELECT * FROM testtable
;
| 2 |
+——+
2 строки в наборе (0,05 секунды),
чтобы на каждом узле кластера были одинаковые данные!
Теперь давайте посмотрим, остановим ли мы узел 1 (sql1.example.com): запустите
sql1.example.com:
killall ndbd
и проверьте
ps | grep ndbd | grep -iv grep,
чтобы убедиться, что все процессы ndbd завершились. Если вы все еще видите процессы ndbd, снова запустите
killall ndbd
, пока все процессы ndbd не будут завершены.
Теперь на нашем сервере управления проверьте состояние кластера (loadb1.example.com):
loadb1.example.com:
ndb_mgm
Введитеshow;
на консоли ndb_mgm
.Вы должны увидеть следующее:
ndb_mgm> show
Connected to Management Server at: localhost; :1186
Конфигурация кластера
————————
[ndbd(NDB)] 2 узла(ов)
id=2 (не подключено, принимает подключение от 192.168.0.101)
id=3 @192.168.0.102 (Версия: 5.0 .19) , Группа узлов: 0, Мастер)
[ndb_mgmd(MGM)] 1 узел(а)
id=1 @192.168.0.103 (Версия: 5.0.19)
[mysqld(API)] 2 узла(а)
id=4 @192.168 .0.101 (Версия: 5.0.19)
id=5 @192.168.0.102 (Версия: 5.0.19)
ndb_mgm>
Видите ли, узел sql1.example.com не подключен.
Введите:
выйти;
выйти из консоли ndb_mgm.
Давайте проверим узел sql2.example.com:
sql2.example.com:
mysql -u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
quit;
Результат запроса SELECT по-прежнему должен быть:
mysql> SELECT * FROM testtable;
+— —+
|
+——+
| 1 |
2 +
——+
2 строки в наборе (0,17 секунды)
Хорошо, все тесты в порядке, теперь давайте снова запустим узел sql1.test.com:
sql1 .example .com:
ndbd
5 Как перезапустить кластер
Теперь представим, что вамнеобходимо перезапустить кластер MySQL
из-за изменения /var/lib/mysql-cluster/config.ini на узле loadb1.test.com
или другого причины.Для этого вы используете
клиент управления кластером ndb_mgm на узле loadb1.example.com:
loadb1.test.com:
ndb_mgm
В консоли ndb_mgm вы вводите
«shutdown»;
вы увидите такое сообщение:
ndb_mgm> Shutdown
Node 3
;: Выключение кластера инициировано.
Узел 2: Выключение узла завершено.
2 узла(ов) кластера NDB завершили работу.
Сервер управления кластером NDB
ndb_mgm>
Это означает, что узлы кластера sql1.test.com и sql2.test.com были отключены. все серверы управления кластером отключены.
Запустите
quit;
выйдите из консоли ndb_mgm.
Чтобы запустить сервер управления кластером, сделайте это на loadb1.test.com:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
и на sql1.test.com и sql2.test.com. Выполнить на:
sql1.example.com / sql2.example.com:
ndbd
Или вы только что изменили файл /var/lib/mysql-cluster/config.ini на loadb1.test.com:
ndbd –initial.
После этого вы можно проверить на сайте loadb1.test.com, был ли перезапущен кластер:
loadb1.test.com:
ndb_mgm
В консоли ndb_mgm введите
show;
чтобы просмотреть текущее состояние кластера. После перезапуска всем узлам может потребоваться некоторое время, чтобы сообщить о подключении.
Введите:
выйти;
выйти из консоли ndb_mgm.
6. Настройка балансировки нагрузки
Наш кластер MySQL готов, и теперь вы можете начать его использовать.
Однако у нас нетотдельного IP-
адреса
для доступа к кластеру
, а это значит, что вам придется настроить часть приложения для использования узла кластера MySQL 1 (sql1.test.com), а другую часть — для использования узла 2 (sql2. test.com).Конечно, всем приложениям нужно использовать только один узел, но если вы
не хотите распределять нагрузку между узлами кластера, то для чего нужен кластер. Другой вопрос,
а что если один кластер
?узел выходит из строя? Тогда приложения, использующие этот узел кластера, вообще не смогут работать.
Решением здесь является настройка балансировщика нагрузки перед кластером MySQL, чтобы сбалансировать нагрузку между каждым узлом кластера MySQL.
Балансировщик нагрузки настраивает общий виртуальный IP-адрес между узлами кластера, и все ваши приложения используют этот виртуальный IP-адрес для
доступа к кластеру. Если один из узлов выйдет из строя, ваше приложение все равно будет работать, поскольку балансировщик нагрузки будет передавать запросы
на другой узел, который работает правильно.
Теперь в этом примере узким местом становится балансировщик нагрузки. Что, если этот балансировщик нагрузки сломается? Итак, мы
настроим два балансировщика нагрузки в режиме (активный/пассивный) активный/пассивный. Это означает, что у нас есть один балансировщик нагрузки, который активен, и другой, находящийся в
режиме горячего резерва, и когда активный балансировщик выйдет из строя, он станет активным. Каждый балансировщик нагрузки использует Heartbeat для проверки
активности другого балансировщика нагрузки, а балансировщик нагрузки также использует ldirectord, который отвечает за распределение трафика по узлам кластера.
Heartbeat и ldirectord включены в установочный пакет Ultra Monkey, который мы установим.
Очень важно, чтобы системное ядро узлов loadb1.test.com и loadb2.test.com поддерживало IPVS (IP Virtual Server).
IPVS выполняет балансировку нагрузки на транспортном уровне ядра Linux.
6.1 Установка Ultra Monkey
Хорошо, теперь приступим: Сначала мы включаем IPVS на узлах loadb1.test.com и loadb2.test.com:
loadb1.example.com / loadb2.example.com:
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe
ip_vs_nq
modprobe ip_vs_rr modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr
Чтобы включить модули IPVS при запуске, мы перечисляем модули в /etc/modules:
loadb1.test.com / loadb2.test.com :
vi /etc/
modulesip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
Теперь редактируем /etc/apt/sources.list, добавляем точку загрузки Ultra Monkey, а затем устанавливаем Ultra Monkey:
loadb1.test .com/loadb2. test.com:
ви /etc/apt/sources.list
deb http://www.ultramonkey.org/download/3/ sarge main
deb-src http://www.ultramonkey.org/download/3 sarge main
apt-get update
apt-get install ultramonkey libdbi-perl libdbd-mysql-perl libmysqlclient14-dev
Теперь Ultra Monkey установлен, если вы видите следующее предупреждение:
| libsensors3 не работает
|
Похоже, что ваше ядро не скомпилировано с поддержкой датчиков
| libsensors3 не будет работать в вашей системе
|
Если вы хотите включить его, посмотрите «
Поддержка аппаратных датчиков I2C» в конфигурации вашего ядра
.
Ответьте на следующий вопрос:
Хотите ли вы автоматически загружать правила IPVS при загрузке?
<-- Нет.
Выберите метод демона.
<-- нет.
Только что установленный мной установочный пакет libdbd-mysql-perl не работает в MySQL 5 (мы находимся в системе). Кластер MySQL с использованием MySQL 5),
поэтому мы устанавливаем последнюю версию установочного пакета Perl DBD::mysql:
loadb1.test.com / loadb2.test.com:
cd /tmp
wget
tar xvfz DBD-mysql-3.0002.tar.gz
cd DBD- mysql -3.0002
perl Makefile.PL
make
make install
Сначала мы должны включить пересылку пакетов:
loadb1.example.com / loadb2.example.com:
vi /etc/sysctl.conf
# Включает пересылку пакетовnet.ipv4.ip_forward = 1
6.2 Настройте тактовый сигнал ( heartbeat)
Настраиваем Heartbeat, создав три файла (файлы loadb1.test.com и loadb2.test.com должны быть абсолютно одинаковыми):
loadb1.test.com/loadb2.test.com:vi
/etc/ha.d /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node loadb1
node loadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Помните: вы должны указать имя узла (это В примере loadb1 и loadb2)
uname -n
Помимо этого нам не нужно вносить какие-либо изменения в этот файл.
vi /etc/ha.d/haresources
loadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
Необходимо указать одно из имен узлов балансировки нагрузки (здесь: loadb1) и перечисляет
виртуальный IP-адрес (192.168.0.105) и широковещательный адрес (192.168.0.255)
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring
somerandomstring — это два такта, используемые loadb1 и loadb2 для аутентификации каждого. другое Пароль для демона.
Установите здесь свой собственный пароль. Вы можете выбрать один из 3 методов шифрования. Обычно я использую md5 для шифрования.
/etc/ha.d/authkeys должен быть доступен только для чтения для учетной записи root. Здесь мы делаем следующее:
loadb1.test.com / loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 Настройка ldirectord
Теперь мы создать для ldirectord файл конфигурации, балансировщик нагрузки:
loadb1.example.com / loadb2.example.com:
vi /etc/ha.d/ldirectord.cf
# Глобальные директивы
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent = да
виртуальный = 192.168.0.105:3306
сервис = mysql
реальный = 192.168.0.101:3306 шлюз
реальный = 192.168.0.102:3306
тип проверки ворот = согласование
входа = "ldirector"
passwd = "ldirectorpassword"
база данных = "ldirectorb"
request = "SELECT * FROM Connectioncheck"
Scheduler = wrr
Пожалуйста, укажите правильный виртуальный IP-адрес (192.168.0.105) и правильный IP-адрес узла кластера MySQL (192.168.0.101 и 192.168.0.102).
3306 — это порт по умолчанию при работе MySQL. Мы также указали пользователя MySQL (ldirector) и пароль (ldirectorpassword), базу данных (ldirectordb) и
SQL-запрос. ldirectord использует эту информацию для тестирования узлов кластера MySQL, чтобы убедиться, что они всегда доступны. Далее мы воспользуемся пользователем ldirector для
создания базы данных ldirectordb.
Теперь создаем необходимые стартовые соединения для Heartbeat и удаляем ldirectord (поскольку ldirectord будет запускаться по Heartbeat):
loadb1.test.com / loadb2.test.com:
update-rc.d -f heartbeat удалить
update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord удалить
6.4 Создание базы данных ldirector
Далее мы создаем базу данных ldirector на узлах кластера MySQL sql1.test.com и sql2.test.com. Эта база данных будет использоваться нашим балансировщиком нагрузки для проверки
доступности узлов кластера MySQL.
sql1.test.com:
mysql -u root -p
ПРЕДОСТАВИТЬ ВСЕ НА ldirectordb.* ДЛЯ 'ldirector'@'%', ИДЕНТИФИЦИРОВАННОГО ПО 'ldirectorpassword';
СОЗДАТЬ
БАЗУ ДАННЫХ ldirectordb;
ИСПОЛЬЗОВАТЬ
CREATE TABLE Connectioncheck (i INT) ENGINE; =NDBCLUSTER;
INSERT INTO Connectioncheck () VALUES (1);
quit;
sql2.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' ИДЕНТИФИЦИРОВАННЫЙ 'ldirectorpassword'
;
СОЗДАТЬ БАЗУ ДАННЫХ ldirectordb;
quit;
6.4 Подготовка узлов кластера MySQL для балансировки нагрузки
Наконец, мы должны настроить узлы кластера MySQL sql1.test.com и sql2.test.com для приема виртуального IP-адреса 192.168.0.105.
sql1.test.com / sql2.test.com:
apt-get install iproute
Добавьте следующее содержимое в /etc/sysctl.conf:
vi /etc/sysctl.conf
# Включите настройку параметра arp_ignore
net.ipv4.conf.all . arp_ignore = 1
# Когда arp-запрос получен на eth0, отвечайте только в том случае, если этот адрес
# настроен на eth0. В частности, не отвечайте, если адрес
# настроен на lo
net.ipv4.conf.eth0.arp_ignore = 1
#. То же самое для eth1, добавьте для всех интерфейсов ARP
#net.ipv4.conf.eth1.arp_ignore = 1
# Включите настройку опции arp_announce
net.ipv4.conf.all.arp_announce = 2
# При отправке запроса ARP через eth0 Всегда используйте адрес, который
# настроен на eth0 в качестве адреса источника запроса ARP. Если этот
# не установлен, и пакеты отправляются на eth0 для адреса, который находится на
# lo, и требуется запрос arp, тогда адрес на. lo будет использоваться.
# Поскольку IP-адрес источника arp-запросов вводится в ARP-кэш
# пункта назначения, это приводит к объявлению этого адреса
# в данном случае, поскольку адреса на lo в реальном -. серверы должны
# объявляться только директором linux.
net.ipv4.conf.eth0.arp_announce = 2
# То же самое для eth1, добавьте для всех ARP-интерфейсов
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
добавит следующий абзац в /etc/network/interfaces:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inet статический
адрес 192.168.0.105
сетевая маска 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. Запускаем балансировщик нагрузки и тестируем.
Теперь запускаем два менеджера балансировки нагрузки:
loadb1.test.com / loadb2.test.com:
/etc/init.d /ldirectord stop
/etc/init.d/heartbeat start
Если вы не видите ошибок, вам необходимо перезапустить каждый балансировщик нагрузки сейчас:
loadb1.test.com / loadb2.test.com:
выключение -r сейчас
После перезапуска мы можем проверить, загружаются ли оба балансировщики работают как положено:
loadb1.test.com / loadb2.test.com:
ip addr sh eth0
Активный балансировщик нагрузки должен указать виртуальный IP-адрес (192.168.0.105):
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 область действия global eth0
inet 192.168.0.105/24 brd
Балансировщик нагрузки для
192.168.0.255 область глобального вторичного пассивного eth0 (горячий резерв) должна выглядеть следующим образом:2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:16:c1:4e brd ff:ff:ff :ff:ff:ff
inet 192.168.0.104/24 brd 192.168.0.255 область действия global eth0
loadb1.test.com / loadb2.test.com:
ldirectord ldirectord.cf status
Вывод на активном балансировщике нагрузки:
ldirectord для /etc/ha .d/ldirectord.cf работает с pid: 1603
Вывод на пассивном балансировщике нагрузки:
ldirectord остановлен для /etc/ha.d/ldirectord.cf
loadb1.example.com / loadb2.example.com:
ipvsadm -L - nВывод
на активном балансировщике нагрузки:
версия IP Virtual Server 1.2.1 (размер=4096)
Prot LocalAddress:Флаги планировщика портов
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 Маршрут 1 0 0
-> 192.168.0.102:3306
Вывод
включенПассивный балансировщик нагрузки маршрута 1 0 0:
виртуальный IP-сервер версии 1.2.1 (размер = 4096)
Prot LocalAddress: флаги планировщика портов
-> RemoteAddress: вес переадресации портов ActiveConn InActConn
loadb1.test.com / loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap статус главного устройства
Вывод на активном балансировщике нагрузки:
главный работает
(ipvs_syncmaster pid: 1766)
Вывод на пассивном балансировщике нагрузки:
главный остановлен
(ipvs_syncbackup pid: 1440)
Если все ваши тесты проходят нормально, теперь вы можете получить доступ базу данных MySQL с других серверов в той же сети (192.168.0.x), используя виртуальный IP-адрес 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(помните: ваш клиент MySQL должен быть не ниже версии 4.1 ; более старые версии не поддерживают MySQL5. )
Теперь вы можете отключить один из узлов кластера MySQL для проверки, и вы все равно сможете подключиться к базе данных MySQL;
8 Примечания
При запуске кластера MySQL следует помнить несколько важных вещей:
– Все данные находятся в памяти! Поэтому вам нужен большой объем памяти на узлах кластера. Вот
формула расчета объема памяти, необходимой для каждого узла:
(Размер базы данных SizeofDatabase * Количество реплик NumberOfReplicas * 1,1) / Количество узлов данных NumberOfDataNodes
Итак, если у вас размер базы данных 1 ГБ, вам следует оборудовать каждый узел 1,1 ГБ. памяти!
– Узел управления кластером прослушивает любое соединение через порт 1186. Это означает, что он не очень безопасен, поэтому вам следует запускать MySQL Cluster в отдельной сети.