CoreOS: как установить зависимости для контейнеров Docker в облачной конфигурации?

У меня есть базовый cloud-config.yaml для запуска четырех контейнеров в CoreOS (напрямую, без кластеризации). Два контейнера ( nginx-gen и nginx-letsencrypt ) монтируют тома из контейнера с именем nginx . Каждый запуск контейнера определяется как модуль systemd.

Я добавил After = и Requires = зависимости, однако при первом входе в систему меня приветствуют: Brick server01: / var / lib / glusterfs / brick01 / ...

Я только что проверял состояние моих томов glusterfs, и у меня есть один с записями разделенного мозга, у которых нет пути:

# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2

Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2

Что это означает? Как мне это исправить?

Я использую GlusterFS 3.5.9:

# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git
11
задан 12 January 2017 в 11:43
4 ответа

Что такое Split-Brain?

Как упоминается в Официальной документации по управлению Split-Brain , предоставленной RedHat, split-brain - это состояние, когда данные или несоответствия доступности, возникающие из-за обслуживания двух отдельных наборов данных с перекрытием в области действия, либо из-за серверов в структуре сети, либо из-за состояния отказа, основанного на том, что серверы не обмениваются данными и не синхронизируют свои данные друг с другом. И это термин, применимый к репликации конфигурации.

Обратите внимание, что говорится «состояние отказа, основанное на том, что серверы не обмениваются данными и не синхронизируют свои данные друг с другом» - из-за любой вероятности - но это не означает, что ваши узлы могут потерять соединение. Партнер может быть еще в кластере и подключен.

Типы разделенного мозга:

У нас есть три различных типа разделенного мозга, и, насколько я могу судить, ваш - вход в разделенный мозг. Чтобы объяснить три типа разделенного мозга:

  • Разделение данных по мозгу: Содержимое файла в разделенном мозге различается в разных парах реплик, и автоматическое лечение невозможно.

  • Метаданные разделенного мозга: . Метаданные файлов (например, расширенный атрибут, определяемый пользователем) отличаются, и автоматическое лечение невозможно.

  • Запись с разделенным мозгом: Это происходит, когда файл имеет разные gfid для каждой пары реплик. .


Что такое GFID?

Внутренний идентификатор файла GlusterFS (GFID) - это uuid, уникальный для каждого файла во всем кластере. Это аналог номера inode в нормальной файловой системе. GFID файла хранится в его xattr с именем trust.gfid .Чтобы найти путь от GFID, я настоятельно рекомендую вам прочитать эту официальную статью , предоставленную GlusterFS.


Как разрешить запись с разделенным мозгом?

Существует несколько методов предотвращения возникновения разделенного мозга, но для его решения необходимо удалить соответствующие файлы gfid-link. Файлы gfid-link находятся в каталоге .glusterfs в каталоге верхнего уровня блока. Кстати, имейте в виду, что перед удалением gfid-ссылок вы должны убедиться, что на этом кирпичике нет жестких ссылок на файлы. Если жесткие ссылки существуют, вы также должны их удалить. Затем вы можете использовать процесс самовосстановления, выполнив следующие команды.

Тем временем, чтобы просмотреть список файлов на томе, которые находятся в состоянии разделенного мозга, вы можете использовать:

# gluster volume heal VOLNAME info split-brain

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

Чтобы проверить состояние восстановления томов и файлов, вы можете использовать:

# gluster volume heal VOLNAME info

Поскольку вы используете версию 3.5 , у вас нет автоматического исцеления. Итак, после выполнения шагов, упомянутых ранее, Вам необходимо запустить самовосстановление. Для этого:

  • Только для файлов, требующих лечения:

    # gluster volume heal VOLNAME

  • Для всех файлов:

    # gluster volume heal VOLNAME full

Надеюсь, это поможет вам устраняя вашу проблему. Пожалуйста, прочтите официальную документацию для получения дополнительной информации. Ура.

8
ответ дан 2 December 2019 в 21:51

Я думаю, что документ достаточно ясен, он даже дал вам аналогичный пример.

А для команд лечения Gluesterfs, таких как

gluster volume heal **VOLNAME** split-brain latest-mtime **FILE**

FILE, может быть либо полное имя файла, как видно из корня тома (или) представление файла в виде строки gfid

Так что вы не об этом не нужно беспокоиться.

И как convert GFID to path говорит:

Внутренний идентификатор файла GlusterFS (GFID) - это uuid, уникальный для каждого файла во всем кластере.

этот скрипт может сказать вам, какое имя файла принадлежит какому gfid, но произошло разделение мозга, у него может не быть имени файла.

Вы используете 3.5 и не имеете полуавтоматического heal cmd, поэтому вам может потребоваться исправить конфликт вручную, что обычно означает решение, какой файл gfid необходимо удалить.

2
ответ дан 2 December 2019 в 21:51

Как это исправить?

Разрешение разделенного мозга можно найти здесь . В случае, если это не сильно поможет, руководство с инструкциями здесь должно помочь. В этом случае я вижу , статья также полезна.

Как избежать разделения мозга.

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

Некоторые примеры.

VMware VSAN позволяет запускать двухузловой кластер с привод-свидетель, работающий на третьем хосте или в облаке. Источник

StarWind Virtual SAN работает только с двухузловой настройкой с использованием службы Microsoft Failover Cluster, которая также содержит механизм голосования по кворуму, чтобы избежать проблемы разделения мозгов. Источник

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

2
ответ дан 2 December 2019 в 21:51

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

split brain

Чтобы исправить это, вы должны понять, почему два ваших узла больше не разговаривают друг с другом.

1
ответ дан 2 December 2019 в 21:51

Теги

Похожие вопросы