Развертывание высокой доступности Postresql 9.0 на Amazon EC2 с PGPool-ii - PullRequest
11 голосов
/ 04 августа 2011

У нас есть существующее веб-приложение, которое использует Postgresql 9.0 и PGPool-ii.Я подумываю о переносе нашей инфраструктуры на Amazon EC2, и меня вдохновила следующая ссылка: http://aws.typepad.com/aws/2008/12/running-everything-on-aws-soocialcom.html, использующая аналогичную архитектуру.

Поскольку Amazon RDS не поддерживает PGSQL, мы будем придерживатьсяс PGPool-ii для балансировки нагрузки запросов на разных серверах БД и их синхронизации между собой.

Поэтому мы планируем развернуть 3 веб-сервера с интерфейсом, которые будут содержать следующее: - Веб-сервер + код PHP- PGPool-ii

Тогда у нас будет 2 сервера базы данных на отдельных экземплярах Amazon только с PGSQL.Эти 2 сервера PG будут использоваться PGPools, расположенными на 3 интерфейсных серверах.

Мой вопрос заключается в том, что я не знаю, достаточно ли надежно это решение, поскольку несколько PGPool будут иметь доступ к нескольким серверам PGSQL.Большинство примеров PGPool демонстрирует один PGPool, который использует N базовых серверов PGSQL.Является ли хорошей практикой развертывание экземпляра PGPool на каждом веб-сервере?

Если нет, существует ли какая-либо другая / лучшая архитектура, позволяющая избежать использования SPOF при использовании Amazon?

Большое спасибо за вашеотвечает.

Ответы [ 2 ]

8 голосов
/ 14 сентября 2011

Пара мыслей.Во-первых, мы избегаем SPOF для таких вещей, как PGPool, используя Heartbeat, Pacemaker и ElasticIP.Запустите два (или более) экземпляра, выделенных для PGPool.Назначьте ElasticIP одному из них.Настройте Heartbeat и Pacemaker для мониторинга PGPool.При аварийном переключении попросите Pacemaker запустить сценарий, который назначает ElasticIP новому мастеру (DC в терминах Pacemaker).Если вы используете только два узла, убедитесь, что вы отключили функциональность кворума в Pacemaker, потому что вы не можете иметь кворум, если один узел выходит из строя в общей сложности из двух узлов.

Чтобы воспользоватьсяElasticIP, выполните обратный поиск DNS на вашем ElasticIP из-за пределов Amazon.Это даст вам DNS-имя, которое сопоставляется с ElasticIP и должно заканчиваться на amazonaws.com.DNS-запросы из экземпляра EC2 для доменного имени, оканчивающегося на amazonaws.com, фактически преобразуются во внутренний IP-адрес для экземпляра, которому был назначен ElasticIP.Вы можете либо направить свои серверы приложений непосредственно на DNS для ElasticIP, либо, если вы используете свой собственный DNS, вы можете создать CNAME, который ссылается на ElasticIP DNS.

Тем не менее, есть один большой уловиспользовать ElasticIPs для отработки отказа.Для повторного назначения ElasticIP требуется до 120 секунд.Большая часть времени тратится на ожидание изменений для распространения через DNS-серверы Amazon.

Кроме того, хотя я не пробовал запускать PGPool-ii на каждом сервере приложений, я не уверен, что это сработает.Если база данных master выйдет из строя, я думаю, что каждый из экземпляров PGPool будет конкурировать за обработку отказа.Может быть, я просто недостаточно знаком с PGPool-ii, чтобы понять, как лучше всего с этим справиться.

Что касается человека, упомянувшего plproxy, я думаю, что его путают с PGBouncer , который рекомендуется для использования с plproxy. plproxy - это система разбиения на разделы, а не балансировщик нагрузки.Тем не менее, PGBouncer также не является балансировщиком нагрузки - это система пула соединений.PGBouncer не обеспечивает функцию балансировки нагрузки.На самом деле, FAQ для PGBouncer явно рекомендует использовать балансировщик нагрузки TCP, такой как HAProxy .

Кроме того, утверждения о том, что Amazon имеет проблемы с вертикальной масштабируемостью, которые решает Rackspace, неверны.С экземплярами Amazon EC2 вы всегда можете остановить экземпляр и обновить его до более крупного типа.Ни Amazon, ни Rackspace не поддерживают изменение типов экземпляров на лету.

1 голос
/ 04 августа 2011

Хотя у меня нет четкого представления о pgPool. Я много исследовал области масштабируемости и по какой-то причине проигнорировал pgPool.

Я бы посоветовал взглянуть на plproxy. Это предлагает подход с балансировкой нагрузки.

Кроме того, я бы не стал большим покупателем на Amazon из-за проблем вертикальной масштабируемости с Amazon. Вы не получаете стандартное обновление, если хотите увеличить конфигурацию сервера. Таким образом, вы в конечном итоге снова выполните все настройки сервера, если обновитесь до более высокого уровня.

Таким образом, Rackspace был убедителен, когда вы можете просто попросить его обновить оперативную память с 1 ГБ до 2 ГБ или более, и это будет сделано только при перезапуске вашего экземпляра.

Как Amazon, так и Rackspace предлагают (99%) надежное решение для хостинга, а остальные 1% мы должны отметить при правильном резервном копировании и распределении по различным регионам и т. Д.,

...