Забезпечення відмовостійкості – запорука безперервної роботи та взагалі повного задоволення як користувачів, так і адмінів. У цьому матеріалі йтиметься про те, як можна виконати кластеризацію BitrixVM за допомогою простих і доступних засобів, щоб усім було радісно і ніщо не заважало спокійно працювати.
Отже, маємо два сервери з BitrixVM та розгорнутими на них системами Bitrix24. Перше, що слід зробити для збереження однотипності даних на обох вузлах, виконати синхронізацію як між базами даних, так і між файлами bitrix.
Bitrix1 — 172.16.10.1
Bitrix2 — 172.16.10.2
Обов'язково пропишемо у файлах hosts рядки на обох машинах:
172.16.10.1 bitrix1
172.16.10.2 bitrix2
Для бази даних використовуватимемо реплікацію даних типу master-master. Для цього нам необхідно виправити налаштування у файлах /etc/my.cnf
Bitrix рекомендує для перевизначення своїх власних налаштувань створити файл /etc/mysql/conf.d/z_bx_custom.cnf, в якому слід проводити редагування:
[root@bitrix1 /]# cat /etc/my.cnf
#
# Basic mysql configuration. Use bvat for advanced settings.
# Parameters set by bvat are stored in /etc/mysql/conf.d/bvat.cnf
# If you want to change any parameter, you'll have to redefine it in #/etc/mysql/conf.d/z_bx_custom.cnf
#
Створимо файл відповідно до рекомендації:
touch /etc/mysql/conf.d/z_bx_custom.cnf
[root@bitrix1 /]# nano /etc/mysql/conf.d/z_bx_custom.cnf [mysqld]
Унікальний ідентифікатор сервера серед учасників реплікації:
server-id = 1
Виконується запис у логи змінених бінарних даних. Без зазначення цієї опції може виникнути помилка як у логах, так і при вході в сам bitrix-портал:
Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is #READ #COMMITTED or READ UNCOMMITTED.
binlog_format=row
Логи помилок:
log=/var/log/mysqld.log
log_error = /var/log/mysqld.log
Шлях до логів транзакцій сервера (binlog, який веде майстер):
log-bin = /var/lib/mysql/server-mysql-bin
log-bin-index = /var/lib/mysql/server-mysql-bin.index
Шлях до relay-логів slave (binlog, завантажений з майстра):
relay-log = /var/lib/mysql/slave-mysql-relay-bin
relay-log-index = /var/lib/mysql/slave-mysql-relay-bin.index
БД, які потрібно або не потрібно реплікувати (виконуємо лише реплікацію для стандартної бази bitrix - sitemanager0):
replicate-do-db = sitemanager0
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
Не вести журнал binlog для бази даних:
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
Щоб уникнути конфліктів автоінкремента, повідомляємо серверу, щоб ID генерувалися, починаючи з 3-го, додаючи по 10, тобто. 13, 23, 33, 43 і надалі:
auto_increment_increment = 10
auto_increment_offset = 3
Зберігати логи з майстра у свій binlog, щоб передати слейву:
log-slave-updates
Після цього перезапускаємо mysql:
[root@bitrix1 /]# /etc/init.d/mysqld restart