Perforce Helix Coreのフェイルオーバー機能を使用したDR環境構築、構築後のテスト運用手順を説明しています
・マスタサーバとスタンバイサーバのタイムゾーンが一致している必要があります。 |
本構築作業の条件は以下の通りです
適宜実環境に合わせて変更してください
マスター | スタンバイ | Perforce super user | |
サーバ名 | commit | nomandatory | super |
ServerID | commit | nomandatory | レプリケーション用ユーザ名 |
Option | - | nomandatory | service |
server-service | commit-server | standby | |
IP | 192.168.56.102 | 192.168.56.104 | |
Port | 1666 | 1666 | |
P4ROOT | /commit | /p4root_st |
① p4コマンドで"nomandatory"というスタンバイサーバのサーバ仕様を作成します。
p4 -u super -p master-server:port server standby-serverID |
② 設定を修正・追加します
ServerID: nomandatory |
startup.1=journalcopy -i 1:起動時にjournalcopy(マスタサーバのjournalをスタンバイに移送)を実行 |
① p4コマンドで"service"というレプリケーション用サービスユーザを作成します
p4 -u super -p master-server:port user -f service-user |
② 設定を修正・追加します
User: service |
③ サービスユーザ "service" のパスワードを設定します
p4 -u super -p master-server:port passwd service-user |
Enter new password: (任意のパスワードを入力します) |
④ サービスユーザのアクセスレベルの設定を追加します
p4 protect |
write user * * //... |
① スタンバイサーバ用のチェックポイントファイルを作成します
作成したチェックポイントファイル名は"checkpoint"としています
チェックポイントファイル(ファイル名:checkpoint.ckp.1)が作成されます
p4 -u super -p master-server:port admin checkpoint filename |
② チェックポイントファイルを転送します
FTPツール(任意)を使用して、スタンバイサーバへチェックポイントファイル(checkpoint.ckp.1)を転送します。
※このマニュアルではスタンバイサーバの /tmp に格納しています
①~④の作業については、サーバ構築方法によって対応が異なります。実環境をご確認の上、必要に応じて作業してください。 |
① P4ROOT用のディレクトリ "p4root_st" を作成します
※既にルートフォルダを作成済みであれば、作業不要です
mkdir /$P4ROOT |
② 作成したディレクトリのownerを"root"から"perforce"に変更します
※ownerがperforceであれば作業不要です
chown perforce:perforce -R /$P4ROOT/ |
③ FTP転送したチェックポイントファイル(checkpoint.ckp.1)を$P4ROOT(ここでは/P4root_st)へ移動します
※$P4ROOTへ転送済みであれば作業不要です
mv /転送場所/filename /$P4ROOT/ |
④ チェックポイントファイルのownerを"root"から"perforce"に変更します
※ownerがperforceであれば、作業不要です
chown perforce:perforce filename |
⑤ Perforceサービスを停止します
p4dctl stop server-name |
⑥ 不要なファイルを削除します
構築したスタンバイサーバに存在するデータベース等を削除します
$P4ROOT(ここではP4root_st/)に移動し、以下のファイルを削除します
・ファイル名が[db.]で始まるファイル(データベース)すべて
・server.locksフォルダ:フォルダごと削除
rm -f db.* |
⑦ ServerIDを指定します
サーバ "standby"のserverIDを"nomandatory"に指定します
※既に指定されている場合は作業不要です
p4d -r /$P4ROOT -xD standby-serverID |
⑧ チェックポイントファイルを展開します。※ownerが"perforce"になるように展開してください。
コマンド実行後、db.ファイルが作成されたことを確認します
p4d -r /$P4ROOT/ -jr filename |
⑨ Perforceサービスを開始します
p4dctl start server-name |
① ユーザ"service"が使用するレプリケーション用チケットを作成します
※ "p4root_st/.p4tickets" はサーバ仕様作成時(手順1-②)に指定した場所を入力します。
p4 -p master_server:port -u service -E "P4TICKETS=/p4root_st/.p4tickets" login |
② レプリケーション用チケットの確認をします
ls -la /p4root_st/.p4tickets |
-r--------. 1 perforce perforce 53 10月 10 16:48 /p4root_st/.p4tickets |
③ レプリケーションの確認をします
p4 -u super -p standby_server:port pull -lj |
Current replica journal state is: Journal 1, Sequence 4878. |
・大規模なサイトの場合、同期に時間がかかる場合がありますので、時間をおいて再度コマンドを実行してください。"Sequence" が同じ数値になれば同期完了です。 |
pull -ljコマンド:レプリカとマスターにおけるカレントジャーナルの状態を表示するコマンドです |
マスターサーバが起動できない・完全にダウンしていると判断できる状況を想定した運用のご案内です。 |
① フェイルオーバーの確認
p4 -u super -p standby-server:port failover -i -s master-serverID -w 10 -F |
-i ………… フェイルオーバー動作中にマスタサーバを無視するオプションです |
Checking if failover might be possible ... |
② フェイルオーバーの実行
コマンド実行後、自動的にPerforceサーバが再起動され、マスタサーバへと切り替わります。
p4 -u super -p standby-server:port failover -i -s master-serverID -w 10 -F -y |
Attempting unsupported forced failover; attempting to continue through any errors encountered. This server might not be as expected after the forced failover. |
構築・テストは以上です。