Пример развертывания GlusterFS в Ubuntu Linux

Оцените статью

Подготовка

  • Настройте разрешение DNS-имен на своем внутреннем DNS сервере или пропишите имена хостов в hosts
  • Проверьте, что все хосты будущего кластера доступны как по коротким так и по полным именам

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

# add-apt-repository ppa:gluster/glusterfs-9
# apt install glusterfs-client glusterfs-server
# systemctl start glusterd.service
# systemctl enable glusterd.service

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

  • 24007-24010 TCP
  • 49152-49153 TCP
  • 38465-38467 TCP
  • 111 TCP/UDP

Пример настроек для UFW в Ubuntu Linux:

# ufw allow from 185.133.42.65 to any port 24007:24010 proto tcp
# ufw allow from 185.133.42.65 to any port 49152:49153 proto tcp
# ufw allow from 185.133.42.65 to any port 38465:38467 proto tcp
# ufw allow from 185.133.42.65 to any port 111 proto tcp
# ufw allow from 185.133.42.65 to any port 111 proto udp

Дружим кластер

К первому узлу добавляем два других.

# gluster peer probe prod-srv-02
# gluster peer probe prod-srv-03

Проверяем статус Gluster-а из трех узлов.

# gluster peer status
Number of Peers: 2

Hostname: prod-srv-02
Uuid: 0e496b5f-6419-42fd-9e68-12304b2408c9
State: Peer in Cluster (Connected)

Hostname: prod-srv-03
Uuid: 8859e4d4-bd54-40e8-be9b-5e6879b25eac
State: Peer in Cluster (Connected)

Пока все идет хорошо, но есть нюанс с запросом статуса с других узлов, где центральный узел не по имени, а по IP-адресу.

# gluster peer status
Number of Peers: 2

Hostname: 185.133.42.65
Uuid: d6f8728c-dfc7-48d5-96b2-1c0bcde88638
State: Peer in Cluster (Connected)

Hostname: prod-srv-02
Uuid: 0e496b5f-6419-42fd-9e68-12304b2408c9
State: Peer in Cluster (Connected)

Создаем хранилище

На каждом из узлов создаем каталог для хранилища данных GlusterFS.

# mkdir /opt/gluster-storage

Собираем хранилище из трех томов, обратите внимание, что один из хостов будет по IP-адресу так-как он не резолвится в PTR.

# gluster volume create gluster_volume replica 3 185.133.42.65:/opt/gluster-storage/ prod-srv-02:/opt/gluster-storage/ prod-srv-03:/opt/gluster-storage/

Пример для системы из двух хостов и одного арбитра.

# gluster volume create gluster_volume replica 3 185.133.42.65:/opt/gluster-storage/ prod-srv-02:/opt/gluster-storage/ prod-srv-03:/opt/gluster-storage/

В случае ошибки:

volume create: gluster_volume: failed: The brick prod-srv-02:/opt/gluster-storage is being created in the root partition. It is recommended that you don’t use the system’s
root partition for storage backend. Or use ‘force’ at the end of the command if you want to override this behavior.

Добавляем в конце команды «force»

В случае ошибки:

volume create: gluster_volume: failed: Staging failed on prod-srv-03. Error: Host prod-srv-03 is not in ‘Peer in Cluster’ state

Проверьте записи в файле hosts на наличие ошибок

Проверяем статус тома:

# gluster volume info

Volume Name: gluster_volume
Type: Replicate
Volume ID: 2e4cd540-117a-412b-8985-b516e568bc4c
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 3=3
Transport-type: tcp
Bricks:
Brick1: 185.133.42.65:/opt/gluster-storage
Brick2: prod-srv-02:/opt/gluster-storage
Brick3: prod-srv-03:/opt/gluster-storage
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off# gluster volume info

Volume Name: gluster_volume
Type: Replicate
Volume ID: 2e4cd540-117a-412b-8985-b516e568bc4c
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 3=3
Transport-type: tcp
Bricks:
Brick1: 185.133.42.65:/opt/gluster-storage
Brick2: prod-srv-02:/opt/gluster-storage
Brick3: prod-srv-03:/opt/gluster-storage
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

Запускаем том:

# gluster volume start gluster_volume

Настройка и запуск клиентов на узлах кластера

На каждом узле кластера создаем точку монтирования.

# mkdir /mnt/gluster-storage

Прописываем монтирование glusterfs в fstab

localhost:/gluster_volume /mnt/gluster-storage glusterfs defaults,_netdev 0 0

Вариант с FailOver-сервером

gluster-1:/gluster_volume /mnt/gluster-storage glusterfs defaults,_netdev,backupvolfile-server=gluster-2 0 0

Для чистоты эксперимента можно попробовать перезагружать хосты (если не прод-контур конечно)

Тестирование производительности

Три гео-распределенных узла объединенные каналом максимум 100 мегабит, без VPN.

На хосте

Линейная запись

# dd if=/dev/zero of=/tmp/test.bin bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 3,13427 s, 343 MB/s

Линейное чтение

# dd if=/tmp/test.bin of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 1,80814 s, 594 MB/s

В точке монтирования GlusterFS

Линейная запись

# dd if=/dev/zero of=/mnt/gluster-storage/test.bin bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 272,866 s, 3,9 MB/s

Линейное чтение

# dd if=/mnt/gluster-storage/test.bin of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 5,60246 s, 192 MB/s

Вполне предсказуемый результат.

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS