サイトをVPSへ移行
秘密のアプリケーション
背景
ので移行先が出来た
移行のためだけに借りるのは億劫だった
前からちょっと遊んだりする場所は欲しいと思ってたKitaitiMakoto.icon
GKEは三種類のアプリケーションしか動かしてないくせにノードを三台動かしているから割高 一度構築しちゃえば気軽に増やせるのメリットなのに
やればそんな難しくないんだけどね……KitaitiMakoto.icon
構築
複数のDockerコンテナーを扱うのが得意な新時代リバースプロクシー
GKEにデプロイしていたのでどのアプリケーションもDockerizeされている。準備はできてる。 RubyistのKitaitiMakoto.iconにとってはAnsibleより心地いい 全アプリケーションをそうすると決めればItamaeのカスタムリソースを作ることでアプリケーションの追加を楽にできる code:resources.rb
define :docker_compose_service, base_dir: nil do
base_dir = params:base_dir || raise("missing required attribute: base_dir") directory "/srv/#{name}"
template "/srv/#{name}/compose.yml" do
owner "root"
group "root"
mode "644"
source File.join(base_dir, "templates/srv/#{name}/compose.yml.erb")
end
template "/etc/systemd/system/#{name}.service" do
owner "root"
group "root"
mode "644"
source File.join(base_dir, "templates/etc/systemd/system/#{name}.service.erb")
end
group name
user name do
gid name
system_user true
shell "/usr/sbin/nologin"
end
not_if "id -Gn #{name} | grep docker" end
service name do
end
action :nothing
end
action :nothing
end
end
compose.ymlやsystemdのユニットファイルのパスは決め打ち 内容は各サービスで別々に書く
templateのsourceは本当は:autoにして記述を省略したかったけど、defineで定義する共有のカスタムリソースにしたら、定義しているファイルからのパス検索になってしまったのでできなかった
できないことはないが、レシピはサービス毎にcookbooksディレクトリー下に置いてあるのにこれらだけ外にあるの気持ち悪い
その為base_dirなんて属性を足した
どうせbase_dir __dir__としか書かないのだけど
ドメインはTraefikでも知る必要があるから一覧を共通ファイルで管理したいな Itamaeのノード属性を使えばできるけど、ノードに紐づく物でもないしな……と思うとItamaeの枠組みから外れた所でやるのがいいかな ストレージは思案のしどころ
とはいえ他のアプリケーションに迷惑かけないようにしておきたい
動画ファイルのバックアップってみんなどうしているんだろう
本来的にはPlume自体を何とかした方がいいのだが……KitaitiMakoto.icon
普通にストレージをいっぱいにして他のアプリケーションを圧迫する未来が見える
少なくとも専用NFSにはしておく
それでもいっぱいになると思うがどうしようか
もうそうなったらしょうがない、ファイルは追加できない、にしかならん気がする
Plume本体を何とかしましょうKitaitiMakoto.icon オブジェクトストレージ対応するとか
データベースはローカル(Dockerホスト)に立てる手もあるけど、アプリケーション毎にコンテナーで立てるので当面いいかな
これも少しずつストレージ使ってくやつだけど流石にNFSは使えない
監視しておいて増えてきたら別マシンとかホスティングサービスに移行しよう
あれ、でもホストに立てるとUNIXドメインソケットで通信できるのか。パフォーマンス出るはずだから魅力的
移行
アップロードした静的ファイルの移行が億劫だな
rsyncできたら楽だが
BiB/i'dはDockerizeしてあってデータベースがCloud SQL、ストレージがGCPだったので割とすんなり移行できた。バックアップもいらないし。
Cloud SQLも高いから、脱GKEが終わったら今度はデータベースをホスト内で動かす。
↑はやった。
次はバックアップ
シェルスクリプト
何かDockerで動くいいやつある?
別にアウトバウンドが無料なのの恩恵はあんまないけど