Pacemaker Corosync 이해
페이지 정보
본문
Corosync
corosync는 클러스터의 엔진으로서 멤버쉽, 메세징, 쿼럼 등의 클러스터 infracture를 제공하며,
노드와 노드 간에 전달되는 토큰의 순서,안정성,흐름을 제어합니다.
통신 방식
RHEL6.1까지는 UDPM(UDP-Multicast)방식이기 때문에 동일한 네트워크(multicast 구간) 안에서만 구성이 가능하였지만,
RHEL6.2 이상부터 UDPU(UDP-Unicast)방식을 지원하기 때문에 서로 간에 네트워크 통신이 가능한 환경이면 물리적인 위치의 제약을 받지 않고 클러스터 구성이 가능하게 되었습니다.
RHEL7에서 기본 설정은 UDP-Unicatst 방식으로 상대 노드의 5405 포트에 지속적으로 UDP패킷을 발송합니다.
UDP/5405 패킷을 캡쳐 해보면 아래와 같이 메세지를 주고 받는 것을 확인할 수 있습니다.
# tcpdump -nn -i ens224 'port 5405'
tcpdump:
verbose output suppressed, use -v or -vv for full protocol decode
listening on
ens224, link-type EN10MB (Ethernet), capture size 262144 bytes
13:14:10.697323
IP 192.168.254.100.5405 > 192.168.254.200.5405: UDP, length 74
13:14:10.697456
IP 192.168.254.200.5405 > 192.168.254.100.5405: UDP, length 74
13:14:10.716960
IP 192.168.254.100.50624 > 192.168.254.200.5405: UDP, length 87
13:14:10.878291
IP 192.168.254.100.5405 > 192.168.254.200.5405: UDP, length 74
13:14:10.878484
IP 192.168.254.200.5405 > 192.168.254.100.5405: UDP, length 74
13:14:11.060302
IP 192.168.254.100.5405 > 192.168.254.200.5405: UDP, length 74
Timeout 시간 변경 (RHEL7 or RHEL8)
Timeout 값은 1초(default) 이므로 1초 넘게 통신이 되지 않으면 펜싱이 발생하게 됩니다.
이는 일시적인 네트워크나 CPU부하 시 또는 네트워크가 열악한 환경에서 의도치 않은 펜싱을 발생 시킬 수 있으므로 클러스터 구성 시 해당 timeout값을 최소 5초로 설정 하는 것을 권장합니다.
** 클러스터 재시작이 필요하지 않습니다 **
1) 현재 Timeout 값 확인
#
corosync-cmapctl | grep totem.token
runtime.config.totem.token
(u32) = 1000 ## 1초(밀리세컨 단위)
2) 모든 노드의 corosync.conf에서 Timeout값 설정
# vi
/etc/corosync/corosync.conf
...
totem {
version: 2
secauth: off
cluster_name: mycluster
transport: udpu
token: 5000 ## 해당 값 추가 (밀리세컨 단위)
}
...
3) corosync 리로드
# pcs cluster sync ## 한쪽 노드만 설정을 변경했다면, 변경한 노드에서 해당 명령어 실행하여 수정된 내용을 모든 노드로 전파
# pcs cluster reload
4) 변경 확인
#
corosync-cmapctl | grep totem.token
runtime.config.totem.token
(u32) = 5000
- 이전글Pacemaker 리소스 에이전트 설명 21.12.16
- 다음글RHEL8 HA-LVM 설정 21.12.09
댓글목록
최고관리자님의 댓글
최고관리자 작성일좋은글 감사합니다. ^^
darkrmeo님의 댓글
darkrmeo 작성일
/etc/corosync/corosync.conf 변경 후 sync까지되고 양노드에 totken: 5000 으로 변경된게 보이는데.
reload 하고 corosync-cmapctl | grep totem.token 하면 값이 그대로네요 .. 왜이럴까요