1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iresty-lua-resty-etcd

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
health_check.md 8.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 18:46 11d6cd1

Проверка состояния кластера etcd

Описание

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

Методы

init

syntax: health_check, err = health_check.init(params)

Инициализирует объект системы проверки состояния, переопределяя значения параметров по умолчанию переданными. В случае ошибок возвращает nil и строку, описывающую ошибку.

report_failure

syntax: health_check.report_failure(etcd_host)

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

get_target_status

syntax: healthy, err = health_check.get_target_status(etcd_host)

Получает текущее состояние цели.

get_check_mode

syntax: mode = health_check.get_check_mode()

Получает текущий режим работы системы проверки состояния. Когда mode равен round-robin, это указывает на работу в режиме Round robin, а shared-dict указывает на работу в режиме Policy, disabled указывает на отключенное состояние системы проверки.

Для получения текущего режима работы системы проверки состояния можно использовать health_check.ROUND_ROBIN_MODE и health_check.SHARED_DICT_MODE, health_check.DISABLED_MODE для сравнения и проверки.

disable

syntax: mode = health_check.disable()Отключает систему проверки состояния.

Конфигурация

name Type Обязательность Default Description
shm_name string необязательный Декларативный lua_shared_dict используется для хранения состояния здоровья конечных точек; если этот параметр не установлен, проверка будет возвращена в режим round-robin проверки.
fail_timeout integer необязательный 10 Устанавливает время, в течение которого должно произойти указанное количество неудачных попыток связи с конечной точкой, чтобы пометить её недоступной, а также устанавливает период времени, в течение которого конечная точка будет помечена как недоступная.
max_fails integer необязательный 1 Устанавливает количество неудачных попыток, которое должно произойти в течение периода fail_timeout, чтобы пометить конечную точку как недоступную. Эта конфигурация действует только при политике проверки.
retry bool необязательный false Автоматически повторяет попытку со следующей конечной точкой при неудаче операции.

Пример

Политика основного состояния здоровья

local health_check, err = require("resty.etcd.health_check").init({
    shm_name = "healthcheck_shm",
    fail_timeout = 10,
    max_fails = 1,
    retry = false,
})
```При достижении значения `fail_timeout`, если будет зафиксировано `max_fails` последовательных ошибок, конечная точка будет помечена как нездоровая. Нездоровая конечная точка не будет выбрана для соединения в течение времени, указанного значением `fail_timeout`.

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

Счетчики ошибок и состояние здоровья каждой конечной точки etcd являются общими для всех рабочих процессов и различных клиентов etcd.

Примечание: значения `fail_timeout`, `max_fails` и `retry` после инициализации будут сброшены только при смене режима работы механизма проверки состояния здоровья.

### Округление по круговой системе

```lua
local health_check, err = require("resty.etcd.health_check").init({
    fail_timeout = 10,
    retry = false,
})

Проверка состояния здоровья по круговой системе. Когда конечная точка становится недоступной, она помечается как нездоровая и не используется для соединения в течение времени, указанного значением fail_timeout (выбирается следующая здоровая конечная точка для соединения).

Нездоровые узлы будут возвращены в пул выбора здоровых узлов после истечения времени, указанного значением fail_timeout.

Статус нездоровых узлов etcd действителен только для текущего рабочего процесса.## Краткий обзор

http {
    # Обязательное объявление зоны общей памяти для хранения состояния здоровья конечных точек
    # Если вы используете метод округления для проверки состояния здоровья, вам не нужно устанавливать это
    lua_shared_dict healthcheck_shm 1m;

    server {
        location = /healthcheck {
            content_by_lua_block {
                # Возможность использования функции проверки состояния здоровья является опциональной и может быть включена с помощью следующей конфигурации.
                # Если вы используете метод округления для проверки состояния здоровья, вам не нужно устанавливать это
                local health_check, err = require("resty.etcd.health_check").init({
                    shm_name = "healthcheck_shm",
                    fail_timeout = 10,
                    max_fails = 1,
                    retry = false,
                })
Локальная переменная `etcd`, ошибки = требовать("resty.etcd").новый({
    протокол = "v3",
    http_host = {
        "http://127.0.0.1:12379",
        "http://127.0.0.1:22379",
        "http://127.0.0.1:32379",
    },
    пользователь = 'root',
    пароль = 'abc123',
})

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/iresty-lua-resty-etcd.git
git@api.gitlife.ru:oschina-mirror/iresty-lua-resty-etcd.git
oschina-mirror
iresty-lua-resty-etcd
iresty-lua-resty-etcd
master