使用している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の設定
- ポートを22から変更
- rootログイン禁止
- (WebARENAの場合)rootのauthorized_keysから初回セットアップで払い出している公開鍵の設定を削除
- sshログイン用(パスワード認証禁止)&sudo用ユーザ作成
- firewalldの設定
- 別のターミナルからrootログインができないことと、sshログイン用のユーザから鍵でログインできることを確認
OSアップデート
sudo yum -y update
後、マシン再起動
シェル・vimの設定
必須ではないですが、bashと素のvimのままだと作業しづらく、しょうもないミスが多くなるため先に実施しました。
fishとpecoとfisherの導入をするため、(yumからの導入だとバージョンが古い)vimとgitは自力でビルドする必要があります。
- gitのビルド
- vimのビルド
- fishの導入
- fisherの導入
- 移転元のサーバから.vimrcと.configと.cacheをホームディレクトリにそのまま持ってくる
ミドルウェア・各言語で使うパッケージのインストール
- ひたすらyumとかcpanmとかgemとかで必要なパッケージを導入する。(Ansibleで書いとけばよかったと思いながら、単発作業なのでもう使わないしな~と思い直し、結局書かない。)
- perl-redisが導入できないバグがあってforceインストールしてたんですが、今見たら直ってました。
fail2banの導入
- 導入したミドルウェアに応じてfail2banの設定を行います
各ミドルウェアの設定ファイルの転送
nginxとLet’s Encryptの設定ファイルについては全部rsyncコマンドで転送しました。転送対象は以下です
- /etc/nginx 全部
- /etc/letsencrypt 全部
パーミッションと所有ユーザ・グループを移転元のサーバと同一にする必要があります。
Webサーバで動かしているファイルの転送
Webサーバのルートディレクトリをまるごとrsyncで転送
各DBのダンプとリストア
この作業あたりから、移転元と移転先の内容で乖離が発生していきます。(例えばWordPressの場合、ダンプとったあとにコメントが書き込まれると移転後にその内容が反映されない)
私は(めんどくさいので)ダンプ後に移転元DBに追記された内容について同期をとるのは諦めましたが、乖離するのが嫌な場合、移転先と移転元のDBで同期を取れるようにするか、サービス自体をメンテナンスモードにして使わせないようにするとか、色々手を打つ必要があります。
- WordPress使用しているDBのダンプとリストア
- WordPressのサーバー移転・引越しマニュアル - CentOSinstall.com mariaDBのrootパスワードを完全に忘れてて焦りましたが、途中で思い出したのでどうにかなりました。
- MongoDBのダンプとリストア
動作確認
クライアントマシンのhostsファイルを書き換えて、自分が保有している独自ドメインが移転先のIPを指すようにします。
移転したサービスが正常に動作するか、クライアントマシンから一通り確認します。
DNS設定の書き換え
問題なければ、自分が保有している独自ドメインのDNS設定を行い、移転元のIPから移転先のIPを指すように修正します。
WebARENA VPSクラウドはDNS逆引き設定に対応している…と思って設定探しまくったのですが、以下のFAQを見つけてめちゃくちゃに笑いました。設定できないんですね。逆引き設定できないとMTA使うときに問題が出る場合があるので、MTA使うつもりの人はやめておいたほうがいいです。
- DNSの逆引きを設定することはできますか? | WebARENA
- WebARENA VPSクラウド サービス仕様一覧 「*3 予め設定済みで、お客さま独自ドメインでのDNS逆引き設定への変更できません。」じゃあ使用できないのと一緒なので、さも使えるかのように表に書かないでくれ。
参考:逆引きできないと困るパターン
新しいIPに解決してもらえるまで時間がかかり、どちらのサーバにアクセスされるかはわからないので、数日は移転元と移転先のサーバを並行で動作させておく必要があります。DBに更新が入るようなサービスの場合、旧・新サーバのどちらにもデータが書き込まれる恐れがあるため、データに不整合が発生すると困る場合は、数日はDBに更新が入らないように手を打つ必要があります。そもそも、そういう挙動が致命的になるサービスは、DBを別マシンで運用すべきだと思います。
ちなみに、WebARENA VPSクラウドはDNSリゾルバもおかしくて、数時間たっても名前解決結果が更新されなかったので、別のリゾルバを使うように設定しました。
まとめ
30%くらいWebARENA VPSクラウドの品質がやべえって内容になってますが、値段相応だと思っているので、もうここでいいかなと思っています。月720円に色々求めてはいけない。