본문 바로가기
아이티 공부/리눅스

Heartbeat를 통한 HA(High availability) 구성

by Klero 2015. 6. 24.
반응형

Heartbeat를 통한 HA(High availability) 구성 후 httpd 서비스를 설치하여 파이어폭스로 확인하기


Heartbeat 은 두 서버를 노드로 등록하여 가상의 IP 를 MasterSlave가 서로 주고 받는다.

Master 노드가 가상IP 를 할당 받았다가 문제가 발생시에 Slave 노드가 이어 받는다.

이때 특정디바이스를 마운트 하거나 특정 서비스를 시작 시킬수도 있다.





CentOS 에서 설치해 보겠다.  CentOS 6.5 로 2대 준비했다.


CentOS 1 = Master

CentOS 2 = Slave


1. 호스트네임 변경


CentOS 1 # vi /etc/sysconfig/network 에서 HOSTNAME=kim1

CentOS 2 # vi /etc/sysconfig/network 에서 HOSTNAME=kim2 



 




2. /etc/hosts 파일 수정


CentOS 1 # vi /etc/hosts에서 192.168.100.177 kim1 

CentOS 2 # vi /etc/hosts에서 192.168.100.178 kim2 


 




3. 변경된 호스트네임 확인


reboot 하면 터미널에서 localhost가 바뀐 것을 볼 수 있다.

# uname -n or # hostname 명령어로 확인


 




4. 타임서버 동기화


CentOS 1 # rdate -s time.bora.net

CentOS 2 # rdate -s time.bora.net


rdate 명령이 작동 안된다면.. yum install rdate 로 설치한다. 

서버 시간은 계속 어긋날수 있으므로 실제 서비스 환경에서는 크론을 사용하여 매일 실행한다.

당장은 필요없지만 해주면 좋다.





5. 저장소 추가후 Heartbeat 설치


CentOS 1,2 동일 # rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

CentOS 1,2 동일 # yum -y install heartbeat*





6. 환경설정파일 복사


CentOS 1,2 동일 # rpm -q heartbeat -d : 하트비트가 설치된 경로 확인

CentOS 1,2 동일 # cd /usr/share/doc/heartbeat-3.0.4/

CentOS 1,2 동일 # cp ha.cf haresources authkeys /etc/ha.d/  : 설정파일 샘플 복사





7. Ha.cf 설정


CentOS 1,2 동일 # vi /etc/ha.d/ha.cf


파일의 끝에 설정하면 된다.

디버깅용 로그

debugfile /var/log/ha-debug.log

기타 로그

logfile /var/log/ha.log

노드간 체크 시간(두 노드간에 얼마나 자주 heartbeat를 주고받을 것인가를 설정)

keepalive 2

호스트가 죽었다고 판단하는 시간

deadtime 30

자동 복구 On(한 노드가 서비스 하다가 죽었을 때 새로운 노드로 자원이 이동)

auto_failback on

노드간 체크에 사용할 인터페이스(heartbeat 를 보낼 인터페이스 설정)

bcast eth0

노드 등록

node kim1  # master

node kim2  # slave

UDP 에 사용할 포트(통신포트 설정)

udpport 694





8. 로그를 위한 파일 생성


CentOS 1,2 동일 # touch /var/log/ha-debug.log

CentOS 1,2 동일 # touch /var/log/ha.log





9. 방화벽 설정


UDP 포트에 대한 방화벽은 해제한다.

CentOS 1,2 동일 # vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m udp -p udp --dport 694 -j ACCEPT

CentOS 1,2 동일 # service iptables restart

CentOS 1,2 동일 # service iptables save





10. haresources 설정


CentOS 1 # vi /etc/ha.d/haresources

파일의 끝에 설정하면 된다.


kim1 IPaddr2::192.168.100.179/24/eth0:0/192.168.100.255 httpd

자신의 호스트/IPaddr2/가상IP/클래스/인터페이스/브로드캐스트 서비스할 데몬


CentOS 2 # vi /etc/ha.d/haresources

파일의 끝에 설정하면 된다.


kim2 IPaddr2::192.168.100.179/24/eth0:0/192.168.100.255 httpd

자신의 호스트/IPaddr2/가상IP/클래스/인터페이스/브로드캐스트 서비스할 데몬


(*참고 : 리눅스에서 가상 IP를 설정해 하나의 IP를 더 가지게 할 수 있다.

물론 LAN 포트는 하나이다. 바로 eth0:0이다. 물리적인 정보는 eth0과 동일하다.

eth0:1 , eth0:2 이런식으로도 가능하다.

# ifconfig eth0:1 192.168.100.123 입력하고 ifconfig 입력하면 확인 할 수 있다.)



 


11. authkeys 설정


authkeys : 보안수준을 설정(노트간의 인증방법 지정)

ex) auth 1

1 crc 

#2 sha1 HI! - 보안신경 쓸 때 auth 2로 설정

#3 md5 Hello! - 보안신경 쓸 때 auth 3로 설정 (md5가 더 강력한 보안설정??)

위와 같이 crc를 auth 1로 설정을 할 경우 보안신경을 쓰지않는다.


여기서는

CentOS 1,2 동일 # vi /etc/ha.d/authkeys

auth 2

2 sha1  kim - 내맘대로 키 설정(kim)


CentOS 1,2 동일 # chmod 600 /etc/ha.d/authkeys  - 권한변경(필수)






12. 공용 서비스할 데몬 파일의 링크 생성


CentOS 1,2 동일 # ln -s /etc/rc.d/init.d/httpd /etc/ha.d/resource.d/httpd





13. linux apache 설정 


CentOS 1,2 동일 # vi /etc/httpd/conf/httpd.conf

ServerName 192.168.100.179


CentOS 1,2 동일 # system-config-firewall에서 HTTP 방화벽 열기

CentOS 1,2 동일 # /etc/rc.d/init.d/httpd start





14. HA 테스트


CentOS 1 먼저 실행(마스터) # service heartbeat start

CentOS 1 (마스터) # tail -f /var/log/ha-debug

CentOS 1 (마스터) # tail -f /var/log/ha-log

heartbeat 실행 하면 위 두개의 로그에서 데몬 및

설정 값이 정상 작동 된것을 확인 할수 있다.


CentOS 2 실행(슬레이브) # service heartbeat start

CentOS 2 (슬레이브) # tail -f /var/log/ha-debug

CentOS 2 (슬레이브) # tail -f /var/log/ha-log

heartbeat 실행 하면 위 두개의 로그에서 데몬 및

설정 값이 정상 작동 된것을 확인 할수 있다.


상태 확인

CentOS 1,2 동일 # ifconfig

eth0:0이 추가된 것을 볼 수 있다.



15. RHEL에서 테스트


리눅스를 하나 더 실행해서 HA가 웹에서 잘 작동하는지 테스트 해보자





16. CentOS 1(마스터)의 heartbeat 서비스 중지 후 RHEL에서 확인


CentOS 1 # service heartbeat stop







* HeartBeat Master 변경하기 *

# cd /usr/share/heartbeat

# ls -al 

# ./hb_standby    <=서버를 스탠바이로 전환한다.?

# ./hb_takeover   <=서버를 액티브로 전환한다.?

댓글