galera-cluster
galera-cluster
Цель
Этот репозиторий поможет вам развернуть и настроить 2 узла HAProxy с плавающим IP-адресом и кластером MariaDB Galera. Провизирование будет осуществляться с помощью Terraform, а настройка - с помощью Ansible.
Предварительные требования
- Вам необходимо установить Terraform, который будет использоваться для развертывания Droplet.
- Чтобы применить изменения конфигурации к вновь созданным Droplet, нужно установить Ansible.
- Инвентаризация Ansible будет управляться Terraform, поэтому вам понадобится terraform-inventory.
- Нам понадобится ключ API DigitalOcean. Шаги по созданию ключа API DigitalOcean можно найти здесь.
- Используйте включенный скрипт
gen_auth_key
для генерации ключа аутентификации для вашего кластера балансировки нагрузки.
Конфигурация
Terraform
terraform.tfvars
Пример файла terraform.tfvars.sample был предоставлен, просто не забудьте удалить добавленный .sample. Когда все переменные будут установлены, Terraform должен быть в состоянии аутентифицироваться и развернуть ваши Droplet.
- do_token - ключ API DigitalOcean с правами на чтение/запись
- project - что-то, что позволяет вам легко различать разные группы инфраструктуры.
- region - идентификатор местоположения дата-центра.
- image_slug - по умолчанию используется debian-9-x64, так как это написано для конкретных ролей Ansible.
- keys - идентификаторы ваших SSH-ключей DigitalOcean. Доступно через API.
- private_key_path - путь к вашему файлу приватного ключа. Обычно находится в /home/
/.ssh/id_rsa - ssh_fingerprint - MD5 отпечаток вашего SSH-ключа
- public_key - содержимое вашего SSH публичного ключа
- ansible_user - имя пользователя, которое вы хотите использовать позже при настройке Droplet с помощью Ansible.
Ansible
Установите роли Ansible, используя файл requirements.yml.
$ ansible-galaxy install -r requirements.yml
Роли Ansible требуют установки некоторых переменных с чувствительными данными в group_vars/. Пожалуйста, обратитесь к соответствующим файлам README.md за информацией о необходимых переменных.
Краткое примечание! Вы будете шифровать файлы с использованием ansible vault. Чтобы не вводить пароль хранилища каждый раз при запуске вашего плейбука, рекомендую установить пароль в файл вне вашего репозитория.
$ echo 'password' > ~/.vaultpass.txt
И не забудьте раскомментировать vault_password_file = ~/.vaultpass.txt
в вашем файле ansible.cfg.
Теперь все должно быть настроено, и вы готовы начать провизирование и настройку ваших Droplet.
Развертывание
Terraform
Начнем с использования Terraform. Убедитесь, что вы находитесь в корневом каталоге репозитория. Вам нужно выполнить terraform init
, чтобы загрузить плагины Terraform, такие как провайдеры DigitalOcean и template. Как только все будет настроено, вы можете выполнить быструю проверку и создать план выполнения, запустив terraform plan
.
Используйте terraform apply
, чтобы создать Droplets и плавающий IP. Это займет около минуты или двух, в зависимости от количества узлов, которые вы создаете.
Ansible
После завершения работы terraform вы можете проверить сетевое соединение, используя ansible all -i /usr/local/bin/terraform-inventory -m ping
. Это должно вернуть pong для всех узлов.
Теперь мы готовы начать конфигурировать Droplets. Выполните плейбук Ansible из корневого каталога репозитория, выполнив следующее:
ansible-playbook -i /usr/local/bin/terraform-inventory site.yml
Этот плейбук установит и настроит heartbeat, вашу службу переназначения плавающего IP, установит и настроит балансировщики нагрузки HAProxy и ваш кластер MariaDB Galera. Вы должны видеть стабильный вывод, который будет указывать роль и шаг, на котором в данный момент выполняется Ansible. Если возникнут ошибки, вы легко сможете вернуться к правильной роли и задаче.
Лицензия
GPL-3.0
Информация об авторе
ansible-galaxy install cmndrsp0ck/galera-cluster