AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 692056
Accepted
Garreth McDaid
Garreth McDaid
Asked: 2015-05-15 07:05:02 +0800 CST2015-05-15 07:05:02 +0800 CST 2015-05-15 07:05:02 +0800 CST

Configuração automática RabbitMQ de cluster

  • 772

O documento de agrupamento do RabbitMQ

https://www.rabbitmq.com/clustering.html

descreve um processo pelo qual você pode implantar um arquivo de configuração para clustering para que um cluster seja criado automaticamente quando seus nós rabbitmq inicializarem.

[{rabbit,
  [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'], ram}}]}].

Você aplica esse arquivo em cada um dos 3 nós em /etc/rabbitmq/rabbitmq.config e, em seguida, inicia o rabbitmq em cada um e um cluster aparentemente se formará.

Isso não parece funcionar muito bem, por exemplo

Se você iniciar o rabbit2 e o rabbit3 ainda não tiver surgido, o serviço não será iniciado no rabbit2, pois está tentando criar um cluster com o rabbit3.

Da mesma forma, se você aplicar a configuração apenas no rabbit1 e pré-iniciar o rabbit2 e o rabbit3, o rabbit1 formará um cluster apenas com o rabbit2, pois, de acordo com a documentação (não entendo o porquê):

RabbitMQ will try to cluster to each node provided, and stop after it can cluster with one of them.

A única maneira de isso funcionar é se você aplicar o arquivo de configuração em todos os 3 nós e iniciá-los exatamente ao mesmo tempo. Estou tentando implantar isso com o Ansible, que cria os nós sequencialmente, para que não funcione.

O que estou perdendo aqui?

ansible
  • 2 2 respostas
  • 6758 Views

2 respostas

  • Voted
  1. Jakov Sosic
    2015-05-15T13:44:51+08:002015-05-15T13:44:51+08:00

    Eu também implanto clusters RabbitMQ com Puppet, e você realmente não precisa ativar todos os nós exatamente ao mesmo tempo.

    O que eu costumo fazer, e até agora tem funcionado para mim é:

    • instalar RabbitMQ (RPM ou DEB)
    • configure o arquivo hosts em cada nó, para conatins entradas para todos os três. exemplo:

    .

    192.168.1.11    dev-c1n01-rabbitmq.example.com  dev-c1n01-rabbitmq
    192.168.1.12    dev-c1n02-rabbitmq.example.com  dev-c1n02-rabbitmq
    192.168.1.13    dev-c1n03-rabbitmq.example.com  dev-c1n03-rabbitmq
    

    nós que estamos agrupando (porque não quero depender da disponibilidade de DNS) * implantar rabbitmq.config

    .

    [
      {rabbit, [
        {cluster_nodes, {['rabbit@dev-c1n01-rabbitmq', 'rabbit@dev-c1n02-rabbitmq', 'rabbit@dev-c1n03-rabbitmq'], disc}},
        {cluster_partition_handling, pause_minority},
        {disk_free_limit, 2147483648},
        {heartbeat, 0},
        {tcp_listen_options, [binary, {backlog, 1024}, {nodelay, true}, {keepalive, true} ]},
        {vm_memory_high_watermark, 0.6},
        {default_user, <<"admin">>},
        {default_pass, <<"somedefaultpass">>}
      ]},
      {kernel, [
    
      ]}
    ,
      {rabbitmq_management, [
        {listener, [
          {port, 15672}
        ]}
      ]}
    ].
    % EOF
    
    • implantar erlang.cookie

    Para criar o cookie erlang, costumo usar http://passwordsgenerator.net/ e configurá-lo para criar uma string de 20 caracteres consistente apenas com caracteres maiúsculos. Em seguida, coloque esta string em /var/lib/rabbitmq/.erlang.cookie, assim:

    echo -n 'LCQLSHVOPZFHRUXMMAPF' > /var/lib/rabbitmq/.erlang.cookie
    
    • nós iniciais (a ordem não importa, desde que tenham o mesmo erlang.cookie e rabbitmq.config)

    Isso deve funcionar para você. Testado nas versões 3.2, 3.3 e 3.5.

    • 3
  2. Best Answer
    Garreth McDaid
    2015-05-16T02:40:12+08:002015-05-16T02:40:12+08:00

    Eu fiz algum progresso nisso.

    O problema parece estar relacionado à escolha de usar nós ram em vez de nós de disco no arquivo rabbitmq.config. Da documentação:

    Os nós de RAM são um caso de uso avançado; ao configurar seu primeiro cluster, você simplesmente não deve usá-los. Você deve ter nós de disco suficientes para lidar com seus requisitos de redundância e, se necessário, adicionar nós de RAM adicionais para escala.

    Um cluster contendo apenas nós de RAM é frágil; se o cluster parar, você não poderá iniciá-lo novamente e perderá todos os dados. O RabbitMQ impedirá a criação de um cluster somente de nó RAM em muitas situações, mas não pode impedi-lo absolutamente.

    Quando altero o arquivo de configuração para usar "disco" em vez de "ram", a criação do cluster ficou muito mais estável.

    [{rabbit,
        [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'],disc}}]}].
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve