본 설치는 Centos6 로 테스트 하였습니다.
ha.cf : 하트비트 기본설정파일
haresources : 공유할 자원 및 스크립트 정의
authkeys : 인증방식에 대한 정의
default 파일 : /usr/share/doc/heartbeat <---( heartbeat 설치시 이 경로에 설치됨 | rpm -qa heartbeat -d )
heartbeat 설정파일 : /etc/ha.d/
------------------------------------------------------------------------------------------------------------------------------
hartbeat 란 ?
heartbeat란 linux-ha 프로젝트에서 만든 툴이다. linux-ha 프로젝트의 목표는 리눅스 운영체제에 고가용성을 제공하는 것이다.
인터넷 상에서 상용 서비스가 급속히 증가하고 있는데, 이런 것들은 중간에 중단되는 일이 없이 지속적으로 서비스를 제공하는 것이 중요하다. 이러한 특징을 고가용성이라고 하는데, 이러한 특징은 하드웨어나 소프트웨어를 중복되게 배치함으로써 가능하다.
예를 들어 www.yahoo.com과 같은 회사는 http 서버가 잠시만 다운되어도 막대한 손실을 입을 수 있다. 이러한 회사는 http 서버를 2개(혹은 그 이상)를 둔다. 하나는 primary, 다른 하나는 standby이다. 평소에는 primary가 웹서버 역할을 하지만, primary가 고장이 나거나 갑자기 전원이 꺼지는 경우에는 standby가 primary 대신 웹서버의 역할을 한다. 이렇게 하면 외부에서 www.yahoo.com에 접속하는 사용자는 웹서버가 다운되었다는 사실을 전혀 알지 못 하고, 평소처럼 접속할 수 있다.
그렇다면 primary에 고장이 발생했다는 사실을 standby가 알 수 있어야만 primary를 대신해서 웹서비스를 할 수 있을 것이다. 이것은 어떻게 가능할까? 평소에 primary와 standby는 주기적으로 메세지를 교환한다. 이 메세지가 어느 시간 이상동안 도착하지 않으면 standby는 primary가 고장난 것으로 간주한다. 이 때 주고 받는 메세지를 heartbeat(심장 박동)이라고 한다. 위에서 이야기한 linux-ha 프로젝트에서 구현한 heartbeat이라는 툴은 이러한 메세지를 주고 받는 기능뿐만 아니라, 실제로 primary가 고장이 난 경우에 primary가 제공하던 서비스를 standby에서 제공할 수 있도록 하는 기능도 포함되어 있다.
------------------------------------------------------------------------------------------------------------------------------
--------------------------
l hostname l
l test1 192.168.0.100 l
l test2 192.168.0.200 l
--------------------------
## 양쪽 서버 시간 동기화 ##
yum -y install rdate
rdate -s time.bora.net
## 빠른 테스트를 위해 양쪽 서버 yum 설치를 진행 ##
yum -y install httpd
service httpd start -> iptables 80포트 open
## test2 는 index.html test2로 수정하여진행 ##
vi /var/www/html/index.html
<html><body> test1 </body></html>
## heartbeat 설치 후 heartbeat 설정파일로 복사##
yum -y install heartbeat*
rpm -qa heartbeat -d (설치 경로확인)
cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/
## vi /etc/ha.d/ha.cf (위 내용을 가장 아래에 복사) ##
# 로그 #
logfile /var/log/ha.log
# 디버깅 로그 #
debugfile /var/log/ha-debug.log
# 노드간 체크 시간 #
keepalive 2
# 호스트가 죽었다고 판단하는 시간 #
deadtime 10
# 자동 복구 On #
auto_failback on
# heartbeat를 보낼 인터페이스 #
bcast eth0
# 노드 등록 #
node centos6-01 # master
node centos6-02 # slave
# 통신포트 #
udpport 694
udp 694 포트 방화벽 오픈
## vi /etc/ha.d/haresources (가장 아랫줄에 추가하며 200번 서버는 test1을 test2로 수정한다 ) ##
(자신의호스트명 IPaddr2::가상IP/서브넷마스크/인터페이스/브로드캐스트 서비스할데몬)
(가상IP(VIP)를 넣어야 한다. 즉, 로드밸런서와 같은 역할을 할 신규 IP를 입력)
test1 IPaddr2::192.168.0.150/24/eth0:0/192.168.0.255 httpd
## vi /etc/ha.d/authkeys (가장 아랫줄에 추가) ##
auth 2
2 sha1 HI!
(2 sha1 오른쪽에 나오는 문자열은 맘대로 지정)
(authkeys 파일은 보안수준을 설정하는 파일이다. 즉, 노드간의 인증 방법을 지정 할 수 있다.)
(auth 1 은 보안을 신경쓰지 않는 방법, auth 2 는 sha1 방식의 보안, auth 3 은 md5 방식의 보안 수준을 설정)
## 설정 추가 후 권한 변경 후 heartbeat start
chmod 600 /etc/ha.d/authkeys
service heartbeat start
## ifconfig, ip addr 명령어 실행 후 -> eth0:0 인터페이스 확인##
failover 테스트
페일오버 테스트는 1번 서버에서 httpd 데몬을 내리는 것이 아니라 heartbeat 데몬을 내려야 2번 서버로 페일오버가 된다.
아마도 서버가 갑자기 다운됐다거나 하는 상황을 대비하는 것인데, heartbeat 데몬이 아니라 httpd 데몬이 내려가도 페일오버가 되는 방법이 있는지는 좀 더 찾아봐야 할 것 같다.
또한 바로 바로 적용이 안되고 deadtime 등을 체크 한 후에 적용 되는 듯 하다. 좀 기다려보자.
'👨🏻💻Infra > 📡HA' 카테고리의 다른 글
CentOS6 GFS2 (0) | 2021.04.13 |
---|---|
CentOS7 Pacemaker + Corosync (1) | 2021.03.31 |
CentOS7 DRBD (0) | 2021.03.29 |