База данных PG реализует решения высокой доступности (включая решение общего назначения Corosync+Pacemaker Collaboration)

Серия статей
Keepalived Learning Record: используйте gdb для отслеживания
принципа координации и сотрудничества Keepalived и HaProxy для его процесса дрейфа VIP, анализируйте
инструменты Oracle для достижения высокой доступности (балансировка нагрузки/отказоустойчивость)
и внедрение Dameng для достижения высокой доступности ( функция аварийного переключения/балансировка нагрузки/прозрачное переключение виртуальных IP-адресов)
База данных PG для достижения решений высокой доступности (включая решения общего назначения для совместной работы Corosync+pacemaker)

Сначала разберитесь с кластером высокой доступности

Существует три типа традиционных кластеров Linux.Один
из них — LB-кластеры.Основной функцией кластера этого типа является балансировка нагрузки трафика пользователей, чтобы каждый сервер на заднем конце мог обрабатывать некоторые запросы сбалансированным образом. кластера Одна особенность в том, что front-end планировщик обычно одна точка, а back-end серверов много.Даже если какой-то back-end сервер зависнет, это не повлияет на запрос пользователя, вторая это HA кластер.Так называемый кластер
HA — это кластер высокой доступности.Основная функция кластера класса — обеспечение высокой доступности для одной точки в кластере.Так называемая высокая доступность означает, что при возникновении сбоя могут быть переданы вовремя, так что время устранения сбоя сведено к минимуму; каждый простаивающий узел будет продолжать смотреть на рабочий узел, и рабочий узел также будет отправлять свою собственную информацию о пульсе другим простаивающим узлам на основе многоадресной или широковещательной рассылки. информация о сердцебиении рабочего узла не получена простаивающим узлом в течение определенного периода времени, тогда в это время будет запущено вытеснение ресурсов.Первый захвативший ресурс становится новым рабочим узлом, а другие узлы будут продолжать смотреть на него. новый рабочий узел до тех пор, пока он не повесит трубку, а затем снова активирует вытеснение ресурсов; характеристика этого типа кластера: узел работает, а другие узлы наблюдают за его работой. работы; последний — кластер HP . Кластер HP в основном используется в сложных вычислительных сценариях. Он используется в среде с относительно высокими требованиями к сложным вычислениям; существует множество кластеров LB и HA, которые распространены в производственных средах.

Высокая доступность: прозрачное переключение, аварийное переключение, диспетчер соединений/диспетчер кластеров

менеджер подключения/менеджер кластера

pgpool-Ⅱ: пул соединений, репликация, функции балансировки нагрузки

Между сервером базы данных и клиентом (промежуточное ПО)

Пул соединений: pgpool предоставляет функцию пула соединений, которая снижает накладные расходы на установление соединения и одновременно увеличивает пропускную способность системы.

Балансировка нагрузки. Балансировка нагрузки подходит для сценариев только для чтения.
Когда база данных работает в режиме репликации или в активном/резервном режиме, любой узел в кластере может возвращать согласованные результаты при выполнении оператора SELECT, а pgpool может распространять операторы запросов в каждую базу данных в кластере, тем самым повышая пропускную способность системы. .

Высокая доступность: когда основная база данных в кластере недоступна, pgpool может обнаружить и активировать резервную базу данных для обеспечения аварийного переключения.

Ограничьте соединения, которые превышают лимит: PostgreSQL поддерживает ограничение текущего максимального количества соединений и отклонение новых соединений. pgpool-II также поддерживает ограничение максимального количества соединений и помещает соединения, которые превышают лимит, в очередь вместо немедленного возврата ошибки.

Когда клиент подключается к pgpool-II, это точно так же, как при подключении к базе данных. Репликация pgpool-II является синхронной, то есть, если клиент отправляет оператор DML, он будет выполняться одновременно во всех внутренних базах данных, чтобы обеспечить согласованность всех баз данных.

вставьте сюда описание изображения
pgpool-II включает функцию проверки работоспособности базы данных pg. Вся архитектура относится к многопроцессорной архитектуре.
вставьте сюда описание изображения
Процесс pcp: pcp — это инструмент управления, который отправляет команды управления в pgpool-Ⅱ.Родительский процесс pgpool-Ⅱ: отвечает за
проверку состояния работоспособности каждой базовой базы данных.
в соответствии с правиламиОтправляется в базовую базу данных для достижения
рабочего процесса балансировки нагрузки: отвечает за проверку задержки репликации между базовыми базами данных.

Существует несколько режимов работы pgpool-II.

  1. Сырой режим: только фичи фалиобера. Отработка отказа для нескольких серверных баз данных. Функция синхронизации базы данных в настоящее время является обязанностью пользователя.
  2. Режим пула соединений: реализовать функцию пула соединений и функцию аварийного переключения исходного режима.
  3. Встроенный режим репликации: в этом режиме pgpool отвечает за синхронизацию данных внутренней базы данных.Операция записи на узле pgpool должна дождаться, пока все внутренние базы данных запишут данные, прежде чем вернуть клиенту успех. , Это надежный метод синхронной репликации, реализующий функцию балансировки нагрузки.
  4. Активный/резервный режим: уровень промежуточного программного обеспечения использует pgpool-II, который обеспечивает высокую доступность и функции пула соединений.
    Активный/резервный режим с потоковой репликацией: используется потоковая репликация PostgreSQL, а потоковая репликация PostgreSQL отвечает за синхронизацию данных с серверной базой данных pgpool.Соответствующий файл конфигурации $prefix/etc/pgpool.conf.sample-stream.Этот режим поддерживает балансировку нагрузки. . Репликация Pgpool+pg для достижения решения высокой доступности
  5. Параллельный режим: разрешает параллельное выполнение запросов. Параллельный режим нельзя использовать одновременно с активным/резервным режимом.

Для мидлвара pgpool необходимо учитывать влияние на подключение клиента к БД после его обрыва.Можно ввести несколько pgpools и переключаться на основе vip. вставьте сюда описание изображения
Упомянутое выше решение является традиционным, и при разделении чтения и записи производительность снижается на 30%.

Работодатели

При переключении на основе vip, vip master переключается на vip slave, а имя домена кэшируется клиентом, и переключение не может вступить в силу немедленно.
Общая архитектура выглядит следующим образом: вставьте сюда описание изображения
на основе архитектуры keepalived+haproxy, упомянутой в предыдущем блоге, она может решить проблему межсетевого сегмента и кэширования доменных имен в текущей архитектуре. Добавьте еще один слой.
вставьте сюда описание изображения


Внедрить консульский регистрационный центр для развертывания функций патрони-агента патрони на каждой машине :

  • Каждый патрони будет управлять информацией pg, чтобы подтягивать кластер и регистрировать его в консуле. (Играет роль управления кластером)
  • Patroni и pg связаны с сильными зависимостями.Они принадлежат одному серверу, и информация настроена на pg.Когда два сервиса выходят из строя вместе, они выходят из строя вместе.
  • Patroni поддерживает соединение с консулом через сердцебиение для обнаружения ошибок после отключения (связь между узлами).
  • Лидер будет переизбран по истечении таймера.Если вы уже являетесь лидером, вы всегда будете в сети и в следующий раз, когда вы выберете лидера, у вас будет приоритет

Процесс переключения ведущий-ведомый: (часть управления кластером)
Когда патрони определяет, что библиотека, к которой он подключен, неисправна, он останавливает процесс pg с помощью команды kill, чтобы избежать разделения мозгов.

Если его нельзя убить, перезапустите напрямую через linux и watchdog, убейте мастера (здесь я не понимаю),
а затем проверьте информацию, чтобы увидеть: убить мастера здесь, чтобы избежать ситуаций с разделенным мозгом. На трех машинах ABC происходит сетевой раздел, a зависает (может быть, это просто сбой сети), bc в данный момент думает, что a не работает, и перехватит vip, а a думает, что он не отключен, и будет сражаться взад и вперед, что приведет к кластеру нестабильности. Таким образом, когда bc проголосует за то, что a мертв, они убьют a, даже если a жив, чтобы избежать разделения мозга.
Выберите подчиненную библиотеку с самым быстрым воспроизведением и сравните координаты lsn, самая большая будет новой главной библиотекой.

Corosync+Pacemaker Решение высокой доступности

Коросинк

Функцией реализации передачи информации о пульсе HA является Corosync.
Когда Coreosync передает информацию, он может определить режим и протокол передачи информации через простой конфигурационный файл.

кардиостимулятор

кардиостимулятор — это высокодоступный менеджер ресурсов (CRM) с открытым исходным кодом, который находится на уровне управления ресурсами и агента ресурсов (RA) в архитектуре кластера высокой доступности. , вам нужно полагаться на базовую службу доставки Heartbeat.

Сотрудничество по архитектуре corosync+pacemaker

вставьте сюда описание изображения

