Авторские статьи

Ceph Luminous.


Обновление (update) - это необходимый процесс внесения изменений, которые могут привести, в том числе, и к печальным последствиям. Ещё сложнее процесс перехода на новый релиз (upgrade). Но есть и ещё более сложный процесс - обновление распределённой системы типа Ceph, состоящей из множества серверов и различных компонент. Разработчики с релиза Luminous сделали пару команд, облегающие труд админа.

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

Что спешит к нам на помощь, как Чип и Дейл?

Версии демонов

Версии всех запущенных демонов можно узнать одной командой
ceph versions

{
    "mon": {
        "ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)": 3
    },
    "mgr": {
        "ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)": 1
    },
    "osd": {
        "ceph version 10.2.7-116-g41ac764 (41ac7649ade52628174e58671f2d1aa4a39c2b19)": 2,
        "ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)": 4
    }
    "mds": {
        "ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)": 1
    },
    "overall": {
        "ceph version 10.2.7-116-g41ac764 (41ac7649ade52628174e58671f2d1aa4a39c2b19)": 2,
        "ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)": 9
    }
}

Пример выше иллюстрирует тестовый кластер, который обновился полностью, за исключением 2 OSD. Если вы используете такое понятие как MDS, то помните, что ДО версии Luminous не сообщалось мониторам об данной информации и вы увидите там unknown.

Подсоединённые клиенты

Можете одной командой узнать какие возможности используют демоны и клиенты.
ceph features

В выводе вам покажут версию и битовую маску возможностей (feature bitmask) всех демонов и клиентов, которые подключены в данный момент к мониторам.

{
    "mon": {
        "group": {
            "features": "0x1ffddff8eea4fffb",
            "release": "luminous",
            "num": 3
        }
    },
    "mds": {
        "group": {
            "features": "0x1ffddff8eea4fffb",
            "release": "luminous",
            "num": 1
        }
    },
    "osd": {
        "group": {
            "features": "0x17fddff8ee84bffb",
            "release": "jewel",
            "num": 2
        },
        "group": {
            "features": "0x1ffddff8eea4fffb",
            "release": "luminous",
            "num": 4
        }
    },
    "client": {
        "group": {
            "features": "0x1ffddff8eea4fffb",
            "release": "luminous",
            "num": 1
        }
    }
}

Обратите внимание, что клиент чётко заявляет какие возможности протокола он поддерживает. Это поможет вам безопасно включить возможности Ceph на (его) серверной стороне.

Завершение обновления

Когда ceph versions будет показывать информацию что все ваши OSD обновлены до Luminous, можно будет завершить обновление и включить новые возможности командой ceph osd require-osd-release luminous

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

Совместимость с клиентами

Обычно есть несколько возможностей, которые могут повлиять на старых клиентов Ceph. Исторически, основным исключением из этого правила было изменение в CRUSH (tunables). Например, если вы захотите включить tunables релиза jewel, то можно использовать новую команду
ceph osd set-require-min-compat-client jewel

Данный вариант идёт по умолчанию для новых кластеров Luminous и соответствует клиентской части с ядрами Linux 4.5. Эта настройка minimum compatible client позволяет предотвратить включение любых возможностей, которые могут сломать соединение клиента с серверной частью.

Для примера, установка minimum compatible client = jewel не позволит вам, не обдумавши, включить новую технологию PG upmap, которая была реализована лишь с релиза luminous и тем самым "сломать" взаимодействие клиента, не обладающий в своих библиотеках такой возможностью.

Команда ceph osd pg-upmap 0.0 osd.1 osd.2
Выведет
Error EPERM: min_compat_client jewel < luminous, which is required for pg-upmap. Try 'ceph osd set-require-min-compat-client luminous' before using the new interface

Вывод

Если вы обновите пакеты Ceph и выставите нужный вам minimum compatible client, то сможете быть уверены что в кластере точно нет старых версий OSD и никакие клиенты со старыми версиями ниже заявленной вами не смогут подсоединиться. Ваше обновление на релиз Luminous будет полностью завершено!

Цикл статей про программно-определяемое хранилище Ceph.
BlueStore в Ceph.

Дата последней правки: 2023-12-27 10:14:34

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта