LINUX.ORG.RU
решено ФорумAdmin

Новая нода в GlusterFS ведёт себя неадекватно

 


0

1

Добрый день. Есть gluster из двух нод под тома docker swarm. Всё работает хорошо. Выделили мне наконец третий хост.

Добавляю третий peer, получается

gluster volume info swarm
 
Volume Name: swarm
Type: Replicate
Volume ID: 199f70a6-0f3a-4334-9a26-72048b338b20
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: docker01.ad.local:/gluster/swarm
Brick2: docker02.ad.local:/gluster/swarm
Brick3: docker03.ad.local:/gluster/swarm
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
storage.fips-mode-rchecksum: on

Монтируются сами на себя

df -h
...
/dev/sdb                   60G   14G   47G  23% /gluster
docker03.ad.local:/swarm   60G   15G   46G  24% /srv/volumes

Жду пока пройдет репликация, считаю количество файлов:

find . -type f | wc -l
28595

На всех нодах одинаково.

Создаю на первой ноде файл - он появляется на двух других. Так на каждой. Добавляю цифры в файлики, всё отражается на всех трёх нодах, типа как бы работает.

Удаляю файл на третей ноде - удаляется на первых двух. Удаляю файл на второй ноде - удаляется на первой и третей.

А теперь самое интересное: удаляю файл на первой ноде - он удаляется на второй, но на третьей остаётся! Через несколько секунд он возвращается. на первые две ноды! Причем иногда с теми же данными, а иногда пустой (нулевой длины).

gluster volume heal swarm info

Пишет везде нули.

В логах ошибок нет.

Несколько раз удалял третью ноду и добавлял обратно, ничего не меняется.

К тому же проблема не только с этим, за ночь разъехалось количество файлов, на первых двух одинаково а на третьей пропало около сотни

find . -type f | wc -l
28492

Что же с ним не так?

Есть ли какие-то другие варианты реализации хранилища для docker swarm ?


Попробуй похилить принудительно

gluster volume heal swarm full

Логи посмотри, может там ответ будет о причине. Вообще тормозная она для мелких файлов, для сварма я после долгих мытарств перешёл на двухстороннюю синхронизацию через lsyncd. Скорость синхрона устраивает + скорость самой фс норм, так как считай, что на локальном диске всё хранится.

cubachi
()
Ответ на: комментарий от cubachi

Запустил на третьей ноде. Ну он завалил лог glustershd.log вот такими

