Вопрос:

Как реагировать на соли-мастера на недостижимость миньона

salt-stack

46 просмотра

1 ответ

160 Репутация автора

Я совсем новичок в соли. Вот что я пытаюсь заархивировать: скажем, у меня есть мастер соли, minion1, minion2. Если minion1 становится недоступным для мастера соли, служба должна быть запущена на minion2.

Насколько я понимаю, я бы настроил маяк на minion1 и реактор на соли-мастер. Тем не менее, поскольку событие является «потерянным соединением minion1», маяк на minion1 не может запустить событие.

Автор: bluefish Источник Размещён: 12.01.2018 09:36

Ответы (1)


0 плюса

191 Репутация автора

Я решил похожую проблему. У меня есть кластер базы данных (db1, db2, db3), и я хочу, чтобы мое приложение переключалось на другую базу данных в случае сбоя. Вот как я это реализовал:

Добавьте динамический столб, чтобы предоставить список доступных серверов БД:

{% set db_hosts = [] %}
{%- for host in ['db1', 'db2', 'db3'] %}
{%- if salt.network.connect(host, 3306, timeout=2)['result'] == true %}
{%- do db_hosts.append(host) %}
{%- endif %}
{%- endfor %}
{%- if db_hosts != [] %}
available_db_hosts:
  {{ db_hosts | yaml }}
{% endif %}

Используйте {{ pillar.get('available_db_hosts')[0] }}столб в myappсостоянии, чтобы он всегда подключался к первому доступному хосту БД.

Добавьте солевой маяк к узлам базы данных в столбе:

beacons:
  service:
    - services:
        mysql-server:
          uncleanshutdown: /var/mysql-data/hostname.pid
    - interval: 10

Добавьте соляной реактор:

{% if data['service_name'] == 'mysql-server' and data[data['service_name']]['running'] == false %}
failover_myapp:
  local.state.apply:
    - tgt: 'minion1'
    - args:
        mods: myapp
{% endif %}
Автор: laocius Размещён: 17.05.2019 06:44
Вопросы из категории :
32x32