(343) 286-35-87 info@cisural.ru

Введение

Цель: Построить отказоустойчивый кластер базы данных для 1С на основе PostgreSQL

Что мы имеем: 2 одинаковых сервера с конфигурацией:

dbnode1 — имя 1 узла кластера

dbnode2 — имя 2 узла кластера

После установки базовой системы Ubuntu, сетевые интерфейсы будут выглядеть так

dbnode1:

dbnode2:

Настройка Ubuntu

Послу установки необходимо обновить систему

И установить необходимые для работы пакеты

Настройка DRBD

Перед настройкой DRBD нужно убедится, что никаких разделов на 280 гиговом разделе (sdb не создано) Посмотреть можно командой fdisk -l /dev/sdb

Если какие-то разделы присудствуют, то необходимо отчистить диск такой командой

Конфиг DRBD /etc/drbd.conf

Приводим его к такому виду на обоих узлах кластера

Чтобы избежать проблем с разименовыванием узлов кластера, необходимо добавить записи о dbnode1 и dbnode2 в dns-сервер

Или прописать в файл /etc/hosts

Запуск синхронизации

Останавливаем службу DRBD на обоих узлах кластера

Выполняем инициализацию дисков в DRBD на обоих узлах кластера.

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

Дальше пойдет синхронизация дисков, будет она идти очень долго. 200 гигабайт, часа за 3

Смотреть за процессом можно одним из удобных вам способом. Третий способ удобнее всего

После синхронизации необходимо отформатировать диск.

Форматирование

Теперь устройства sdb не используем, иначе синхронизация не будет работать. Используем только устройство drbd

Heartbeat

Создадим каталог /cluster на обоих узлах кластера

Работаем с 3 файлами конфигурации

/etc/ha.d/authkeys — файл авторизации кластеров

/etc/ha.d/ha.cf — файл настройка кластера

/etc/ha.d/haresources — файл с настройками ресурсов кластера

/etc/ha.d/authkeys

/etc/ha.d/authkeys — одинаковый на обоих узлах

/etc/ha.d/haresources

/etc/ha.d/haresources — одинаковый на обоих узлах (даже имя компьютера, должно быть одно и то же, опеределяет, кто будет главный)

/etc/ha.d/ha.cf

/etc/ha.d/ha.cf — изменяем ип для каждого нода. Ип прописываем нода, которого будем пинговать (на нод1 пишем ип нод2 и наоборот)

/etc/ha.d/resource.d/pgsql

/etc/ha.d/resource.d/pgsql — Скрипт для запуска службы postgresql (делаем на обоих узлах)

И вставить этот код в него

PostgreSQL

Установка PostgreSQL

Скачиваем и устанавливаем postgresql

На обоих узлах кластера

Убераем из автозапуска службы, их будет запускать heartbeat

Настройка системы для запуска postgresql

Значение 8589934592 — это объем оперативной памяти в байтах

  • Настройка файла /etc/sysctl.conf

  • Проверяем, примонтирован ли каталог /cluster на главном узле кластера

Если в выводе есть такая строчка, значит каталог уже примонтирован

Если нету, то на главном узле кластера выполняем команду

На главном узле кластера слудующие действия

  • Переносим каталок /var/lib/pgsql в каталог /cluster, который синхронизируется по сети

На обоих узлах кластера

Заходим в /etc/init.d/postgresql и приводим к такому виду 2 переменные

На главном узле кластера

Запускаем службу

  • Создаем пользователя и пароль PostgreSQL

Заходим в файл /cluster/var/lib/pgsql/data/pg_hba.conf

Ищем строчку:

Меняем ее на такую, для того чтобы пускало всех и без авторизации. У нас же нету еще пользователей

Перезапускаем службу

Теперь создаем пользователя

Мы только что создали пользователя postgres с паролем secret

Теперь необходимо закрыть доступ всем без авторизации, для этого заходим в файл /var/lib/pgsql/data/pg_hba.conf

Ищем строчку:

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

Перезапускаем службу

Система готова к работе

Перезагружаемся и проверяем все ли работает

ping 192.168.30.202

По ssh заходим на 192.168.30.52 и проверяем что примонтирован каталог /cluster

Смотрим ifconfig, и проверяем что появился интерфейс eth0:0

И смотрим что запущем процесс postgresql

Решение проблем

  • 1с спрашивает английскую локаль, но зовет он её неправильным именем — «en_US», и возникает ошибка: «lc_messages en_US»

А в убунте нет локали с таким именем, поэтому мы сделаем символьные ссылки на правильные имена На обоих узлах кластера: