2019年2月23日土曜日

kakakikikeke.com を GCP に移行しました

概要

ホームページや Podcast のホスティングを Google Cloud Platform (以下 GCP) に移行しました
移行したときのメモです

環境

  • macOS 10.14.3
  • gsutil 4.36
  • gcloud 4.36

なんで移行したのか

特に理由はないですが絞り出すと以下の 3 つ

  • 音声ファイルの配信をもっと楽にしたったくらいかなと
  • サービスを管理しているアカウントを一つにしたかった
  • CI しやすいところにしたい

ホームページは GCE

GAE でもよかったのですがホームページが Ruby で書かれており Flexible Environment を使わざるを得なかったので GCE にしました
Flexible でもいんですがだったら GCE かなと
GAE だと証明書の管理が自動化されているのでそこは嬉しかったんですけどね、、

OS は Ubuntu です
docker だけインストールしてあとは特に何もしていません
インスタンスは一番小さい f1-micro です
Always free 枠で絶対収まるくらいのアクセスしかないのでそれにしています
free じゃなくても $3/month ほどです

ファイアウォールのチェックしようね

GCE に適用されている default のファイアウォールは特定のポートがフルオープンです
80, 443 はまぁ良いですが 22, 3389 あたりは絞っておきましょう

Podcast の音声ファイルのホスティングは Google Cloud Storage にまかせる

CDN にもなるし静的ファイルのホスティングもしてくれるので Google Cloud Storage にしました
あと CNAME が設定できるので一応独自ドメインで音声ファイルを配信するようにしています

一点困ったのは CNAME がただのリダイレクトなので https にできない点です
まぁ音声ファイルを配信するだけなのでそこは妥協しました

Google Cloud Storage に CNAME を登録する方法

ウェブマスタツール で自分のドメイン「kakakikikeke.com」の管理者になっていることを確認します (見せたくないドメインはモザイクしています)
自分は Blogger の CNAME を登録するときに認証していたようです

バケット名をアクセスしたい URL で作成します
音声ファイルをアップロードして一般公開にします
Content-Type は一応 audio/aac にしました

念の為 index.html と 404.html を一応配置しておきました
特に何もなくただ文字列を返すだけです (せっかくだから何かコンテンツ載せてもいいかも)

あとは CNAME を DNS に登録します
DNS はまだ Google に移行していない、、、画像はお名前ドットコムの DNS レコードの設定画面です

これで http://sound.kakakikikeke.com/ep0.m4a とかでアクセスできるようになります
Podcast も上記の URL で配信しています

ロギングも有効にしておく

バケットのロギングを有効にしおくと特定のバケットにアクセスログが溜まっていきます
アクセス元などを監視したい場合はオンにしておきましょう
当然ですがログが溜まればストレージの消費量も増えるので料金もあがります

  • gsutil mb -c regional -l us-central1 gs://sound-bucket-log/
  • gsutil acl ch -g cloud-storage-analytics@google.com:W gs://sound-bucket-log/
  • gsutil logging set on -b gs://sound-bucket-log gs://sound.kakakikikeke.com
  • gsutil logging get gs://sound.kakakikikeke.com

追記: feed の enclosure タグにリダイレクト URL は使えない

いざ配信してみてわかったのですが今回の用に CNAME リダイレクトだと Podcast アプリが音声ではないと判断して再生してくれないようです
なので feed は素直に https://storage.googleapis.com/sound.kakakikikeke.com/ で配信するように修正しました、、、
何事も試してみないとわからんですね

それ以外は

あとはこれまで監視に pingdom というサービスを使っていたのですが有料化しちゃったので Stackdriver に移行しました

あと音声ファイルを配信する URL が kakakikikeke.com -> sound.kakakikikeke.com になったので Podcast Connect という Apple が管理する Podcast のポータルサイトからフィードの再読込を依頼しました
たぶんこれをやらないと Podcast クライアントが音源を読み込めなくなりストリーミングできなくなるはず、、、
もしかするとクライアント側がキャッシュしている場合があるのでその場合は一度 unsubscribe してもらえると助かります

あとあと自分のホームページを docker build するときに f1-micro だとメモリが足りなかったのでディスクの領域の一部を swapon しました

たぶん作業的にはこれくらいかなと
だいたい半日もかからないくらいで終わりました

最後に

今までは Heroku とかドッグフードしていたのですが全部 Google にしました
なんか最近はマルチクラウドとかで DR とかしたほうが良いよとか聞きますが全部 Google で完結していると管理がめっちゃ楽です

今後はクラウドで何かホスティングとかしたい場合はまずは GCP で探してなければ GCE で自分でやるか、それが相当面倒なのであれば外部の別のサービスを使うくらいにしようかなーと思います

ちなみにサイトや Podcast はこれまで通りhttps://kakakikikeke.comhttps://kakakikikeke.com/podcast でアクセスできますのでよろしくお願いします

参考サイト

0 件のコメント:

コメントを投稿