Compare languages | Модуль linstor: примеры конфигурации

Текущая версия модуля устарела и больше не поддерживается. Переключитесь на использование модуля sds-drbd.

This version of the module is deprecated and is no longer supported. Use the sds-drbd module instead.

Работоспособность модуля гарантируется только в следующих случаях:

The module is guaranteed to work only in the following cases:

Работоспособность модуля в других условиях возможна, но не гарантируется.

In all other cases, the module may work, but its full functionality is not guaranteed.

После включения модуля кластер автоматически настраивается на использование LINSTOR и остается только сконфигурировать хранилище.

After enabling the module, the cluster is automatically configured to use LINSTOR, and all that remains is to configure the storage.

Отдельные функции модуля могут потребовать указания мастер-пароля (к примеру, использование резервного копирования в удаленное S3-хранилище). Чтобы задать мастер-пароль, создайте Secret в пространстве имен d8-system:

Some module functions may require a master passphrase (For example, remote S3 storage for backup purposes usage).
To set a master passphrase, create a Secret in the d8-system namespace:

yaml apiVersion: v1 kind: Secret metadata: name: linstor-passphrase namespace: d8-system immutable: true stringData: MASTER_PASSPHRASE: !пароль # Мастер-пароль для LINSTOR.

yaml apiVersion: v1 kind: Secret metadata: name: linstor-passphrase namespace: d8-system immutable: true stringData: MASTER_PASSPHRASE: !passphrase # Master passphrase for LINSTOR

Подойдите ответственно к выбору мастер-пароля для LINSTOR. При его потере зашифрованные данные окажутся недоступными.

Choose a strong passphrase and store it securely. If it get lost, the encrypted data will be inaccessible.

Конфигурация хранилища LINSTOR

LINSTOR storage configuration

Конфигурация LINSTOR в Deckhouse осуществляется посредством назначения специального тега linstor-<имя_пула> на LVM-группу томов или LVMThin-пул.

LINSTOR in Deckhouse can be configured by assigning special tag linstor-<pool_name> to an LVM volume group or LVMThin pool.

  1. Выберите имя тега.
  1. Choose the tag name.

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

The tag name must be unique within the same node. Therefore, before assigning a new tag, make sure that other volume groups and thin pools do not have this tag already.

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

Execute the following commands to get list volume groups and pools:

shell LVM пулы vgs -o+tags | awk ‘NR==1;$NF~/linstor-/’ LVMThin пулы lvs -o+tags | awk ‘NR==1;$NF~/linstor-/’

shell LVM pools vgs -o+tags | awk ‘NR==1;$NF~/linstor-/’ LVMThin pools lvs -o+tags | awk ‘NR==1;$NF~/linstor-/’

  1. Добавьте пулы.
  1. Add pools.

Создайте пулы хранения на всех узлах, где вы планируете хранить ваши данные. Используйте одинаковые имена пулов хранения на разных узлах, если хотите иметь для них общий StorageClass.

Add pools on all nodes where you plan to store your data. Use the same names for the storage pools on the different nodes if you want to achieve a general StorageClasses created for all of them.

  • Чтобы добавить пул LVM, создайте группу томов с тегом linstor-<имя_пула> либо добавьте тег linstor-<имя_пула> существующей группе.
  • To add an LVM pool, create a volume group with the linstor-<pool_name> tag, or the linstor-<pool_name> tag to an existing volume group.

Пример команды создания группы томов vg0 с тегом linstor-data:

Example of command to create a volume group vg0 with the linstor-data tag :

shell vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 –add-tag linstor-data

shell vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 –add-tag linstor-data

Пример команды добавления тега linstor-data существующей группе томов vg0:

Example of command to add the linstor-data tag to an existing volume group vg0:

shell vgchange vg0 –add-tag linstor-data

