Skip to content
Snippets Groups Projects
feniks's avatar
feniks authored
989f7f53
History
Name Last commit Last update
screenshots
README.md
main.tf

Домашнее задание к занятию 12.9. «Базы данных в облаке» - Кузин Максим

Инструкция по выполнению домашнего задания

  1. Сделайте fork репозитория c шаблоном решения к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw).
  2. Выполните клонирование этого репозитория к себе на ПК с помощью команды git clone.
  3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
    • впишите вверху название занятия и ваши фамилию и имя;
    • в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка;
    • для корректного добавления скриншотов воспользуйтесь инструкцией «Как вставить скриншот в шаблон с решением»;
    • при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в инструкции по MarkDown.
  4. После завершения работы над домашним заданием сделайте коммит (git commit -m "comment") и отправьте его на Github (git push origin).
  5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
  6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете.
  7. Методичка

Желаем успехов в выполнении домашнего задания.


Домашнее задание подразумевает, что вы уже делали предыдущие работы в Яндекс.Облаке, и у вас есть аккаунт и каталог.

Используйте следующие рекомендации во избежание лишних трат в Яндекс.Облаке:

  1. Сразу после выполнения задания удалите кластер.
  2. Если вы решили взять паузу на выполнение задания, то остановите кластер.

Задание 1

Создание кластера

  1. Перейдите на главную страницу сервиса Managed Service for PostgreSQL.
  2. Создайте кластер PostgreSQL со следующими параметрами:
  • класс хоста: s2.micro, диск network-ssd любого размера;
  • хосты: нужно создать два хоста в двух разных зонах доступности и указать необходимость публичного доступа, то есть публичного IP адреса, для них;
  • установите учётную запись для пользователя и базы.

Остальные параметры оставьте по умолчанию либо измените по своему усмотрению.

  • Нажмите кнопку «Создать кластер» и дождитесь окончания процесса создания, статус кластера = RUNNING. Кластер создаётся от 5 до 10 минут.

Подключение к мастеру и реплике

  • Используйте инструкцию по подключению к кластеру, доступную на вкладке «Обзор»: cкачайте SSL-сертификат и подключитесь к кластеру с помощью утилиты psql, указав hostname всех узлов и атрибут target_session_attrs=read-write.

  • Проверьте, что подключение прошло к master-узлу.

select case when pg_is_in_recovery() then 'REPLICA' else 'MASTER' end;
  • Посмотрите количество подключенных реплик:
select count(*) from pg_stat_replication;

Проверьте работоспособность репликации в кластере

  • Создайте таблицу и вставьте одну-две строки.
CREATE TABLE test_table(text varchar);
insert into test_table values('Строка 1');
  • Выйдите из psql командой \q.

  • Теперь подключитесь к узлу-реплике. Для этого из команды подключения удалите атрибут target_session_attrs и в параметре атрибут host передайте только имя хоста-реплики. Роли хостов можно посмотреть на соответствующей вкладке UI консоли.

  • Проверьте, что подключение прошло к узлу-реплике.

select case when pg_is_in_recovery() then 'REPLICA' else 'MASTER' end;
  • Проверьте состояние репликации
select status from pg_stat_wal_receiver;
  • Для проверки, что механизм репликации данных работает между зонами доступности облака, выполните запрос к таблице, созданной на предыдущем шаге:
select * from test_table;

В качестве результата вашей работы пришлите скриншоты:

1) Созданной базы данных; 2) Результата вывода команды на реплике select * from test_table;.

Ответ.


Задание 2*

Создайте кластер, как в задании 1 с помощью Terraform.

В качестве результата вашей работы пришлите скришоты:

1) Скриншот созданной базы данных. 2) Код Terraform, создающий базу данных.

Ответ.

Манифест terraform


Задания, помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале.