My Advanced Linux/HA clustering 2009. 7. 24. 16:11
High Availability Cluster
이 구성은 서비스를 제공하는 Active server 와 장애 발생시 서비스를 이어 받는 Stand-by server로 이루어진다. 가용성 확보는 물론 데이터 상속에 대해서도 관여한다. 데이터 관리 방법에 따라 ‘Shared Disk(공유디스크)’, ‘Data Mirrioring(데이터복제)타입’, ‘Remote Cluster(원격 클러스터)타입’으로 분류된다.
공유디스크 타입
(1) 특징
- 비교적 고가의 외장 공유디스크 필요
- 대용량의 데이터를 취급하는 시스템에 적합
(2) 기본 구성 및 동작
- 정상 동작 수행 중인 상태
- 서버에 장애가 발생하면 스탠바이 서버에서 서비스를 이어받는다.(failover)
- 장애가 발생한 서버의 문제를 조치한다.
- 원래의 서버로 서비스를 원복한다(failback)
데이터복제 타입
(1) 특징
- 고가의 외장 공유 디스크가 필요 없다.
- 데이터의 복제로 인해 소용량의 데이터를 취급하는 시스템에 적합.
(2) 기본 구성 및 동작
- 액티브 서버에서 디스크 읽기는 비 클러스터 구성인 상태와 동일하며, 디스크 쓰기 동작에서 Interconnect 네트워크를 통해 복제가 이루어진다.
- 데이터의 복제는 리얼타임으로 동작하는 Synchronous방식과 원격지의 클러스터 노드의 데이터 복제를 지원하는 Asynchronous방식이 있다.
- 액티브 서버에서 장애가 발생할 경우 스탠바이 서버에서 복제된 데이터를 통해서 어플리케이션이 실행되며 서비스를 이어 받게 된다.
HeartBeat 설정 및 구동
- heartbeast 프로토콜을 이용하는 오픈 소스 프로젝트
- 정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급복구 프로세스를 수행
- 이더넷 카드 혹은 시리얼 케이블을 이용 각각의 호스트를 연결
- Heartbeat 프로토콜로 연결된 호스트들은 가상 IP를 공유
- Master 호스트가 서비스를 책임
- Master 호스트에 문제 발생시 Stand-by 서버로 서비스 계속
Heartbeat 설정
Heartbeat는 3개의 설정 파일을 사용한다.(기본경로 /etc/ha.d/)
- ha.cf : heartbeat 구성에 필요한 기본 설정 파일.
- haresource : 노드간에 공유할 자원과 스크립트 설정 파일.
- authkeys : 노드간의 인증 방법을 설정.
# vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug # debugfile 로그 생성 파일
logfile /var/log/ha-log # 로그 생성 파일
logfacility local0
keepalive 2 # 두 노드간 heartbeat 주고받는 주기(초단위)
deadtime 10 # 노드가 죽었다고 판단하는 시간(10초후 failover)
udpport 694 # UDP heartbeat 패킷을 보낼 포트
ucast eth1 slaverIPAddress # UDP heartbeat 보낼 인터페이스
auto_failback on # 장애 노드 복구시 자동 복구 여부 설정
master node # 마스터 노드
slcave node # 슬레이브 노드
# vi /vietc/ha.d/haresource
마스터 노드명 virtual IP 공유 서비스명
master node 192.168.1.100 httpd
이 후 공유리소스에 대한 링크를 생성한다.
# ln –s /etc/rc.d/init.d/httpd /etc/ha.d/resource.d/httpd
# vi /etc/ha.d/authkeys
auth 1 # 사용할 인증 방식
1 md5 hello # 인증 시 보낼 메시지
여기에서 주의 할 점은 보안상 root만 실행할 수 있도록 권한을 주어야한다.
# chmod 600 /etc/ha.d/authkeys
heartbeat 구동과 종료
# service heartbeat start
# service heartbeat stop
※ 이는 간단한 HA만의 설정이다.
이런식의 서버 설정은 하나가 놀고있기 때문에(standby) 자원의 효율면에선 떨어진다고 볼 수있다. standby서버 역시 효율적으로 사용은 다음에 알아보도록 하자.
이 구성은 서비스를 제공하는 Active server 와 장애 발생시 서비스를 이어 받는 Stand-by server로 이루어진다. 가용성 확보는 물론 데이터 상속에 대해서도 관여한다. 데이터 관리 방법에 따라 ‘Shared Disk(공유디스크)’, ‘Data Mirrioring(데이터복제)타입’, ‘Remote Cluster(원격 클러스터)타입’으로 분류된다.
공유디스크 타입
(1) 특징
- 비교적 고가의 외장 공유디스크 필요
- 대용량의 데이터를 취급하는 시스템에 적합
(2) 기본 구성 및 동작
- 정상 동작 수행 중인 상태
- 서버에 장애가 발생하면 스탠바이 서버에서 서비스를 이어받는다.(failover)
- 장애가 발생한 서버의 문제를 조치한다.
- 원래의 서버로 서비스를 원복한다(failback)
데이터복제 타입
(1) 특징
- 고가의 외장 공유 디스크가 필요 없다.
- 데이터의 복제로 인해 소용량의 데이터를 취급하는 시스템에 적합.
(2) 기본 구성 및 동작
- 액티브 서버에서 디스크 읽기는 비 클러스터 구성인 상태와 동일하며, 디스크 쓰기 동작에서 Interconnect 네트워크를 통해 복제가 이루어진다.
- 데이터의 복제는 리얼타임으로 동작하는 Synchronous방식과 원격지의 클러스터 노드의 데이터 복제를 지원하는 Asynchronous방식이 있다.
- 액티브 서버에서 장애가 발생할 경우 스탠바이 서버에서 복제된 데이터를 통해서 어플리케이션이 실행되며 서비스를 이어 받게 된다.
HeartBeat 설정 및 구동
- heartbeast 프로토콜을 이용하는 오픈 소스 프로젝트
- 정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급복구 프로세스를 수행
- 이더넷 카드 혹은 시리얼 케이블을 이용 각각의 호스트를 연결
- Heartbeat 프로토콜로 연결된 호스트들은 가상 IP를 공유
- Master 호스트가 서비스를 책임
- Master 호스트에 문제 발생시 Stand-by 서버로 서비스 계속
Heartbeat 설정
Heartbeat는 3개의 설정 파일을 사용한다.(기본경로 /etc/ha.d/)
- ha.cf : heartbeat 구성에 필요한 기본 설정 파일.
- haresource : 노드간에 공유할 자원과 스크립트 설정 파일.
- authkeys : 노드간의 인증 방법을 설정.
# vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug # debugfile 로그 생성 파일
logfile /var/log/ha-log # 로그 생성 파일
logfacility local0
keepalive 2 # 두 노드간 heartbeat 주고받는 주기(초단위)
deadtime 10 # 노드가 죽었다고 판단하는 시간(10초후 failover)
udpport 694 # UDP heartbeat 패킷을 보낼 포트
ucast eth1 slaverIPAddress # UDP heartbeat 보낼 인터페이스
auto_failback on # 장애 노드 복구시 자동 복구 여부 설정
master node # 마스터 노드
slcave node # 슬레이브 노드
# vi /vietc/ha.d/haresource
마스터 노드명 virtual IP 공유 서비스명
master node 192.168.1.100 httpd
이 후 공유리소스에 대한 링크를 생성한다.
# ln –s /etc/rc.d/init.d/httpd /etc/ha.d/resource.d/httpd
# vi /etc/ha.d/authkeys
auth 1 # 사용할 인증 방식
1 md5 hello # 인증 시 보낼 메시지
여기에서 주의 할 점은 보안상 root만 실행할 수 있도록 권한을 주어야한다.
# chmod 600 /etc/ha.d/authkeys
heartbeat 구동과 종료
# service heartbeat start
# service heartbeat stop
※ 이는 간단한 HA만의 설정이다.
이런식의 서버 설정은 하나가 놀고있기 때문에(standby) 자원의 효율면에선 떨어진다고 볼 수있다. standby서버 역시 효율적으로 사용은 다음에 알아보도록 하자.