7

それは可能ですか?既存の Heroku インフラストラクチャからアクセスできるようにしたいと考えています。

必要Procfileですか?私が理解していることから、それは Go で書かれた単なるスタンドアロンのバイナリです! Heroku の展開の詳細を理解していないと思うので、展開方法に興味があります。

4

2 に答える 2

9

Heroku Dyno は、InfluxDB などのデータベース アプリケーションのデプロイには使用しないでください。

Dyno はエフェメラル サーバーです。データは dyno の再起動間で保持されず、他の dyno と共有できません。実際には、dyno にデプロイされたデータベース アプリケーションは基本的に役に立ちません。これが、Heroku 上のデータベース (Postgres など) がすべてアドオンである理由です。Heroku アドオンが利用できないため、InfluxDB は別のプラットフォーム (AWS EC2 や VPS など) でセットアップする必要があります。


とはいえ、InfluxDB を Heroku dyno にデプロイする ことは可能です。

開始するには、「スラッグ」の概念を理解することが重要です。Slug は、Heroku のインフラストラクチャでプログラムを実行するために必要なすべてを保持するコンテナー (Docker イメージに似ています) です。InfluxDB をデプロイするには、InfluxDB スラッグを作成する必要があります。* Go ライブラリ用のスラッグを作成する方法は 2 つあります。

  1. ここで説明されているように、Go 実行可能ファイルから直接スラッグを作成します。**
  2. Heroku Go ビルドパック (以下で説明) を使用して、ソースからスラッグをビルドします。

ビルドパックを使用してソースからスラッグをビルドするには、まず InfluxDB Github リポジトリのクローンを作成します。次に、リポジトリのルートに Procfile を追加します。これにより、dyno の起動時に実行するコマンドが Heroku に伝えられます。

echo 'web: ./influxd' > Procfile

Go ビルドパックでは、すべての依存関係がディレクトリに含まれている必要があります。godep 依存関係ツールを使用して、すべての依存関係をディレクトリに売り込みます。

go get github.com/tools/godep
godep save

次に、上記の変更を git リポジトリにコミットします。

git add -A .
git commit -m dependencies

最後に、新しいアプリを作成し、Go ビルドパックでコンパイルするように指示します。

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 の「web」プロセス タイプでは、アプリが$PORT環境変数で記述されたポートで受信リクエストをリッスンする必要があるため、エラーが表示されます。そうしないと、dyno が強制終了されます。InfluxDB の API と管理パネルは、それぞれポート8086とで実行されます8083

残念ながら、InfluxDB ではこれらのポートを環境変数から設定することはできず、構成ファイル ( /etc/config.toml) を介してのみ設定できます。InfluxDB が起動する前に実行される小さな bash スクリプトは、InfluxDB が起動する前に構成ファイルに正しいポートを設定できます。

別の問題として、Heroku は dyno ごとに 1 つのポートしか公開しないため、API と管理パネルを同時にインターネットに公開することはできません。X-Forwarded-Portスマート リバース プロキシは、Heroku のリクエスト ヘッダーを使用してこの問題を回避できます。

要するに、Heroku dyno を使用して InfluxDB を実行しないでください。


* これは、Heroku のスタック用に再コンパイルする必要があるため、Heroku にデプロイすると、スタンドアロンの Go 実行可能ファイルの利点が失われることを意味します。

$PORT**環境変数で Heroku によって指定された正しいポートをリッスンする組み込みの方法がないため、InfluxDB 実行可能ファイルから直接スラッグを作成しても機能しません。

于 2015-03-09T02:40:27.750 に答える