Роутинг и балансировка Go
Этот демон является фронтендом для IPVS с интерфейсом REST API. Вы можете использовать его для управления локальным экземпляром IPVS в ядре, чтобы динамически регистрировать виртуальные сервисы и бэкэнды. Он также поддерживает базовые проверки состояния TCP и HTTP (называемые пульсами GORB).
Бэкэнды, которые не проходят проверку состояния, будут иметь вес, установленный равным нулю, что запрещает направление трафика в их сторону. Когда бэкэнд снова становится доступным, 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 пулинтактом при запуске.
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
Это следует делать периодически для получения любых обновленных зависимостей.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )