티스토리 뷰

LAYER 4 & 7

heartbeat 설치 및 운영

CHOMAN 2015. 6. 4. 16:47

HeaetBeat (고가용성)

아래 문서는 CENTOS-5 기반에서 테스팅 되었음
아래 문서는 CENTOS-6 기반에서도 동작하나 문법이나 환경이 약간식 다를수 있음
CENTOS7은 heartbeat 지원하지 않음

개요

Linux-Ha 프로젝트 그룹에서 만든 모듈
시스템 레벨에서 Fail - over (시스템 리부팅, 시스템 장애)
어플리케이션 레벨은 사용불가 ( 프로세스 및 데몬 ... 장애)
VIP (Virtual IP) 를 이용한 시스템

fake 방식

한 노드 장애시 다른 노드가 장애 노드의 IP 혹은 자원 (데몬) 을 잡아 대신 처리하는 방식으로 셋팅

설치 (그냥 깔끔하게 YUM 으로 설치한다)

yum install heartbeat*

HeartBeat 설정파일 (/etc/ha.d/)

  • 마스터에 하나 설정파일 설정해놓고 슬레이브에다가 복사해서 사용하면 됨

디폴트 파일은 /usr/share/doc/heartbeat 에 위치하고 있음 여기거 땡겨쓰면 됨

ha.cf : 하트비트 기본설정파일
haresources : 공유할 자원 및 스크립트 정의
authkeys : 인증방식에 대한 정의

Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended

  chmod 600 /etc/ha.d/authkeys

/etc/ha.d/ha.cf

logfile /var/log/ha-log 로그파일을 남기는 경로
keepalive 2 두 노드간 얼마나 자주 Heartbeat를 주고 받을지 2초
deadtime 6 호스트가 죽었다고 판단하는 시간 6초 (6초가 지나면 failover 시작)
warntime 10
initdead 120
udpport 694 UDP Heartbeat 패킷을 보낼 포트 지정
udp br0 UDP를 보낼 인터페이스 (bcast 옵션과 같은거? 같음) : 바이패스 카드로 인해 공인 잡혀 있는 br0로 셋팅, 크로스로 묶어서 ethX 별로 인터페이스는 바이패스 상태 감지 불가
bcast br0 heartbeat를 보낼 인터페이스 (지정한 인터페이스로 heartbeat가 브로드캐스팅 되는걸로 판단됨)
nice_failback 한 노드가 죽을시 다른 노드로 자원이 이동 (auto_failback on과 같은 옵션인거 같음)
auto_failback on
node LVS1 클러스터로 묶일 시스템 지정 (uname -n 하면 나오는 이름으로 지정) : 마스터
node LVS2 슬레이브
  • initdead 120 --> heartbeat 최초 시작시 haresource 구동까지 2분 걸림

ha.cf 에서 node 를 IP주소 입력하지 말것!

cluster nodes are named by `uname -n` and must be declared with a 'node' directive in the ha.cf file

각 서버의 hostname (uname -n) 입력한다

bcast
UDP 브로드캐스트로 heartbeat 신호 보냄, udpport 지시자와 함께 사용될수 있으며 기본 694번 포트로 내보낸다
같은 네트워크 즉 같은 브로드캐스트 도메인 내에 있는 서버들은 이 heartbeat신호를 다 받게 된다.

bcast eth0, eth1 ... ( 1개 이상의 이더넷 인터페이스)

ucast
UDP 유니캐스트로 heartbeat 신호 보냄
브로드캐스트로 heartbeat 신호를 보내면 네트웍 자원이 낭비 될수 있으므로 유니캐스트로 하는게 낫지 않을까?

ucast eth0 상대방IP

/etc/ha.d/haresource

LVS1 192.168.10.1 192.168.10.2 192.168.10.3 192.168.10.4
LVS1 192.168.10.1/24/192.168.10.255
LVS1 192.168.10.1/24/eth0:0/192.168.10.255
LVS  IPaddr::192.168.10.1/24/eth0:0/192.168.10.255

마스터 노드 이름 (예시 : LVS1) 와 공유할 아이피 자원들을 적어준다 즉 Virtual IP들을 명시해준다
버전마다 haresource 테스팅은 필수이며 버전별로 약간식 다른감이 있는건 안비밀

/etc/ha.d/authkeys

  auth 1
1 crc
노드간 인증방법 ( 보안세기 : crc < md5 < sha1 )
  • chmod 600 authkeys (Root권한만 읽을수 있도록 설정)

vim /etc/hosts

192.168.0.1 linux1 
192.168.0.2 linux2

그냥 단순히 linux1 이라고 했을때 sendmail start시 linux1 에 대한 DNS 질의가 안되어서 그런지 몰라도

start가 되지 않았다. 이럴 경우 아래와 같이 도메인을 명시해주면 문제 해결될것임

DNS에 web1.linux1.co.kr 가 질의가 되지 않더라도 작동함 (heartbeat에서 도메인을 가지고 작업되는 경우 없음

192.168.0.1 web1.linux1.co.kr
192.168.0.2 web2.linux2.co.kr

분배 설정 (/etc/ha.d/ldirectord.cf)

checktimeout=3
checkinterval=1
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no

#### LVS TEST
virtual=XXX.XXX.26.6:80
scheduler=sh
checktype=connect
protocol=tcp
real=XXX.XXX.26.4:80 masq 1
real=XXX.XXX.26.5:80 masq 1

웹서버 하나가 죽을시 Weight값을 0으로 주어 격리시킨다 (quiescent=yes)
웹서버 하나가 죽을시 LVS table에서 다운된 웹서버의 아이피를 삭제하여 라우팅 제거 (quiescent=no)

허트비트 이중화 직렬로 방화벽 2개 구성시 둘다 바이패스 카드 이용시

[MASTER]
br0 : 192.168.0.1
eth0 : 공인 (관리용 및 웹인터페이스)
eth0:0 vip ...
eth1 eth2 : 브릿지

[SLAVE]
br0 : 192.168.0.2
eth0 : 공인 (관리용 및 웹인터페이스)
eth0:0 vip ...
eth1 eth2 : 브릿지

* MASTER BYPASS 전환시

SLAVE 에 VIP 인터페이스 올라옴 분배시작

MASTER 도 VIP를 가지고 있지만 분배는 하지 않음 그냥 바이패스된 상태라 통과하는듯

* MASTER BYPASS 리부팅시

MASTER 는 WatchDog 3초에 의해 바이패스 전환 → SLAVE 가 VIP 올라오면서 분배시작
MASTER 장애 복구 완료후에는 반드시 논바이패스 전환후 하트비트 스타트 ( MASTER에 자동으로 허트비트가 시작되게 한다면 낭패임)
다시 MASTER 가 VIP가지고 오면서 분배시작

충분히 테스팅후 서비스 하는것이 좋다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함