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

OSCHINA-MIRROR/AliyunContainerService-gorb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ГОРБ Статус сборки codecov.io

Роутинг и балансировка Go

Этот демон является фронтендом для IPVS с интерфейсом REST API. Вы можете использовать его для управления локальным экземпляром IPVS в ядре, чтобы динамически регистрировать виртуальные сервисы и бэкэнды. Он также поддерживает базовые проверки состояния TCP и HTTP (называемые пульсами GORB).

  • TCP: пытается установить TCP соединение с хостом и портом бэкэнда.
  • HTTP: пытается получить указанный URI с хоста и порта бэкэнда.

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

GORB также поддерживает регистрацию базового открытия услуг через Consul: просто передайте конечную точку Consul в GORB, и он возьмет на себя все остальное — ваши услуги будут зарегистрированы с именами типа nginx-80-tcp. Учтите, что вы можете использовать встроенный DNS сервер Consul, чтобы сделать открытие ваших услуг ещё более простым!Просмотрите эти слайды для моего доклада на DockerCon EU 2015 для получения дополнительной информации о IPVS, GORB и том, как использовать его вместе с Docker.

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

Не требуется много конфигураций — всего несколько опций можно указать на командной строке:

gorb [-c <consul-address>] [-f flush-pools] [-i interface] [-l listen-address] | -h

По умолчанию, GORB будет слушать на :4672, привязывать службы на eth0 и сохранять ваш IPVS пулинтактом при запуске.

REST API

  • PUT /service/<service> создает новый виртуальный сервис с предоставленными опциями. Если host опущен, GORB автоматически выберет адрес на основе настроенного устройства по умолчанию:
{
    "host": "10.0.0.1",
    "port": 12345,
    "protocol": "tcp|udp",
    "method": "rr|wrr|lc|wlc|lblc|lblcr|sh|dh|sed|nq|...",
    "persistent": true,
    "flags": "sh-fallback|sh-port",
}

Этот планировщик имеет два флага: sh-fallback, который включает переход на другой сервер, если выбранный сервер был недоступен, и sh-port, который добавляет номер источника порта к вычислению хэша.

  • PUT /service/<сервис>/<бэкенд> создает новый бэкенд, прикрепленный к виртуальному сервису:
{
    "host": "10.1.0.1",
    "port": 12346,
    "method": "nat|tunnel",
    "pulse": {
        "type": "none|tcp|http",
        "args": {
            "method": "GET",
            "path": "/health",
            "expect": 200
        },
        "interval": "5s"
    },
    "weight": 100
}
```- `DELETE /service/<сервис>` удаляет указанный виртуальный сервис и все его бэкенд-узлы.
- `DELETE /service/<сервис>/<бэкенд>` удаляет указанный бэкенд-узел из виртуального сервиса.
- `GET /service/<сервис>` возвращает конфигурацию виртуального сервиса.
- `GET /service/<сервис>/<бэкенд>` возвращает конфигурацию бэкенд-узла и метрики состояния здоровья.
- `PATCH /service/<сервис>` обновляет конфигурацию виртуального сервиса.
- `PATCH /service/<сервис>/<бэкенд>` обновляет конфигурацию бэкенд-узла и метрики состояния здоровья.Для получения более подробной информации и описания различных вариантов конфигураций обратитесь к [`man 8 ipvsadm`](http://linux.die.net/man/8/ipvsadm).

## Разработка

Используйте glide для установки зависимостей:

```bash
glide install -v

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

TODO

  • Добавить больше опций для Gorb Pulse: пороги, экспоненциальное увеличение времени повтора и так далее.
  • Поддержка статистики IPVS (требуется поддержка GNL2GO первой).
  • Поддержка FWMARK & DR виртуальных сервисов (требуется поддержка GNL2GO первой).
  • Добавить поддержку открытия служб, например автоматической регистрации службы Consul.
  • Добавить объявление маршрутов BGP, чтобы несколько GORB могли открывать службу на одном IP через весь кластер.
  • Добавить простой графический интерфейс пользователя для представления того же набора действий, но в удобном для пользователя виде.
  • Заменить командные строки опций правильной конфигурацией через файл JSON/YAML/TOML.

Комментарии ( 0 )

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

Введение

Маршрутизация и балансировка в Go. Развернуть Свернуть
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/AliyunContainerService-gorb.git
git@api.gitlife.ru:oschina-mirror/AliyunContainerService-gorb.git
oschina-mirror
AliyunContainerService-gorb
AliyunContainerService-gorb
master