Запуск программы Elixir в рое Кубернетес - PullRequest
0 голосов
/ 04 июля 2018

Я довольно плохо знаком с Elixir и технологиями оркестровки контейнеров, такими как Kubernetes. Я знаю, что Elixir работает на BEAM, что, как я слышал, позволяет легко запускать программы в сети компьютеров. Из того, что я понимаю о Kubernetes, Kubernetes управляет рой контейнеров в виртуальной сети.

Мой вопрос: будет ли хорошей идеей использовать Kubernetes для управления масштабируемым рой контейнеров, на которых запущена программа Elixir? Если да, есть ли какие-либо предварительно настроенные настройки Kubernetes, которые облегчают эту задачу?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Наша команда использовала elixir встроенный двоичный файл и docker/consul в течение трех лет.

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

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

Я испытал это и попытался использовать Swarm. Отлично работает! Вы можете легко масштабировать свои услуги и управлять серверами.

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

0 голосов
/ 04 июля 2018

Мы только что переехали в kubernetes для управления контейнерами при моем запуске. У меня есть пара мнений по этому поводу:

Если цель состоит в том, чтобы просто распределить приложение эликсира по «роду» узлов и / или машин, Kubernetes добавляет немало сложности и приближения к этой цели. В итоге вы получаете не только кривую изучения распределения BEAM, но и саму экосистему kubernetes.

Однако приложения kubernetes и elixir могут очень хорошо работать вместе, особенно если развертывание вашего приложения более сложное, чем проекты с чистым elixir. Например, у нас есть пользовательские службы, запускаемые из javascript, python, elixir и golang при развертывании нашего приложения (не говоря уже о дюжине случайных инструментов).

Kubernetes помогает расширить возможности для распределения и управления узлами для всех этих сервисов с помощью одной стратегии.

Чтобы ответить на ваш вопрос: это может быть хорошей идеей, но я бы рекомендовал сначала научиться управлять программой эликсир, распространяемой отдельно. Это не так просто, как все считают, но лучше, чем большинство технологий программирования для других языков IMO. Вот хорошее руководство по началу работы с распределенным эликсиром / эрлангом: http://engineering.pivotal.io/post/how-to-set-up-an-elixir-cluster-on-amazon-ec2/.

Вы можете выделить эту кривую обучения, и как только вы почувствуете себя комфортно, переходите к кубернетам. Вот действительно хороший ресурс по началу работы с роением через kubernetes: http://bitwalker.org/posts/2016-08-04-clustering-in-kubernetes/

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

...