УДК 004.65

СОЗДАНИЕ КЛАСТЕРА POSTGRESQL В СРЕДЕ KUBERNETES

Феофантов Константин Владимирович1, Власов Александр Васильевич2, Афанасьев Геннадий Иванович3
1Санкт-Петербургский политехнический университет Петра Великого, бакалавр «Системы и технологии управления», технический директор компании “EXON LV”
2Московский Государственный Технический Университет им. Н.Э. Баумана, специалист «Робототехника и комплексная автоматизация», операционный директор “EXON LV”
3Московский Государственный Технический Университет им. Н.Э. Баумана, кафедра «Системы обработки информации и управления», к.т.н., доцент

Аннотация
Поставлена актуальная проблема развёртывания базы данных в кластере. Описан механизм развёртывания, приведены инструкции по установки необходимых дополнительных решений. Описаны методы масштабирования и проверки кластера.

Ключевые слова: докер, кранчи дата, кубернетес, постгрескюл кластер, хелм


POSTGRESQL CLUSTER CREATING IN KUBERNETES

Feofantov Konstantin Vladimirovich1, Vlasov Alexander Vasilevich2, Afanasiev Gennady Ivanovich3
1Peter the Great St.Petersburg Polytechnic University, bachelor of “Control Systems and Technologies Department”, chief information officer of the “EXON LV” company
2Bauman Moscow State Technical University, specialist of “Robotics and complex automation”, Chief Operating Officer “EXON LV”
3Bauman Moscow State Technical University, department “System of Information Processing and Management”, PhD in Technological Sciences, associate professor

Abstract
The article touches upon the issue of the actual problem of deployment of the database in a cluster. The deployment mechanism is described, instructions on installations of necessary additional decisions are provided. Scaling techniques and checks of a cluster are described.

Keywords: Crunchy Data, docker, postgreSQL cluser


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Феофантов К.В., Власов А.В., Афанасьев Г.И. Создание кластера PostgreSQL в среде Kubernetes // Современные научные исследования и инновации. 2017. № 2 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2017/02/78289 (дата обращения: 03.06.2017).

Введение

Методы контейнерезации (Docker), позволяют развернуть систему любой сложности за очень короткое время. Данная статья нацелена на то, что бы показать развертывание кластера базы данных PostgreSQL. В качестве управляющего Docker контейнерами будет служить Kubernetes.

Kubernetes является проектом с открытым исходным кодом, предназначенным для управления кластером контейнеров Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а так же обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат Google и теперь поддерживается многими компаниями, среди которых Microsoft, RedHat, IBM и Docker.

Для работы потребуется:

  • Компьютер с ОС на базе Linux, в качестве управляющей машины
  • Минимум 1 сервер с установленым Kubernetes и Docker (процесс установки описываться не будет, т.к. зависит от выбраной ОС и релизом. Инструкцию по установке можно найти на офицальном сайте Kubernetes)
  • Скачаный репозиторий crunchy-containers от Crunchy Data
  • Установленый диспечер пакетов Helm для Kubernetes

Установка crunchy-containers

Crunchy-containers – специальная сборка Docker конейнеров, которые позволяют быстрое развертывание PostgreSQL, включая администрирование и мониторинг. Данные сборки позволяют запустить кластерные решения.

Для установки необходимо склонировать репозиторий на локальный компьютер:

git clone https://github.com/CrunchyData/crunchy-containers.git

В качестве примера используется стандартные Chart файлы из директории:

cd crunchy-containers/examples/kubehelm/crunchy-postgresql-cluster/templates

Установка Helm

Для установки Helm, необходимо скачать образ с официального github репозитория и затем установить его:

wget https://kubernetes-helm.storage.googleapis.com/helm-v2.1.3-linux-amd64.tar.gz
tar -xzf helm-v2.1.3-linux-amd64.tar.gz

cd linux-amd64

sudo cp helm /usr/bin

Далее необходимо перейти в директорию проекта и создать проект helm:

helm init
cd crunchy-containers/examples/kubehelm

helm install ./crunchy-postgres

Архитектура кластера

Для создания кластера потребуется в среде Kubernetes развернуть:

  • Мастер сервис Postgres (master service)
  • Реплика сервис Postgres (replica service)
  • Мастер базы данных postgres (master pod)
  • Контроллер репликации базы данных postgres (replication controller)


В данном примере создается мастер контейнер с базой данных с возможностью чтения и записи, а так же одиночной реплики мастера с возможностью только чтения. Маштабирование реплики осуществляеться с помощью контроллера репликаций и может изменяться динамически.

Основные файлы

  • values.yaml – этот файл содержит значения, которые можно использовать в базе данных шаблонов, что позволяет указать их в качестве паролей базы данных.
  • templates/master-pod.yaml – определение pod’а базы данных Мастер Postgres. Этот файл вызывает создание одиночного pod’а мастера Postgres.
  • templates/master-service.yaml - база данных Мастер Postgres имеет сервис, созданный для работы в качестве прокси. Этот файл вызывает создание одиночного сервиса для прокси-вызовов базы данных Мастер.
  • templates/replica-rc.yaml - этим файлом определяется база данных Реплика Postgres. Файл вызывает создание контроллера репликации, который позволяет по требованию масштабировать контейнеры реплики Postgres.
  • templates/replica-service.yaml - этот файл вызывает создание прокси сервиса для контейнера(-ов) базы данных Реплика.

Тестирование

После установки Helm Charts должны появиться следующие сервисы:

kubectl get services
NAME              CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
crunchy-master    10.0.0.171   <none>        5432/TCP   1h
crunchy-replica   10.0.0.31    <none>        5432/TCP   1h
kubernetes        10.0.0.1     <none>        443/TCP    1h

Через некоторое время реклика начнёт копировать данные из мастера. Для проверки репликации можно выполнить команду:

 

psql -h crunchy-master -U postgres postgres -c ‘table pg_stat_replication’

При выводе не пустых строк, будет следовать что репликация работает. Для большей гарантии стоит добавить несколько тестовых данных в базу данных. Для этого создаётся таблица foo и записывается туда значение:

psql -h crunchy-master -U postgres postgres -c ‘create table foo (id int)’

psql -h crunchy-master -U postgres postgres -c ‘insert into foo values (1)’

Затем убедиться что данные реплицируются на машину подчиненного:

psql -h crunchy-replica -U postgres postgres -c ‘table foo’

Маштабирование

После проверки работы репликации, можно проверить функцию маштабирования, для этого необходимо выполнить:

kubectl scale rc crunchy-replica –replicas=2

При этом в течении минуты создастся новая база данных и данные начнут реплицироваться из мастера. В зависимости от количества данных процесс репликации может занять внушительное время.

Заключение

Проекты Kubernetes Helm и Charts обеспечивают усовершенствованный способ упаковки сложных приложений и их развертывание в кластере Kubernetes. Развертывание кластеров PostgreSQL иногда может оказаться сложной задачей, но с помощью Helm и Charts задача значительно упрощается.

 


Библиографический список
  1. Документация Docker. URL: https://docs.docker.com (дата обращения: 24.01.2017).
  2. Документация Crunchy Data. URL: http://crunchydata.com/documentation/ (дата обращения: 24.01.2017).
  3. Документация PostgreSQL. URL: https://www.postgresql.org/docs/ (дата обращения: 24.01.2017).
  4. Jeff Nickoloff. Docker in Action. USA, Manning 2016, 304 p.
  5. Jeff Nickoloff. Docker in Action. USA, Manning 2016, 304 p.


Все статьи автора «Феофантов Константин Владимирович»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: