RabbitMQ 클러스터에서 데드 노드를 자동으로 제거하는 방법


11

Amazon 내부로드 밸런서를 사용하여 AWS VPC에서 Ansible을 사용하여 RabbitMQ 클러스터를 프런트 엔드로 사용하여 RabbitMQ 클러스터를 만들 계획입니다.

노드가 오르 내릴 수있는 자동 스케일링 규칙에 따라 또는 스팟 인스턴스를 사용중인 경우 RabbitMQ 클러스터에서 데드 노드를 제거하는 방법에 대한 제안이 있으십니까?

노드가 다운되면 RabbitMQ가 복제 목록에서 자동으로 제거하지 않으므로 Node not running관리 UI에서 볼 수 있습니다 .

Ansible 및 userdata를 통해 스케일링 된 인스턴스를 클러스터에 자동으로 가입시킬 수있었습니다.

인프라 다이어그램


@ Pierre.Vriens, 나는 단지 1 질문으로 변경했습니다. 감사합니다.
베를린

머시! 당신은 내가 바라는 다른 4 가지 질문을 파괴하지 않았습니다. 어쩌면 그것들을 여전히 관련성있는 범위로 확장시키기 위해 다음과 같은 질문을합니까?
Pierre.Vriens

그러나 질문은 여전히 ​​관련이 있지만 가장 중요합니다. 나는 다른 질문을 나중에 게시 할 것입니다 :) 감사합니다!
베를린

1
@Berlin 나는 당신이 묘사하고 있다고 생각하는 것을 나타내는 다이어그램을 그렸습니다. 다른 것을 의미한다면 알려주십시오.
Richard Slater

1
안녕하세요 @ Pierre.Vriens-몇 분 동안 내 가정을 분명히하고 싶었지만 이론적으로 내 대답에 추가 할 수 있으며 잘 할 수 있습니다.
Richard Slater

답변:


4

rabbitmq / rabbitmq-autocluster 플러그인 사용을 고려하십시오 :

여러 피어 발견 메커니즘을 사용하여 노드를 자동으로 클러스터링하는 RabbitMQ 플러그인 :

  • 영사 ,
  • etcd2
  • DNS A 레코드
  • AWS EC2 태그
  • AWS Autoscaling 그룹

IAM 정책 설정 및 EC2 태그를 클러스터의 당사자가 될 인스턴스에 추가하는 등이 설정을 수행하기 위해 구성 해야 할 구성 요소상당히 많습니다 .

AWS Autoscaling Groups를 사용하는 경우 다음을 다음에 추가하십시오 rabbitmq.config.

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_autoscaling, true},
    {aws_ec2_region, "us-west-2"}
  ]}
].

AWS Autoscaling Groups를 사용하지 않는 경우에도 EC2 인스턴스의 태그를 사용하여 원하는 결과를 얻을 수 있습니다.

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
    {aws_ec2_region, "us-east-1"},
    {aws_access_key, "..."},
    {aws_secret_key, "..."}
  ]}
].

결론적 으로, 서비스 발견 메커니즘 으로 HashiCorp의 Consul을 사용하는 것이 좋습니다 .


AFAIK가 있으므로, 자세한 설명과 그림에 감사드립니다 rabbitmq/rabbitmq-autocluster plugin노드가 다운되면 복제 목록에서 노드를 제거하는 것이 알 내가 요청할 수 있습니다 경우, 한 가지 더, 나는 시작하는 생각 2-node, 클러스터 당신이 시작하는 것이 좋습니다 있습니다 3-node클러스터 정책`bunnymqctl set_policy ha-all "" '{ "ha-mode": "all", "ha-sync-mode": "automatic"}'` '을 사용하여 다이어그램에 설명 된대로? 아니면 다른 질문에 게시해야합니까?
Berlin

1
주석의 서식과 같은 또 다른 질문은 사용하기 쉽지 않습니다. 나는 클라우드를 채택 할 때 클라이언트가 반대보다 많은 수의 작은 인스턴스를 사용하도록 항상 조언했습니다. 이는 클라우드에서 장애가 예상되기 때문입니다. 2 노드 클러스터가 있고 1이 실패하면 용량의 50 %가 손실 된 반면 3 노드 클러스터가 있고 1이 실패하면 33 % 만 손실됩니다.
Richard Slater

나는 클러스터를 사용하여 구성 rabbitmq/rabbitmq-autocluster plugin했으며 꽤 잘 작동하지만 노드가 다운되면 RabbitMQ는 복제 목록에서 클러스터를 제거하지 않습니다.
베를린

1
클러스터 정리 구성 옵션을 활성화 했습니까?
Richard Slater

고마워요, 그것을 https://github.com/aweber/rabbitmq-autocluster/wiki/General-Settings시도합니다.
베를린
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.