2015-02-23 4 views
5

Возможно ли, и если да, то как? Я хотел бы получить доступ к нему из существующей инфраструктуры Heroku.Как запустить InfluxDB на Heroku?

Нужна ли мне Procfile? Из того, что я понимаю, это просто автономный бинарный файл, написанный на Go! поэтому его не должно быть так сложно развернуть, мне просто интересно, как его развернуть, потому что я не думаю, что я понимаю все входы в развертывание Heroku.

ответ

1

Мне нравится думать, что все возможно на узле Heroku при использовании пользовательских buildpack, но есть некоторые соображения, когда хостинг с Heroku:

  • опс, например, резервное копирование, мониторинг (это влечет за собой установка дополнительных услуг, открывая дополнительные порты и т.д. - Heroku может получить в пути здесь)
  • производительности, учитывая dyno size
  • и если вам нужно больше дино, стоимость становится проблемой. Когда вы идете по маршруту IaaS, вы получите больше ударов за свой доллар.
  • другие "функции" дино, например. диск эфемерность

Я настоятельно рекомендую hosted InfluxDB или раскручиванию самостоятельно на VPS, все из которых вы можете указать существующие приложения Heroku основанных на. Затем он поможет получить эти экземпляры как можно ближе друг к другу (т. Е. Один и тот же регион или, если возможно, соединить друг с другом), предполагая необходимость низкой латентности между БД и стеке приложений.

+0

Да, но с большим количеством запросов, что произойдет с производительностью? Я думаю, ничего хорошего, если только VPS не окажется в том же кластере, что и героика, ака на Амазонке. Я ошибаюсь? –

+0

Некоторые испытания были бы достаточными. Например. как капелька Digital Ocean в том же регионе сравнивается с экземпляром Amazon в другом регионе. Кроме того, [dyno size] (https://devcenter.heroku.com/articles/dyno-size) может быть рассмотрен, например. сколько RAM вы считаете нужным для своего экземпляра InfluxDB? Если ответ больше, чем вы думаете, я бы пошел с экземпляром Amazon (в том же регионе, что и ваши экземпляры Heroku) исключительно для экономии средств. Я обновлю ответ, чтобы отразить эти дополнительные соображения. – opyate

4

Heroku Dynos должен не использовать для развертывания приложения базы данных, такого как InfluxDB.

Dynos - это эфемерные серверы. Данные не сохраняются между перезапусками dyno и не могут использоваться совместно с другими динамиками. Практически говоря, любое приложение базы данных, развернутое на dyno, практически бесполезно. Вот почему базы данных на Heroku (например, Postgres) - это все дополнения. InfluxDB должен быть настроен на другой платформе (например, AWS EC2 или VPS), поскольку дополнение Heroku недоступно.


Тем не менее, это можно развернуть InfluxDB на дино Heroku.

Для начала важно понять концепцию «слизняков». Слизы представляют собой контейнеры (похожие на изображения Docker), в которых хранятся все необходимое для запуска программы в инфраструктуре Heroku. Для развертывания InfluxDB, пробковый InfluxDB должны быть созданы * Есть два способа создания слизняка для библиотек Go:..

  1. Создать слизняк непосредственно из Go исполняемого, как описан here **
  2. Строить пул из источника, используя сборку Heroku Go (объяснено ниже).

Чтобы построить пулю из источника с помощью buildpack, сначала клонировать InfluxDB Github репо. Затем добавьте файл Procfile в корень репо, который сообщает команде Heroku, что она запускается при запуске dyno.

echo 'web: ./influxd' > Procfile 

Коммутатор Go требует, чтобы все зависимости были включены в каталог. Используйте инструмент зависимостей godep для экспорта всех зависимостей в каталог.

go get github.com/tools/godep 
godep save 

Далее, сделайте изменения, сделанные выше, на git repo.

git add -A . 
git commit -m dependencies 

Наконец, создайте новое приложение и скажите ему скомпилировать с помощью Go buildpack.

heroku create -b https://github.com/kr/heroku-buildpack-go.git 
git push heroku master 
heroku open // Open the newly created InfluxDB instance in the browser. 

Heroku покажет страницу ошибки. Ошибка будет отображаться, потому что тип процесса «Интернет» Heroku требует приложения для прослушивания входящих запросов на порте, описываемых переменной окружения $PORT, иначе он убьет dyno. API и панель управления InfluxDB работают на портах 8086 и 8083, соответственно.

К сожалению, InfluxDB не позволяет устанавливать эти порты из переменных среды, только через конфигурационный файл (/etc/config.toml). Небольшой скрипт bash, выполненный до запуска InfluxDB, может установить правильный порт в файле конфигурации до запуска InfluxDB.

Другая проблема: Heroku предоставляет только один порт на каждый динамометр, поэтому API и панель администратора не могут быть одновременно открыты в Интернете. Умный обратный прокси мог бы обойти эту проблему, используя Heroku's X-Forwarded-Port request header.

Нижняя линия, не используйте динамики Heroku для запуска InfluxDB.


* Это означает, что преимущества автономного Go исполняемому теряется при развертывании Heroku, так как он должен быть повторен для стека Heroku в.

** Создание пули непосредственно из исполняемого файла InfluxDB не работает, потому что нет встроенного способа прослушивания правого порта, данного Heroku в переменной окружения $PORT.