본문 바로가기

시스템/Perforce P4

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

반응형

P4는 크게 Metedata를 보관하는 DB와 Transation Log 역할을 하는 Journal, 그리고 아카이브파일을 저장하는 Versioned File Content로 총 3부분으로 이루어져 있다.

 

SCM의 경우 백업이 매우 중요시 되는데 P4의 ColdBackup은 Metadata(Checkpoint), Journal, Versioned File Content 3부분을 모두 백업 해야 완전 장애시에 복구 할 수 있다. 

(Journal의 경우 Metadata Checkpoint가 만들어지면 그 시점에서 Journal의 내용이 포함되므로 Checkpoint  시점으로 복원한다면 Journal은 필요 없을 수 있다)

 

다만 ColdBackup은 백업 간격에 따라 최대 그 간격만큼 유실되는 Data가 발생할 수 있어 유실을 최소화 하고자 한다면 Warm, Hot Backup 형태를 지향해야 한다.

 

그 시작으로 실시간에 가깝게 Data를 Replication 하며 장애시에 즉각적인 대처가 가능 할 수 있는 복제(Replica) 서버를 구축해 보고자 한다.

 

참조 : https://portal.perforce.com/s/article/1260

 

 

 

주의 사항


1. Replica의 P4 릴리즈는 Master의 릴리즈와 동일하거나 그 이후버전이어야한다.
2. 업그레이드는 Master, Replica 동시에 진행해야한다.
3. Replica는 Master와 동일한 유니코드 설정을 가져야 한다.
4. Replica와 Master는 동일한 파일 시스템을 사용해야한다.
5. Replica는 별도의 라이선스가 필요없으며 Master의 라이선스를 복제하여 사용할수 있다.
6. Master와 Replica의 시간값은 동일해야한다.
7. Replica의 초기 시드(Replication이 본격적으로 이뤄지기 전)에서 Master의 현재 CheckPoint와 Versioned File Content가 요구 된다.

 

 

 

 

 

Helix Core Server 설치


버전은 Helix Core Server 2021.1 이며 Windows Server 2019 이다.

Master와 Replica 모두 동일하게 설치해도 무관하다.

P4D, Command를 설치하고 위치는 편의상 C에 Perforce로 지정한다.

 

Data가 저장되는 P4ROOT는 편의상 설치 위치와 동일하게 한다.

 

 

 

 

 

설정 전에


Master

 - IP : 172.16.10.103 

 - ServerID : hiss

 - 버전 : Helix Core Server 2021.1

 - Port : 1666

 - admin 계정 : admin/admin

 - Replicaion 계정 : service/service

 

Replica

 - IP : 172.16.10.121

 - ServerId : gabriel

 - 버전 : Helix Core Server 2021.1

 - Port : 1666

 

 

 

 

Master 설정


 

Comand Line 에서 진행한다.

 

1. "gabriel" Replica ID를 생성 및 설정

 - Services 에 replica 로 입력 하며 Description을 적절히 수정한다.

> p4 -u admin -P admin server gabriel
ServerID:   gabriel
Type:       server
Services:   replica
Description:
        Read-only replica pointing to hiss:1666

 

 - DistributedConfig 를 아래와 같이 한번에 입력하거나 CMD에서 하나씩 설정할 수 있다.

> p4 -u admin -P admin server gabriel

ServerID:	gabriel
Type:	server
Services:	replica
Options:	nomandatory
Description:
	Read-only replica pointing to hiss:1666
DistributedConfig:
	db.replication=readonly
	journalPrefix=C:\Perforce\checkpoints\backup
	lbr.autocompress=1
	lbr.replication=readonly
	monitor=2
	P4LOG=replicaLog.txt
	P4TARGET=hiss:1666
	P4TICKETS=C:\Perforce\.p4tickets
	rpl.compress=4
	server=3
	serviceUser=service
	startup.1=pull -i 1
	startup.2=pull -u -i 1
	startup.3=pull -u -i 1

 

 

 

 - CMD에서 하나씩 설정하려면 아래 더보기 참조

