Установка кластера Postgres на базе Patroni. #2
Вставка
- Опубліковано 2 жов 2024
- Файлы из видео: github.com/big...
Предыдущее видео "Что такое кластер Postgres, как он работает и для чего нужен Patroni.": • Что такое кластер Post...
Установка postgres оф.руководство: www.postgresql...
Установка patroni оф.руководство: patroni.readth...
Восстановление кластера Postgres на базе Patroni из полного бэкапа утилиты pg_basebackup: • Восстановление кластер... - Наука та технологія
100% лайк, подписка, колокол, ты просто красапет что делаешь такое!!! спасибо))
Спасибо автору! Очень помогло в работе! Consul + PostgreSQL 12 + patroni[consul] + HAProxy
pip3 install psycopg2
apt install -y build-essential libssl-dev libffi-dev python3-dev libjpeg-dev libjpeg8-dev
pip3 install python-etcd
Если не указывать версию psycopg, то ставится третья.
Благодарю автора видео, т.к. указанные нюансы помогли мне в сборке своего кластер patroni в связке с pgbouncer+haproxy+keepalived. Видео установки и тестов выложил на своем канале.
И Вам большое спасибо, что поделились видео!
Здравствуйте, а юзеров нужно заранее в postgress создать ?
👍Многие ограничиваются helloworldами, у вас более приближено к реалиям
Да, это основная проблема. Все показывают как быстро развернуть синтетическую установку. А как это использовать в реальной жизни, мало кто показывает. И уж темболее не стремится что бы дать понимание происходящего. Я пытаюсь делать эти ролики с позиции "А как бы я хотел увидеть эту информацию".
Здравствуйте! Подскажите: у вас есть опыт использования pgbackrest? Не могу понять как настроить две реплики: одна - асинхронная, вторая - синхронная. Используется выделенный репозиторий.
Это утилита создания бинарных бэкапов и бэкапов журналов. Причем здесь синхронная и асинхронная реплика? Вы помоему идете не в том направлении. Про нее очень много говорят и всячески пиарят. Но на тестах у меня с ней возникли проблемы. Если в результате создания полного бэкапа не долетает wal-изменений, то она не способна восстановить просто полный бэкап с потерей изменений в журнале. По крайней мере без танцев с бубном.
Подскажите! Правильно понимаю, что ОС linux использовать?
кстати зря с бонсером настройку не сделал, было бы интересно глянуть:)
Ну на сомом деле я ответил на этот вопрос ниже в комментариях. ) Давайте повторюсь, настройка с pgbauncer-ом есть в конфигурационных файлах. и Там все очень просто. Процитирую свой комментарий "Посмотрите здесь конфигурационный файл bitbucket.org/big-town/ha-cluster/src/master/pg_cluster/ha-proxy/ceph_pp_haproxy_1/haproxy.cfg.pool я думаю все станет понятно. В двух словах pgbouncer ставится за ha-proxy, в примере он установлен на каждой ноде postgres. Только помните, что pgbouncer эффективен когда у вас много клиентов работает коннект/дисконнект, если у вас бэкенд работает по персистентным соединениям, то от pgbouncer-а не будет ни какого толку."
@@bigtown2012 да да, это я услышал, посмотрю в репе, в любом случае большое спасибо, потому что дока по патрони просто ужасна)))
Спасибо, интересно!
Но HA Proxy дает доступ на все сервера patroni, а на реплики нельзя выполнить запись в базу, соответственно как прокси понимает куда направлять пакеты?
где вы развернули 6 виртуалок и как вы прописывайте команду одновременно на 3 тачки? я тоже хочу найти такой удобный инструмент)
зддраствуйте! Было бы интересно посмотреть каким образом в эту схему включить pgbouncer. Непонятно, где в вашей схеме могло бы быть его место
Посмотрите здесь конфигурационный файл bitbucket.org/big-town/ha-cluster/src/master/pg_cluster/ha-proxy/ceph_pp_haproxy_1/haproxy.cfg.pool я думаю все станет понятно. В двух словах pgbouncer ставится за ha-proxy, в примере он установлен на каждой ноде postgres. Только помните, что pgbouncer эффективен когда у вас много клиентов работает коннект/дисконнект, если у вас бэкенд работает по персистентным соединениям, то от pgbouncer-а не будет ни какого толку.
@@bigtown2012 Большое Вам спасибо! Это то что надо!!!Нет у меня именно коннект\дисконнект , обработка очередей сообщений Кафка, и, где-то идет утечка коннектов, как результат очень быстро забивается весь пулл коннектов постгри. Пока разработчик ищет утечку(не факт что найдет) как-то надо работать...
При запуске патрони получаю : Can not find suitable configuration of distributed configuration store. И... вы не упомянули про установку модуля psycopg
Ну то что линукс нужно поставить я тоже не говорил если что. ) Вопрос в Золандо почему пакеты которые требуется для работы не упомянут в зависимостях. По всей видимости у вас, либо не собрался кластер etcd, либо неверно указаны IP-адреса нод. Проверьте etcdctl cluster-health
Здравствуйте, подскажите пожалуйста как создать VIP АДРЕС в кластере postgresql в этой конфигурации как в видео? в каком конфиг файле его прописывать ETCD или patroni?
отвечу самому себе:
*******более простой способ
устанавливаем keepalived на все ноды
редактируем конфиг файл
теперь у кластера есть единая точка входа(адресс) которая в зависимости от ситуации всегда будет виртуально прикреплена с мастером
Привет всем, как мне связаться с создателем видео, я имею в виду админ
По команде systemctl edit --full --force patroni.service где и под каким именем сохраняется файл?
/etc/systemd/system/patroni.service
А можно расположить etcd, patroni и postgresql на одной машине? Чтобы уменьшить количество виртуалок с 6 до 3?
Конечно можно. Единственное требование к etcd что бы они располагались на разных ВМ(нодах).
вообще - это неправильно по нескольким моментам. 1. 3 сервера etcd (а иногда и 5) используется для кворума, для правильного и наиболее устойчивого к ошибкам метода определения, что одна из нод postgres отвалилась. Если у вас вместе с postgres отваливается и etcd - это не гуд совершенно. 2. etcd пишет ключи-значения на диск. Это такая конвенция. Если у вас postgres в моменте будет сильно нагружен - не факт, что сервер etcd отработает так, как нужно и с минимальными задержками. Итого: так делать можно, но на проде нужно использовать отдельные серваки для etcd. Можно брать самые слабые, но на них ничего другого быть не должно, кроме etcd ну и может быть в редких случая самых легковесных приложений.
Добрый день! Не совсем поняла, а за что именно отвечают 2379 и 2780 порты в etcd?
2379 клиентский порт, для связи извне, 2380 общение etcd нод между собой
2379 за клиентские подключения, 2380 за соединениями между пирами(экземплярами etcd)
У вас на схеме нарисовано, что клиенты через HAProxy подключаются к postgres через 5432 и вы в видео об этом говорите, а чуть позже говорите, что клиенты общаются с postgres только через patroni. Как всё-таки правильно?
На схеме нарисовано что клиенты подключаются на порт 15432 на ha-proxy. (sql clients 10.103.10.200:15432) Клиенты sql с патрони не общаются ни как! Они даже не знают о его существовании.
@@bigtown2012 я немного не правильно сформулировал. Haproxy должен же общаться с patroni? А patroni уже с postgres, верно? А то у вас стрелки синие от Haproxy к postgres непосредственно, минуя patroni.
@@harthurd Патрони это "мозг" который по факту решает кто будет мастером, а кто слейвом. В передаче данных он не участвует. Хапрокси взаимодействует с патрони, только для того что бы знать кто является мастером, а кто слейвом.
@@bigtown2012 Теперь понятней стало, спасибо за разъяснения
@@bigtown2012 А подскажите ещё, пожалуйста, как haproxy знает на какую ноду отправлять запрос на чтение, а на какую на запись?
> Если вы смотрите это видео то вы знаете как это делать
НЕТ, ты не поверишь но люди смотрят видео как раз тогда, когда не знают как что-то сделать
Мои видео предполагают наличие базовых навыков в системном администрировании. В данном случае имелось ввиду установка пакетов из внешних репозиториев. Именно это понималось под фразой "Если вы смотрите это видео то вы знаете как это делать".