klink0v (klink0v) wrote,
klink0v
klink0v

Category:

Упражнения с vmWare vCloud Director

... Продолжаю решать крайне долбанутые задачи. Жизнь идёт, ничего не меняется.

Дано. Облако vmWare vCloud. Внутри несколько виртуалок с разными сервисами. Каждый сервис (и каждая виртуалка) хочет что-то отдавать внаружу по HTTPS, прикрываясь своим собственным X509-сертификатом. Но вот внешний честный (белый) IP-адрес у всего это добра только один...

У этого vCloud есть так называемый Edge, к которому прикручен Load Balancer, который, в свою очередь, представляет из себя самый обыкновенный HAProxy. Который вполне себе умеет поставленную задачу решать. Но! Нельзя просто так взять и ручками подправить его конфиг. Всё это обвешано разухабистой веб-мордой и раскидано по разным разделам, менюшечкам, рюшечкам, кнопочкам, переключателям. Так, что хрен вообще проссышь куда надо тыкать для достижения требуемого эффекта. Да и в целом интерфейс этого vCloud Director делает меня сильно грустить. Хотя бы одним только фактом того, что кнопки "OK" и "Cancel" здесь называются "Keep" и "Discard".

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


  • Сначала "Load Balancer", "Application Profile", создать профиль с типом "TCP" (всё).

  • Потом "Load Balancer", "Pools", создать N пулов по количеству сервисов, добавить в эти пулы нужные виртуалки. Если виртуалка всего одна, всё равно создавать пул и выбирать "Round Robin" в качестве метода распределения нагрузки, включить опцию "Transparent".

  • "Load Balancer", "Application Rules", создать N правил (можно и всё в одно запихнуть). Про правила чуть ниже. И да, дальше совсем прикол. Официальная документация от vCloud тупо отсылает к вики HAProxy за разъяснением синтаксиса скриптов этих правил. Причём, в моем случае, ещё и на тухлую версию этой вики. При полной невозможности посмотреть хотя бы версию этого самого HAProxy.

  • "Load Balancer", "Virtual Server". Создаем новый "виртуальный сервер", говорим чтобы он слушал на TCP:443 на внешнем IP-адресе. Протокол обязательно должен совпадать с профилем приложения, созданным на первом шаге. Говорим "Enable Acceleration", выбираем Pool по умолчанию, идём на вкладку "Advanced" и там привязываем созданные на предыдущем шаге правила, причём их порядок имеет значение.

Если мы сделали что-то неправильно, об этом никто не скажет. Просто задуманное не будет работать, всё уйдёт в Default Pool независимо от наших манипуляций. Где там у него прикопаны логи чтобы почитать их, я так и не разобрался...

Правила выглядят примерно так.

Можно это всё впихнуть в одно правило, можно разбить на несколько. В последнем случае надо внимательно смотреть в каком порядке они привязываются к Virtual Server. Первые две инструкции всегда должны идти первыми. И да, без них ничего не работает.

Вот же ж блин. Если бы можно было тупо вписать всё это безобразие прямо в конфиг HAProxy, получилось бы семь строчек текста. Но нет же, это было бы слишком просто...

Эти корпоративные продукты такие корпоративные...

Tags: it, виртуализация, работа, сети
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 23 comments