Настройка реплик баз данных через Ansible

На список статей
Blog image

Защитите свои сайты с My-Sites-Guard.com!
Сервис обеспечивает надежную защиту ваших веб-ресурсов: мониторинг доступности сайта, контроль валидности сертификатов, а также возможность собирать и анализировать логи работы сервера. My-Sites-Guard.com — всё для сохранности вашего сайта и спокойствия в работе!

Почему стоит выбрать Ansible для настройки реплик?

Ansible — это крутой инструмент, который поможет тебе автоматизировать рутинные задачи. Настройка репликации баз данных — как раз такая задача. Ручной процесс часто занимает кучу времени и требует внимательности. Один лишний пробел — и всё ломается. С Ansible ты можешь написать плейбук один раз, а затем использовать его на любом сервере. Круто, правда?

Но вот что важно: репликация баз данных — это немного сложнее, чем просто скопировать файлы с одного сервера на другой. Тут задействованы вещи вроде пользователей, прав доступа, конфигурационных файлов и синхронизации данных. Ansible прекрасно справляется со всем этим, если правильно написать инструкции.

Как настроить реплики баз данных с помощью Ansible?

Для начала разберём процесс на примере PostgreSQL. Этот популярный инструмент идеально подходит, чтобы изучить концепцию репликации.

Шаг 1. Установи PostgreSQL на серверах.
Первым делом, тебе нужно, чтобы PostgreSQL был установлен на всех машинах — как на мастере, так и на репликах. С помощью Ansible это делается очень просто. Вот базовый пример плейбука:

- name: Install PostgreSQL
 hosts: all
 become: yes
 tasks:
   - name: Ensure PostgreSQL is installed
     apt:
       name: postgresql
       state: present

Этот плейбук запускается на всех целевых машинах и проверяет, что PostgreSQL установлен. Если его нет, Ansible добавит его за тебя.

Шаг 2. Настрой главный сервер (мастер).
Теперь важно настроить мастер-сервер так, чтобы он мог передавать данные репликам. В PostgreSQL это делается через изменения конфигурационного файла postgresql.conf.
Вот пример задачи, которая редактирует этот файл:

- name: Configure PostgreSQL master
 hosts: master
 become: yes
 tasks:
   - name: Configure postgresql.conf for replication
     lineinfile:
       path: /etc/postgresql/14/main/postgresql.conf
       regexp: '^#?wal_level'
       line: 'wal_level = replica'

Этот кусок делает так, чтобы мастер-сервер поддерживал репликацию, включая нужные параметры.

Шаг 3. Создай пользователя репликации.
На мастере нужно создать специального пользователя, который будет отвечать за передачу данных репликам. Для этого можно использовать следующую задачу:

- name: Create replication user
 hosts: master
 become: yes
 tasks:
   - name: Create replication role
     postgresql_user:
       name: replicator
       password: "securepassword"
       role_attr_flags: "REPLICATION"

Теперь у тебя есть пользователь, который умеет работать с репликацией. Не забудь записать пароль, чтобы использовать его на следующем этапе!

Подключение реплик

Когда мастер готов, пора подключать реплики. Тут важно настроить каждую из них так, чтобы она могла синхронизироваться с мастером.

Шаг 4. Настрой реплику.
Для этого нужно отредактировать pg_hba.conf на мастере, чтобы разрешить доступ репликам. Это можно сделать с помощью такой задачи:

- name: Allow replication connections
 hosts: master
 become: yes
 tasks:
   - name: Add replication entry to pg_hba.conf
     lineinfile:
       path: /etc/postgresql/14/main/pg_hba.conf
       line: "host replication replicator 192.168.1.0/24 md5"

Эта строка разрешает пользователю replicator подключаться с доверенных IP.

Теперь перейдём к настройке самих реплик.

Шаг 5. Синхронизация данных.
Перед запуском реплики нужно убедиться, что она имеет копию данных мастера. Сделать это можно командой pg_basebackup. Вот как это автоматизировать в Ansible:

- name: Sync data to replica
 hosts: replicas
 become: yes
 tasks:
   - name: Perform base backup
     command: >
       pg_basebackup -h {{ master_ip }}
       -D /var/lib/postgresql/14/main
       -U replicator
       -Fp -Xs -P -R

Эта задача подключается к мастеру, забирает копию данных и автоматически создаёт файлы конфигурации для реплики.

Завершаем настройку

На этом этапе реплика готова к работе. Тебе останется только перезапустить сервис PostgreSQL на всех серверах, чтобы изменения вступили в силу. Используй такую задачу:

Шаг 6. Перезапусти PostgreSQL.

- name: Restart PostgreSQL
 hosts: all
 become: yes
 tasks:
   - name: Restart PostgreSQL service
     service:
       name: postgresql
       state: restarted

Готово! Теперь мастер и реплики синхронизируются автоматически. Проверить статус репликации можно с помощью команды SELECT * FROM pg_stat_replication; на мастере.


Финальные советы:

  1. Не бойся экспериментировать с Ansible — это отличный инструмент для обучения и работы.
  2. Если что-то не работает, проверяй логи на серверах. PostgreSQL часто подсказывает, в чём ошибка.
  3. Убедись, что файлы конфигурации защищены и недоступны для посторонних.

Надеюсь, тебе понравилось, бро! Если остались вопросы, пиши, я всегда готов помочь. 🚀

Комментарии

Пока нет комментариев

Добавить комментарий