HTML Diff
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