OpenEBS — это проект CNCF, который предоставляет облачное хранилище с открытым исходным кодом и CAS. OpenEBS предоставляет постоянное блочное хранилище и другие возможности, такие как интегрированное резервное копирование, управление локальными и облачными дисками и многое другое. Для корпоративных облачных приложений OpenEBS предоставляет функциональные возможности хранения, которые идиоматичны для облачных сред разработки, с детализированными политиками хранения и изоляцией, которые позволяют разработчикам и архитекторам облака оптимизировать хранение для определенных рабочих нагрузок.
Поскольку YugabyteDB представляет собой облачную распределенную базу данных SQL, которая работает в средах Kubernetes, она может взаимодействовать с OpenEBS и многими другими проектами CNCF.
Что такое YugabyteDB? Это высокопроизводительная распределенная база данных SQL с открытым исходным кодом, построенная на масштабируемой и отказоустойчивой конструкции, созданной по мотивам Google Spanner. SQL API (YSQL) Yugabyte совместим с PostgreSQL.
Почему OpenEBS и YugabyteDB?
YugabyteDB развернут как StatefulSet в Kubernetes и требует постоянного хранилища. OpenEBS можно использовать для резервного копирования локальных дисков YugabyteDB, что позволяет предоставлять большие постоянные тома. Вот несколько преимуществ использования OpenEBS в сочетании с кластером базы данных YugabyteDB:
- Нет необходимости управлять локальными дисками, так как OpenEBS управляет ими
- OpenEBS и YugabyteDB могут предоставлять постоянные тома большого размера
- С помощью постоянных томов OpenEBS емкость может быть ограничена, а диски можно добавлять в OpenEBS на лету без прерывания обслуживания. Когда эта возможность объединяется с YugabyteDB, которая уже поддерживает многотабайтную плотность данных на узел, это может привести к значительной экономии средств при хранении.
- И OpenEBS, и YugabyteDB поддерживают развертывание нескольких облаков, помогая организациям избежать облачной блокировки
- OpenEBS и YugabyteDB интегрируются с другим проектом CNCF, Prometheus . Это облегчает мониторинг как хранилища, так и базы данных из одной системы.
Кроме того, OpenEBS может выполнять синхронную репликацию внутри географического региона. В сценарии, в котором YugabyteDB развернута по регионам, а узел в каком-либо одном регионе выходит из строя, YugaByteDB должен будет перестроить этот узел с данными из другого региона. Это повлечет за собой межрегиональный трафик, который является более дорогим и более низким по производительности.
Но в OpenEBS это восстановление узла может быть выполнено без проблем, потому что OpenEBS реплицируется локально внутри региона. Это означает, что YugabyteDB не нужно копировать данные из другого региона, что в итоге обходится дешевле и повышает производительность. В этой настройке развертывания, только если весь регион вышел из строя, YugabyteDB потребуется перестроить узел между регионами.
Дополнительные подробные описания вариантов использования с поддержкой OpenEBS можно найти здесь.
Предпосылки
Ниже приведена среда, которую мы будем использовать для запуска кластера YugabyteDB поверх кластера Google Kubernetes, интегрированного с OpenEBS CAS.
- YugabyteDB — версия 2.0.10
- OpenEBS — версия 1.6.
- Google Cloud Platform счет
- MayaData счет
MayaData — это платформа OpenEBS корпоративного уровня, которая упрощает запуск приложений с сохранением состояния в Kubernetes, помогая подготовить ваши рабочие нагрузки, создать резервную копию, отслеживать, регистрировать, управлять, тестировать и даже мигрировать в кластеры и облака.
Настройка кластера Kubernetes на облачной платформе Google
Чтобы развернуть YugabyteDB на облачной платформе Google (GCP), сначала нужно настроить кластер, используя Ubuntu в качестве образа базового узла. Обратите внимание, что ОС GKE Container-Optimized не поставляется с предварительно установленным клиентом iSCSI и не позволяет устанавливать клиент iSCSI. Поэтому OpenEBS не работает на кластерах Kubernetes, на которых на рабочих узлах выполняется версия образа GKE для контейнеров, оптимизированная для ОС.
Перейдите к Kubernetes Engine> Кластеры> Создать кластер .
Создайте стандартный кластер, используя параметры по умолчанию.
Убедитесь, что вы выбрали кнопку « Дополнительные параметры» в разделе « Пулы узлов», чтобы указать базовый образ Ubuntu и 2 локальных SSD-диска.
Подключитесь к Google Cloud Shell и убедитесь, что узлы настроены и работают с помощью команды:
Джава
1
> gcloud container clusters list
Установка OpenEBS на кластер GKE
Чтобы установить OpenEBS на кластер GKE, выполните шаги, найденные здесь.
Краткое изложение необходимых шагов включает в себя:
- Убедитесь, что клиент iSCSI работает
- Размонтируйте локальные постоянные диски для использования в вашем пуле хранения
- Установить контекст администрирования Kubernetes и RBAC
- Установка с помощью штурвала диаграммы (или) kubectl YAML спецификации файла
В настоящее время экземпляры GKE Ubuntu не поставляются с запущенной клиентской службой iSCSI. Вы можете проверить это, войдя в каждый узел через SSH и запустив:
Джава
xxxxxxxxxx
1
systemctl status iscsid
Если состояние службы iSCSI отображается как неактивное, возможно, вам придется включить и запустить службу iscsid с помощью следующей команды:
Джава
xxxxxxxxxx
1
sudo systemctl enable iscsid && sudo systemctl start iscsid
При входе в узел Kubernetes убедитесь, что все локальные диски не смонтированы и не отформатированы. Например, на узле GKE:
Джава
xxxxxxxxxx
1
sudo ls /mnt/disks
2
ssd0 ssd1
3
sudo umount /mnt/disks/ssd0
4
sudo umount /mnt/disks/ssd1
После выполнения вышеуказанных шагов вы можете проверить, что OpenEBS установлен и работает в кластере GKE, выполнив команду:
Джава
xxxxxxxxxx
1
> kubectl get pods -n openebs
Настройте пул cStor и создайте класс хранения
После установки OpenEBS необходимо настроить пул cStor . Если cStor Pool не настроен в вашем кластере OpenEBS, это можно сделать с помощью приведенных здесь инструкций . Сначала определите ваши локальные блочные устройства, выполнив:
Джава
xxxxxxxxxx
1
kubectl get blockdevice -n openebs
2
NAME NODENAME SIZE CLAIMSTATE STATUS AGE
4
blockdevice-11a54a76e84dd32328e4de732b90cc70 gke-yb-ebs-demo-default-pool-e3222e18-hk09 402653184000 Unclaimed Active 4m
5
blockdevice-212662daececcdcd5976b5caeab4c950 gke-yb-ebs-demo-default-pool-e3222e18-hk09 402653184000 Unclaimed Active 4m
6
blockdevice-388b9664ca802b287fd14f5f31ab8f71 gke-yb-ebs-demo-default-pool-e3222e18-trqx 402653184000 Unclaimed Active 4m
Теперь создайте свой пул хранения, используя эти конкретные блочные устройства. Например:
Джава
xxxxxxxxxx
1
#Use the following YAML to create a cStor Storage Pool.
2
apiVersion: openebs.io/v1alpha1
3
kind: StoragePoolClaim
4
metadata:
5
name: cstor-disk-pool
6
annotations:
7
cas.openebs.io/config: |
8
- name: PoolResourceRequests
9
value: |-
10
memory: 2Gi
11
- name: PoolResourceLimits
12
value: |-
13
memory: 4Gi
14
spec:
15
name: cstor-disk-pool
16
type: disk
17
poolSpec:
18
poolType: striped
19
blockDevices:
20
blockDeviceList:
21
# Use the blockdevices that are available to your kubernetes nodes
22
# - blockdevice-11a54a76e84dd32328e4de732b90cc70
23
# - blockdevice-212662daececcdcd5976b5caeab4c950
24
# - blockdevice-388b9664ca802b287fd14f5f31ab8f71
25
---
Вы также должны настроить StorageClass для предоставления тома cStor в данном пуле cStor . StorageClass - это интерфейс, через который определяется большинство политик хранения OpenEBS. В этом решении, мы используем Класс складирование потреблять cStor бассейн, который создается с помощью внешних дисков , прикрепленных к Узлам. Поскольку YugabyteDB является приложением StatefulSet , для него требуется только одна репликация на уровне хранилища. Таким образом, для реплики тома cStor должно быть установлено значение 1. Например:
Джава
xxxxxxxxxx
1
apiVersion: storage.k8s.io/v1
2
kind: StorageClass
3
metadata:
4
name: openebs-sc-rep1
5
annotations:
6
openebs.io/cas-type: cstor
7
cas.openebs.io/config: |
8
- name: StoragePoolClaim
9
value: "cstor-disk-pool"
10
- name: ReplicaCount
11
value: "1"
12
provisioner: openebs.io/provisioner-iscsi
Установка YugabyteDB на кластер GKE с помощью Helm
Следующим шагом является установка YugabyteDB в кластере. Это можно сделать, выполнив шаги здесь .
Основная сводка шагов включает в себя:
- Проверка предварительных условий
- Создание кластера YugabyteDB через Helm
Чтобы убедиться, что вы используете самую последнюю диаграмму Helm, доступную в репозитории Yugabyte, запустите:
Джава
xxxxxxxxxx
1
helm search repo yugabytedb/yugabyte
2
NAME CHART VERSION APP VERSION DESCRIPTION
3
yugabytedb/yugabyte 2.0.9 2.0.9.0-b13 YugaByte Database is the high-performance distr...
Мы будем использовать последнюю доступную версию в нашей команде установки helm. Также обратите внимание, что класс хранения по умолчанию нужно будет переопределить, установив этот параметр при установке диаграммы Хелма. Например:
Джава
xxxxxxxxxx
1
helm install yb-demo yugabytedb/yugabyte --namespace yb-demo --version 2.0.9 --wait --set storage.master.storageClass=openebs-sc-rep1,storage.tserver.storageClass=openebs-sc-rep1
Чтобы убедиться, что YugabyteDB был успешно установлен в GKE, используйте следующую команду:
Джава
xxxxxxxxxx
1
> helm status yb-demo
Это оно! Теперь у вас есть YugabyteDB, работающий на GKE с хранилищем OpenEBS. Следите за новостями в следующем блоге, где мы рассмотрим, как подключить кластер YugabyteDB + OpenEBS к директору OpenEBS . Эта служба SaaS упрощает управление и мониторинг кластера благодаря метрикам Prometheus, журналам и представлению топологии томов OpenEBS через интуитивно понятный пользовательский интерфейс.
Следующие шаги
- Узнайте больше об OpenEBS, посетив GitHub и официальные страницы Документов .
- Узнайте больше о YugabyteDB, посетив GitHub и официальные страницы Документов .