Страница 1 из 3
Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-21 11:48:23
BI_J
Приветствую Вас уважаемые жители форума
Стоит следующая задача:
Организовать отказоустойчивый сервер БД.
Усть 2 сервера, ОС Linux СentOS. БД Postgresql. Я так понимаю что нужно настроить кластер между этими СО.
То есть, если один сервер (нод) выходит из строя, то вся нагрузка ложиться на оставшийся рабочий сервер (нод).
О "кластере" пока знаю очень мало. Не понимаю как процесс может мигрировать с одного сервера на другой, как и где данные будут храниться если один сервер вообще потухнет. И по какому IP клиенты буду обращаться к серверу, я так понимаю должен быть IP на эти два сервера, что бы клиент вообще не замечал поломки.
Может уже есть отработанные решения?
А вообще буду благодарен за любую помощь или грамотную инфо.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-21 13:49:03
hizel
я знаю только slony
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-21 14:02:35
BI_J
Насколько я знаю slony это решение репликации для Postgresql
А не кластер для Linux.
Или я ошибаюсь ??
Я вот еще что подумал.
Может есть способ обьединения двух физических серверов в один логический (как к примеру Raid-1 обьединяет винты) .
Что бы потом можно было обращаться к нему как одному, ставить софт и т.д.
И при выходе из стоя одного, другой на стреме, как не в чём не бывало.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-24 13:05:43
Andy
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-25 22:46:39
koffu
Варианта 3:
1й: Организовать встренными средствами периодические репликации баз между серверами (не знаю какой использовать софт, подсказать не могу);
2й: HeartBeat + DRBD - В случае падения основной ноды, её роль через несколько сек подхватит вторая (IP alias перейдет на другой комп, запустится сервис БД, DRBD перейдет в Primary Mode, отправится отчет на мыло и что еще сконфигурируешь);
3й: Виртуализация XEN + Heartbeat + DRBD - две и более ноды, все как и во втором, только БД будет выполняться в виртуальной среде и при переходе (живой миграции) на другую ноду(в случае какой-то команды или запланированного обслуживания, а не выхода из строя hw или его зависания) не произойдет разрыва конектов, никто даже не заметит перехода. Для облегчения задачи можно заюзать Ganeti, она сама будет следить за работой кластера и его гостей;
Я организовывал обе схемы на Debian и Ubuntu, работает успешно и сейчас. Для CentOS все будет точно-так-же.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-25 23:56:22
BI_J
koffu спасибо огромное за информацию
На сколько я знаю встроенных средств репликации в
Postgresql нет, для этого есть решение
Sloni
Про
DRBD уже немного почитал. Там все на англ. много времени уйдет
А вот такое
HeartBeat,
Ganeti и
XEN ???
Серверов будет только два (две ноды)
Может есть у вас документация на русском ??
Подскажите с чего начать ??
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-26 0:21:03
koffu
Heartbeat - продукт проекта Linux-HA, позволяющий реализовать механизм безотказной работы отдельных частей кластера
XEN - система виртуализации (подобно Vmware,VirtualBox) по функционалу на одном уровне с Vmware ESX, недостаток (для меня не существенный) админить с консоли, хотя мне больше нравится, чем пимпочки ставить и тыкать кнопку Next. Из всех протестированных XEN самый удобный и быстрый в работе по сравнению с аналогами Linux-Vserver, OpenVZ, Vmware(платный).
Очень хороший ресурс, много статей на русском под Debian Linux
http://xgu.ru
офсайт Linux-HA
пару статеек на эту тему :
http://sozinov.blogspot.com/2007/06/1-heartbeat.html
http://www.opennet.ru/docs/RUS/ha_cluster/
там довольно подробно расписано все и в гугле много информации.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-26 0:48:18
BI_J
koffu Еще раз спасибо
буду пробовать
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-26 1:01:04
koffu
Если где-то возникнут тупиковые ситуации могу поделиться рабочими конфигами для сервисов. На авторство и пьедестал не претендую, у меня это работает так как мне нужно!

В большинстве вопросов гуглъ, man, /usr/share/doc в помощь!
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-11-30 16:48:38
BI_J
День добрый уважаемый
koffu
У меня снова вопросы

Не совсем понимаю зачем компилировать ядро Linux, тем более что доке сказано что нужно его сконфигурировать так же как исходной ядро системы, в чем же смысл компиляции ??
Если можно, объясните еще в чем выгода виртуализации
postgresql на
XEN
VMware я пользуюсь только для тестов, а вот в чем практическая ценность на боевых серверах не совсем понимаю.
Если можете поделиться своими конфигами, буду очень признателен.
Спасибо
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 1:26:38
koffu
*
Код: Выделить всё
Не совсем понимаю зачем компилировать ядро Linux, тем более что доке сказано что нужно его сконфигурировать так же как исходной ядро системы, в чем же смысл компиляции ??
Пересобирать ядро на большинстве дистрибутивов не нужно. Поддержка XEN например, на сегодняшний день имеется практически во всех дистрибутивах, нужно только установить готовое ядро с его поддержкой. Если убунту или дебиан, то это пакет linux-image-2.6.18-6-686-xen (debain etch), если CentOS( для 4.7) - kernel-xenU-2.6.9-78.EL.i686.rpm
Не совсем я понял для чего компилировать и под что настраивать как исходное? Какой дистрибутив будет использоваться? (так будет проще для понимания).
Если можно, объясните еще в чем выгода виртуализации postgresql на XEN
Я об этом описывал в самом начале, основные вкусности - живая миграция(без разрыва соединений, переезд и независимость от железа физ серверов), управление ресурсами(лимиты памяти, CPU, io), возможность создания снэпшотов в важные моменты, возможность управлять серверами с "физ" консоли(по ssh удаленно можно установить новый сервер, настроить его, пока невозможно зайти на него по-сети), в основном для этого. Основное отличие от конкурентов - это скорость, особенно если речь идет об гостевых доменах Windows, и возможность полностью автоматизировать работу по поддержке ресурсов, т.е. миграцию и т.п.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 2:34:40
BI_J
Доброго времени суток
koffu
С системой вроде как определились,
CentOS-5.1 (RedHat совместимый)
Вроде как и с железом определились:
1. Два одинаковых сервера сервера (Xeon 2.5)
2. Внешний дисковый масив
База
Postgresql должна лежать на внешнем хранилище, следовательно вопрос синхронизации должен отпасть.
Получается так, я ставлю на обе машины
CentOS-5.1, настраивая на них
XEN, потом на
XEN инсталлирую гостевой домен
linux CentOS-5.1 и уже на гостевой
linux CentOS-5.1 настраиваю
Postgresql.
Это физической железяке нужно кормить две системы, реальную и виртуальную. Правильно я размышляю ???
Вот тут сказано:
http://xgu.ru/wiki/Xen/hardware
что
XEN поддерживает аппаратную виртуализацию. Я так понимаю это
XEN ставиться прямо на железо и сам является родительской ОС. Может и мои сервера такое умеют......
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 11:28:12
koffu
В списке флагов должна быть поддержка vmx, хотя Linux dom0-> Linux domU будет работать и без VMX (у меня, ради эксперимента, XEN работал на стареньком P4 1.8, ни о каком VMX там не может быть и речи!!! Реально он нужен для запуска Windows/FreeBSD и других НЕ МОДИФИЦИРОВАННЫХ систем внутри XEN.). С ходом настройки все правильно. Если синхронизации нет, то можно сторэдж подключить по NFS.
%# cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl
vmx smx est tm2 ssse3 cx16 xtpr lahf_lm
Для облегчения администрирования XEN вручную можно поднять терминальный сервер с xfce4 или каким-нибудь icewm и поставить xenman. У него графическая консолька примерно напоминает VmWare. Для создания новых виртуальных машин, я юзаю "xen-tools" - Tools to manage debian XEN virtual servers. Раз в конфиге пишешь настройки, потом в коммандной строке можно их переопределить. А для автоматического управления кластером можно использовать ganeti.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 15:05:10
BI_J
Все хорошо, но что делать не понятно
Пробовал ставить CentOS 5.1, в пакетах есть раздел "Виртуализация", "Кластеры" и "Кластерное храгилище"
так вот, в разделе "Кластерное храгилище" , среди прочего есть следующее:
kmod-gfs-xen, kmod-gnbd-xen
значит ли это что
xen уже установлен и поддерживается ядром?? (установил все что связано с кластером)

Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 15:27:14
koffu
Я на CentOS не делал, точно и пошагово могу рассказать как делать в ubuntu, debian, там вообще все просто несколько коммманд и все готово.
Посмотри
тут для CentOS и
тут для Ubuntu,Debian, думаю поможет статья.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-02 20:44:03
BI_J
ну теперь кое что получается
xen поставилсяи даже запускается, вот только система ставиться не хочет
есть парочку вопроссов:
1. как вы настраиваете "реальную" ОС?? Минимальный набор ?? или она тоже обрабатывает пользователей (DNS или еще может что) ?? или лучше минимальный набор поставить на гостевую ОС?? Как грамотнее экономить ресурс железа??
2. при создании виртуальной машины, куда лучше сохранять, на файловую систему или в *.img файл ???
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-03 13:25:30
koffu
Ноды лучше всего настраивать с минимальным кол-вом софта, он там попросту не нужен, максимум у меня введена в домен и авторизует по ssh через pam_winbind, а раз уже samba стоит, то и расшары для iso и всякой байды. Если есть нужда в DNS, Proxy сервере, можно его настроить тоже гостевым в XEN. Файловые системы лучше всего складывать в LVM, её легко можно будет переносить, делать снэпшоты, resize. А вот ресурсы лучше всего будет сразу прописать и ограничить, т.к. при высокой нагрузке это вылезет боком.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-03 15:24:43
BI_J
А можно конкретные примеры:
как это реализовано у вас?
1.
Файловые системы лучше всего складывать в LVM ??
2.
А вот ресурсы лучше всего будет сразу прописать и ограничить
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-05 12:30:40
BI_J
Попробовал поставить
XenServer, вроде как получилось, ось установилась.
Но что-то не нравиться мне это решение, слишком сложное

Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-05 12:54:04
koffu
с LVM все просто, если использовать xen-tools, там в конфиге указываешь использовать LVM и его название, а потом просто заменить пути, напр /home/xen/test_server/root_image.img на /dev/mapper/xen-testserver-root. На xgu.ru есть как установить: вес - xm weight, лимит CPU - xm sched-credit, лимиты на ввод-вывод. А вообще самое лучшее решение не "черный ящик" от "супер аццкого производителя", а то, что сам собрал своими руками.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-06 11:07:45
paix
BI_J я бы рекомендовал для начала просто сделать HA кластер, без xen. Чтобы разобраться что к чему.
drbd + heartbeat то что нужно, но в твоем случае с учетом общего дискового массива, drbd не нужен.
Поэтому просто настрой базовую систему на обоих нодах, дальше поставь туда херберт.
(кстати неплохо бы обновить centos, уже давно 5.2 версия есть)
Итого у тебя будет в один момент времени активна только одна нода (и будет иметь виртуальный айпи), в случае выхода ее из строя, херберт на резервной машине перетянет этот виртуальный айпишник себе и запустит там постгрес. Поскольку хранилище одно, файлы синхронизированы.
Как настроиш это, можно и xen попробовать

Только если не знаеш зачем он тебе нужен, и нужен ли вообще - не настраивай.
Чем проще - тем лучше.
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-08 19:01:44
BI_J
paix Спасибо большое
Я как раз сам пришёл к этому решению
Версию линукса уже обновил.
Настроил версию
heartbeat-2.1.4. Правда на сайте есть уже 3.х но пока не пробовал, времени не хватает
Почти все, но мне не понятны еще некоторые моменты. Могли бы Вы подсказать ?
Мне не пока еще не понятно как как работает устройство
STONITHв системе их установилось много, а какое нужно именно мне не ясно.
Код: Выделить всё
/usr/sbin/stonith -L
apcmaster
apcmastersnmp
apcsmart
baytech
cyclades
drac3
external/hmchttp
external/ibmrsa
external/ibmrsa-telnet
external/ipmi
external/rackpdu
external/riloe
external/ssh
external/vmware
external/xen0
external/xen0-ha
ibmhmc
meatware
null
nw_rpc100s
rcd_serial
rps10
ssh
suicide
wti_nps
И еще один нюанс.
heartbeat следит за тем, есть ли "нода" с сети (пинг по указанным интерфейсам), я пробовал делать "ресет" машине, сеть выдергивал, работает.....
но когда падает конкретный процесс :
ничего не происходит, и это мне не очень нравиться
Может там еще что то можно сделать ??
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-09 11:18:15
koffu
Для того, чтобы следить за процессами попробуй daemontools или ему подобный. Можно, как вариант, поставить Nagios, настроить плагин, чтобы делал запрос в базу, измерял время ответа, доступность и если что-то падает пытался через event_handler перезапустить сервис, но это... по воробью из пушки, разве только если nagios уже где-то работает. Хотя тоже есть плюсы - будет вся статистика падений, перезапусков и миграции и прочих параметров + уведомление по SMS/e-mail, что бывает очень нужно для отчетности перед начальством в случае непредвиденных обстоятельств.

Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-09 14:09:50
paix
Имхо следут отличать мух от котлет
резервная нода тебе нужна на случай если не работает основная
Если постгрес упадет (например, закончилось место, то тебе мало чем поможет резервная нода)
А также представь что ты просто рестартил постгрес а в это время херберт подумал что он сдох и попытался перетянуть управления на себя?
Вообщем
поставь монит, настройка простая есть в статьях на этом сайте.
Код: Выделить всё
monit.i386 : Process monitor and restart utility
Нагиос это отдельная тема (к рестарту процессов имхо не относящаяся) но весьма полезная в будущем )
На счет стониша не знаю. Не припомню чтобы вообще чтото в этом духе настраивал когда делал связку heartbeat + drbd
Re: Linux + Postgres. Или просто Кластер
Добавлено: 2008-12-13 15:00:42
BI_J
День добрый
paix
Столкнулся с проблемой на боевых серверах (на виртуальных вроде как работало)
/etc/ha.d/haresources
Код: Выделить всё
rvnascue01.aes-ua.com 10.248.200.44 \
Filesystem::/dev/sdb3::/data/::ext3 \
postgres-8.3
При
/etc/init.d/heartbeat start первые две шары подымаются, а вот
postgres в упор не видит
При
/etc/init.d/heartbeat stop он его резко начинает видеть, и пытается остановить. Но поскольку он не запущен, в логах циклическая ругать и сервак перегружается (как после ресет)
И еще при
reboot первичного сервака он не может завершить процесс
heartbeat так висит на этом
Что с этим делать ?