본문 바로가기

시스템/Perforce P4

[Perforce P4] Replica 복제 서버 만들기[2]

반응형

 

1편 참조 : https://ploz.tistory.com/entry/Perforce-P4-Replica-%EB%B3%B5%EC%A0%9C-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

 

 

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로 설정)

https://ploz.tistory.com/entry/Perforce-P4-Replica-%EB%B3%B5%EC%A0%9C-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

[Perforce P4] Replica 복제 서버 만들기[1]

P4는 크게 Metedata를 보관하는 DB와 Transation Log 역할을 하는 Journal, 그리고 아카이브파일을 저장하는 Versioned File Content로 총 3부분으로 이루어져 있다. SCM의 경우 백업이 매우 중요시 되는데 P4의 Cold

ploz.tistory.com

 

 

단, 기존에 사용했던 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

 

Configurables - alphabetical list

 

www.perforce.com

 

반응형