하트 비트, 페이스 메이커 및 CoroSync에 대한 대안?


26

일반적인 Heartbeat / Pacemaker / CoroSync 조합 외에 Linux에서 자동 장애 조치에 대한 주요 대안이 있습니까? 특히, 멀티 캐스트 나 브로드 캐스트가 아닌 유니 캐스트 만 지원하는 EC2 인스턴스에서 장애 조치를 설정하고 있습니다. 특히 자동 장애 조치가없고 다중 마스터 환경을 지원하지 않는 몇 가지 소프트웨어를 처리하려고합니다. 여기에는 HAProxy 및 Solr과 같은 도구가 포함됩니다.

나는 Heartbeat + Pacemaker를 사용하고 있지만 그다지 흥분되지 않습니다. 내 문제 중 일부는 다음과 같습니다.

  • 하트 비트-자체적으로 두 개의 노드로 제한됩니다. 3+ 이상을 갖고 싶습니다.
  • Pacemaker-자동 구성이 불가능합니다. 클러스터는 쿼럼으로 실행되어야하며 여전히 수동 구성이 필요합니다.
  • CoroSync-유니 캐스트를 지원하지 않습니다.

Pacemaker는 강력한 기능을 제공하지만 설정하기가 어렵지만 잘 작동합니다. Pacemaker의 실제 문제는 구성을 쉽게 자동화 할 수있는 방법이 없다는 것입니다. EC2 인스턴스를 시작하고 Chef / Puppet을 설치하고 개입없이 전체 클러스터를 시작하려고합니다.

답변:


17

고 가용성 을 위해 keepalived 를 사용하는 것을 선호합니다 . 하트 비트 및 회사보다 설정 (데몬 및 구성 하나)이 더 간단하다는 것을 알았습니다. 내가 만날 유일한 단점은 keepalived에는 기본적으로 유니 캐스트 옵션이 없으며 통신에 VRRP 만 사용한다는 것입니다 (HAProxy 작성자는 keepalived에 대한 유니 캐스트 패치 를 작성했습니다 )


유니 캐스트는 필수이지만 패치를 살펴 보겠습니다.
organicveggie

4
+1 haproxy의 저자가 왜 잘못했는지 (또는 적어도 비효율적으로) 게시물을 읽을 때까지 모든 "장애 조치"상황에서 하트 비트를 사용하는 데 익숙했고 대신 keepalived를 사용해야합니다. . 중요한 것은 네트워크 경로에서 장애가 발생했는지 (예 : IP를 다른 서버로 이동-유지) 또는 리소스에 대한 단일 액세스 (예 : SAN 연결-하트 비트) 만 필요한지 여부에 달려 있습니다.
Coops

5
이것은, 내가 보라 @Coops가 참조하는 메일입니다 formilux.org/archives/haproxy/1003/3259.html
헨릭

4
릴리스 1.2.8 (2013-08-05) 이후 Keepalived는 유니 캐스트 ( keepalived.org/changelog.html )를 지원합니다 .
Dynom


14

실제로 실제로 설명 한 것과 매우 비슷한 작업 (EC2의 장애 조치 클러스터)을 수행하고 있으며 하트 비트를 시도한 후 Corosync를 메시징 계층으로 설정했습니다. Corosync는 여러 서버에서 실행되며 버전 1.3.0 (2010 년 11 월)부터 Unicast (UDPU)를 지원합니다. Amazon EC2 클라우드 (Amazon Linux AMI 사용)에서 Corosync를 설정하고 테스트했으며 문제없이 작동하는지 확인할 수 있습니다.

샘플 udpu 파일은 / etc / corosync에 설치됩니다.

각 노드의 인터페이스 섹션에 하나의 멤버 블록을 추가하고 전송을 updu로 지정하십시오. 아래 예제에서 하트 비트와 동일한 포트를 사용했지만 원하는대로 변경할 수 있습니다.

예 :

totem {
        version: 2
        secauth: off
        interface {
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                ringnumber: 0
                bindnetaddr: 10.xxx.xxx.xxx
                mcastport: 694
        }
        transport: udpu
}

(Heartbeat는 버전 1.2.3+에서 3+ 노드 클러스터를 지원해야하지만 개인적으로는 시도한 적이 없으며 Unicast와 함께 작동하는지 알 수 없습니다).


