Skip to content

takyoni/pg_cluster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Программа-агент, которая создаёт отказоустойчивый кластер PostgreSQL

Программа-агент запущена на каждом из хостов. Программа-агент в случае потери сетевой связности мастера делает promote локальной СУБД до мастера.

Для того чтобы проверить, что сетевая связность потеряна у M, а не у S, используется координирование с арбитром.

Promote не происходит, если у S нет связи ни с M, ни с А.

Promote происходит если у S нет связи с M и А подтверждает отсутствие связи с М.

Архитектура

За основу взят контейнер postgres:9.6, в который добавляется собранный агент, написанный на golang.

Кластер создается через bash скрипты при инициализации контейнера, агент осуществляет все остальное.

Конфигурация осуществляется через файл app.env.

Агент проверят работоспособность всех составляющих кластера, если проверка завершилась успешно, происходит запуск.

Раз в секунду агент проверяет доступность соотвестсвующих узлов. Логика работа при обнаружении проблем с доступностью аналогична тексту задания.

Блокировка master происходит через iptables (iptables -P INPUT DROP) с дальнейшим сохранением через iptables-save > /etc/iptables/rules.v4.

Повышение до master происходит посредством триггер файла /tmp/touch_me_to_promote_to_me_master.

Запуск

docker compose up

Тестирование

// Тестирование master 
pgbench.exe -h 127.0.0.1 -p 5432 -U postgres -i -s 150 benchmark
// Останавливаем master
docker compose stop pg-master
// Проверяем работу slave (повышенного до master)
pgbench.exe -h 127.0.0.1 -p 5433 -U postgres -i -s 150 benchmark

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published