Puppet을 사용한 다중 사이트 고 가용성 옵션


14

저는 두 개의 데이터 센터를 유지 관리하고 있으며 중요한 인프라 중 더 많은 부분이 꼭두각시를 통해 제어되기 시작하면서 기본 사이트가 실패 할 경우 두 번째 사이트에서 꼭두각시 마스터 작업이 중요합니다.

두 번째 사이트의 서버가 WAN을 통해 폴링하지 않도록 일종의 활성 / 활성 설정을하는 것이 더 좋습니다.

다중 사이트 꼭두각시 고 가용성의 표준 방법이 있습니까?


1
내가 당신이 바로 질문을 이해 했습니까? 꼭두각시 마스터를 사용할 수없는 경우 중복 퍼펫 마스터를 사용하는 방법을 찾고 있습니까?
Hrvoje Špoljar

꼭두각시 사용 방법에 따라 다릅니다. 많은 유연성이 있습니다. 예를 들어 저장된 구성을 사용하고 있습니까?
Zoredache

3
"마스터리스 꼭두각시"를 보셨습니까? 그것의 본질은 각 에이전트가 매니페스트를 체크 아웃하고 로컬로 적용한다는 것입니다. 당신은 끝낼 git또는 svn또는 rsync또는 어떤 버전 제어 시스템 당신이 꼭두각시 마스터보다는 수평 확장하기 위해 필요한 것을 사용합니다.
Ladadadada

3
액티브-액티브 질문을 해결하기위한 힌트 : 애니 캐스트를 사용 하여 두 데이터 센터에서 동일한 ( "가상" / "서비스-" ) IP 를 발표 할 수 있습니다 . 우리는 DNS 서버를 해결하기 위해이 작업을 수행합니다. 각 데이터 센터에서로드 밸런서는 동일한 애니 캐스트 IP를 발표합니다. 라우팅은 로컬로드 밸런서를 선호하지만 장애 발생시 다른 DC로 폴백합니다 (~ "애니 캐스트 IP를 더 이상 알리지 않음").
Michuelnik

1
꼭두각시 3.0의 새로운 기능 중 하나는 SRV 레코드 지원입니다 . Windows 사용자가 잘 알고 있으며 사이트에 도움이 될 수 있습니다.
sysadmin1138

답변:


13

꼭두각시 (Puppet)는 실제로 멀티 마스터 환경에주의를 기울이고 있습니다. 메인? 꼭두각시의 많은 부분이 중앙 집중화되는 것을 좋아합니다. 인증 기관, 인벤토리 및 대시 보드 / 보고서 서비스, 파일 버킷 팅 및 저장된 구성-모두 대화 할 수있는 장소가 하나 뿐인 설정에서 최상의 상태를 유지합니다.

그러나 기본 사이트를 잃어 버렸을 때 일부 기능이 정상적으로 손실되면 다중 마스터 환경에서 작동하는 많은 부품을 얻는 것이 매우 효과적입니다.


기본 기능부터 시작하여 마스터에 노드보고를 가져 오십시오.

모듈과 매니페스트

이 부분은 간단합니다. 버전 관리가 가능합니다. 분산 버전 제어 시스템 인 경우 중앙 집중식으로 동기화하고 장애 조치 사이트에서 필요에 따라 푸시 / 풀 플로우를 변경하십시오. Subversion 인 경우 svnsync장애 조치 사이트 에 대한 저장소를 원할 수 있습니다.

인증 기관

여기서 한 가지 옵션은 마스터간에 인증 기관 파일을 간단히 동기화하여 모두 동일한 루트 인증서를 공유하고 인증서에 서명 할 수 있도록하는 것입니다. 이것은 항상 "잘못하고있다"고 생각했다.

  • 한 마스터가 다른 마스터로부터 들어오는 연결에 대해 클라이언트 인증에 자신의 인증서가 실제로 유효한 것으로보아야합니까?
  • 인벤토리 서비스, 대시 보드 등에서 안정적으로 작동합니까?
  • 도로에 유효한 DNS 대체 이름을 어떻게 추가합니까?

솔직히이 옵션에 대한 철저한 테스트를 수행했다고 말할 수는 없습니다. 그러나 Puppet Labs는 여기 참고 사항에 따라이 옵션을 권장하지 않는 것 같습니다 .

따라서 중요한 것은 중앙 CA 마스터를 보유하는 것입니다. 모든 클라이언트와 다른 마스터가 CA 인증서와 CRL을 캐시하기 때문에 모든 트러스트 관계는 계속 작동합니다 (CRL을 자주 새로 고치지는 않지만)하지만 새 인증서에 서명 할 수있을 때까지 기본 사이트를 백업하거나 장애 조치 사이트의 백업에서 CA 마스터를 복원합니다.