[2023-06-30 12:40:09.781548 +0000] E [MSGID: 108008] [afr-self-heal-common.c:386:afr_gfid_split_brain_source] 0-swarm-replicate-0: Gfid mismatch detected for <gfid:9a5ac8a2-7d12-476e-a536-16e53bcb9697>/master>, 6448a84f-35a7-4d3b-9148-dfe095e1409d on swarm-client-2 and a2820f5c-0e79-4781-9139-3aa13f981069 on swarm>
[2023-06-30 12:40:09.787483 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-1: remote operation failed. [{path=/oxidized/repos/best.git/refs/remotes/origin/master}, {gfid=6448a84f-35a7-4d3b-9148-dfe095e1409d}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:09.788592 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-0: remote operation failed. [{path=/oxidized/repos/best.git/refs/remotes/origin/master}, {gfid=6448a84f-35a7-4d3b-9148-dfe095e1409d}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:09.824139 +0000] E [MSGID: 108008] [afr-self-heal-common.c:386:afr_gfid_split_brain_source] 0-swarm-replicate-0: Gfid mismatch detected for <gfid:46cd61d8-5c18-40eb-bba7-3ae6297f1945>/index>, a9dbcc94-3d8b-4c79-bcc9-caf0d9b1585d on swarm-client-2 and 1d838144-458e-4a46-b8f1-fae41eedbc3a on swarm->
[2023-06-30 12:40:09.827242 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-1: remote operation failed. [{path=/oxidized/repos/best.git/index}, {gfid=a9dbcc94-3d8b-4c79-bcc9-caf0d9b1585d}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:09.827787 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-0: remote operation failed. [{path=/oxidized/repos/best.git/index}, {gfid=a9dbcc94-3d8b-4c79-bcc9-caf0d9b1585d}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:09.832984 +0000] E [MSGID: 108008] [afr-self-heal-common.c:386:afr_gfid_split_brain_source] 0-swarm-replicate-0: Gfid mismatch detected for <gfid:46cd61d8-5c18-40eb-bba7-3ae6297f1945>/FETCH_HEAD>, edd602d7-bc78-45eb-a76f-96231d06a429 on swarm-client-2 and d7ca20cf-865d-4d32-a8fe-f5bb9b69be64 on s>
[2023-06-30 12:40:09.836224 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-0: remote operation failed. [{path=/oxidized/repos/best.git/FETCH_HEAD}, {gfid=edd602d7-bc78-45eb-a76f-96231d06a429}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:09.836223 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-1: remote operation failed. [{path=/oxidized/repos/best.git/FETCH_HEAD}, {gfid=edd602d7-bc78-45eb-a76f-96231d06a429}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:10.265277 +0000] E [MSGID: 108008] [afr-self-heal-common.c:386:afr_gfid_split_brain_source] 0-swarm-replicate-0: Gfid mismatch detected for <gfid:d25af1bd-b3fa-4434-bbf3-a6bab984a349>/devices.db>, 0d7e1c82-6a8b-4c16-be28-bc05feedada4 on swarm-client-2 and 103558e4-bf61-4001-8438-343e6a74f221 on s>
[2023-06-30 12:40:10.267807 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-1: remote operation failed. [{path=/oxidized/db/devices.db}, {gfid=0d7e1c82-6a8b-4c16-be28-bc05feedada4}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:10.267855 +0000] W [MSGID: 114031] [client-rpc-fops_v2.c:2618:client4_0_lookup_cbk] 0-swarm-client-0: remote operation failed. [{path=/oxidized/db/devices.db}, {gfid=0d7e1c82-6a8b-4c16-be28-bc05feedada4}, {errno=2}, {error=No such file or directory}]
[2023-06-30 12:40:11.539328 +0000] I [MSGID: 108026] [afr-self-heald.c:1128:afr_shd_full_healer] 0-swarm-replicate-0: finished full sweep on subvol swarm-client-2

Только количество файлов от этого уменьшилось :)

Естественно упомянутые файлы есть на первых двух нодах.

abyss
() автор топика
Ответ на: комментарий от abyss

Я обычно через ппа ставил, возможно что в пакетном что-то криво собрали. Апни с этой репы пакеты. Инструкция по обновлению на сайте есть, там всё просто - выключаешь службу на ноде, обновляешь, запускаешь хил, дожидаешься окончания и переходишь к следующей ноде.

cubachi
()
Ответ на: комментарий от cubachi

Короче там не совсем просто…

Сначала попробовал на третьей ноде обновить, но не особо помогло. Совсем как-то криво стало работать.

Плюнул, остановил все контейнеры

забэкапил содержимое хранилища

apt purge glusterfs-*

Поставил снова из PPA.

В /etc/glusterfs/glusterfsd.vol добавил option transport.socket.bind-address c ip адресом каждого хоста. Потому что проскальзывало в логах dns имя vrrp vip, а оно может гулять и что-то покриветь.

Пришлось поменять в fstab вместо localhost:/gluster/swarm на fqdn:/gluster/swarm иначе не монтировалось.

Последнее сделал на всякий случай, не думаю что оно повлияло.

В итоге всё заработало, сначала потестировал на пустом хранилище, потом перенёс бэкап. Всё четко. Потом решил почистить кой-чего и удалилось еще 2000 файлов с первого хоста. Всё мгновенно отразилось на остальных нодах.

abyss
() автор топика
Последнее исправление: abyss (всего исправлений: 1)