shell vgchange vg0 –add-tag linstor-data

  • Чтобы добавить пул LVMThin, создайте LVMThin-пул с тегом linstor-<имя_пула>.
  • To add an LVMThin pool, create a LVM thin pool with the linstor-<pool_name> tag.

Пример команды создания LVMThin-пула vg0/thindata с тегом linstor-data:

Example of command to create the LVMThin pool vg0/thindata with the linstor-data tag:

shell vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 lvcreate -l 100%FREE -T vg0/thindata –add-tag linstor-thindata

shell vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 lvcreate -l 100%FREE -T vg0/thindata –add-tag linstor-thindata

Обратите внимание, что сама группа томов не обязана содержать какой-либо тег.

Note! The group itself should not have this tag configured.

  1. Проверьте создание StorageClass.
  1. Check the creation of StorageClass.

Когда все пулы хранения будут созданы, появятся три новых StorageClass’а. Проверьте, что они создались, выполнив в кластере Kubernetes команду:

Three new StorageClasses will appear when all the storage pools have been created. Check that they were created by running the following command in the Kubernetes cluster:

shell kubectl get storageclass

shell kubectl get storageclass

Пример вывода списка StorageClass:

Example of the output:

shell $ kubectl get storageclass NAME PROVISIONER AGE linstor-data-r1 linstor.csi.linbit.com 143s linstor-data-r2 linstor.csi.linbit.com 142s linstor-data-r3 linstor.csi.linbit.com 142s

shell $ kubectl get storageclass NAME PROVISIONER AGE linstor-data-r1 linstor.csi.linbit.com 143s linstor-data-r2 linstor.csi.linbit.com 142s linstor-data-r3 linstor.csi.linbit.com 142s

Каждый StorageClass можно использовать для создания томов соответственно с одной, двумя или тремя репликами в ваших пулах хранения.

Each StorageClass can be used to create volumes with one, two, or three replicas in your storage pools, respectively.

При необходимости изучите пример расширенной конфигурации LINSTOR, но мы рекомендуем придерживаться приведенного выше упрощенного руководства.

You can always refer to Advanced LINSTOR Configuration if needed, but we strongly recommend sticking to this simplified guide.

Дополнительные возможности для приложений, использующих хранилище LINSTOR

Additional features for your applications using LINSTOR storage

Размещение приложения «поближе» к данным (data locality)

Placing the application “closer” to the data (data locality)

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

In a hyperconverged infrastructure you may want your Pods to run on the same nodes as their data volumes, as it can help get the best performance from the storage.

Для решения этой задачи модуль linstor предоставляет специальный планировщик linstor, который учитывает размещение данных в хранилище и старается размещать под в первую очередь на тех узлах, где данные доступны локально.

The linstor module provides a custom kube-scheduler linstor for such tasks, that takes into account the placement of data in storage and tries to place Pod first on those nodes where data is available locally.

Любой под, использующий тома linstor, будет автоматически настроен на использование планировщика linstor.

Any Pod using linstor volumes will be automatically configured to use the linstor scheduler.

Перенос приложения при проблемах с узлом (storage-based fencing)

Application reschedule in case of node problem (storage-based fencing)

Если приложение не умеет работать в режиме высокой доступности и работает в одном экземпляре, может возникнуть задача принудительного переноса приложения с узла, на котором возникли проблемы (например, если возникли проблемы с сетевой, дисковой подсистемой и т. д.). Модуль linstor автоматически удалит поды с узла, где возникли проблемы (с хранилищем, сетью и т. п.), и вешает дополнительный taint на него, что позволяет перезапустить поды на других исправных узлах в кластере.

In case your application does not support high availability and runs in a single instance, you may want to force a migration from a node where problems occurred may arise. For example, if there are network issues, disk subsystem issues, etc.

 

The linstor module automatically removes the Pods from the node where the problem occurred (network or storage issues, etc.) and adds specfic taint on it that guarantees restarting pods on other healthy nodes in a cluster.