cmndrsp0ck.galera-cluster
galera-cluster
Cel
Ten repo pomoże Ci w wdrożeniu i skonfigurowaniu 2 węzłów HAProxy z przypisaniem pływającego adresu IP oraz klastra MariaDB Galera. Provisioning będzie obsługiwany przez Terraform, a konfiguracja będzie realizowana z użyciem Ansible.
Wymagania wstępne
- Musisz zainstalować Terraform, który posłuży do provisioningu Dropletów.
- Aby zastosować zmiany konfiguracyjne na nowo utworzonych Dropletach, potrzebujesz zainstalować Ansible.
- Zarządzanie inwentarzem Ansible będzie realizowane przez Terraform, więc potrzebujesz terraform-inventory.
- Będziemy potrzebować klucza API DigitalOcean. Kroki do wygenerowania klucza API DigitalOcean znajdziesz tutaj.
- Użyj dołączonego skryptu
gen_auth_key
, aby wygenerować klucz autoryzacji dla swojego klastra równoważącego obciążenie.
Konfiguracja
Terraform
terraform.tfvars
Przykładowy plik terraform.tfvars.sample został dostarczony, pamiętaj jednak, aby usunąć dodatek .sample. Gdy ustawisz wszystkie zmienne, Terraform powinien być w stanie uwierzytelnić się i wdrożyć Twoje Droplety.
- do_token - klucz API DigitalOcean z uprawnieniami do odczytu/zapisu
- project - coś, co łatwo pozwala odróżniać różne grupy infrastruktury od siebie.
- region - lokalizacja centrum danych.
- image_slug - domyślnie używany jest debian-9-x64, ponieważ został napisany w celu wykorzystania z określonymi rolami Ansible.
- keys - Identyfikatory kluczy ssh DigitalOcean. Można je uzyskać za pomocą API.
- private_key_path - ścieżka do pliku klucza prywatnego. Zazwyczaj w /home/<nazwa_użytkownika>/.ssh/id_rsa
- ssh_fingerprint - Twój klucz MD5 odcisk palca.
- public_key - Zawartość Twojego publicznego klucza ssh.
- ansible_user - Nazwa użytkownika, którą chcesz użyć później przy konfiguracji Dropletów z Ansible.
Ansible
Zainstaluj role Ansible używając pliku requirements.yml.
$ ansible-galaxy install -r requirements.yml
Role Ansible wymagają ustawienia niektórych zmiennych z wrażliwymi danymi w group_vars/. Proszę zapoznać się z ich odpowiednimi plikami README.md, aby dowiedzieć się, jakie zmienne ustawić.
Mała uwaga! Będziesz szyfrować pliki używając ansible vault. Zamiast za każdym razem wpisywać hasło do swojego vaulta, polecam utworzenie pliku z hasłem poza swoim repozytorium.
$ echo 'hasło' > ~/.vaultpass.txt
I upewnij się, że odkomentowałeś vault_password_file = ~/.vaultpass.txt
w pliku ansible.cfg.
Dobrze, teraz wszystko powinno być gotowe, a Ty możesz zacząć provisioning i konfigurację swoich Dropletów.
Wdrożenie
Terraform
Zaczniemy od użycia Terraform. Upewnij się, że wróciłeś do głównego katalogu repozytorium. Musisz uruchomić terraform init
, aby pobrać wtyczki terraform, takie jak dostawcy digitalocean i template. Gdy to wszystko będzie zainstalowane, możesz szybko sprawdzić i utworzyć plan wykonania, uruchamiając terraform plan
.
Użyj terraform apply
, aby zbudować Droplety i pływający adres IP. Powinno to zająć około jednej lub dwóch minut, w zależności od liczby uruchamianych węzłów.
Ansible
Gdy terraform zakończy działanie, możesz sprawdzić łączność sieciową, używając ansible all -i /usr/local/bin/terraform-inventory -m ping
. To powinno zwrócić pong dla wszystkich węzłów.
Jesteśmy gotowi, aby rozpocząć konfigurację Dropletów. Wykonaj playbook Ansible z głównego katalogu repozytorium, aby skonfigurować swoje Droplety, uruchamiając następujące polecenie:
ansible-playbook -i /usr/local/bin/terraform-inventory site.yml
Ten playbook zainstaluje i skonfiguruje heartbeat, usługę przypisania pływającego adresu IP, zainstaluje i skonfiguruje równoważniki obciążenia HAProxy oraz klaster MariaDB Galera. Powinieneś zobaczyć stały wynik, który wskaże rolę i krok, w którym obecnie działa Ansible. Jeśli pojawią się jakiekolwiek błędy, łatwo możesz je zlokalizować w odpowiedniej roli i zadaniu.
Licencja
GPL-3.0
Informacje o autorze
ansible-galaxy install cmndrsp0ck.galera-cluster