Связаться по:
vkarabedyants Telegram Viber

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Обеспечение отказоустойчивости сайта

mongo

 

Задача поставленная клиентом, обеспечить отказоустойчивость сайту. При падении любого сервера сайт будет продолжать работать. Для решения этой задачи использовали репликацию баз данных и распределенную ФС.

В качестве баз данных у клиента пользуется Mongo db и Postgress. Реализация 3 сервера — на них репликация Mongo и Postgress и распределенная система Gluster. Балансировка выполняется по ДНС.

Установка Postgress

Устанавливаем и настраиваем БД с учетом наличия трех серверов, настраиваем репликацию. Основная идея подробно описана на хабре.

Пошагово на каждом сервере выполняем следующие действия:

psql -U postgres -c "ALTER USER bucardo WITH PASSWORD 'cewyg467rtTjefhr3343nnfdjgghhehrh5hhgg7';"

bucardo add database archivizer_1 dbname=archivizer dbhost=xxx.xx.xxx.66 dbuser=bucardo dbpass=cewyg467rtTjefhr3343nnfdjgghhehrh5hhgg7
bucardo add database archivizer_2 dbname=archivizer dbhost=xxx.xx.xxx.67 dbuser=bucardo dbpass=cewyg467rtTjefhr3343nnfdjgghhehrh5hhgg7
bucardo add database archivizer_3 dbname=archivizer dbhost=xxx.xx.xxx.68 dbuser=bucardo dbpass=cewyg467rtTjefhr3343nnfdjgghhehrh5hhgg7
bucardo add table all --db=archivizer_1 --herd=archivizer_herd
bucardo add sequence all --db=archivizer_1 --herd=archivizer_herd
bucardo add dbgroup archivizer_group
bucardo add dbgroup archivizer_group archivizer_1:source
bucardo add dbgroup archivizer_group archivizer_2:source
bucardo add dbgroup archivizer_group archivizer_3:source

bucardo add sync archivizer_sync herd=archivizer_herd dbs=archivizer_group

Таким образом происходит настройка БД Postgress

Установка Mongo DB

База монго поддерживает два варианта репликации:  ведущий-ведомый(Master-Slave) реплисеты(Replica Sets ). В данном случае будем использовать более новый подход Replica Sets. Когда речь идет о репликации то подразумевается использование нескольких серверов на которые будем устанавливать БД, у нас их три. Принцип работы показан на рисунках.

mongo-replicmongo-replic1

Запуск демона выполняется командой

mongod

Для указания сервера БД

mongo --host xxx.xxx.xxx.68

Для указания, что это реплика используем команду

mongo --host xxx.xxx.xxx.68 --replSet myreplica

Для двух других серверов так же

mongo --host xxx.xxx.xxx.66 --replSet myreplica

mongo --host xxx.xxx.xxx.87 --replSet myreplica

myreplica – эта любое имя которое мы указываем для Replica Sets

Таким образом у нас есть три БД на разных серверах, нужно распределить между ними роли и определить Primary сервер.

Выбрали сервер и входим на него с помощью команд mongoshell

mongo --host xxx.xxx.xxx.68

Выполняем инициализацию конфига

mongo> rs.initiate()

Доступный список методов можно получить rs.help()

Узнаем статус

mongo> rs.status()

Видим только один сервер, необходимо добавить остальные

mongo> rs.add("xxx.xxx.xxx.66")
mongo> rs.add("xxx.xxx.xxx.67")

Более подробную информацию по натройке можно получить на оф сайте.

Установка GlusterFS

На всех серверах устанавливаем глустер

yum install glusterfs-server

Запускаем демон и проверяем статус

service glusterd start
service glusterd status

Выполняем настройку

gluster peer probe xxx.xx.xxx.66
gluster peer probe xxx.xx.xxx.67
gluster peer probe xxx.xx.xxx.68

mkdir /var/spool/gluster/gv0

#only on one
gluster volume create gv0 replica 3 xxx.xx.xxx.66:/var/spool/gluster/gv0 xxx.xx.xxx.67:/var/spool/gluster/gv0 xxx.xx.xxx.68:/var/spool/gluster/gv0 force
gluster volume start gv0
gluster volume info

В данной статье мы показали краткий обзор одного из методов обеспечения отказоустойчивости сайта, реализованная нашими специалистами, если у Вас есть желание обеспечить высокую доступность своим сайтам, обращайтесь [email protected]

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.