Heartbeat vs UCarp

4

Alguém pode explicar qual é a principal diferença entre o Heartbeat e o UCarp para cenários de failover IP?

Ambos parecem fornecer essa funcionalidade, talvez o UCarp seja mais simples de configurar?

Obrigado.

    
por SyRenity 11.01.2010 / 14:09

1 resposta

4

Eu suponho que você esteja interessado em uma configuração ativa-passiva simples.

ucarp & batimentos cardíacos em tal configuração fazem praticamente a mesma coisa. em essência - eles executam scripts fornecidos quando a máquina é escolhida para ser master / hot-standby.

O

heartbeat pode parecer muito mais complicado [já que pode ajudá-lo a automatizar as montagens do drdb, reiniciar vários serviços, etc.], mas no final - você pode criar scripts e deixar o ucarp invocá-lo].

pessoalmente - eu executo heartbeat com recurso único - esse script faz o seguinte:

  • [un] liga o endereço ip apropriado
  • executa algumas transmissões de arp
  • inicia [pára] os serviços necessários

minha configuração muito simplista [heartbeat 2.1.3-6 em debian lenny]: eu tenho dois servidores:

  • ser0 [nó ativo preferencial] com designação permanente 10.0.0.2/24 em eth0
  • ser0b [nó em espera quente para substituir mestre] com 10.0.0.3/24 atribuído permanentemente em eth0

'ip flutuante' - atribuído ao nó ativo é 10.0.1.1/24 atribuído a eth1

neste caso, o serviço que obtém alta disponibilidade é o apache. Eu separadamente sincronizo as configurações e o conteúdo do apache que é servido de ser0 a ser0b.

os arquivos abaixo são idênticos nas duas máquinas com uma exceção marcada:

/etc/ha.d/authkeys:

auth 1
1 md5 somethingrandom

/etc/ha.d/haresources

ser0 ha.sh

/etc/ha.d/ha.cf

keepalive 2
deadtime 10
udpport        694 
; below - address permanently assigned to the peer node . this is for master:
ucast eth1 10.0.0.3
; and on slave i have 
; ucast eth1 10.0.0.2
udp     eth0
logfacility     local0
auto_failback on

node    ser0
node    ser0b

/etc/init.d/ha.cf [também pode ser em /etc/ha.d/resources.d/ha.cf]

#!/bin/bash
case "$1" in
  start)
        ip link set dev eth1 up
        # bind 'floating' ip to the interface
        ip a a 10.0.1.1/24 dev eth1
        # you might want to add some route-changes here if needed
        /usr/lib/heartbeat/send_arp -r 10 eth1 10.0.0.1 auto 10.0.0.255 255.255.255.0
        # to make sure apache reloads it's config when machine becomes master
        /etc/init.d/apache2 restart
  ;;

  stop)
        # we are no longer active, un-bind 'floating' ip from the interface
        ip a d 10.0.1.1/24 dev eth1
        # you could stop it as well or just skip this step
        /etc/init.d/apache2 restart
  ;;
esac
exit 0
    
por 11.01.2010 / 14:32