LINUX.ORG.RU

Гибридное облако в домашних условиях

 , , , ,


0

3

Привет ЛОР.

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

Дано:

  • Домашний сервер (потребительское железо, i3, 16ram, белый ip)
  • Некоторое количество весьма слабых виртуалок в DO (можно смигрировать к другому провайдеру, но хотесло бы остаться).

Собственно, что я хочу:

  1. связать домашний сервер и виртуалки в единую сеть
  2. иметь возможность быстро и легко деплоить docker контейнеры в сети
  3. при этом иметь возможность что-то деплоить только на домашний сервер или только в DO
  4. мониторинг всех контейнеров и автоматический перезапуск упавших
  5. легко добавлять новые виртуалки в DO в эту схему
  6. централизовать управление конфигурациями
  7. контейнеры на домашнем сервере могут смотреть в интернет, а могут и не смотреть
  8. единый домен для всего, то бишь все сервисы доступны из домашней сети по *.example.com, из вне тоже самое, за исключением сервисов, которые явно не должны смотреть наружу + иметь возможность таки достучаться до них через впн
  9. при потере интернета в домашней сети, локальные ресурсы остаются доступны по тем же адресам, тоже самое извне - внешние доступны, локальные нет

пока мне видится это так:

  • ansible для управления конфигурациями виртуалок и домашнего сервера
  • на домашнем рутере openvpn сервер к которому подключаются все виртуалки, как правильно настроить роуты пока для меня закадка, но думаю это легко должно гуглиться
  • kubernetes на домашнем сервере для управления контейнерами, но тут не понятно как это связать с пунктами 1, 3, 7, 8 и 9
  • dnsmasq или что-то подобное на домашнем рутере для резолва внутренних ресурсов, особенно когда нет интернета (?)
  • не уверен, но возможно с пунктом 5 мне поможет openstack, но не будет ли это оверкил? какие алтернативы?
  • ???

Особенно остро непонимание как реализовать 3 и 7, и в случае отсутсвия интернетов дома пункт 4

В сложных сетях и вообще построению того, что мне хочется шарю крайне мало, от ЛОРа прошу советов по инструментам, маны, направления о которых искать маны и все, что поможет мне решить сию задачу. Готов много читать, курить и пробовать.

Везде будет centos 7 скорее всего. основная масса сервисов (60-70%) будет на домашнем сервере.

Имею базовые умения ansible, docker и конфигуряния openvpn.


связать домашний сервер и виртуалки в единую сеть

https://www.weave.works/

иметь возможность быстро и легко деплоить docker контейнеры в сети

docker-compose (или я не понял, что значит «в сети»)

мониторинг всех контейнеров

munin на хосте

и автоматический перезапуск упавших

Пока ни разу не сталкивался с падением контейнеров

KRoN73 ★★★★★ ()

Kubernetes (а лучше Openshift) умеет практически всё перечисленное.

1. в опеншифте все хосты связываются через SDN
3. хостам присваюватся метки (region=local, region=do), через NodeSelector можно ограничивать проекты и поды.
8. решается через Routes, там haproxy правильно роутит запрос на нужный контейнер
9. вероятно, нужно вешать два дублирующих роутера, не уверен

В Openshift для мониторинга деплоиться Hawkular, для логов (как контейнеров так и хостов) - EFK.

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

Пока ни разу не сталкивался с падением контейнеров

для чего мне это нужно: если виртуалка померла, то, что на ней работало должно восстановиться на другой виртуалке. kubernetes это предоставляет, на сколько я понимаю.

ну и кривого приложения внутри никто не отменял

docker-compose (или я не понял, что значит «в сети»)

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

собственно основная с ним проблема это как реализовать пункты 3, 7, 8 и 9. предложенный weave, похоже, решает часть проблем, но не уверен про 3 и 7. буду копать доку

staz ()
Ответ на: комментарий от vrutkovs

благодарю, буду копать дальше в этом направлении.

по пункту 7 что-нибудь подскажете? он очень критичен

staz ()
Ответ на: комментарий от staz

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

Правильно делаешь

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

Тут я не очень понял - некоторым контейнерам нужно запретить смотреть в интернет? Тут проще перенести их на одну ноду, где это запретить. Как запрещать интернеты выборочным контейнерам я не знаю - тут видимо нужно пилить особые правила для iptables

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

еще вопросик:

я так понимаю, мне нужно держать два инстанса kubernetes на случай, если домашний интернет отвалится, один на локальном сервере, другой где то в DO. верна ли моя гипотеза, и если да, то смогут ли они синхронизироваться после восстановления интернета?

staz ()
Ответ на: комментарий от vrutkovs

верно. на домашнем сервере часть контейнеров должны быть доступны через интернет, часть только в рамках vpn.

staz ()
Ответ на: комментарий от staz

мне нужно держать два инстанса kubernetes

Что ты подразумеваешь под выражением «инстанс Kubernetes»?

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

я так понимаю, мне нужно держать два инстанса kubernetes

Кластер один, но в нём два мастера - по одному в каждой зоне (хотя рекомендуют три)

смогут ли они синхронизироваться после восстановления интернета

Да.

vrutkovs ★★ ()
Последнее исправление: vrutkovs (всего исправлений: 1)
Ответ на: комментарий от dvrts

Master Node, на сколько я понимаю. ведь именно он рулит всеми контейнерами?

staz ()
Ответ на: комментарий от vrutkovs

отлично, спасибо. три мне будет замного, у меня серверов то раз-два и обчелся. это все-таки не продакшен

staz ()
Ответ на: комментарий от staz

На одном хосте можно запускать и мастер и ноду (не рекомендуется, конечно)

vrutkovs ★★ ()
Последнее исправление: vrutkovs (всего исправлений: 1)
Ответ на: комментарий от staz

Что ты подразумеваешь под выражением «рулит всеми контейнерами»?

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

Вопросы задаю потому что неясно что ты имеешь ввиду.

dvrts ★★★ ()

контейнеры на домашнем сервере могут смотреть в интернет, а могут и не смотреть

Это можно решить с помощью межсетевого экрана.


P.S. Облако just for fun?

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

for fun, и чтобы облегчить себе управление всем этим хозяйством. пока все делается ручками и меня это сильно печалит

staz ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.