
Alexander
27.08.2016
14:58:40
в идеале - если приложение вообще будет думать, что у него 1 база, как обычно, без изменений кода
то есть код на каждом сервере читается из своей базы (с локалхоста), а для записи используется какой-нибудь общий пул, в который входит все 3 сервера, через этот пул они согласуются друг с другом чтобы везде было одинаковое содержимое
ну и если сервер вырубается, а потом подрубается снова - те два других сервера ему говорят, какие транзакции надо накатить, чтобы актуализировать информацию

Konstantin
27.08.2016
15:01:45
Мутно как то

Google

Alexander
27.08.2016
15:02:07
ну, я хочу запустить PostgreSQL в облаке

Konstantin
27.08.2016
15:02:42
Ну мастер, три слейва и пгпул
И баунсер
5 нод

Alexander
27.08.2016
15:03:14
мне бы так, чтобы отказ любой ноды не привёл к фейлу
точнее, любых двух нод

Konstantin
27.08.2016
15:03:52
Ну вот

Alexander
27.08.2016
15:03:57
то есть пока жив хотя бы 1 сервер - чтобы всё работало как надо, а когда поднимутся другие два - чтобы всё само восстановилось

Konstantin
27.08.2016
15:04:11
Да

Alexander
27.08.2016
15:04:22
понял, спасибо

Konstantin
27.08.2016
15:04:25
Ну как само собой, почти так
А почему в облаке?

Alexander
27.08.2016
15:04:54
для удобства доставки приложения на серверы

Google

Alexander
27.08.2016
15:05:04
они все в контейнерах

Konstantin
27.08.2016
15:05:12
Ну как бы а какая разница
Ааа ненадо
Ставить постгрес в контейнер
Будет плохо

Alexander
27.08.2016
15:05:53
data volume не в контейнере
сама база хранится на диске

Konstantin
27.08.2016
15:06:10
Как хочешь

Alexander
27.08.2016
15:06:15
а PostgreSQL в контейнере

Konstantin
27.08.2016
15:06:23
Лучше 5 железа с ссд

Maxim
27.08.2016
15:06:24
отказ любых двух нод тут не прокатит
1 - мастер
2 - пул
3,4,5 - слейвы
теряем 1 и 2 и остаемся у разбитого корыта

Konstantin
27.08.2016
15:06:43
Ну не прокатит
Так он нигде не прокатит

Alexander
27.08.2016
15:07:12
[ /var/lib/postgresql/data , в общем, не в контейнере, в остальное в контейнере ]

Konstantin
27.08.2016
15:07:32
Ну сам смотри
?

Maxim
27.08.2016
15:07:52

Alexander
27.08.2016
15:07:58
мне бы хотелось, чтобы все ноды были одинаковые, в идеале
так проще поддерживать всё

Konstantin
27.08.2016
15:08:21
Люблю эту картинку, мужик на радж капура похож

Google

Maxim
27.08.2016
15:08:35
гггг

Konstantin
27.08.2016
15:09:12
Ты не увлекайся контейнерами :-)

Maxim
27.08.2016
15:09:28
да тут не в контейнерах дело

Alexander
27.08.2016
15:09:44
тут да, дело не в них

Konstantin
27.08.2016
15:09:48
Ну у каждого Адама своя программа :-)

Alexander
27.08.2016
15:10:26
короче, сейчас я обновляю сервер по ночам, потому что пока я обновляю пакеты той же СУБД, сайт перестаёт работать
а я хотел бы, чтобы а.) я мог обновлять в любое время б.) пока не сдохнет последний сервер, чтобы всё работало и автовосстанавливалось

Maxim
27.08.2016
15:11:03
ну так он на запись в любом случае перестанет работать, пока ты мастера обновляешь

Alexander
27.08.2016
15:11:23
вот плохо, да
в идеале - чтобы работало

Konstantin
27.08.2016
15:11:32
Разумное хотение

Alexander
27.08.2016
15:11:38
пусть будет крайне медленная запись, я согласен
есть же типа etcd
который хранит что-то там
почему он не может хранить лог операций на запись

Maxim
27.08.2016
15:12:20
почему не может?
может
просто надо пишущее приложение этому научить

Pavel
27.08.2016
15:12:38
как бд станет доступно - начнет снова писать

Google

Pavel
27.08.2016
15:12:50
при этом ничего не пропадет

Maxim
27.08.2016
15:12:56
типа: недостучался до постгреса - стучи в мускуль
нету мускуля - поставь себе скулайт
:D

Pavel
27.08.2016
15:13:20

Anton
27.08.2016
15:13:31
amqp гораздо более лучше подойдет для этой цели, кмк

Alexander
27.08.2016
15:13:37
во, message queue , да, которая клонирована на всех серверах, и пока есть хотя бы 1 живой сервер - она всё помнит

Pavel
27.08.2016
15:13:56

Alexander
27.08.2016
15:14:19
тут вопрос в чём - я хочу чтобы это было как-то прозрачно для приложения
такое возможно?
то есть типа прокси перед базой

Pavel
27.08.2016
15:14:36
без изменения самого приложения? не думаю

Alexander
27.08.2016
15:15:09
да, чтобы эта прокси все операции добавления/удаления/редактирования писала в message queue, а операции чтения - просто select с локального сервера
я вот так бы хотел

Anton
27.08.2016
15:16:41
так в чем проблема? появляются два микроприложения - одно принятые из веба данные складывает в очередь
второе из очереди перекладывает в базу
чтение остается как было
во втором микроприложении можно реализовать выбор мастера, настройку репликации и прочие операции с кластером

Alexander
27.08.2016
15:17:46
ну, я просто подумал, что уже есть что-то такое готовое

Alexey
27.08.2016
15:18:16
В мускуле просто мастер-мастер есть из коробки)

Alexander
27.08.2016
15:18:37
в мускуле фуллджоинов и прочих таких вещей зато нет
я не оч люблю mysql)

Google

Anton
27.08.2016
15:19:08
в постгри тоже мастер-мастер обещают =)

Mike Chuguniy
27.08.2016
15:20:36

Konstantin
27.08.2016
15:23:55
Ладно, хороших выходных мужики :-)

Maxim
27.08.2016
15:24:40
?

Alexander
27.08.2016
15:38:44
у меня ещё 1 вопросик есть - а что если запустить PostgreSQL на Ceph - то есть у нас есть сетевая файловая система , которая состоит из различных SSD дисков с разных серверов, и 1 из серверов запускает PostgreSQL в контейнере, в качестве data volume с базами используется этот Ceph... если вдруг нужно сделать апгрейд и мы выключаем контейнер - облако запускает другой такой же на другом сервере, монтируя туда тот же data volume...
вот такой вариант при условии наличия сети 10Гбит/с и выше между серверами нормальный?
плюс тут в том, что вроде как не придётся трогать код приложения

Maxim
27.08.2016
15:40:07
без простоя все-равно не выйдет - приложеньки-то базу потеряют
(ну только если это не php-скрипт, который каждый раз новый коннекшн создает)

Alexander
27.08.2016
15:41:36
у меня Django/Python (ну, по идее там можно Exception'ы ловить и пробовать переподключиться)

Fike
27.08.2016
15:43:25

Maxim
27.08.2016
15:43:44
греффневой

Fike
27.08.2016
15:44:12

Alexander
27.08.2016
15:45:36

Александр
27.08.2016
15:49:14

Maxim
27.08.2016
15:49:38
язвенник

Anton
27.08.2016
15:56:30

Pavel
27.08.2016
18:55:07

Sergey
27.08.2016
19:14:41