하나의 마스터를 선택하여 CA로 작동하고 다른 모든 마스터가이를 비활성화하게합니다.

[main]
    ca_server = puppet-ca.example.com
[master]
    ca = false

그런 다음 해당 중앙 시스템이 모든 인증서 관련 트래픽을 가져 오기를 원할 것입니다. 이에 대한 몇 가지 옵션이 있습니다.

  1. SRV3.0 의 새로운 레코드 지원을 사용하여 모든 에이전트 노드가 CA의 올바른 위치를 가리 키도록합니다._x-puppet-ca._tcp.example.com
  2. 모든 에이전트 ca_server에서 구성 옵션 설정puppet.conf
  3. 에이전트에서 올바른 마스터로 CA 관련 요청에 대한 모든 트래픽을 프록시하십시오. 예를 들어, 승객을 통해 Apache에서 모든 마스터를 실행중인 경우 비 CA에서이를 구성하십시오.

    SSLProxyEngine On
    # Proxy on to the CA.
    ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-ca.example.com:8140/$1
    # Caveat: /certificate_revocation_list requires authentication by default,
    # which will be lost when proxying. You'll want to alter your CA's auth.conf
    # to allow those requests from any device; the CRL isn't sensitive.
    

그리고 그렇게해야합니다.


보조 서비스로 넘어 가기 전에 부가 정보;

마스터 인증서의 DNS 이름

나는 이것이 바로 3.0으로 전환해야 할 가장 강력한 이유라고 생각합니다. "모든 ol '작업 마스터"에서 노드를 가리키고 싶다고 가정하십시오.

2.7에서는와 같은 일반 DNS 이름 puppet.example.com이 필요하며 모든 마스터는 인증서에이 이름 이 필요합니다. 즉 dns_alt_names, 구성에서 설정하고, 마스터로 구성되기 전에 가지고 있던 인증서를 다시 발행하고, 목록에 새 DNS 이름을 추가해야 할 때 인증서를 다시 발행하는 것을 의미합니다 (여러 DNS 이름을 에이전트가 자신의 사이트에서 마스터를 선호하게합니다.)

3.0에서는 SRV레코드 를 사용할 수 있습니다 . 모든 고객에게 이것을 제공하십시오;

[main]
    use_srv_records = true
    srv_domain = example.com

그런 다음 마스터에게 특별한 인증서가 필요하지 않습니다. SRVRR에 새 레코드를 추가 _x-puppet._tcp.example.com하면 그룹의 라이브 마스터입니다. 또한 마스터 선택 로직을보다 정교하게 만들 수 있습니다. 사이트마다 다른 SRV레코드 세트를 설정하여 "모든 ol '작업 마스터이지만 사이트의 레코드 마스터를 선호합니다" ; dns_alt_names필요 하지 않습니다.


보고서 / 대시 보드

이 방법은 중앙 집중식으로 가장 잘 작동하지만 기본 사이트가 다운 되어도 문제없이 살 수 있다면 아무런 문제가 없습니다. 모든 마스터를 올바른 위치에 구성하여 보고서를 작성하십시오.

[master]
    reports = http
    reporturl = https://puppetdash.example.com/reports/upload

.. 그리고 모든 준비가 끝났습니다. 보고서 업로드 실패는 구성 실행에 치명적이지 않습니다. 대시 보드 서버가 토스트되면 손실됩니다.

팩트 인벤토리

대시 보드에 붙어있는 또 다른 좋은 점은 인벤토리 서비스입니다. 으로 facts_terminus로 설정 rest중앙 재고 서비스가 다운되었을 때 설명서에 권장하는대로,이 사실은 구성 실행을 깰 수 있습니다. 여기서 비결 inventory_service은 비 중앙 마스터 에서 종단 을 사용하여 정상적으로 실패하는 것입니다.

facts_terminus = inventory_service
inventory_server = puppet-ca.example.com
inventory_port = 8140

중앙 인벤토리 서버가 ActiveRecord 또는 PuppetDB를 통해 인벤토리 데이터를 저장하도록 설정하고 서비스가 제공 될 때마다 최신 상태를 유지해야합니다.


따라서 CA를 사용하여 복원 할 때까지 새 노드의 인증서에 서명 할 수없는 예쁜 기본 구성 관리 환경에 만족한다면 괜찮을 것입니다. 이러한 구성 요소 중 일부 가 배포하기에 더 친숙한 경우 .


