Easy Migrate
このガイドでは、Vsite、ユーザー、メール、Cronjob、MySQL データベースとユーザー、DNS、サーバー設定など、BlueOnyx 間で移行に必要な主要データを簡単に移す方法を説明します。
Easy Migrate は旧来の Cobalt Migration Utility (CMU) を置き換えるために作られました。1 台のサーバーから別のサーバーへ、必要なデータをより確実に移行することを目的に設計されています。目標は、Vsite 全体を必要な関連データごと別のサーバーへ実質的に複製できるようにすることでした。Easy Migrate を使えば、最初に Vsite を複製し、その後も同期を維持することで、複数の BlueOnyx で同じ内容を提供する構成を作ることも可能です。
CMU と違い、新しい Easy Migrate はファイル転送に SSH 経由の RSYNC を使用します。これにより、Vsite やユーザーの変更分だけを転送できます。Easy Migrate 実行中は、Vsite やユーザー設定を保持している CODB の情報も、一度複製したあとに SET トランザクションで同期されます。さらに、両サーバーに同じ PKG がインストールされていれば、BlueOnyx Shop の Web Application に関するデータや設定も移行できます。
現時点で「Easy Migrate」はコマンドラインスクリプトです。このガイドでは、そのコマンドラインインターフェースと使い方を説明します。
Easy Migrate がエクスポート元として対応するのは、BlueOnyx 5207R、5208R、5209R、5210R、5211R、5212R です。
Easy Migrate がインポート先として対応するのは、BlueOnyx 5209R、5210R、5211R、5212R です。
サーバー準備
Easy Migrate は「Pull」方式で動作します。つまり、移行先サーバー、すなわちデータを取り込む側のサーバーから移行処理を実行します。このサーバーは BlueOnyx 5209R、5210R、5211R、または 5212R である必要があります。Easy Migrate(RPM 名: easy-migrate)は最近の YUM 更新で追加され、実行ファイルは /usr/sausalito/sbin/easy-migrate.pl にあります。このスクリプトを実行するには root ユーザーである必要があり、さらにスクリプト自体が移行元サーバーへ SSH 接続できなければなりません。まず、移行先サーバーの root ユーザーの SSH キーを移行元サーバーへ登録してください。通常は次のように実行します。
~]# ssh-copy-id root@<source-server-name-or-ip>
その後、パスワードを求められずに root として移行元へログインできることを確認します。
~]# ssh root@<source-server-name-or-ip>
問題なく接続できたら、CTRL+D または exit で移行先サーバーへ戻ってください。
注意: 5211R(EL9)と 5212R(EL10)はより新しい SSH を使用しており、古い暗号方式の一部は廃止されています。BlueOnyx 5210R や 5209R からの移行であれば通常問題ありません。しかし、BlueOnyx 5207R や 5208R から 5211R または 5212R へ直接 Easy-Migrate したい場合は、新しい BlueOnyx 側の SSH クライアントが古い相手へ接続を許可しないことがあります。
この場合は、移行先 の BlueOnyx で一時的に「Crypto Policies」を下げる必要があります。
暗号設定を下げるには次を実行します。
update-crypto-policies --set LEGACY
systemctl restart sshd
作業完了後に必ず元へ戻してください。 次のように戻せます。
update-crypto-policies --set DEFAULT
systemctl restart sshd
もし update-crypto-policies コマンドが存在しない場合は、次のようにインストールできます。
yum install crypto-policies-scripts
作業を始める前に、移行元・移行先の両方で GUI を開き、移行先サーバーに移行元と同じ Shop PKG および Web Application が入っていることを確認してください。移行後もそれらを使用したい場合に必要です。PKG のバージョン番号が完全一致している必要はありません。多少新しい、あるいは古い程度であれば、移行上は通常問題になりません。
次に easy-migrate.pl 自体を見てみましょう。オプションなし、または -h を付けて実行すると利用可能なオプションが表示されます。

