Статьи

MaxScale для остальных, часть 3: установка и настройка MaxScale

Третья публикация из этой серии блогов о MaxScale, наконец, подходит к тому, что вы хотите: установить и настроить MaxScale. Первый блог в этой серии был обзор того , что MaxScale является и второе о том , как создать кластер серверов MariaDB, используя MariaDB репликации для MaxScale доступа. Но теперь пришло время представить MaxScale.

Если вы пропустили второй пост, поскольку вы уже знаете, как настроить MariaDB с репликацией и все такое, напомним, что я буду использовать ту же настройку Linux-сервера, которая описана там, даже для сервера MaxScale и для клиента, чтобы выполнить некоторое тестирование, и Я рекомендую вам придерживаться этого сейчас (для самой MariaDB вы можете использовать любую подходящую настройку, которую вы хотите, MaxSCale на самом деле не волнует, но MaxScale довольно новый и до сих пор не тестировался на таком количестве платформ, поэтому попробуйте придерживаться Настройка CentOS 6.5 предлагаю.

Установка MaxScale

Начните с настройки сервера CentOS 6.5, как описано в предыдущем блоге этой серии, а затем войдите в систему как пользователь root. Настройте сервер для работы на IPADDR 192.168.0.165. Войдя в систему как пользователь root, создайте каталог установки для MaxScale, загрузите его и установите:

# cd /usr/local
# mkdir skysql
# cd skysql
# curl https://downloads.skysql.com/files/SkySQL/MaxScale/maxscale.preview.0.4.tar.gz > maxscale.preview.0.4.tar.gz
# tar xvfz maxscale.preview.0.4.tar.gz
# cd maxscale

Теперь мы загрузили MaxScale, но для работы maxscale необходимо установить переменную среды MAXSCALE_HOME, и для этого мы создадим сценарий оболочки, который запускает MaxScale для нас.

 # vi maxstart.sh

Затем настройте этот скрипт следующим образом:

#!/bin/bash
#
export MAXSCALE_HOME=/usr/local/skysql/maxscale/MaxScale
$MAXSCALE_HOME/../bin/maxscale

Как только у нас будет этот скрипт, давайте сделаем его исполняемым:

 # chmod +x maxstart.sh

Настройка MaxScale

Следующим шагом является настройка MaxScale. Файл конфигурации по умолчанию для MaxScale называется MaxScale.cnf и находится в каталоге etc, в котором находится MAXSCALE_HOME. В этом случае мы будем редактировать:

 # vi /usr/local/skysql/maxscale/MaxScale/etc/MaxScale.cnf

В этом файле каждый модуль имеет свой собственный раздел, а также каждый сервер, а также раздел для самого MaxScale. Давайте начнем с MaxScale, который имеет только одну переменную, которая контролирует количество потоков, используемых MaxScale:

[maxscale]
threads=1

После этого мы настроили серверы, которыми будем управлять здесь, из которых три. Для каждого раздела конфигурации, кроме одного для ядра MaxScale, мы должны указать, какой тип сущности мы здесь определяем, в данном случае это сервер :

[srv1]
type=server
address=192.168.0.160
port=3306
protocol=MySQLBackend

[srv2]
type=server
address=192.168.0.162
port=3306
protocol=MySQLBackend

[srv3]
type=server
address=192.168.0.163
port=3306
protocol=MySQLBackend

Как видите, мы определяем IP-адрес сервера и порт, на котором работает MariaDB. Кроме того, мы определяем, какой модуль протокола использовать, и в этом случае есть не что иное, как MySQLBackend на выбор. Как вы можете видеть, мы не определяем главные или подчиненные свойства серверов, вместо этого мы даем MaxScale возможность выяснить это для нас с помощью модуля Monitor, поэтому сейчас самое время это определить.

Чтобы монитор работал, он подключится к соответствующим серверам MySQL, поэтому для этого нам нужно определить имя пользователя и пароль. В предыдущем посте я создал пользователя с именем maxuser, используя пароль maxpwd . Кроме того, чтобы упростить задачу, я создал этого пользователя с полными привилегиями, и это действительно не рекомендуется для производственного использования. Наконец, с MaxScale у вас есть возможность обфусцировать пароли, используемые в файле конфигурации для дополнительной безопасности, но я не использую эту функцию здесь, потому что я хочу, чтобы все было просто. Итак, вот как мы определяем этот монитор:

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=srv1,srv2,srv3
user=maxuser
passwd=maxpwd

Это должно быть довольно просто, верно? Модуль переменной является ссылкой на модуль мониторинга , который мы должны использовать. Теперь, когда это необходимо, нам нужно настроить реальный маршрутизатор, и для этого есть два раздела: один для слушателя и один для маршрутизатора. Маршрутизатор, который мы собираемся использовать, является разделенным маршрутизатором чтения-записи, который управляет маршрутизацией операций записи на ведущий и чтения на ведомые устройства. Давайте начнем с маршрутизатора, который является центральной точкой здесь:

[RWSplitRouter]
type=service
router=readwritesplit
servers=srv1,srv2,srv3
user=maxuser
passwd=maxpwd

Причина, по которой нам нужно иметь имя пользователя и пароль даже для маршрутизатора, заключается в том, что для этого необходимо аутентифицировать пользователей, подключающихся к самому MaxScale, и для этого ему необходимо подключиться к серверу, которым он управляет, подключиться к базе данных mysql и получить авторизацию пользователя. данные оттуда, поэтому нам нужна учетная запись, которая может получить доступ к базе данных MySQL .

Теперь мы близки к началу работы с MaxScale. Осталось настроить прослушиватель для маршрутизатора, который мы определили выше:

[RWSplitListener]
type=listener
service=RWSplitRouter
protocol=MySQLClient
port=3306

На этом настройка MaxScale завершена!

Тестирование MaxScale

 # ./maxstart.sh

Теперь мы должны иметь возможность подключиться к MaxScale и проверить, работает ли он. Мы делаем это, настраивая клиентский сервер MariaDB. Это настроено так же, как наши предыдущие серверы, только мы устанавливаем только клиент MariaDB. Поэтому настройте сервер, как и раньше, установите IPADDR на 192.168.0.167 и запустите от имени пользователя root:

 # yum install MariaDB-client

Теперь мы очень близко! В остальной части этого поста предполагается, что вы подключены к клиенту MariaDB 192.168.0.167.

Здесь я предполагаю, что вы создали таблицу t1, которую мы использовали для проверки репликации в предыдущем посте , если нет, создайте ее и заполните ее сейчас:

# mysql -h 192.168.0.165 -u maxuser -pmaxpwd test -e "create table t1(c1 int)"
# mysql -h 192.168.0.165 -u maxuser -pmaxpwd test -e "insert into t1 values(1)"

Теперь у нас есть таблица для тестирования, поэтому давайте посмотрим, что произойдет, и давайте проверим, что наши SELECT направляются нашим двум ведомым. Мы можем сделать это, используя переменную @@ server_id , которая отличается от этих двух, конечно:

# mysql -h 192.168.0.165 -u maxuser -pmaxpwd test -e "select c1, @@server_id from t1"
+------+-------------+
| c1  | @@server_id |
+------+-------------+
|  1 |  12 |
+------+-------------+ 

Круто, это закончилось с одним из рабов, так что, если я попробую это снова, это закончится с другим рабом, правильно:

# mysql -h 192.168.0.165 -u maxuser -pmaxpwd test -e "select c1, @@server_id from t1"
+------+-------------+
| c1  | @@server_id |
+------+-------------+
|  1 |  11 |
+------+-------------+

Вау! Это действительно похоже на работу! Кроме того, не то, что если вы выполнили создание таблицы выше, то это было перенаправлено на мастер! У нас все настроено, верно? Ну, нет, осталось сделать несколько вещей. И если вы не заставили MaxScale работать, как это видно в журнале ошибок:

 /usr/local/skysql/maxscale/MaxScale/log/skygw_err1.log:
Couldn't find suitable Slave from 3 candidates.

Или, если вы не можете подключиться к MaxScale, наиболее вероятная проблема заключается в том, что вы не остановили iptables:

 # /etc/init.d/iptables stop

Но, надеюсь, что сейчас все работает, но то, что это работает, не означает, что мы закончили, есть некоторые вещи с этой конфигурацией, которые необходимо исправить, как на серверах, так и в самом MaxScale, а также есть одна вещь, которую нужно следить за репликацией настроить. Таким образом, следующий пост в серии будет посвящен тонкой настройке установки MaxScale и кластера MariaDB, к которому он обращается.

/ Karlsson