더보기

1.1 Replica(gabriel)에서 Replication Target 설정

> p4 -u admin -P admin configure set gabriel#P4TARGET=hiss:1666

 

 

 

1.2 Replica Metadata DB Readonly 설정

> p4 -u admin -P admin configure set gabriel#db.replication=readonly

 

 

 

1.3 Replica Journal readonly 설정

> p4 -u admin -P admin configure set gabriel#lbr.replication=readonly

 

 

 

1.4 Relication를 처리하는 풀 명령

 - startup.1 : metadata 복제 수행

 - startup.2 : Versioned File Content 복제 수행

 - -i <초> 옵션 : 콘텐츠 검색을 위한 폴링 간격으로 초딘위 이며 0으로 설정 하면 Master가 변경되는 즉시 복제 서버로 복제 된다.

 - -u 옵션 : Journal 대신 Versioned File Content 복제 옵션

> p4 -u admin -P admin configure set gabriel#startup.1="pull -i 1" 
> p4 -u admin -P admin configure set gabriel#startup.2="pull -u -i 1"
> p4 -u admin -P admin configure set gabriel#startup.3="pull -u -i 1"

1초 간격으로 변경된 콘텐츠를 확인하고 복제한다.

 

 

 

1.5 Replication시 압축 설정

 - rpl : Journal

 - lbr : Versioned File Content

> p4 -u admin -P admin configure set gabriel#rpl.compress=4
> p4 -u admin -P admin configure set gabriel#lbr.autocompress=1

 

 - 0 : 압축 없음.

 - 1 : Version File Content에 대한 압축

 - 4 : Journal 복제에 대한 압축

 

 

 

1.6 Replica에서 Replication Log 이름 지정

> p4 -u admin -P admin configure set gabriel#P4LOG=replicaLog.txt

 

 

 

1.7 Log Level

> p4 -u admin -P admin configure set gabriel#server=3

 

 

 

1.8 Replica Process 모니터 활성화

> p4 -u admin -P admin configure set gabriel#monitor=2

 

 

 

1.9 Replication 시 사용할 서비스 유저

> p4 -u admin -P admin configure set gabriel#serviceUser=service

 

 

 

1.10 Replica에서 Master로 Replication을 위한 접근 시 사용할 로그인 티켓 위치

 - (이 경우 service 유저의 티켓이 생성)

> p4 -u admin -P admin configure set gabriel#P4TICKETS=C:\Perforce\.p4tickets

 

 

 

1.11 Master에서 Journal 순환 시 Replica에서 순환된 Journal 백업 위치

 - Master에서 checkpoint를 생성할 경우 replica에서의 journal 백업은 C:\Perforce\checkpoints 디렉토리에 backup.jnl.* 파일로 이뤄진다. 

 - replica에서 디렉토리 자동 생성 되지 않으니 수동 생성 해줘야 한다.

> p4 -u admin -P admin configure set gabriel#journalPrefix=C:\Perforce\checkpoints\backup

 

 

 

2. P4V를 통해 P4D에 접근 후 Administrator Tool를 통해 간단히 service 유저를 생성한다.

 

참고: cmd로 user 생성

> p4 -u admin -P admin user -f service
User:      service
Email:     services@service
FullName:  Service
Type:      service

 

참고 : service 유저에 대한 패스워드 설정

> p4 -u admin -P admin passwd service

 

참고 : service 유저에 대한 타입설정

> p4 -u admin -P admin user -f service
Type: service

 

 

 

3. service 유저에 대한 그룹 설정

> p4 -u admin -P admin group service_group
Users: service
Timeout: unlimited

 

 

 

4. protections table에 대한 service 유저의 권한 부여

> p4 -u admin -P admin protect
super user service * //...

 

 

 

5. Checkpoint 생성

> p4 -u admin -P admin admin checkpoint -Z
> p4 -u admin -P admin journals -F type=checkpoint -m1 -T jfile

 

 

 

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%B02

반응형