corosync

Ansible Corosync (готовый к OpenStack)

Эта роль предоставляет поддержку настройки кластера Corosync.

Эта роль поддерживает следующие протоколы:

  • Мультикаст (udp)
  • Уникаст (udpu)
  • Несколько колец

Поддерживаемые дистрибутивы:

  • CentOS 7.x
  • RedHat EL 7.x
  • Debian 8.x
  • Ubuntu 14.x / 15.x / 16.x

Работает с демоном firewalld и SELinux.

Поскольку версия 1 Corosync больше не поддерживается, эта роль предоставляет поддержку только для версии 2 Corosync.

Требования

Эта роль требует как минимум 3 узла и Ansible 2.x.

Для генерации авторизационного ключа Corosync вам потребуется энтропия. Если задача Генерация файла /etc/corosync/authkey зависла, это означает, что у вас недостаточно энтропии. Решение - сгенерировать энтропию с помощью демона haveged, включите эту опцию:

corosync_haveged: true

Если corosync_firewalld установлено в true, убедитесь, что пакет firewalld установлен и служба запущена.

Если corosync_selinux установлено в true, убедитесь, что пакет policycoreutils-python установлен.

Переменные роли

Описание всех опций доступно здесь: http://manpages.ubuntu.com/manpages/wily/man5/corosync.conf.5.html

    corosync_crypto_cipher | default('aes256')
    corosync_crypto_hash | default('sha256')
    corosync_rrp_mode
    corosync_netmtu | default(1500)
    corosync_vsftype | default('ykb')
    corosync_transport
    corosync_cluster_name | default('uoi')
    corosync_config_version
    corosync_ip_version | default('ipv4')
    corosync_token | default(1000)
    corosync_token_retransmit
    corosync_hold
    corosync_token_retransmits_before_loss_const
    corosync_join
    corosync_send_join
    corosync_consensus
    corosync_merge
    corosync_downcheck
    corosync_fail_recv_const
    corosync_seqno_unchanged_const
    corosync_heartbeat_failures_allowed
    corosync_max_network_delay
    corosync_window_size
    corosync_max_messages
    corosync_miss_count_const
    corosync_rrp_problem_count_timeout
    corosync_rrp_problem_count_threshold
    corosync_rrp_problem_count_mcast_threshold
    corosync_rrp_token_expired_timeout
    corosync_rrp_autorecovery_check_timeout
    corosync_provider | default('corosync_votequorum')
    corosync_expected_votes
    corosync_timestamp | default ('off')
    corosync_fileline | default('off')
    corosync_to_stderr | default('on')
    corosync_to_logfile | default('off')
    corosync_to_syslog | default('on')
    corosync_logfile
    corosync_logfile_priority | default('info')
    corosync_syslog_facility | default('daemon')
    corosync_syslog_priority | default('info')
    corosync_debug | default('off')
    corosync_subsys | default('QUORUM')
    corosync_subsys_debug | default('off')
    corosync_subsys_tags
    corosync_ipc_type | default('native')

Зависимости

Нет.

Пример плейбука

Следующий пример создаст кластер Corosync, используя мультикаст, если используется мультикаст, вам необходимо определить переменную corosync_expected_votes (3 для трех узлов).

Как указано выше, если вы хотите настроить правила firewalld, убедитесь, что corosync_firewalld установлено в true.

Есть возможность использовать официальные backports Debian, чтобы получить последнюю версию Corosync, просто активируйте это через corosync_debian_backports установив в true.

Параметр corosync_force_regenerate_authkey позволяет вам перегенерировать файл /etc/corosync/authkey.

Мультикаст (1 кольцо)

---
corosync_firewalld: true
corosync_selinux: true
corosync_haveged: true
corosync_force_regenerate_authkey: false
corosync_debian_backports: true
corosync_expected_votes: 3

corosync_interfaces:
  - bindnetaddr: 192.168.56.0
    mcastaddr: 226.94.1.1
    mcastport: 5405
    ttl: 1

Следующий пример создаст кластер Corosync, используя мультикаст с двумя кольцами.

Мультикаст (2 кольца)

---
corosync_firewalld: true
corosync_selinux: true
corosync_haveged: true
corosync_force_regenerate_authkey: false
corosync_debian_backports: true
corosync_expected_votes: 3

corosync_interfaces:
  - bindnetaddr: 192.168.56.0
    mcastaddr: 226.94.1.1
    mcastport: 5405
    ttl: 1
  - bindnetaddr: 10.14.130.0
    mcastaddr: 227.94.1.1
    mcastport: 5407
    ttl: 100

Уникаст (1 кольцо)

Следующий пример создаст кластер Corosync, используя уникаст с одним кольцом.
Если используется уникаст, вам необходимо определить corosync_transport: udpu и затем определить corosync_node_list как массив.

---
corosync_firewalld: true
corosync_selinux: true
corosync_haveged: true
corosync_force_regenerate_authkey: false
corosync_debian_backports: true
corosync_node_list:
  - ctrl01
  - ctrl02
  - ctrl03
corosync_transport: 'udpu'

corosync_interfaces:
  - bindnetaddr: 192.168.56.0
    mcastport: 5405

Следующий пример создаст кластер Corosync, используя уникаст с двумя кольцами.

Уникаст (2 кольца)

---
corosync_firewalld: true
corosync_selinux: true
corosync_haveged: true
corosync_force_regenerate_authkey: false
corosync_debian_backports: true
corosync_node_list:
  - ctrl01
  - ctrl02
  - ctrl03
corosync_transport: 'udpu'

corosync_interfaces:
  - bindnetaddr: 192.168.56.0
    mcastaddr: 226.94.1.1
    mcastport: 5405
    members:
      - 226.94.1.10
      - 226.94.1.11
      - 226.94.1.12
  - bindnetaddr: 10.14.130.0
    mcastaddr: 227.94.1.1
    mcastport: 5407
    members:
      - 227.94.1.10
      - 227.94.1.11
      - 227.94.1.12

Лицензия

Apache

Информация об авторе

Эта роль была создана в 2016 году Гаэтаном Треллю (goldyfruit).

О проекте

Deploy a Corosync cluster, support unicast and multicast with mutilple rings

Установить
ansible-galaxy install uoi-io/ansible-corosync
Лицензия
apache-2.0
Загрузки
100
Владелец