udpu를 사용하여 3 대의 컴퓨터 클러스터를 설정했으며 정상적으로 작동했습니다. 멤버 블록을 계속 추가합니다.
devicenull

11

죄송하지만 페이스 메이커에 대한 부분은 사실이 아닙니다. Pacemaker 회귀 및 릴리스 테스트는 자동화를 광범위하게 사용합니다.

활성 클러스터없이 구성하려면 모든 명령을 접두사로 사용 CIB_file=/var/lib/heartbeat/crm/cib.xml하거나 환경에서 설정하십시오. 클러스터를 시작하기 전에 .sig 파일을 제거하십시오.

쿼럼이없는 클러스터의 경우 대부분의 도구가 지원하지 -f않거나 --force클러스터에 변경 사항을 적용하도록 지시하는 것은 아닙니다 . 그렇지 않은 도구를 찾으면 버그를 신고하십시오.


죄송합니다, Pacemaker 메일 링리스트에서받은 피드백에 근거한 의견입니다. 당신의 제안을 드리겠습니다.
organicveggie

3

오픈 소스 세계에는 RedHat Cluster Suite가 있습니다. RHCS를 구현한지 몇 년이 지났기 때문에 오늘날 이에 대해 말할 말이 많지 않습니다.

상업적으로 Veritas Cluster Server가 있습니다. 그것에 대한 경험이 없습니다.

훨씬 간단하고 오픈 소스 HA 도구는 UCARP 입니다. UCARP는 Heartbeat / Pacemaker / CoroSync와 거의 같은 종류의 "인프라"를 제공하지 않지만 HA 솔루션을 구축 할 수 있습니다.

가상화 기술을 사용하여 고 가용성 인프라를 구축 할 수도 있지만 이러한 솔루션은 응용 프로그램 수준의 가용성과 달리 호스트 수준의 가용성에 중점을 둡니다.


감사. RHcS, VCS 및 UCARP를 살펴 보겠습니다. Amazon EC2를 사용하고 있다는 사실을 반영하여 내 질문을 업데이트 했으므로 호스트 수준의 가용성은 많이 제어 할 수있는 것이 아닙니다. 따라서 애플리케이션 수준의 가용성을 검토하는 이유는 무엇입니까?
organicveggie

1

사용하지 않았지만 Oracle Unbreakable Linux 용 Oracle Clusterware가 있습니다.


1

이미 EC2를 사용하고 있다면 Elastic Load Balancing을 사용하지 않는 이유는 무엇입니까? 장애 조치를 직접 구성하지 않고도 응용 프로그램 수준의 가용성을 얻을 수 있습니다.


ELB가 맞지 않는 몇 가지 이유가 있습니다. 첫째, ELB는 공개 인터넷에서 들어오는 요청에 대해서만 작동합니다. 요청을 ELB의 공개 주소로 라우팅 한 다음 모든 트래픽에 대한 비용을 지불하지 않으면 내부 요청에 사용할 수 없습니다. 둘째, ELB는 매우 간단한 밸런서입니다. 규칙이나 패턴을 작동 방식에 적용 할 수 없으며 대기 서버를 가질 수 없습니다. 예를 들어, 대상 웹 서버의 실제로드에 대한 아이디어가 없기 때문에 동일한 웹 서버를 가리키는 두 개의 별도 HAProxy 인스턴스를 적극적으로 원하지 않습니다.
organicveggie

1

Veritas Cluster는 훌륭하지만 (Linux-Heartbeat, AIX-hacmp, HP-Serviceguard 및 Sun Cluster와 비교) 비용이 많이 듭니다. 내가 마지막으로 보았을 때 가격은 클러스터의 CPU 코어를 기반으로했습니다. 시만텍은 현재 공급 업체가 아닙니다 ...



0

opensvc ( https://www.opensvc.com )는 여러 개의 하트 비트 드라이버를 지원합니다.

  • 유니 캐스트
  • 멀티 캐스트
  • 공유 디스크
  • 3 차 사이트 릴레이

또한 두뇌 분열의 경우 쿼럼 메커니즘이 있습니다.

2 개의 Google 클라우드 인스턴스 + 2 개의 Amazon 인스턴스로 구성된 4 개의 노드 클러스터를 terraform + ansible로 자동 설정했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.