個人利用しているVPS移行手順のメモ。

使用しているVPSをさくらVPSからWebARENA VPSクラウドに移転したのですが、以下のコメントを頂きました。

参考にしたいので差し支えない範囲で移行手順を公開していただけますと嬉しいです

どういう構成かでやることも変わってくると思うのですが、今回私が移転させたサーバの構成と条件は以下なので、それを元にした手順を書きました。

  • OSは移転元も移転先もCentOS 7
  • WebサーバとアプリケーションサーバとDBが全部同居している
  • メールサーバは別の場所にある
  • Dockerコンテナ及びK8sは存在しない
  • 独自ドメインを使用している
  • 移転先はWebARENA VPSクラウドの2GBプラン(さくらやConoHaに比べてサービスの信頼性が低い)
  • 数日ダウンタイムが発生しても問題ない

所要時間

2日

  • やる気出すのに0.5日、借りたVPSのトラブルで1日ロス、実際の移行作業に0.5日
    • 1日ロスしたのは値段の安さだけ優先したツケだと思ってるので、移転先にWebARENA VPSクラウドを選んだ私が悪いです。NTTPCは悪くない。
  • これは100回くらい言いますが、払い出したばかりのインスタンスとセキュリティグループの挙動がかなり怪しく信用ができないため、WebARENAを使用する場合は初期セットアップトラブルが発生すること前提で計画を組んでおいたほうがよいです。値段相応なので仕方ない。

VPSを借りたら最初にやること

  • (WebARENAの場合)セキュリティグループを設定します。私はセキュリティグループでは全ポート開けて、実際のファイアウォールはfirewalldにまかせる運用にしています。
  • 個人の使うVPSなのでSELinuxは無効化しています。

ここから先は設定方法が書いてある別のサイトの記事にひたすらリンクを貼って行きます。

SSHの設定

OSアップデート

  • sudo yum -y update 後、マシン再起動

シェル・vimの設定

必須ではないですが、bashと素のvimのままだと作業しづらく、しょうもないミスが多くなるため先に実施しました。
fishとpecoとfisherの導入をするため、(yumからの導入だとバージョンが古い)vimとgitは自力でビルドする必要があります。

ミドルウェア・各言語で使うパッケージのインストール

fail2banの導入

各ミドルウェアの設定ファイルの転送

nginxとLet’s Encryptの設定ファイルについては全部rsyncコマンドで転送しました。転送対象は以下です

  • /etc/nginx 全部
  • /etc/letsencrypt 全部

パーミッションと所有ユーザ・グループを移転元のサーバと同一にする必要があります。

Webサーバで動かしているファイルの転送

Webサーバのルートディレクトリをまるごとrsyncで転送

各DBのダンプとリストア

この作業あたりから、移転元と移転先の内容で乖離が発生していきます。(例えばWordPressの場合、ダンプとったあとにコメントが書き込まれると移転後にその内容が反映されない)
私は(めんどくさいので)ダンプ後に移転元DBに追記された内容について同期をとるのは諦めましたが、乖離するのが嫌な場合、移転先と移転元のDBで同期を取れるようにするか、サービス自体をメンテナンスモードにして使わせないようにするとか、色々手を打つ必要があります。

動作確認

クライアントマシンのhostsファイルを書き換えて、自分が保有している独自ドメインが移転先のIPを指すようにします。
移転したサービスが正常に動作するか、クライアントマシンから一通り確認します。

DNS設定の書き換え

問題なければ、自分が保有している独自ドメインのDNS設定を行い、移転元のIPから移転先のIPを指すように修正します。
WebARENA VPSクラウドはDNS逆引き設定に対応している…と思って設定探しまくったのですが、以下のFAQを見つけてめちゃくちゃに笑いました。設定できないんですね。逆引き設定できないとMTA使うときに問題が出る場合があるので、MTA使うつもりの人はやめておいたほうがいいです。

参考:逆引きできないと困るパターン

新しいIPに解決してもらえるまで時間がかかり、どちらのサーバにアクセスされるかはわからないので、数日は移転元と移転先のサーバを並行で動作させておく必要があります。DBに更新が入るようなサービスの場合、旧・新サーバのどちらにもデータが書き込まれる恐れがあるため、データに不整合が発生すると困る場合は、数日はDBに更新が入らないように手を打つ必要があります。そもそも、そういう挙動が致命的になるサービスは、DBを別マシンで運用すべきだと思います。

ちなみに、WebARENA VPSクラウドはDNSリゾルバもおかしくて、数時間たっても名前解決結果が更新されなかったので、別のリゾルバを使うように設定しました。

まとめ

30%くらいWebARENA VPSクラウドの品質がやべえって内容になってますが、値段相応だと思っているので、もうここでいいかなと思っています。月720円に色々求めてはいけない。