最初の手順として、Easy Migrate が移行元サーバーへ接続でき、そのサーバーがインポート対象として互換性を持っているかを確認してください。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --check
問題があればここでエラーが表示されます。問題なければ移行を続けられます。
サーバー設定の移行
移行元サーバーには、サービスや機能に対する小さな設定変更が長年積み重なっていることがよくあります。何年も前に行った変更だと、何をどこで変えたのか覚えていないことも珍しくありません。Easy Migrate は必要であればその面倒も引き受けます。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --config
この 任意の 手順を実行すると、Easy Migrate は移行元から次のサービス設定を取得し、移行先で対応する設定を調整します。
- メール関連全般: SMTP、SMTP-Auth、POP3、IMAP、リレー設定など
- Apache、Nginx(存在する場合)、Subdomain デフォルト設定
- PHP 設定
- FTP 設定
- DNS 設定
- SiteStats 設定と新規 Vsite 用デフォルト設定
- Support 設定内の氏名とメールアドレス
- 日次更新用の YUM 設定
- Active Monitor 設定と通知先メールアドレス
一方で、SSH 設定と GUI デスクトップ設定(たとえば GUI を HTTPS 強制にする設定)は変更しません。これら 2 点はセキュリティ上の理由から Easy Migrate の対象外です。
DNS 移行
任意の手順です。Vsite 単位、または全 Vsite の移行時には、Easy Migrate はその Vsite が属するゾーンの DNS レコードを直接インポートします。これは移行元で DNS が有効で、そのゾーンのレコードを持っていた場合に有効です。また、DNS ゾーン include ファイルもコピーするため、そこに追加したカスタム設定も失われません。もし DNS だけを移行したい場合や、Vsite に紐付かない DNS ゾーンも移行したい場合は、次のように実行します。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --dnsonly
これにより、すべての SOA レコード、DNS レコード、および DNS Slave Zone が移行されます。
Vsite とユーザーの移行
単一の Vsite とその関連データ一式(Web サイト、SSL 証明書、全設定、全ユーザー、それぞれのデータ・メール・設定、関連する MySQL と DNS データ、すべてのメール)を移行したい場合は、次のように実行します。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --ip <new-ip-of-vsite> --vsites www.site.com
これにより Vsite「www.site.com」のみが移行され、--ip で指定した新しい IPv4 アドレスが直接割り当てられます。移行元サーバーがその Vsite 用の DNS レコードを持っている場合、それらもインポートされ、IP アドレスは新しいものへ書き換えられます。DNS をインポートしたくない場合は --nodns を追加します。IPv6 を割り当てたい場合は --ipv6 を付けて新しい IPv6 アドレスを指定してください。
注意: 移行先サーバーに同名の MySQL ユーザーまたはデータベースがすでに存在すると、その Vsite のインポートは失敗します。その場合は phpMyAdmin または手動で対象の MySQL ユーザーとデータベースを削除してから、再度インポートを試してください。
2 つの Vsite を移行し、新しい IPv4/IPv6 を割り当て、DNS は移行しない例は次のとおりです。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --ip <new-ip-of-vsite> --ipv6 <IPv6 IP> --vsites www.site1.com,www.site2.com --nodns
すべての Vsite を移行したい場合は、代わりに --vsites all を使います。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --ip <new-ip-of-vsite> --vsites all
移行途中で Easy Migrate が中断しても心配はいりません。同じオプションで再実行すれば構いません。Vsite が途中までしか移行されていなかった場合でも、設定を更新しつつ残りのデータを RSYNC で再同期します。
MySQL 移行
任意の手順です。これは *Vsite のインポートがすべて終わったあとにのみ* 実行してください。Vsite インポートは、同名の MySQL ユーザーやデータベースがすでに存在すると失敗するためです。
すべての Vsite が GUI や WebApp インストーラ経由で作成された MySQL データベースとユーザーだけを使っているなら、この手順は不要かもしれません。ただし、手動作成した MySQL ユーザーやデータベースがある場合は実行すべきです。いずれにせよ、実行しても害はありません。
~]# /usr/sausalito/sbin/easy-migrate.pl --source <IP-of-Source-Server> -p 22 --mysql
これにより、すべての MySQL ユーザー(ただし root は除く)とその権限、さらに全データベースの SQL ダンプが作成され、移行先へコピーされてすぐにインポートされます。移行先に同名のユーザーやデータベースがあれば、それらは置き換えられます。
単一 Vsite 移行の出力例
以下は、1 つの Vsite を正常に移行した例です。
まず、移行元と同じ CODB 設定を使って移行先に Vsite が作成されます。ただし IP アドレスだけは、移行時に指定した新しい値が使われます。移行先で Vsite を作成する際、Easy Migrate はグループ名「site17」が利用可能かを確認します。これは移行元でも使われていたグループ名です。空いていれば同じグループ名を使い、もし使用中なら空いている最初のグループ名が割り当てられます。
次に、Vsite が持つ NameSpace 群がすべて設定されます。これには PHP 設定、SiteStats 設定、Userweb 設定、Redirect、Shell、CGI、Disk、SSi、FTP アクセス、DNS、Subdomains、新規ユーザー用デフォルト設定、さらにこの例では Shop PKG である WebApp Installer、Wordpress、Roundcube、OwnCloud の設定も含まれていました。
ただし、移行元には存在しても移行先には存在しない NameSpace に遭遇することがあります。たとえば非推奨の AnonFTP や、移行先でインストールしなかった PKG に属する NameSpace です。Easy Migrate はそれらを報告しますが、その段階で失敗はしません。つまり、これはあくまで参考情報です。
その後、Easy Migrate はこの Vsite に属する 3 人のユーザーを作成または更新し、それぞれの設定も調整します。
続いて、複数の RSYNC over SSH により SSL 証明書と Vsite 関連フォルダーが移行先へコピーされます。その後 SSL 証明書がインポートされます。もしそれが Let's Encrypt 証明書であれば、その更新設定も移行されるため、設定された更新日に自動更新が継続されます。この例では、Vsite が実際に使用していた RoundCube Web Application の SQL データベースも同時にインポートされていることが分かります。
最終段階では、Vsite 内の全ユーザーのホームディレクトリ内容が RSYNC over SSH でインポートされ、当然メールも含まれます。ユーザーが個別の cronjob を持っていれば、それも移行されます。
移行中に起こりうる問題
ユーザー名の衝突:
移行元にあるユーザー名と同じ名前のユーザーが、移行先の別 Vsite ですでに使われている場合、インポートは停止します。たとえば移行元の Vsite www.company.com に「charly」というユーザーがいる一方で、移行先の Vsite www.happycompany.com にもすでに「charly」がいるケースです。この段階で Easy-Migrate は「charly」がすでに存在し、どの Vsite に属しているかをエラーメッセージで知らせます。この衝突は手動で解決する必要があります。続行したいなら、どちらかのユーザーを削除してください。
MySQL/MariaDB データベースのインポート問題:
MySQL データベースやユーザーのインポートでは、いくつか問題が起こる可能性があります。たとえば移行元が非常に古く、MySQL 4.1 以前の短いハッシュ形式のパスワードを使っていた場合です。新しい MySQL ではその方式が廃止されているため、ユーザー自体はインポートされてもパスワードが機能しないことがあります。その場合は、該当ユーザーのパスワードを手動で再設定してください。
ほかにも、先に --mysql で MySQL を移行し、そのあと全 Vsite をインポートした場合、MySQL ユーザーやデータベースが再度インポートされます。その際、データベースを一度削除して空で作り直し、そこへ SQL ダンプを流し込みますが、データベース削除に失敗すると Easy-Migrate 全体が失敗することがあります。その場合は phpMyAdmin で問題のデータベースを先に削除し、その後もう一度 Easy-Migrate を実行してください。
まとめ
Easy Migrate は、BlueOnyx から BlueOnyx への移行を本当に簡単にするという約束を十分に果たしています。必要なデータを高速かつ効率的に移し、必要なのは /usr/sausalito/sbin/easy-migrate.pl という 1 本のツールだけです。ロードバランシング目的で Vsite を複数サーバーへ複製したい場合や、2 台構成で簡易クラスタのような運用をしたい場合にも、新しい可能性を開いてくれます。
ぜひ試してみてください。驚くほど簡単で、完成度の高い移行を体験できるはずです。
