Serviceguard는 고가용성(HA) 솔루션으로, HPE 서버 환경에서 애플리케이션과 서비스를 안정적으로 운영하며, 장애 발생 시 자동으로 다른 서버로 리소스를 이관해 서비스 중단을 최소화하는 클러스터링 기술입니다.
1. 솔루션 적용 환경 값
여기서, HPE 서버 환경을 의미하는 것은 다음과 같습니다.
- HPE ProLiant 서버: 가장 널리 사용되는 HPE의 x86 서버 라인으로, 파일 서버, 웹 서버, 애플리케이션 서버 등 다양한 용도로 사용됩니다.
- HPE Superdome Flex: 대규모 엔터프라이즈 환경과 고성능 컴퓨팅을 위한 고급 서버로, 특히 HPUX와 같은 특수 운영 체제와 함께 사용됩니다.
- HPE Apollo 시스템: HPC(고성능 컴퓨팅)나 빅데이터 분석을 위한 서버로, 클러스터링 및 병렬 처리에 최적화되어 있습니다.
- HPE Integrity 서버: HPUX와 호환되는 서버로, 주로 비즈니스 크리티컬 애플리케이션을 위한 고가용성 및 안정성이 요구되는 환경에서 사용됩니다.
결과적으로 HPE의 하드웨어와 함께 HPUX, Linux, Windows Server 등의 운영 체제를 설치하여 운영할 수 있으며, Serviceguard와 같은 고가용성 솔루션을 활용하여 시스템의 다운타임을 최소화하고, 애플리케이션의 지속적인 가용성을 보장합니다.
다음 가용성을 나타내는 경우는 다음과 같습니다.
- 서버 이중화: 두 개 이상의 서버를 클러스터로 구성하여, 하나의 서버가 실패했을 때 다른 서버가 자동으로 서비스를 이어받아 실행하도록 합니다. 예를 들어, cs01 서버가 장애를 겪으면 cs02 서버가 그 역할을 자동으로 수행합니다.
- 스토리지 이중화: 데이터를 여러 서버에 복제하여 한 서버가 다운되더라도 데이터를 잃지 않도록 보장합니다. SAN(Storage Area Network)이나 NAS(Network Attached Storage)를 활용하여 데이터를 공유하고, 장애가 발생한 서버에서 다른 서버로 데이터를 전송할 수 있도록 설정합니다.
- 애플리케이션 이중화: 중요 애플리케이션이나 서비스를 여러 서버에 걸쳐 실행하여, 장애가 발생했을 때 다른 서버로 자동으로 애플리케이션을 전환합니다. 예를 들어, 데이터베이스 서버(DB), 웹 서버 등이 이에 해당하며, 장애 발생 시 자동으로 다른 서버에서 서비스가 계속 운영됩니다.
- 서비스 그룹: Serviceguard는 애플리케이션과 관련된 리소스들을 그룹화하여 클러스터의 각 노드에서 이 리소스를 관리하고, 노드 장애 시 다른 노드에서 리소스를 재배치해 계속해서 서비스가 제공되도록 합니다.
- 네트워크 이중화: 네트워크 인터페이스가 하나만 있으면 장애 시 네트워크 연결이 끊어질 수 있으므로, 여러 네트워크 인터페이스를 사용하여 이중화합니다. Serviceguard는 네트워크 인터페이스를 모니터링하고, 하나의 인터페이스가 실패하면 다른 인터페이스로 트래픽을 자동으로 전환합니다.
- IP 이중화: 클러스터 내에서 가상 IP(VIP)를 사용하여 클러스터의 모든 노드에서 동일한 IP 주소를 사용할 수 있게 합니다. 한 노드가 다운되면 다른 노드가 가상 IP를 가져가 서비스를 계속 제공합니다.
- 리소스 그룹 이중화: 서비스와 관련된 리소스들(예: 데이터베이스, 파일 시스템 등)을 그룹화하여 여러 노드에서 관리합니다. 예를 들어, srv1이라는 리소스가 cs01에 있다면, 장애 시 cs02로 자동으로 전환되어 서비스가 중단되지 않도록 합니다.
2. Serviceguard 구성 방법
HPUX 기준으로 구성 방법은 다음과 같습니다.
- 서버 하드웨어 준비: HPE ProLiant, Superdome, Integrity 등 적합한 HPE 서버를 준비합니다.
- 네트워크 연결: 서버들이 서로 통신할 수 있도록 고속 네트워크를 준비하고, 서로 연결합니다.
- 각 서버에 HPUX 11.31 운영 체제를 설치합니다.
- 필요한 드라이버나 패치도 최신 상태로 유지해야 하며, 서버마다 동일한 버전의 HPUX를 사용하는 것이 좋습니다.
- HPUX 시스템을 최신 상태로 업데이트하고, 필요한 파일 시스템을 설정합니다.
- Serviceguard는 HPUX에서 제공하는 고가용성 클러스터 솔루션입니다. 이를 설치하려면 HPUX의 Serviceguard 패키지를 서버에 설치해야 합니다.
# swinstall -s /path/to/serviceguard_package |
- 클러스터의 네트워크 인터페이스를 설정해야 합니다. 두 서버가 서로 통신할 수 있도록 클러스터 인터페이스와 고가용성 가상 IP를 설정합니다.
- Serviceguard 클러스터에서는 주 네트워크와 장애 복구를 위한 네트워크를 설정합니다.
- 클러스터를 초기화하고 기본적인 구성을 시작합니다.
- cmcluster 명령어를 사용하여 클러스터를 생성하고 설정할 수 있습니다.
# cmcreatecluster -c MyCluster -m cs01,cs02 |
- 리소스 그룹(Resource Group): 클러스터 내에서 관리할 리소스들을 그룹으로 묶습니다. 예를 들어, 웹 서버나 데이터베이스 서버 리소스가 포함될 수 있습니다.
- 리소스 그룹을 생성하고 리소스를 할당합니다.
# cmaddrg -g RG1 -p srv1 # cmaddrg -g RG2 -p srv2 |
- 각 리소스 그룹에 대해 장애가 발생했을 때 서비스를 다른 서버로 자동으로 이전할 수 있도록 Resource Group Failover를 설정합니다.
- VIP 는 클러스터 내에서 고정된 IP 주소로, 장애가 발생한 서버에서 다른 서버로 IP가 이동하여 서비스 중단 없이 클라이언트의 요청을 처리할 수 있게 합니다.
# cmaddip -g RG1 -i 192.168.1.100 // 이 명령은 RG1 리소스 그룹에 대해 192.168.1.100 가상 IP를 추가하는 예시입니다. |
- Serviceguard는 리소스를 모니터링하고, 리소스 그룹의 상태를 확인합니다. 이를 위해 cmviewcl 명령어를 사용하여 클러스터 상태를 모니터링할 수 있습니다.
# cmviewcl // 해당 커맨드는 root 권한에서 실행이 가능. 혹은 /usr/lbin 위치로 가서 직접 실행해야함 |
추가적으로 HA 클러스터에서 하트비트(Heartbeat)를 구성해줘야합니다. 서비스 장애를 빠르게 감지하고 자동으로 복구할 수 있도록 돕는 핵심 요소입니다.
3. 하트비트 설정 방법
하트비트(Heartbeat)란?
하트비트는 노드 간의 생존 여부를 확인하는 신호입니다. 클러스터 내 각 노드는 서로에게 주기적으로 하트비트 신호를 보내어, 각 노드가 정상적으로 작동하고 있는지 확인합니다. 이를 통해 노드가 다운되었거나 네트워크 연결에 문제가 생겼을 때 이를 빠르게 감지할 수 있습니다.
1. 하트비트 네트워크 구성
하트비트 신호는 클러스터의 하트비트 네트워크를 통해 전달됩니다. 이 네트워크는 클러스터 노드들 간의 통신을 위한 전용 네트워크로, 서비스 네트워크와는 별도로 구성됩니다.
- 전용 하트비트 네트워크: 장애를 빠르게 감지하고 응답할 수 있도록 고속의 전용 네트워크를 설정합니다.
- 이중화된 하트비트 네트워크: 하트비트 네트워크에 장애가 발생하지 않도록, 두 개 이상의 네트워크 인터페이스를 사용하여 이중화합니다.
2. 하트비트 설정 파일
HPUX의 Serviceguard는 하트비트 설정을 위해 /etc/ha/ha.cf 파일을 사용합니다. 이 파일에서 하트비트 관련 설정을 지정할 수 있습니다.
3. 하트비트 시간 간격 설정
하트비트 간격을 설정하는 값은 HEARTBEATINTERVAL과 HEARTBEATTIMEOUT입니다.
- HEARTBEATINTERVAL: 하트비트 신호를 보내는 간격을 설정합니다. 기본적으로 1초마다 신호를 보냅니다.
- HEARTBEATTIMEOUT: 하트비트 신호를 받지 못했을 때, 노드가 장애 상태로 간주되기까지의 시간입니다.
4. 장애 발생 시 자동 전환 설정
하트비트 신호를 주고받으며, 일정 시간 동안 신호가 끊어지면 Serviceguard는 해당 노드를 비정상 상태로 간주하고, 리소스를 다른 노드로 자동으로 전환(패일오버)합니다.
5. 하트비트 로그 확인
하트비트의 상태나 장애 여부를 확인할 수 있는 로그 파일도 존재합니다. /var/adm/syslog/syslog.log 또는 /var/ha/log에서 하트비트 관련 로그를 확인하여, 하트비트 신호가 정상적으로 작동하는지 모니터링할 수 있습니다.
댓글