
Baldr
19.10.2017
11:35:41
как грамотно сделать высокодоступный кластер постгреса?
для репликации решил использовать встроенную в постгрес streaming replication, но что делать с автоматическим failover'oм? гугл показывает, что его делают с помощью pgpool, но есть и много критики такого подхода и советов использовать тулзы из linux ha (pacemaker + corosync).
что и почему выбрать?

Alex
19.10.2017
11:38:21
выбрать linux ha потому что все остальное- это прямой путь к «мультимастеру»

Mike Chuguniy
19.10.2017
11:38:53
@dmnord мастер будет ждать ответов от серверов, указанных в synchronous_standby_names, соответственно на слейвах поднимать эту переменную я бы не стал. Хоть вроде по докам каскадная синхронная репликация не поддерживается.

Дмитрий
19.10.2017
11:39:55

Google

Baldr
19.10.2017
11:41:01

Mike Chuguniy
19.10.2017
11:41:03
Отвечаю на вопрос "что делать с failover-ом?": после выбора технологии долго и упорно развлекаться на кошках. Технологии: лучше linux-ha под линух найти весьма проблематично.
@neemore не надо читать статьи. Особенно про pgpool.
надо читать документацию по продуктам.

Vadim
19.10.2017
11:42:11
а repmgr же поддерживает им нельзя autofailover ?

Mike Chuguniy
19.10.2017
11:42:13
Особенно внимательно раздел ограничений

Аггей
19.10.2017
11:42:39
Я выше по чату описывал одну из реализаций автофайловера

Mike Chuguniy
19.10.2017
11:43:46

Vadim
19.10.2017
11:43:48
haproxy-pgbouncer-repmgr , тут вроде есть все что нужно для стендбая, и для автофейловера,

Аггей
19.10.2017
11:43:59
https://wiki.postgresql.org/images/a/a3/PGConf_US_2016-QuanHa.pdf

Mike Chuguniy
19.10.2017
11:45:09
А серебряной пули как не было, так и нет. И не предвидится.
А каждая задача решается далеко не одним способом. Добро пожаловать в мир опен сурса.
:P

Аггей
19.10.2017
11:45:25
Ну я делал костыль как раз с haproxy... он стоит на сервере приложений, принимает соединения от приложух и проксирует соединения на мастер сервер.... мастера определяет по bgw-replstatus... логика свитчовера - автофайловера реализована repmgr (с witness нодой)... Но я бы очень не рекомендовал автофайловер делать... чтобы не попасть в "split brain"

Google

Аггей
19.10.2017
11:45:25
Когда сделаете автофайловер - проведите простой тест - отключите сеть на мастере и дождитесь переключения.... а потом верните сеть (будет как раз split-brain). Это можно обойти... но очередным костылем
Собственно vrrp (и все реализации типа keepalived, heartbeat и прочего) при правильной настройке и постоянном мониторинге предпочтительнее... но все же не панацея

Дмитрий
19.10.2017
11:46:14

Mike Chuguniy
19.10.2017
11:55:13
Нет. корректный recovery.conf должен быть на момент запуска ПГ.

Vadim
19.10.2017
12:01:19
а witness нода от splitbrain не спасает?

Sergey
19.10.2017
12:03:43

Аггей
19.10.2017
12:04:00
Не происходит переключение
То есть если сначала падает witness а потом мастер - просто ничего не происходит

Sergey
19.10.2017
12:07:17
Т.е. если мастер заизолировался и witness остался со slave'ом то slave promote'ится до мастера и получается изолированный сегмент со старым мастером и широкий сегмент с новым мастером?

Vadim
19.10.2017
12:08:30
не промоутится наверно, написали ж ничего не происходит
а нет, перепутал, это ж если витнес падает

Аггей
19.10.2017
12:19:05
И это проблема. Я писал костыль - в виде скрипта который гасит старый мастер когда он становится доступен

Alex
19.10.2017
12:53:44
изолировать надо хост целиком иначе при одностороннем сетевом взаимодействии возможны нюансы в видел «мультимастера»

Sergey
19.10.2017
12:55:48

Аггей
19.10.2017
12:56:30

Nick
19.10.2017
13:33:18
народ а в ПГ есть возможность притянуть табличку из другой удаленной базы по аналогии с никнеймами в db2?

Arthur
19.10.2017
13:34:37
есть, postgres_fdw называется

Nick
19.10.2017
13:35:21
спасибо

Игорь
19.10.2017
14:38:46

Google

Alex
19.10.2017
14:50:29

Игорь
19.10.2017
14:55:16
Изолированный мастер перейдет в read-only. Остальные выберут мастера, другой к ней присоединится

Alex
19.10.2017
15:02:16

Игорь
19.10.2017
15:03:57
Нет, не должно

Nikolay
19.10.2017
15:07:43
Нет, не должно
Отказоустойчивость обвязки над patroni - haproxy, pgbouncer и etc... как реализована?

Alex
19.10.2017
15:07:49
как две другие ноды понимают что ресурс на третьей будет точно недоступный при изменении состояния на слейве?
promote slave to master не должен осуществлятся до тех пор пока старый мастер точно не будет выключен из игры
изменяя свое состояние две оставшиеся ноды с большой долей вероятности приведут к «мультимастеру»

Игорь
19.10.2017
15:09:31
Координацию обеспечивает кворум из кластера etcd

Alex
19.10.2017
15:10:56
не изолируя третью ноду

Игорь
19.10.2017
15:11:05
непонял

Alex
19.10.2017
15:11:44
изменение состояния происходит без fencing третьей ноды?

Игорь
19.10.2017
15:12:13
С, но так как до нее не достучаться и нет замка мастера, то происходит выбор нового
А, fencing это ограничение (сори за мой инглишь)

Alex
19.10.2017
15:13:18
ее необходимо изолировать и после изменять состояние двух других
изоляция больше подходит
от слова изгородь
если fencing тоже не проходит то делать promote до мастера это путь к мультимастеру

Google

Alex
19.10.2017
15:15:46
при невозможности fencing состояние системы должно оставаться тем же

Игорь
19.10.2017
15:16:02
Смотри.
Есть кластер etcd - он обеспечивает согласованное состояние. Он находится во всех 3 ДЦ
Если один ДЦ вылетает, то нода etcd теряет кворум. К ней (так как другие уже недоступны) обращается Patroni, ничего с ней сделать не может и производит demote. Его замок мастера истекает по TTL и остальные живые ноды бд начинают голосование
Про изгородь это правильно, так как теоретически возможно ситуация, в очень короткий промежуток времени, что появятся два мастера. Но я еще не смог даже в голове представить. Практически при правильной организации (архитектуры) доступа до точки входа (она у нас на exaBGP), в мертвом ДЦ должно все сломаться, включая приложения, которые ходят в бд

Nikolay
19.10.2017
15:20:12

Игорь
19.10.2017
15:20:32
картинки - https://github.com/zalando/patroni/blob/master/docs/ha_loop_diagram.png

Alex
19.10.2017
15:22:39
у решения патрони есть fencing? если нет что вмнем есть в качестве замены?

Nikolay
19.10.2017
15:24:40

Игорь
19.10.2017
15:27:00

Nikolay
19.10.2017
15:29:44

Игорь
19.10.2017
15:31:31
Нет, единая точка входа, управляемая exaBGP. То есть это всего один IP адрес, который маршрутизируется в зависимости от сетевого нахождения клиента. Если один из хостов в любом ДЦ отваливается, маршрут перестраивается

Alex
19.10.2017
15:42:30
как быть уверенным что маршрут перестроился?
есть возможность понять что маршрут изменился и можно. енять состояние?
если есть то это есть одна из форм феесинга
если нет это надежда на лучшее

Gleb
19.10.2017
15:48:46

Alex
19.10.2017
15:51:41

Gleb
19.10.2017
15:52:30
ну как минимум тем что не работают с коросинком и пейсмейкером

Google

Gleb
19.10.2017
15:52:48
это вообще пушка
Corosync, Pacemaker, DRBD
инструкция по острелу себе всех конечностей

Alex
19.10.2017
15:53:52

Gleb
19.10.2017
15:53:57
а мне надо?

Alex
19.10.2017
15:54:06

Gleb
19.10.2017
15:54:31
когда развалится твой кластер игрушечный на всём этом отвечать будешь ты, я то причём? зачем мне тебе что то доказывать?

Игорь
19.10.2017
15:57:42

Alex
19.10.2017
16:06:14

Gleb
19.10.2017
16:06:42
еще раз спрашиваю?

Alex
19.10.2017
16:06:45

Игорь
19.10.2017
16:06:49
Это как раз по существу. Это технологии прошлого десятилетия

Alex
19.10.2017
16:06:54
спасибо за разъяснения

Gleb
19.10.2017
16:07:38
ну я тогда убираю свой длинный аргумент

Alex
19.10.2017
16:08:30
бездоказательность -это прекрасно, всегда можно соскочить от прямого обоснованного ответа

Gleb
19.10.2017
16:09:22
ты сейчас просто защищаешь решение которое, вероятно, взял в продакшен ты точно так же без доказательств и почему то предложил доказывать тебе

Alexander
19.10.2017
16:11:16

Alex
19.10.2017
16:12:09
я его не защищаю, где это было написано? я задавал конкретные вопросы как организовани фенсинг