Основная функция corosync – обеспечить уровень обмена сообщениями. Основная функция этого уровня обмена сообщениями – передача ряда сведений, таких как информация о состоянии и информация о простое, между хостами через уровень обмена сообщениями, чтобы службы, размещенные на corosync, могли основываться на Сообщение, отправляемое каждым хостом на нижнем уровне, определяет, на каком хосте должна работать служба. После сбоя хоста, на котором запущена служба, они могут решить, на какой хост следует перенести службу, на основе сообщения от уровня доставки сообщений. таким образом, службы, размещенные на corosync, обладают высокой доступностью;
проще говоря, службы, размещенные на corosync, невидимы для основного хоста, что также означает, что службы, размещенные на corosync, могут вызываться и понимать сообщения на уровне обмена сообщениями; таким образом, служба, размещенная на нем, должна предоставить интерфейс для вызова интерфейса, предоставляемого уровнем обмена сообщениями, а затем реализовать миграцию службы; для большинства программ он вообще не имеет такого интерфейса, поэтому нам становится трудно
использовать corosync для достижения высокой доступности сервисов; чтобы решить проблему, связанную с тем, что сервисы, размещенные в corosync, могут вызывать интерфейс, предоставляемый corosync, нам необходимо разработать промежуточное ПО, чтобы это промежуточное ПО могло понимать и вызывать интерфейс, предоставляемый coroysnc. может размещать сервисы наверху;
этот промежуточный уровень является задатчиком ; его основная функция — судить о том, как распределять ресурсы кластера и как переносить и запускать сервисы, вызывая интерфейс, предоставляемый corosync; между тем, задатчик также предоставляет интерфейс управления, позволяет администраторам управлять эти кластерные ресурсы;
для кардиостимулятора он в основном имеет 3 уровня, где основная функция CRM (менеджер ресурсов кластера) заключается в принятии решения об управлении ресурсами кластера путем вызова интерфейса, предоставляемого уровнем обмена сообщениями, и информации о состоянии каждого узла, а затем передачи информации о решении в LRM (локальный менеджер ресурсов). через интерфейс, основная функция LRM Функция заключается в управлении различными локальными ресурсами, но как LRM управляет локальными ресурсами? Обычно он не управляет локальными ресурсами сам по себе, а делегирует управление ими RA.Так называемый RA (агент ресурсов) является агентом ресурсов, он управляет локальными ресурсами в соответствии с информацией, отправленной LRM, и это управление обычно основано на на различных Это реализовано старт-стопным скриптом, предоставляемым данным сервисом;

Распределение ресурсов: установите предпочтение ресурса (реализуйте функцию балансировки нагрузки)

Что такое ориентация на ресурсы? Мы знаем, что ресурс, размещенный на corosync+pacemaker, в конечном итоге будет запускать ресурс на определенном узле, но как мы можем ограничить запуск этих ресурсов на том или иных узлах? Это требует от нас настроить предпочтение ресурсов узлам; так называемое предпочтение означает, что ресурс более склонен работать на этом узле или ненавидит работать на этом узле; есть 3 способа запуска ресурсов в кластере corosync+pacemaker , N- 1. NM, NN, где N представляет количество узлов, M представляет количество ресурсов, N-1 представляет собой один ресурс, работающий на N узлах, это также означает, что N минус 1 узел находится в состоянии ожидания бездействия, что очень важен для серверных ресурсов Коэффициент использования немного расточительный,
поэтому для кластера corosync+pacemaker и keepalived keepalived является более легким ;
это предложение не очень понятно, что означает легкий вес? Может быть проще настроить, следовать и не влиять на другие инструменты? Но какова связь с ресурсами?
NM означает, что M ресурсов работают на N узлах, обычно M меньше, чем N; это означает, что имеется N минус M избыточность узлов; NN означает, что N ресурсов работают на N узлах, и нет избыточного узла, что означает, что как только ресурс повесится, корреспонденция будет перенесена на другие узлы.Пока IP-адрес, процесс и порт, предоставленные другими узлами, не конфликтуют, большой проблемы не будет, но относительное давление немного больше ; для разных режимов работы резервный Количество узлов также разное, что касается того, к какому узлу должен работать ресурс, мы можем решить, определив склонность ресурса к узлу, по умолчанию каждый ресурс может работать на любом узле; то есть по умолчанию, когда ресурс A зависает после сбоя, его диапазон аварийного переключения — любой другой узел кластера.Чтобы предотвратить запуск службы A на узле B, мы можем определить тенденцию ресурса A к узлу B как отрицательную бесконечность. Так называемая отрицательная бесконечность означает, что пока есть другие узлы, которые могут работать, он никогда не будет работать на узле B, определяя тенденцию ресурсов к узлам, чтобы ограничить передачу ресурсов на этих узлах, этот вид ограничение склонности ресурсов к узлам называется отказоустойчивой областью определения ресурсов; в дополнение к возможности определять ресурсы Для склонности узлов мы также можем определить склонность ресурсов и ресурсов, и логика аналогична; склонность ресурсов, мы обычно используем баллы для выражения, и его диапазон значений находится в диапазоне от положительной бесконечности до отрицательной бесконечности; положительная бесконечность означает бесконечность Как определенный узел или ресурс, пока соответствующий узел существует нормально, он должен быть на узле, отрицательная бесконечность противоположна.

Supongo que te gusta

Origin blog.csdn.net/weixin_43786143/article/details/129436805
Recomendado
Clasificación