Balanceamento de carga haproxy ativo / ativo do marcapasso

6

Estou usando o Haproxy para balancear a carga de servidores mestres do mysql replicados. Também estou usando Heartbeat e Pacemaker para failover de ip ativo / ativo com dois ips virtuais nos dois balanceadores de carga para alta disponibilidade do servidor da Web. Eu usei a localização no marcapasso para manter VIPs em cada balanceador de carga e estou usando domínios DNS round-robin apontando para VIPs para balancear a carga dos balanceadores de carga. Tudo parece bem até agora!

|LB1: | Round-Robin -->| 1.2.3.4 | Heartbeat Pacemaker | Haproxy | 192.168.1.1

          |           |           |             |         |

|LB2: | Round-Robin -->| 5.6.7.8 | Heartbeat Pacemaker | Haproxy | 192.168.1.2

crm configure show

node $id="394647e0-0a08-451f-a5bf-6c568854f8d1" lb1
node $id="9e95dc4f-8a9a-4727-af5a-40919ac902ba" lb2
primitive vip1 ocf:heartbeat:IPaddr2 \
    params ip="1.2.3.4" cidr_netmask="255.255.255.0" nic="eth0:0" \
    op monitor interval="40s" timeout="20s"
primitive vip2 ocf:heartbeat:IPaddr2 \
    params ip="5.6.7.8" cidr_netmask="255.255.255.0" nic="eth0:1" \
    op monitor interval="40s" timeout="20s"
location vip1_pref vip1 100: lb1
location vip2_pref vip2 100: lb2
property $id="cib-bootstrap-options" \
    dc-version="1.0.8-042548a451fce8400660f6031f4da6f0223dd5dd" \
    cluster-infrastructure="Heartbeat" \
    stonith-enabled="false" \
    no-quorum-policy="ignore" \
    expected-quorum-votes="1"

Como configurar o Pacemaker para que, se o Haproxy em qualquer balanceador de carga estiver corrompido, ele ainda funcione usando haproxy em outro lb ou movendo ambos os vips para o nó haproxy lb. Eu NÃO quero ativa / passiva, mas ativa / ativa configuração como executar haproxy em ambos os lbs respondendo a solicitações mysql.

É possível fazer com o Pacemaker? Alguém sabe?

Qualquer ajuda é muito apreciada !. Obrigado!

Atualização 1

Essa foi uma boa dica de @Arek B. usando clone . Anexei abaixo da linha a configuração do marcapasso, mas ainda não consegui obter exatamente o que é realmente necessário. Eu chequei parando haproxy em ambos os LBs e ele foi iniciado automaticamente pelo marca-passo, mas quando eu verifiquei permanentemente ( /etc/defaults/haproxy, enabled=0 ), haproxy falhou ao iniciar e nesses casos quando ele não pôde iniciar o haproxy, eu quero o recurso ( ipaddr2 ) para ser movido para outro haproxy lb em execução. Mais alguma dica?

primitive mysql_proxy lsb:haproxy \
        op monitor interval="10s"
clone clone_mysql_proxy mysql_proxy \
        meta clone-max="2" clone-node-max="1"
location mysql_proxy_pref1 clone_mysql_proxy 100: lb1
location mysql_proxy_pref2 clone_mysql_proxy 50: lb2
    
por user53864 03.02.2012 / 13:57

1 resposta

1

Eu tenho um cluster virtIP ativo-ativo 2 *

Para configuração do CRM:
Estou usando dois IPs virtuais como primitive IPaddr2 services
e para o serviço que deve ser executado nos dois nós:

  1. crie um primitivo para ele, você usará a ID
  2. crie um "clone" como: clone any_name_of_the_clone your_primitive_service_id \
    meta clone-max="2" clone-node-max="1"

Você pode adicionar order (para iniciar o virt IP depois de iniciar o clone - NÃO primitivo, depois de criar um clone você não deve usar o ID da criança)

Está funcionando, o failover funciona (atribuindo 2 IPs em um nó quando outro falhar). No entanto, eu tenho problema como fazer colocation - eu quero ter contratado serviços: Eu não posso ter virtip no nó com subserviços falhou .
Está tudo bem quando o serviço está inativo - o cluster o atualiza, mas quando o início falha (por exemplo, configuração quebrada para o serviço) - erro de notas de cluster, mas traz o IP para cima.

Alguém sabe qual é a causa?
- É uma questão de mau controle / start / stop controle ou é uma questão de configurar restrições?

EDITAR:
Eu adicionei a opção Primitive para 'op start': on-fail="standby" . Agora, quando meu serviço (o único primitivo em clone) não pode iniciar o nó perde também o virtIP Isso parece resolver o meu problema agora.

    
por 05.02.2012 / 19:37