1
CA에 +1 장애 조치 상황이 발생할 때까지 (대기 "새"마스터 "에서 CA 비트를 켜고 SRV레코드를 업데이트 할 때까지) 모든 CA 케이크를 동기화 / 버전 제어하고"대기 "퍼펫 마스터에서 간단히 활성화 할 수 없습니다. 이에 따라 - SRV기록은 그들을 향해 내 일반 양가 감정 ...)에도 불구하고 여기에 가장 우아한 솔루션으로 나를 공격
voretaq7

1
@ voretaq7 좋은 지적입니다. 순전히 페일 오버 설정은 이러한 종류의 액티브 / 액티브 배포보다 레거시가 훨씬 적습니다.
Shane Madden

2
부록으로, 나는 또한 좋은 정보를 가지고있는 꼭두각시 문서의 멀티 마스터 스케일링 가이드에 대한 업데이트를 제공했습니다 : docs.puppetlabs.com/guides/scaling_multiple_masters.html
Shane Madden

8

Ladadadada가 설명하는 "마스터리스 퍼펫"접근 방식은 내가 가장 잘 알고있는 방법입니다 (기본적으로 우리 회사의 래드 마인드에서하는 일입니다). 더 정확하게는 "외부 프로세스에 의해 동기화 된 다중 마스터"로, 주어진 서버가 (이론적으로) 비상시에 전체 우주에 서비스를 제공 할 수 있습니다.

때문에 radmind의 성격 우리의 경우 우리는 단순히 rsync각 원격 사이트의 radmind 서버에 승인 된 마스터의 성적 증명서 및 데이터 파일, 그리고 클라이언트는 짧은 호스트 이름을 사용하여 서버에서 자신의 업데이트를 가져 radmind의 마법을 통해 ( resolv.conf이 평가됩니다 radmind.[sitename].mycompany.com항상 로컬 - radmind 서버 : 로컬 서버가 다운되면 다른 사이트의 서버를 무시하고 가리킬 수 있습니다.

이러한 종류의 rsync 프로세스는 아마도 귀하의 상황에서도 작동하지만 버전 제어 기반 솔루션과 비교할 때 차선책 일 수 있습니다.


꼭두각시 또는 요리사의 경우 버전 제어 기반 시스템은 몇 가지 이유로 단순한 rsync보다 더 의미가 있습니다. 큰 것은 꼭두각시와 같이 전체 OS 이미지가 아닌 꼭두각시 스크립트를 버전 제어한다는 것입니다.
버전 관리 기반 관리의 추가 이점으로 여러 사람이 한 번에 저장소에서 작업 할 수 있으며 (병렬 처리에 큰 도움이 됨) 기본적으로 개정 내역을 무료로 얻을 수 있으며 누군가가 Puppet 환경을 중단하는 경우 롤백이 쉽다고 가정합니다. 다시 사용 git하면 git blame주석에 표시된 것을 수행 할 수 있습니다 ).
크리에이티브 브랜칭 및 병합을 사용하면 버전 제어 프레임 워크 내에서 주요 OS 업그레이드 또는 기타 전환을 처리 할 수 ​​있습니다. 일단 올바르게 설정하면 새 브랜치로 전환하기 만하면 프로덕션 푸시가 바로 작동합니다.

여기에 이것을 구현하고 있다면 커밋 된 꼭두각시 구성이 제정신 (클라이언트 측 사전)인지 확인하기 위해 git의 사전 커밋 및 사후 커밋 후크를 활용하고 나머지 유니버스로 밀어 넣을 것입니다. (서버 측 게시물-배포 정책에서 이러한 동작을 허용하는 경우 환경 업데이트를 트리거 할 수도 있음).

각 사이트에 새로운 puppetmaster 서버를 제공하는 것과 관련하여 꼭두각시 환경을 각 원격 puppetmaster에 확인하고 위에서 설명한 resolv.conf / hostname 해커 또는 Michuelnik과 같이 로컬 시스템으로 리디렉션 된 애니 캐스트 서비스 IP를 사용할 수 있습니다 ( 후자는 한 사이트의 puppetmaster가 폭발 할 경우 자동 장애 조치를 원할 경우 유용합니다.) 각 사이트가 "올바른"puppetmaster를보고 업데이트를 가져 오려는 WAN 링크를 방해하지 않도록 처리합니다.


Brain Tree Payments 직원 들은 버전 제어 및 rsync 솔루션 을 일부 사용자 정의 Capistrano 작업 과 결합한 것으로 보입니다. 솔루션은 여전히 ​​수동 워크 플로 요소에 의존한다는 의미에서 절반에 구워진 것처럼 보이지만 너무 많은 일.
저의 편집증 강압 테스터는 noop위생 검사 단계에 대한 애정이 있습니다.

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