LINUX.ORG.RU

Кластер CEPH за HAProxy. Проблема с доступом к дашборду

 ,


0

2

ЛОР, привет. Чё как сам? Я к тебе с проблемой :(

Вобщем есть три ноды кластера цеф:

  • 10.50.8.170
  • 10.50.8.171
  • 10.50.8.172

дашборд в данный момент активен на 10.50.8.171.

HAProxy находится на адресе

  • 10.50.8.185

В ней вот такой конфиг

frontend ceph_dashboard
        bind *:80
        bind *:443 ssl crt /etc/ssl/private/ceph.prod.test.pem
        http-request redirect scheme https unless { ssl_fc }
        use_backend ceph_dashboard

backend ceph_dashboard
        balance roundrobin
        mode http
        server ceph1 10.50.8.170:8080 check
        server ceph2 10.50.8.171:8080 check
        server ceph3 10.50.8.172:8080 check

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

Проблема номер один: одномоментно активным может быть только один дашборд, а остальные менеджеры нод ссылаются на активную версию

while true; do curl --insecure https://10.50.8.185/; sleep 1; done

root@haproxy2:/home/g10# while true; do curl --insecure https://10.50.8.185/; sleep 1; done
This resource can be found at <a href="http://10.50.8.171:8080/">http://10.50.8.171:8080/</a>.
This resource can be found at <a href="http://10.50.8.171:8080/">http://10.50.8.171:8080/</a>.

но раз в 3-5 попыток попадает на нода 10.50.8.171 и выдает хтмл код страницы. Соответственно, если с прокси залетаю на 171, то всё хттпс и всё секурно, если на 170 или 172, то редирект прямиком на хттп порт ноды 171, мимо прокси. Да, можно там фильтрацию настроить какую нибудь и вообще запретить ходить на ноды ниоткуда кроме прокси 185, но тогда вообще 404 будет - ничего ж не найдено. Как это фиксят любители луковых оладий цефа? Как спрятать за проксей много нод и дашборд?

Проблема номер джва: Если вдруг мне везёт и я попадаю прямиком на ноду 171 прямиком с прокси 185, то почему то в адресной строке я вижу адрес ноды, а не адрес прокси. Я ожидал, что в адресной строке окажется адресок прокси, а не ноды самой. Это же в конфиге haproxy какой то параметр за это отвечает? Подскажите, плес, какой.

Спасибо, что выслушал ЛОР. Целую крепко, ваша репка.

не знаком с ceph dashboard, но надо полагать, у одного работающего дашборда в отличии от остальных есть какой-то урл, который отвечает кодом 200.

в haproxy настроить в конфиге бэкенда, чтобы check ходил на него

http-check send meth GET uri /alive/ceph/dashboard

и тогда haproxy будет помечать ноды down и делать недоступными на которых дашборда рабочего нет.

по второй проблеме - выполнить curl -ILv, там будет редирект наверняка от дашборда

keir ★★
()

прямо в документации пишут:

If the dashboard is behind a load-balancing proxy like HAProxy you might want to disable redirection to prevent situations in which internal (unresolvable) URLs are published to the frontend client. Use the following command to get the dashboard to respond with an HTTP error (500 by default) instead of redirecting to the active dashboard:

ceph config set mgr mgr/dashboard/standby_behaviour "error"

To reset the setting to default redirection, use the following command:

ceph config set mgr mgr/dashboard/standby_behaviour "redirect"

И обе твои проблемы решены.

aol ★★★★★
()
Ответ на: комментарий от SpaceRanger

а вообще, раз уж за прокси спрятал, может, и ноды унести в отдельную подсеть, изолировать её от мира, всё такое…

иначе случаются вот такие казусы, как в твоей п.2 вместо ошибки «хост недоступен».

Но это, конечно, вкусовщина уже отчасти.

aol ★★★★★
()