説明
Perforce Helix Coreのフェイルオーバー機能を使用したHA環境構築の手順を説明していますCoreのフェイルオーバー機能を使用したHA環境の構築、および構築後の構築後のテスト運用手順を説明しています
警告 |
---|
・マスタサーバとスタンバイサーバのタイムゾーンが一致している必要があります。・マスターサーバとスタンバイサーバのタイムゾーンが一致している必要があります。「タイムゾーンの設定」をご覧ください |
情報 | ||||
---|---|---|---|---|
| ||||
本構築作業の条件は以下の通りです
マスター | スタンバイ | Perforce super user | |
サーバ名 | master | standby | super |
ServerID | master | standby | レプリケーション用ユーザ名 |
Option | - | mandatory | service |
server-service | commit-server | standby | |
IP | 192.168.56.114 | 192.168.56.115 | |
Port | 1666 | 1666 | |
P4ROOT | /master | /standby |
構築手順
1.スタンバイサーバのサーバ仕様作成
...
【マスターサーバで作業します】
① p4コマンドで"standby"というスタンバイサーバのサーバ仕様を作成します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p master-server:port server standby |
...
-serverID |
...
192.168.56.114:1666 server standby |
2.設定を修正・追加します
赤文字部分が修正・追記箇所です② 設定を修正・追加します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
ServerID: |
...
standby |
...
server |
...
standby ●standard(default)を上書き |
...
nomandatory ●変更しない※新規サーバはmandatoryにできません。後で変更します |
...
master ●一行追記する( |
...
マスターサーバのserver ID) |
...
情報 | ||
---|---|---|
| ||
startup.1=journalcopy -i |
...
1:起動時にjournalcopy(マスターサーバのjournalをスタンバイに移送)を実行 |
...
1:移送したローカルのjournalから情報を読み取る |
...
1:アーカイブファイルを取得する |
2.サービスユーザの作成と設定【マスターサーバで作業します】
① p4コマンドで"service"というレプリケーション用サービスユーザを作成します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p master-server:port user -f service |
...
-user |
...
② 設定を追加します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
User: service |
...
service ●一行追記する |
3.サービスユーザ “service” のパスワードを設定します
実行コマンド
p4 ③ サービスユーザ "service" のパスワードを設定します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p master-server:port passwd service-user |
...
例:p4 -u super -p 192.168.56.114:1666 passwd service |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Enter new password: (任意のパスワードを入力します) |
4.サービスユーザ “service” のアクセスレベルの設定を追加します
実行コマンド
p4 protect
表示例)④ サービスユーザ "service" のアクセスレベルの設定を追加します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 protect |
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
write user * * //... |
...
【マスタサーバで作業します】
1.スタンバイサーバ用のチェックポイントファイルを作成します
作成したチェックポイントファイル名は“checkpoint”としています
...
●一行追加する |
3.チェックポイントの作成と移動【マスターサーバで作業します】
① スタンバイサーバ用のチェックポイントファイルを作成します
作成したチェックポイントファイル名は "checkpoint" としています
チェックポイントファイル(ファイル名:checkpoint.ckp.1)が作成されます
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p master-server:port admin |
...
checkpoint filename |
チェックポイントファイル(ファイル名:checkpoint.ckp.1)が作成されます
2.チェックポイントファイルを転送します
FTPツール② チェックポイントファイルを転送します
FTPツール(任意)を使用して、スタンバイサーバへチェックポイントファイル(checkpoint.ckp.1)を転送します。
※このマニュアルではスタンバイサーバの /tmp に格納しています
4.スタンバイサーバの設定
【スタンバイサーバでの作業です】
1~4の作業については、サーバ構築方法によって対応が異なります。実環境をご確認の上、必要に応じて作業してください。
1.P4ROOT用のディレクトリ “standby” を作成します ※既にルートフォルダを作成済みであれば、作業不要です
実行コマンド
mkdir /standby
2.作成したディレクトリのownerを“root”から“perforce”に変更します ※ownerがperforceであれば作業不要です
実行コマンド
chown を使用して、スタンバイサーバへチェックポイントファイルを転送します。
※ここではスタンバイサーバの /tmp に格納しています
4.スタンバイサーバの設定【スタンバイサーバでの作業です】
情報 |
---|
①~④の作業については、サーバ構築方法によって対応が異なります。実環境をご確認の上、必要に応じて作業してください。 |
① P4ROOT用のディレクトリ "standby" を作成します
※既にルートフォルダを作成済みであれば、作業不要です
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
mkdir /$P4ROOT |
② 作成したディレクトリのownerを"root"から"perforce"に変更します
※ownerがperforceであれば作業不要です
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
chown perforce:perforce -R /$P4ROOT/ |
③ FTP転送したチェックポイントファイル(checkpoint.ckp.1)を$P4ROOT(ここでは /
3.FTP転送したチェックポイントファイルを$P4ROOTへ移動します ※$P4ROOTへ転送済みであれば作業不要です
実行コマンド
mv standby)へ移動します
※$P4ROOTへ転送済みであれば作業不要です
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
mv /転送場所/filename /$P4ROOT/ |
...
4.チェックポイントファイルのownerを“root”から“perforce”に変更します
※ownerがperforceであれば、作業不要です
...
例:mv /tmp/checkpoint.ckp.1 /standby/ |
...
④ チェックポイントファイルのownerを"root"から"perforce"に変更します
※ownerがperforceであれば、作業不要です
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
chown perforce:perforce filename |
...
5.Perforceサービスを停止します
...
|
⑤ Perforceサービスを停止します
6.不要なファイルを削除します
構築したスタンバイサーバに存在するデータベース等を削除します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4dctl stop server-name |
...
例:p4dctl stop standby |
⑥ 不要なファイルを削除します
構築したスタンバイサーバに存在するデータベース等を削除します
$P4ROOTに移動し、以下のファイルを削除します
・ファイル名が[db.]で始まるファイル(データベース)すべて
・server.locksフォルダ:フォルダごと削除
実行コマンド例
rm
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
rm -f db.* |
7.ServerIDを指定します
サーバ“standby”のserverIDを“standby”に指定します
※既に指定されている場合は作業不要です
実行コマンド
p4d ⑦ ServerIDを指定します
サーバ"standby"のserverIDを"standby"に指定します
※既に指定されている場合は作業不要です
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4d -r /$P4ROOT -xD standby |
...
8.チェックポイントファイルを展開します。※ownerが“perforce”になるように展開してください。
...
-serverID |
⑧ チェックポイントファイルを展開します。※ownerが"perforce"になるように展開してください。
コマンド実行後、db.ファイルが作成されたことを確認します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4d -r /$P4ROOT/ - |
...
jr filename |
...
または |
...
sudo -u perforce p4d -r /$P4ROOT - |
...
実行後、db.ファイルが作成されたことを確認します
9.Perforceサービスを開始します
実行コマンド
p4dctl start server-name
コマンド例
p4dctl start standby
5.レプリケーションの設定と確認
【スタンバイサーバでの作業です】
1.ユーザ“service”が使用するレプリケーション用チケットを作成します
...
jr filename |
⑨ Perforceサービスを開始します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4dctl start server-name |
5.レプリケーションの設定と確認【スタンバイサーバでの作業です】
① ユーザ"service"が使用するレプリケーション用チケットを作成します
※"/standby/.p4tickets"はサーバ仕様作成時(手順1-②)に指定した場所を入力します。
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -p master_server:port -u service -E "P4TICKETS=/standby/.p4tickets" login |
...
例:p4 -p 192.168.56.114:1666 -u service -E "P4TICKETS=/standby/.p4tickets" |
...
2.レプリケーション用チケットの確認をします
...
login |
② レプリケーション用チケットの確認をします
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
ls -la /standby/.p4tickets |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
-r--------. 1 perforce perforce 53 10月 10 16:48 /standby/.p4tickets |
...
3.レプリケーションの確認をします
...
③ レプリケーションの確認をします
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p standby_server:port pull -lj |
...
例:p4 -u super -p 192.168.56.115:1666 pull -lj |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Current replica journal state is: Journal 1, Sequence 8403. |
注意 | ||
---|---|---|
| ||
※大規模なサイトの場合、同期に時間がかかる場合がありますので、時間をおいて再度コマンドを実行してください。 |
...
"Sequence"が同じ数値になれば同期完了です。 |
...
情報 | ||
---|---|---|
| ||
pull -ljコマンド:レプリカとマスターにおけるカレントジャーナルの状態を表示するコマンドです |
6.mandatoryへ変更する【マスターサーバで作業します】
① マスターサーバとスタンバイサーバのジャーナルの整合性を確認します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 servers -J |
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
master '2019/10/18 14:07:44' commit-server 1/8773 1/8773 wadL/1 1 |
...
2.serverID “standby” の設定を表示します。
...
情報 | ||
---|---|---|
| ||
p4 servers -J:ジャーナルコピーの進行状況を確認するコマンドです。 |
② serverID "standby" の設定を表示します。
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 -u super -p master-server:port server standby |
...
-serverID |
...
192.168.56.114:1666 server standby |
3.serverID “standby” のOptionsを変更します
赤文字が変更箇所です
⋮③ serverID "standby" のOptionsを変更します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
⋮ |
...
standby |
...
mandatory ●nomandatoryからの書き換え |
...
4.mandatoryに変更されたことを確認します
...
⋮ |
④ mandatoryに変更されたことを確認します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 servers -J |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
master '2019/10/18 14:09:47' commit-server 1/9179 1/9179 wadL/1 1 |
7.フェイルオーバー:テスト運用―マスタサーバが起動している場合
マスターサーバが起動できており、ネットワークに接続できている状況を想定した運用のご案内です。
マスタサーバが起動していない・ネットワーク接続ができない状況は次頁をご覧ください。
1.フェイルオーバーの確認
実行コマンド【スタンバイサーバで作業します】
p4 failover
...
■ フェイルオーバー:テスト運用―マスターサーバが起動している場合【スタンバイサーバで作業します】
注意 | ||
---|---|---|
| ||
マスターサーバが起動できており、ネットワークに接続できている状況を想定した運用手順です。 |
① フェイルオーバーの確認
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 failover |
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Checking if failover might be possible ... |
2.フェイルオーバーの実行② フェイルオーバーの実行
自動的にPerforceサーバが再起動され、マスターサーバへと切り替わります。
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 failover -y |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Starting failover process ... |
...
自動的にPerforceサーバが再起動され、マスタサーバへと切り替わります。
8.フェイルオーバー:テスト運用―マスタサーバが起動していない場合
マスターサーバが起動できない・ネットワークに接続できない状況を想定した運用のご案内です。
マスタサーバが起動している・ネットワーク接続ができる状況は前頁をご覧ください。
...
■ フェイルオーバー:テスト運用―マスターサーバが起動していない場合【スタンバイサーバで作業します】
注意 | ||
---|---|---|
| ||
マスターサーバが起動できない・ネットワークに接続できない状況を想定した運用手順です。 |
① フェイルオーバーの確認
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 failover -s master-server |
...
例:p4 failover -s master |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Checking if failover might be possible ... |
...
情報 | ||
---|---|---|
| ||
-s serverID………切り替えるサーバ(今回はマスターサーバ)のserverIDを指定します |
② フェイルオーバーの実行
自動的にPerforceサーバが再起動され、マスターサーバへと切り替わります。
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 failover -s master-server -y |
...
例:p4 failover -s master -y |
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Starting failover process ... |
...
1.状況を確認する
【エッジサーバで作業します】
実行コマンド
p4 pull -lj
...
■ フェイルオーバー:テスト運用―参照サーバの変更
注意 | ||
---|---|---|
| ||
この項目では、フェイルオーバーを実行後、旧マスターサーバ(ここではmaster)を参照していたサーバでの対応についてのご案内です。ここではエッジサーバを例にしています。 |
①状況を確認する【エッジサーバで作業します】
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 pull -lj |
情報 | ||
---|---|---|
| ||
Replica access to P4TARGET server failed. |
2.“P4TARGET”を修正します
実行コマンド
sudo ② “P4TARGET”を修正します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
sudo -u perforce p4d -r /edge1 "-cset edge1#P4TARGET=新master-server:port" |
...
例:sudo -u perforce p4d -r /edge1 "-cset edge1#P4TARGET=192.168.56.115:18800" |
3.変更を確認します
実行コマンド
sudo ③ 変更を確認します
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
sudo -u perforce p4d -r /edge1 "-cshow" |
...
4.同期の確認
...
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
⋮ |
...
|
④ 同期の確認
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
p4 pull -lj |
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Current replica journal state is: Journal 4, Sequence 6065. |
...
"Sequence"が同じ値になれば同期完了です。 |
構築、テストは以上です。