-
Notifications
You must be signed in to change notification settings - Fork 9
Regions
この記事は[ベータ版の機能](heroku-beta-features)について説明をしています。機能は、一般利用の前に変更になる可能性があります。
Herokuは地理的に、アメリカとヨーロッパの2カ所の地域で利用可能です。
エンドユーザにとっての遅延を最小化するよう、あなたのアプリケーションの地域を選択することができます。例えば、あなたのユーザが主にヨーロッパにいる場合、ヨーロッパで動いている方が彼らにとって早くなるでしょう。
この記事で説明している機能を使うためには、Heroku Toolbeltがインストールされている必要があります。Toolbeltがインストールされているかを確認し、heroku update
を使って最新バージョンに更新してください。
特に指定が無ければ、全てのアプリケーションはアメリカで作成されます。別の地域を指定する場合は、アプリケーション作成時に--region
フラグを使用します :
:::term
$ heroku create --region eu
Creating calm-ocean-1234... done, region is eu
http://calm-ocean-1234.herokuapp.com/ | git@heroku.com:calm-ocean-1234.git
Git remote heroku added
既存のアプリケーションも新しい地域に[移設する](app-migration)ことができます
アプリケーションの地域を確認するためには、heroku info
コマンドのRegion
属性を確認します :
:::term
$ heroku info
=== calm-ocean-1234
Git URL: git@heroku.com:calm-ocean-1234.git
Owner Email: user@test.com
Region: eu
Repo Size: 164M
...
全ての利用可能な地域を一覧で表示します :
:::term
$ heroku regions
=== regions
eu Europe
us United States
地域をサポートしているアドオンは、アプリケーションと同じ地域に配備されます。通常通り、配備してください :
:::term
$ heroku addons:add heroku-postgresql
あなたのアプリケーションに少ない遅延での接続を求めないようなアドオンは、あなたのアプリケーションの地域が利用可能でない場合にデフォルトの地域に配備されます。もし、アドオンが遅延に対し厳格でかつ、アプリケーションと同じ地域を利用可能でない場合、配備は失敗するでしょう :
:::term
$ heroku addons:add cloudcounter
Adding cloudcounter on calm-ocean-1234... failed
! This app is in region eu, cloudcounter:basic is only available in region us.
コマンドラインとWebの両方から、あなたのアプリケーションの地域をサポートするアドオンを探す事が出来ます。コマンドラインを使ってヨーロッパ地域をサポートするアドオンを探す場合は、以下のコマンドを実行してください :
:::term
$ heroku addons:list --region=eu
addons.heroku.com 上では、検索窓を使って、"europe"と検索することで、ヨーロッパ地域をサポートしたアドオンを探す事ができます。さらに絞って検索することもできます、例えばヨーロッパ地域をサポートするRedisのアドオンを、"Redis europe"と検索することで探す事ができます。
アプリケーションは生成時に指定された地域にデプロイされます。いつも通り、Gitでアプリケーションをデプロイしてください :
:::term
$ git push heroku master
One-off Dyno もまた同様にアプリケーションが作られた地域で実行されます。また、ジョブを実行するためにOne-off Dynoを使用するHeroku Schedulerなどの副次的なサービスも同じことが言えます。
アメリカ地域外で実行しているアプリケーションにカスタムドメインを追加する方法は、アメリカ地域内のアプリケーションにドメインを追加するのと変わりません。以下のCNAMEレコードをあなたのDNSプロバイダのコントロールパネルに追加してください(あなたのHerokuアプリの名前の代わりにexample
を使っています)。
Type | Name | Target |
---|---|---|
CNAME | www | example.herokuapp.com |
これで、www.example.com
に向いている全てのトラフィックはexample.herokuapp.com
に向かいます。
Herokuでは[Aレコードはサポートされていません](avoiding-naked-domains-dns-arecords)。もし、"example.com"のようなApexドメインをHerokuに持ちたい場合は、ApexドメインをCNAMEにマッピングすることができるように、DNSプロバイダからALIASか似たようなレコードを使用することが必要です。
SSLを利用するために、あなたのアプリケーションのためのSSLエンドポイントを用意し、SSL証明書をアップロードしてください。
:::term
$ heroku addons:add ssl
Adding ssl on example... done, v1 ($20/mo)
Next add your certificate with `heroku certs:add PEM KEY`.
Use `heroku addons:docs ssl` to view documentation.
$ heroku certs:add server.crt server.key
Resolving trust chain... done
Adding SSL Endpoint to example... done
example now served by example.herokuapp.com
もしあなたのカスタムドメインが適切に設定されていれば、追加のDNS設定は求められません。(これは、tokyo-123.herokussl.com
のようなドメインを使う事を求める、アメリカ地域の振る舞いと異なります。)。これで、全てのwww.example.com
へのトラフィックはSSLを使って提供できるようになりました。
地域の名前 | データセンターの場所 |
---|---|
アメリカ | amazon-web-services::us-east-1 |
ヨーロッパ | amazon-web-services::eu-west-1 |
しかしながら、それぞれのサポートされている地域は地理的に独立したプラットフォームの実行を表しているのであって、あなたのアプリケーションのデータの物理的な存在からいかなる憶測も立てるべきではありません。
あなたのアプリケーションとは違う場所にデータが保存されている、以下の場合について考慮してください :
- いくつかの遅延に対して厳格でないアドオンは、アプリケーションとは別の地域に配備される可能性ががあります。
- アプリケーションのログは、Logplexから提供され、現在はアメリカで保持されています。
- PG Backupのスナップショットはアメリカで保持され、そしてWAL filesは継続的にアメリカに送信されています。
- 全てのコマンドライン上のコマンドとあなたのアプリケーションの管理をしている間のHerokuのコントロールサーフェスAPIsの物理的な場所についてはいかなる保証もしません。
リージョンのベータ版はデータの保護問題に取り組むようには設計されていません、このため、セーフハーバーの範囲内であることを保証した物ではありません。あなたのデータを管理する法律ではなく、ユーザの場所を起点とした地域を選択するようにしてください。
既存のアプリケーションは新しい地域へ移行できます。