Рубрика:
Администрирование /
Тонкие клиенты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСЕЙ КАМНЕВ, руководитель отдела разработки LinuxWizard, 7 лет работы с Linux. Хобби – ультралайт-спиннинг
Linux-HA-терминальный кластер для работы с «1C» 8.2
В данной статье вашему вниманию предлагается решение задачи построения отказоустойчивого терминального кластера «1С» 8.2 с СУБД PostgreSQL на базе терминального сервера LinuxWizard
Задача решается в несколько этапов:
- Установка дистрибутива GET-Term.biz.
- Объединение сетевых интерфейсов (бондинг) для надежной связи узлов кластера.
- Установка и настройка DRBD для синхронизации данных «1С» и персональных данных пользователей.
- Установка и настройка кластера «1C» 8.2 с PostgreSQL.
- Настройка Heartbeat для поддержки взаимодействия пользователей вычислительных кластеров и/или для управления распределенными ресурсами.
Следует отметить, что на рынке не существует готового решения для рассматриваемой здесь задачи.
Установка терминального сервера LinuxWizard
Самый простой этап. После установки в автоматическом режиме и ответов на вопросы автоконфигуратора S4You сервер терминалов был полностью готов к работе. S4You берет на себя большую часть конфигурации: настройку сети, сервера аутентификации, сервера терминалов, в случае необходимости есть возможность настройки файлового, почтового и прокси-сервера. На серверах были подготовлены идентичные разделы /dev/sda2 и /dev/sda5. Они не были отформатированы и примонтированы. Разделы понадобятся нам для настройки синхронизации данных в кластере с помощью DRBD.
Бондинг сетевых интерфейсов
Бондинг сетевых интерфейсов настраивался в режиме обеспечения отказоустойчивости (заложенном в ядро дистрибутива). Отредактируем файл /etc/modprobe.conf:
alias bond0 bonding
options bond0 miimon=100 mode=3
Для объединения интерфейсов нам понадобится создать на обоих серверах новые интерфейсы bond0. Создадим конфигурационный файл для сетевого интерфейса bond0 - /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.0.0
IPADDR=192.168.0.1 # на втором узле IPADDR=192.168.0.2
NETMASK=255.255.255.0
USERCTL=NO
Добавим опции MASTER=bond0 и SLAVE=yes в конфигурационные файлы объединяемых сетевых интерфейсов и перезапустим службу сети:
service network restart
Установка и настройка DRBD
DRBD обеспечивает репликацию содержимого локального блочного устройства на удаленный узел в (а)синхронном режиме. Причем (в общем случае) только для двух узлов, работающих в режимах Primary и Secondary. Primary обеспечивает доступ к данным, Secondary синхронизирует и хранит данные, но не предоставляет локальный доступ к ним.
Для использования DRBD создаются новые устройства, обычно /dev/drbdX (X-число). DRBD должен быть установлен, настроен и запущен на обоих узлах. Установка DRBD:
yum install drbd kmod-drbd
Настройка заключается в конфигурировании файла /etc/drbd.conf, он должен быть одинаковым на обоих серверах:
global { usage-count no; }
resource r0 {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net { cram-hmac-alg "sha1"; shared-secret "Secret";}
syncer { rate 10M; }
on lw {
device /dev/drbd0;
disk /dev/sda2;
address 192.168.0.1:7788;
meta-disk internal;
}
on lw2 {
device /dev/drbd0;
disk /dev/sda2;
address 192.168.0.2:7788;
meta-disk internal;
}
}
resource r1 {
...аналогично r0 только для устройства /dev/sda5
}
Создаются ресурсы для синхронизации БД PostgreSQL и данных пользователей терминального сервера r0 и r1 для узлов lw и lw2. До старта DRBD на обоих серверах необходимо выполнить инициализацию метаданных на дисках:
drbdadm create-md r0
drbdadm create-md r1
Запускаем службу DRBD на обоих серверах:
service drbd start
Устанавливаем статус главного узла на первом сервере (выступаем в роли Heartbeat, пока он не установлен и не настроен).
drbdadm -- --overwrite-data-of-peer primary all
watch -n 1 cat /proc/drbd
После синхронизации ресурсов /dev/drbd0 и /dev/drbd1 создаем на них файловую систему:
mkfs.ext3 /dev/drbd0
mkfs.ext3 /dev/drbd1
Установка и настройка кластера «1C» 8.2 с СУБД PostgreSQL
Установка пакетов «1С» на обоих серверах:
yum localinstall\
1C_Enterprise82-common-8.2.11-236.i386.rpm\
1C_Enterprise82-common-nls-8.2.11-236.i386.rpm\
1C_Enterprise82-crs-8.2.11-236.i386.rpm\
1C_Enterprise82-crs-nls-8.2.11-236.i386.rpm\
1C_Enterprise82-server-8.2.11-236.i386.rpm\
1C_Enterprise82-server-nls-8.2.11-236.i386.rpm\
1C_Enterprise82-ws-8.2.11-236.i386.rpm\
1C_Enterprise82-ws-nls-8.2.11-236.i386.rpm --nogpgcheck
Установка пакетов СУБД PostgreSQL на обоих серверах:
yum localinstall\
postgresql-8.4eter-8.4.4-eter1.1centos.i586.rpm\
postgresql-8.4eter-contrib-8.4.4-eter1.1centos.i586.rpm\
postgresql-8.4eter-server-8.4.4-eter1.1centos.i586.rpm --nogpgcheck
Перед настройкой кластера «1С» следует сконфигурировать PostgreSQL:
su postgres
initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8
exit
Редактируем файл /var/lib/pgsql/data/pg_hba.conf:
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
Задаем пароль пользователя postgres:
psql -U postgres -c "ALTER USER postgres PASSWORD 'secret'"
Теперь в файле /var/lib/pgsql/data/pg_hba.conf поменяем trust на md5. Запустим службы PostgerSQL и «1C» на обоих серверах:
service postgresql start
service srv1cv82 start
Из приложения «Администрирование серверов «1С:Предприятие» создаем конфигурацию кластера резервирования «1C» 8.2.
Настройка Heartbeat
Для отказоустойчивости сервисов установим и сконфигурируем Heartbeat:
yum install heartbeat
В файле /etc/ha.d/ha.cf опишем узлы lw и lw2 и методы проверки доступности. В случае отказа основного узла lw его задачи будет выполнять узел lw2:
logfacility daemon
node lw
node lw2
keepalive 1
warntime 10
deadtime 30
initdead 120
udpport 694
ucast eth0 192.168.1.1
ucast eth0 192.168.1.2
ucast bind0 192.168.0.1
ucast bind0 192.168.0.2
auto_failback off
ping 192.168.1.254 # Проверка доступности сетевой коммутатора
respawn hacluster /usr/lib/Heartbeat/ipfail
crm off
В файле /etc/ha.d/authkeys укажем общий секретный ключ, позволяющий узлам безопасно связываться друг с другом:
auth 1
1 sha1 somethinglong
В файле /etc/ha.d/haresources задаем ресурсы, контролируемые серверами:
lw IPaddr::192.168.1.10/24/eth0
lw DRBDdisk::r0 Filesystem::/dev/drbd0::/var/lib/pgsql/data::ext3 postgresql
lw DRBDdisk::r1 Filesystem::/dev/drbd1::/home::ext3
***
Мы получили отказоустойчивый кластер терминалов для работы с «1С», состоящий из двух идентично сконфигурированных узлов и имеющий общий IP-адрес 192.168.1.10.
Домашние папки пользователей и база «1С», хранящаяся в СУБД PostgreSQL, находятся на ресурсах DRBD, синхронизация которых происходит по объединенным сетевым интерфейсам eth1 и eth2 на каждом из узлов.
В случае отказа основного узла lw связь между узлами прервется, и Heartbeat передаст полномочия lw2. Наш кластер будет работать безотказно, даже если один узел выйдет из строя.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|