Replica 설정
1. hosts 파일에 master, replica 등록
172.16.10.103 hiss
172.16.10.121 gabriel
2. Perforce 서비스 중지
3. Master Checkpoint 복원
- 복원 전에 P4를 설치하며 있던 C:\Perforce\db.* 파일은 다른 디렉토리로 백업 한다.
> p4d -r C:\Perforce -z -jr checkpoint.1.gz
4. Master에 Service 계정 로그인 티켓 생성
> p4 -E P4TICKETS=C:\Perforce\.p4tickets -u service -p hiss:1666 login
Enter password:
User service logged in.
5. Replica 서버 ID 지정
- P4ROOT에 "gabriel" 이라는 서버 ID를 생성 한다.
- 아래와 같이 입력해도 되고 echo를 사용해서 파일을 생성해주어도 된다.
> p4d -r C:\Perforce -xD Gabriel
or
echo Gabriel > C:\Perforce\server.id
6. Master의 Versioned File Content 복사
- rsync 나 xcopy 등을 이용해 Master와 같은 위치에 복사한다.
- 혹은 Master와 Replica 가 같은 네트워크에 있을 경우 윈도우 공유 폴더를 서로 지정하고 FreeFileSync 같은 프로그램을 이용하여 배치 스크립트로 만들어 놓는 것이 편하다.
7. Journal 백업 디렉토리 생성
- C:\Perforce\checkpoints 로 디렉토리를 생성해준다.
- Master에서 Metadata 백업으로 checkpoint를 생설할때마다 이 디렉토리에 백업 저널 파일이 생성된다.(journalPrefix=C:\Perforce\checkpoints\backup 설정 참조)
8. Perforce 시작
- 등록되어 있는 서비스로 시작
참고 : 다른 포트로 시작하려면 아래와 같이 실행
> p4d -r C:\Perforce -p 1669 -d
Replica 모니터링
1. Replica 정보 확인
- ServerType replica 로 설정 되었다.
> p4 -u admin -P admin -Ztag servers -J
... ServerID Gabriel
... Updated 2023/12/15 14:05:01
... ServerType replica
... ServerOptions nomandatory
... PersistedJournal 1
... PersistedSequence 31016
... AppliedJournal 1
... AppliedSequence 31016
... JAFlags wadL/1
... IsAlive 1
2. Metadata 복제 지연 관련 상황
- Journal 이름과 시퀀스가 차이 나면 동기화 지연이 발생하고 있다는 뜻.
> p4 -u admin -P admin pull -l -j
Current replica journal state is: Journal 6, Sequence 972.
Current master journal state is: Journal 6, Sequence 972.
The statefile was last modified at: 2023/12/12 17:18:37.
The replica server time is currently: 2023/12/12 17:21:06 +0900
3. 진행중인 복제의 남은 파일개수와 바이트수 현황
> p4 -u admin -P admin pull -l -s
File transfers: 0 active/0 total, bytes: 0 active/0 total.
Replica를 Master로 승격 (Failover)
Master 장애로 복구 불능 상태로 빠지면 Replica가 Master로 승격되야 하는 경우가 있다.
Replica는 Readonly 상태로 쓰기가 되지 않는다.
P4ROOT 에 server.id, .p4tickets 파일의 이름을 변경하거나 제거 해주면 쓰기가 가능해진다.
서비스 재시작은 필요 없고 클라이언트의 재접속이 필요 할 수 있다.
복제 모드인경우 replicaLog에 로그가 쌓이고 master 모드인경우 log 에 로그가 쌓인다.
장애 Master가 복구되어 Replica로 사용하고자 한다면 아래 글의 과정을 다시 수행하면 된다.
(승격된 Replica가 Master로 장애 Master가 Replica로 설정)
단, 기존에 사용했던 Gabriel, hiss 의 서버 ID는 사용하지 않거나 (승격된 Replica에서 Gabriel의 정보를 가지고 있음) server를 수정 혹은 삭제하고 사용한다.(p4 server gabriel)
- server ID 삭제
> p4 -u admin -P admin server -d gabriel
replication 성능 향상
1. rdb.lbr 파일 제거(replica에서 진행)
완료되지 않은 파일 전송 때문에 replication의 지연이 발생되는 경우가 있다.
이는 간헐적으로 특정 문자 전송에 실패하여 지속적인 재시도가 발생되거나 사이즈가 큰 파일을 전송하는 경우에 지연이 발생된다.
replica 에서 아래의 명령어로 현재 지연이 발생되는 내용을 확인한다.
p4 pull -l
이후 replication을 중지하고 rdb.lbr 파일을 삭제하거나 이름을 변경한다.
그리고 수동으로 파일을 옮긴 후 재시작한다.
2. net.rcvbufsize 설정 (master에서 진행)
2017.1 이후 버전은 default 값이 1M 이고 이전 버전은 32K 이다.
아래 명령어를 사용하여 버퍼사이즈를 증가하는 것을 고려해보아야한다.
p4 configure set net.rcvbufsize=1M
3. rpl.compress 설정 (master에서 진행)
앞서 설정했던 rpl.compress=4 값은 journal pull, journal copy에 대해 master와 replica 사이의 압축 전송에 대한 것이다.
journal 및 file 전송 등의 모든 data stream을 압축 하려면 아래와 같은 명령어로 3으로 설정한다.
p4 configure set rpl.compress=3
압축에 대한 내용 참조 : https://www.perforce.com/manuals/cmdref/Content/CmdRef/configurables.alphabetical.html#rpl.compress
'시스템 > Perforce P4' 카테고리의 다른 글
[Perforce P4] Replica 복제 서버 만들기[3] (master journal 순환, open for read: journal.N: 지정된 파일을 찾을 수 없습니다.) (2) | 2024.01.08 |
---|---|
[Perforce P4] Replica 복제 서버 만들기[1] (0) | 2023.12.12 |