본문 바로가기
공부/HA

[Pacemaker] CentOS 7에 Pacemaker 구성하기

by haejang 2021. 4. 11.
728x90
728x90

 

출처

wlstnans.tistory.com/129

blog.boxcorea.com/wp/archives/1784

jeongyd.tistory.com/104

 

사실 다 완벽하게 이해하고 실습하는 것은 아니다

그래도 최대한 이해해보고 설명해보면서 진행하겠다

일단 해보자..!


1. 사전 환경 구성

호스트 : pcmk1(172.31.0.10), pcmk2(172.31.0.20)

OS : CentOS 7 (AWS EC2)

사용할 가상 IP : 172.31.0.30

 

 

호스트간 통신에 필요한 포트 : TCP 2224, 3121, 5403, 21064, 9929 / UDP 5404, 5405, 9929 (보안그룹에서 open)

 

2. 호스트 등록 (양쪽 다)

양 쪽 호스트에서 vi /etc/hosts 로 각 호스트들을 등록해준다

172.31.0.10     pcmk1
172.31.0.20     pcmk2
172.31.0.30     vip

 

 

3. cluster package 설치 / pcs 데몬 시작 (양쪽 다)

yum install -y pacemaker corosync pcs

systemctl start pcsd
systemctl enable pcsd

 

4. 클러스터 계정 설정 (양쪽 다)

hacluster 계정은 자동으로 생성된거고, 해당 계정의 비밀번호는 양쪽 모두에서 동일하게 설정해줘야 한다

passwd hacluster
[암호 2번 입력]

 

 

5. 각 노드에 대한 hacluster 사용자 인증 (한쪽에서만 진행)

pcs cluster auth pcmk1 pcmk2
hacluster
[암호]

 

 

각 노드 간 통신이 안되면 실패할 수 있다

위에 적어놓은 통신 포트들을 열고, /etc/hosts 파일도 확인해보자

 

6. 클러스터 생성/실행 (한쪽만 진행)

pcs cluster setup 명령을 통해 corosync를 구성하고 다른 노드와 동기화한다

pcs cluster start 명령으로 클러스터를 실행시킬 수 있다

pcs cluster setup --name first_cluster pcmk1 pcmk2
pcs cluster start --all

 

 

 

7. 클러스터 확인

# 클러스터 통신 확인
corosync-cfgtool -s
# 멤버쉽과 쿼럼 확인
corosync-cmapctl | egrep -i members
# corosync / 클러스터 상태 확인
pcs status corosync
pcs status

 

 

8. STONITH 비활성화 (한쪽만)

클러스터 설정을 변경하기 전엔 crm_verify 명령을 통해 유효성을 확인해주는게 좋다고 한다

crm_verify -LV

 

STONITH 부분에서 오류가 난다!

이전 글에서도 말했지만, STONITH는 서비스가 중복으로 실행되어 충돌나는것을 방지하기 위해 오류가 발생한 호스트를 죽이는 Fencing 기능이다

cluster를 실행하면 데이터의 무결성을 확보하기 위해 기본으로 STONITH가 활성화되어있다 -> 비활성화를 해주자

pcs property set stonith-enabled=false
pcs property show

 

다시 crm_verify -LV를 해보면 오류가 안뜬다

9. Active/Passive 클러스터 설정 - 가상IP 생성 (한쪽만)

가상 IP를 리소스로 추가해주자

pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=172.31.0.30 cidr_netmask=24 op monitor interval=30s

 

 

pcs statusip addr로 가상 IP가 잘 추가된걸 확인할 수 있다

<ocf:heartbeat:IPaddr2><리소스 표준:리소스 프로바이더:리소스 스크립트 이름> 형태이다

리소스 표준에 대해선 지난 글에서 설명한 적 있다

아무튼 각 필드에 들어갈 수 있는 이름들은 아래 명령들로 확인할 수 있다

pcs resource standards
pcs resource providers
pcs resource agents ocf:heartbeat

 

 

이 중 가상 IP를 생성하는 스크립트가 IPaddr2이다

 

10. Failover Test

먼저 양쪽 호스트에서 pcs status로 상태를 확인해보자

 

 

VirtualIP 리소스가 pcmk1에서 실행되고 있다

pcmk1을 정지시키면서 failover를 확인해보자 (한쪽에서만)

pcs cluster stop pcmk1

pcmk2에서 상태를 확인해보면

 

 

리소스가 pcmk2로 넘어왔다

pcs cluster start pcmk1로 다시 실행해도 리소스는 다시 돌아오지 않는다

 

 

11. 클러스터 서비스로 아파치 웹서버 등록 (양쪽 다)

먼저 Apache를 설치해준다

yum install -y httpd

vi /var/www/html/index.html 로 파일을 설정해준다

<h1>Hello I'm pcmk</h1>

별 의미 없이 대충 만들어줬다

 

 

vi /etc/httpd/conf.d/status.conf 에 아래 내용을 입력해준다

<Location /server-status>
    SetHandler server-status
    Require local
</Location>

 

 

이제 웹서비스 리소스를 등록해주자 (한쪽만)

pcs resource create WebService ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=1min

 

12. 리소스 통합 (한쪽만)

pcs status를 실행해보면

 

 

VirtualIP와 WebService가 각각 다른 호스트에서 돌고있다

이 둘을 묶어줄건데, 리소스에 대한 설정은 pcs constraint를 사용하면 된다

pcs constraint colocation add WebService with VirtualIP INFINITY

INFINITY는 우선순위에 대한 점수를 무한으로 준 것이다

다시 pcs status를 해보면

 

 

둘이 같이 pcmk2에서 돌고있다

 

13. 리소스 이동 (한쪽만)

만약 두 노드 중 하나에게 더 큰 우선순위를 지정하고 싶으면 constraint location을 사용하면 된다

pcs constraint location WebService prefers pcmk1=50

 

 

pcs constraint만 실행하면 현재 적용중인 constriant들을 볼 수 있다

 

 

pcs constraint --full 을 실행하면 constraint의 id를 확인할 수 있고, 이를 사용해서 remove도 할 수 있다

pcs constraint --full
pcs constraint remove <id>

 

 

일단은...끝이다

fencig(문제 생긴 놈 자동으로 죽이는) 기능은 구현되지 않았다

뭐 어디서는 DRBD도 구성한다 SBD도 구성한다 그러는데 아직 정확히 최소로 필요한게 뭔진 모르겠다

 

SUSE용, SAP용 pacemaker 구성 등등 이것저것 다 해보다보면 잘 알게되지 않을까 싶다

 

728x90
728x90

'공부 > HA' 카테고리의 다른 글

[HA] Fencing과 SBD  (0) 2021.04.16
[HA] HA와 Pacemaker + 관련된 개념들  (0) 2021.04.11

댓글