Heartbeat를 통한 HA(High availability) 구성 후 httpd 서비스를 설치하여 파이어폭스로 확인하기
Heartbeat 은 두 서버를 노드로 등록하여 가상의 IP 를 Master 와 Slave가 서로 주고 받는다.
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 <=서버를 액티브로 전환한다.?
댓글