0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: pacemaker, corosync, кластеризация</p>
1
<p>Теги: pacemaker, corosync, кластеризация</p>
2
<p>Иногда возникает вопрос, как создать кластеризацию на уровне приложений с высокой отказоустойчивостью, причем сделать это в сжатые сроки, при наличии ограниченного бюджета и при отсутствии глубоких экспертных знаний в построении кластеров. Одно из оптимальных решений -- применение Corosync и Pacemaker. Данная связка бесплатна, освоить ее несложно, а на развертывание уходит совсем немного времени.</p>
2
<p>Иногда возникает вопрос, как создать кластеризацию на уровне приложений с высокой отказоустойчивостью, причем сделать это в сжатые сроки, при наличии ограниченного бюджета и при отсутствии глубоких экспертных знаний в построении кластеров. Одно из оптимальных решений -- применение Corosync и Pacemaker. Данная связка бесплатна, освоить ее несложно, а на развертывание уходит совсем немного времени.</p>
3
<h2>Corosync</h2>
3
<h2>Corosync</h2>
4
<p><strong>Corosync</strong>представляет собой программный продукт, позволяющий создавать единый кластер из нескольких виртуальных либо аппаратных серверов. При этом Corosync способен отслеживать и передавать состояние всех нод в кластере.</p>
4
<p><strong>Corosync</strong>представляет собой программный продукт, позволяющий создавать единый кластер из нескольких виртуальных либо аппаратных серверов. При этом Corosync способен отслеживать и передавать состояние всех нод в кластере.</p>
5
<p>Также он позволяет:</p>
5
<p>Также он позволяет:</p>
6
<ul><li>выполнять мониторинг статуса приложений;</li>
6
<ul><li>выполнять мониторинг статуса приложений;</li>
7
<li>оповещать приложения в случае смены активной ноды в кластере;</li>
7
<li>оповещать приложения в случае смены активной ноды в кластере;</li>
8
<li>осуществлять отправку идентичных сообщений процессам на всех нодах;</li>
8
<li>осуществлять отправку идентичных сообщений процессам на всех нодах;</li>
9
<li>обеспечивать доступ к общей БД с конфигурацией и статистикой;</li>
9
<li>обеспечивать доступ к общей БД с конфигурацией и статистикой;</li>
10
<li>выполнять отправку уведомлений об изменениях, произведенных в базе данных.</li>
10
<li>выполнять отправку уведомлений об изменениях, произведенных в базе данных.</li>
11
</ul><h2>Pacemaker</h2>
11
</ul><h2>Pacemaker</h2>
12
<p><a>Pacemaker</a>-<strong>менеджер ресурсов кластера</strong>. Pacemaker позволяет применять и службы, и объекты в рамках единого кластера, состоящего из 2-х и более нод.</p>
12
<p><a>Pacemaker</a>-<strong>менеджер ресурсов кластера</strong>. Pacemaker позволяет применять и службы, и объекты в рамках единого кластера, состоящего из 2-х и более нод.</p>
13
<p><strong>Pacemaker способен</strong>:</p>
13
<p><strong>Pacemaker способен</strong>:</p>
14
<ul><li>находить и устранять сбои на уровне служб и нод;</li>
14
<ul><li>находить и устранять сбои на уровне служб и нод;</li>
15
<li>не зависеть от подсистемы хранения, то есть мы можем забыть про общий накопитель, как про страшный сон;</li>
15
<li>не зависеть от подсистемы хранения, то есть мы можем забыть про общий накопитель, как про страшный сон;</li>
16
<li>не зависеть от типов ресурсов, то есть все, что можно прописать в скрипты, мы можем кластеризовать;</li>
16
<li>не зависеть от типов ресурсов, то есть все, что можно прописать в скрипты, мы можем кластеризовать;</li>
17
<li>поддерживать STONITH (Shoot-The-Other-Node-In-The-Head). Суть тут следующая: умершая нода изолируется, а запросы к ней не поступают, пока нода не выполнит отправку сообщения о том, что она опять находится в рабочем состоянии;</li>
17
<li>поддерживать STONITH (Shoot-The-Other-Node-In-The-Head). Суть тут следующая: умершая нода изолируется, а запросы к ней не поступают, пока нода не выполнит отправку сообщения о том, что она опять находится в рабочем состоянии;</li>
18
<li>поддерживать кворумные и ресурсозависимые кластеры практически любого размера;</li>
18
<li>поддерживать кворумные и ресурсозависимые кластеры практически любого размера;</li>
19
<li>поддерживать практически любую избыточную конфигурацию;</li>
19
<li>поддерживать практически любую избыточную конфигурацию;</li>
20
<li>автоматически реплицировать конфигурацию на все узлы кластера, то есть править все вручную не понадобится;</li>
20
<li>автоматически реплицировать конфигурацию на все узлы кластера, то есть править все вручную не понадобится;</li>
21
<li>задавать порядок запуска ресурсов и их совместимость на одном узле;</li>
21
<li>задавать порядок запуска ресурсов и их совместимость на одном узле;</li>
22
<li>поддерживать расширенные типы ресурсов, такие как клоны (ресурс запущен на множестве узлов) и дополнительные состояния (master/slave и пр.), что в целом весьма актуально для систем управления базами данных (MySQL, PostgreSQL, MariaDB, Oracle);</li>
22
<li>поддерживать расширенные типы ресурсов, такие как клоны (ресурс запущен на множестве узлов) и дополнительные состояния (master/slave и пр.), что в целом весьма актуально для систем управления базами данных (MySQL, PostgreSQL, MariaDB, Oracle);</li>
23
<li>иметь единую кластерную CRM-оболочку с поддержкой скриптов.</li>
23
<li>иметь единую кластерную CRM-оболочку с поддержкой скриптов.</li>
24
</ul><p>Таким образом, общая идея связки заключается в том, что<strong>посредством Corosync вы строите кластер, ну а уже отслеживать его состояние вы будете благодаря Pacemaker</strong>.</p>
24
</ul><p>Таким образом, общая идея связки заключается в том, что<strong>посредством Corosync вы строите кластер, ну а уже отслеживать его состояние вы будете благодаря Pacemaker</strong>.</p>
25
<p>Хотите узнать больше о кластеризации сервисов на базе Pacemaker? Добро пожаловать на курс "<a>Администратор Linux. Виртуализация и кластеризация</a>"!</p>
25
<p>Хотите узнать больше о кластеризации сервисов на базе Pacemaker? Добро пожаловать на курс "<a>Администратор Linux. Виртуализация и кластеризация</a>"!</p>
26
<p><em>По материалам https://xakep.ru/2019/01/24/corosync-pacemaker/.</em></p>
26
<p><em>По материалам https://xakep.ru/2019/01/24/corosync-pacemaker/.</em></p>
27
27