Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

Neste artigo trataremos de como implementar alta disponibilidade tendo como exemplo um servidor web. Dá um pouco de trabalho, mas quando pronto e você testa a sua alta disponibilidade e vê tudo funcionando como você queria, dá um ar de satisfação tremendo.

[ Hits: 132.672 ]

Por: Douglas Q. dos Santos em 21/03/2010 | Blog: http://wiki.douglasqsantos.com.br


Gerenciando o Heartbeat com Haclient



Agora que já temos os dois servidores configurados e com os serviços funcionando, vamos acrescentar os serviços que serão gerenciados.

Vamos instalar o Apache nos dois servidores já para efetuarmos alguns testes, pois vamos utilizar ele mais para frente.

# aptitude install apache2 -y

Como na instalação do Heartbeat ele não pediu senha para o hacluster, temos que inserir uma para podemos conectar no Heartbeat.

# passwd hacluster

Agora que definimos a senha vamos continuar.

Vamos definir as configurações de rede para o nosso cluster, então vamos iniciar o nosso haclient.

Se você instalou o heartbeat-2-gui em uma máquina separada, não sendo um dos nossos nodos do cluster, é só abrir um terminal como root e chamar o nosso aplicativo da seguinte forma.

# /usr/lib/heartbeat-gui/haclient.py &

Ou se você instalou no servidor pode exportar do o haclient para o cliente.

Eu aconselho sempre instalar o haclient em uma máquina separada para não ficar enchendo o servidor de bibliotecas e pacotes de ambiente gráfico.

Você também pode usar o putty em GNU/Linux habilitando em Connection/SSH/X11 a opção X11 forward e conectar no servidor e chamar o comando:

# /usr/lib/heartbeat-gui/haclient.py &

Que o putty importa o haclient para a máquina local para podermos gerenciar o nosso heartbeat.

Depois de chamarmos o nosso aplicativo temos que conectar no servidor.

No console clique em Connection/Login. Vai aparecer a tela de login.

Devemos informar para qual servidor queremos conectar, pode ser em qualquer um dos nodos do cluster, pois vai ser replicada a configuração automaticamente para o outro nodo, o usuário vai ser o hacluster, que já está na tela de login por padrão e a senha que foi definida no comando "passwd hacluster", depois disso é só clicar em ok.

Pronto, essa é a maravilhosa tela do haclient.

Pode notar que do lado esquerdo da tela nos temos os nossos nodos do cluster em círculos verde, que significa que estão trabalhando normalmente. Logo após os círculos verdes temos a palavra running, então o nosso servidor está trabalhando corretamente.

Agora vamos à configuração do endereço IP que o nosso cluster vai usar.

Em primeiro lugar vamos a algumas considerações, como estamos trabalhando com cluster, os nossos dois servidores terão que ser vistos como somente um, e vamos trabalhar sempre com grupos que fica uma melhor organização.

Então clique com o botão direito do mouse na opção Resources do lado esquerdo da tela abaixo do nome dos nossos nodos.

Selecione a opção Add New Item, na próxima tela escolha a opção group.

Na próxima tela digite um ID para o seu grupo exemplo Web_Servers e clique em ok.

Nessa nova tela que apareceu temos que criar um recurso nativo, ou seja, um serviço que vai ser monitorado.

Na primeira opção Resource ID de o nome de IP_WebServers.

Na parte logo abaixo de Resource ID temos a seleção de recursos.

Vamos escolher o recurso ipaddr2.

E note que depois que escolhemos o recurso temos a opção parameters:

Temos que deletar o parâmetro que vem por default nessa opção note que nesta parte da tela do lado direito tem dois botões um add parameter e outro delete parameter, clique no parâmetro que veio por default e clique em delete parameter.

E agora vamos adicionar os novos parâmetros.

Clique em add parameter.

Vai abrir uma nova tela, selecione em name a opção IP e em value digite o IP para o seu cluster exemplo 192.168.0.3. Mas para que isso? Vou explicar.

Quando você for fazer uma solicitação de algum serviço para o cluster, não será necessário escolher uma das máquinas do cluster, quem vai se encarregar disso vai ser o Heartbeat e ele vai se referenciar por esse IP que estamos configurando.

Exemplo:

Estou com a máquina 192.168.0.1 trabalhando e o Heartbeat deu o IP 192.168.0.3 na placa virtual para ela, mas ela deu problema e tem que ser desligada. Quando esta máquina for desligada, o Heartbeat vai detectar isso e dar o IP 192.168.0.3 na interface virtual que vamos configurar para a máquina 192.168.0.2. Para o cliente que está solicitando o serviço isso vai ser transparente, pois a máquina do com o IP final 1 caiu, mas a 2 assumiu e o cliente pede o serviço para a máquina com final 3, que é o nosso cluster e nunca direto para um dos nodos, então indiferente de quem está trabalhando o IP 3 para o cliente efetuar a solicitação do serviço vai ser sempre no endereço 3.

Continuando.

Clique em novamente em add parameter.

Vai abrir uma nova tela, selecione em name a opção cidr_netmask e em value digite a máscara de rede para o seu cluster, exemplo 255.255.255.0.

Clique novamente em add parameter.

Vai abrir uma nova tela, selecione em name a opção nic e em value digite por exemplo eth0:1, que vai ser a placa de rede virtual para o nosso cluster, como expliquei acima, vai ser nessa interface que o Heartbeat vai dar o IP 192.168.0.3.

Clique em novamente em add parameter.

Vai abrir uma nova tela selecione em name a opção broadcast e em value digite o broadcast da sua rede, exemplo 10.10.10.10.255.

Depois disso clique em adicionar o final desta tela.

Pronto, já temos o IP para o nosso cluster, se o serviço que acabamos de configurar não subir sozinho, clique com o botão direito do mouse em cima dele e clique em start.

Com isso já temos o nosso cluster bem simples.

Obs.: Note que quando formos adicionar um novo recurso, temos várias opções de serviços, então podemos configurar diversos tipos de serviços como servidor de email, ssh etc.

Porém o Heartbeat para o serviço na máquina que não está sendo usada para não ficar ocupando processamento e memória, até aí tudo bem, ótimo isso, mas se você for usar o monit para monitorar os serviços, eles vão viver brigando, pois o Heartbeat para o serviço e o monit o inicia, então quando for configurar os serviços pelo Heartbeat, só se lembre disso se o Heartbeat e o monit estiverem trabalhando no mesmo servidor. Para eles não ficarem brigando, não monitore o serviço que foi definido no Heartbeat.

Ex.: Você quer disponibilizar um cluster de correio eletrônico, então você monta o servidor de correio e coloca o Heartbeat nele para fazer o cluster e configura somente o endereço IP do recurso, neste caso todos os serviços que o servidor1 estiver provendo, se estiverem configurados no servidor2, quando o servidor1 cair o servidor2 começa a prover todos os mesmos. Com isso podemos definir que não precisamos configurar mais recursos de serviços para o Heartbeat se o que queremos é um cluster total de 2 servidores e não somente de algum serviço específico, caso contrário configure os recursos de serviços para prover somente os recursos que desejar.

Exemplo de inclusão de um recurso de serviço.

Agora vamos adicionar um novo recurso, o serviço do apache2.

Clique com o botão direito do mouse em resources e clique em add new item. Escolha a opção native e clique em ok.

Pronto, estamos na nossa tela de seleção de recursos, dê um id para o seu recurso, como Apache2 e em recursos selecione o apache2.

Note que neste recurso em Class/Provider ele é LSB, este tipo de recurso não necessita de parâmetros, então é só clicar em Adicionar no final da pagina.

Pronto, já temos o nosso IP para o cluster e um serviço. Mas e agora, em qual servidor o serviço do apache vai estar funcionando? Por padrão ele vai ficar rodando no servidor que você conectou com o haclient.

Mas podemos mudar isso, então vamos adicionar um recurso do tipo location.

Ex.: Tipos de aplicações para isso.

Você tem um servidor BOM com uma ótima configuração de hardware e um servidor mais fraco em cluster, então para quem você vai dar prioridade de serviço? Eu daria prioridade para o servidor bom e deixaria o servidor mais fraco como servidor de contingência, caso o primeiro pare o segundo assume. Neste tipo de situação esta aplicação de location é muito útil.

Vamos a um exemplo de configuração de um location.

Clique em Resources com o botão direito e selecione add new item.

Selecione a opção location.

Na próxima tela informe o ID exemplo apache2 para o nosso location, que vai ser o local aonde o serviço vai ter prioridade para trabalhar e como só temos um grupo é só selecionar ok. Se tivéssemos mais um grupo de serviço, poderíamos deixar cada grupo de serviços em um servidor.

Note que agora abaixo de resources temos Locations, clique em apache2 definido acima.

Do nosso lado direito agora apareceu o nosso location, note que na parte inferior deste tela temos dois botões, um add expression e um delete expression. Clique em add expression.

Na tela que vai abrir o primeiro atributo pode manter como #uname, o segundo atributo também pode manter como está e no terceiro atributo escolha um dos dois servidores no qual você quer que tenha preferência para rodar o serviço do apache, daí clique em ok.

Pronto, já definimos as preferências, note que na parte superior da tela temos um campo para digitar o score, essa opção que vai definir a prioridade de cada servidor. Para trabalhar com o serviço do apache digite 100 e adicione agora um novo location e uma nova expression, selecione o segundo servidor e digite um valor de score menor.

Pronto, agora já temos o nosso heartbeat funcionando.

Vamos fazer alguns testes.

Chame o seu navegador e digite: http://192.168.0.3

Se aparecer a tela do apache está ok.

Se não apareceu, volte no artigo e configure tudo novamente para ter certeza que você não esqueceu de nada.

Agora vamos desligar a máquina que está com o score 100. Após desligar a máquina, acesse novamente:

http://192.168.0.3

Está funcionando maravilha!

Olhe no console do heartbeat cliente que quem assumiu o serviço foi o segundo nodo, que está com menor prioridade e caso não estivesse com menor prioridade o heartbeat iria subir ele da mesma forma, pois seria detectado que o primeiro nodo caiu.

Mais um teste.

Ligue novamente o nodo 1 o servidor que você desligou.

Vá na tela do haclient, assim que o nodo 1 voltar a ativa ele retoma o serviço que estava com o nodo 2, pois ele tem score 100.

E agora é só ir inserindo recursos e testando, lembrando que os recursos do tipo LSB não precisam de parâmetros e os outros recursos precisam, exemplo o recurso apache, ele muda de distribuição para distribuição o caminho do arquivo de configuração.

Como eu falei no começo, esse é o caminho das pedras, agora vocês já podem ir testando o heartbeat e adaptando às suas necessidades.

Página anterior     Próxima página

Páginas do artigo
   1. Um pouco de história
   2. Nosso ambiente de implementação
   3. Preparação do ambiente
   4. Instalação e configuração do Heartbeat
   5. Gerenciando o Heartbeat com Haclient
   6. Instalação e configuração do DRBD8 e OCFS2
   7. LVS
   8. Instalação e configuração do Monit
Outros artigos deste autor

Apache em chroot + MySQL + PHP + mod_security + mod_evasive + vsftpd + Fail2ban + Debian Squeeze

Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze

Debian Lenny com Kernel 2.6.28 + Layer7 + Firewall

Bind9 em chroot no Debian Lenny

IDS com Snort + Guardian + Debian Lenny

Leitura recomendada

Configurando Postfix + MySQL + Courier + SPF + Clamav + SpamAssassin + Greylist + TLS

Como acessar contas do Hotmail no seu cliente de e-mail Linux

Gerando estatísticas do seu servidor de email utilizando o isoqlog

Utilizando GMail (Google Mail) em seu cliente de email favorito

Servidor Postfix Total

  
Comentários
[1] Comentário enviado por luizvieira em 21/03/2010 - 09:25h

Muito bom, essa semana mesmo preciso implementar um ambiente desses e talvez seu artigo possa me ajudar.
Parabéns!
[ ]'s
Luiz

[2] Comentário enviado por leandrojpg em 22/03/2010 - 09:04h

É, podem seguir linha a linha desse artigo que funciona, implantei aqui no meu trabalho e foi total sucesso, o Douglas fez um excelente trabalho.
muito obrigado.!!!!

[3] Comentário enviado por manoserpa em 22/03/2010 - 10:44h

Vou fazer meu TCC sobre cluster, esse artigo será bastante útil e vou usar como referência no meu trabalho.

Parabéns Douglas, e obrigado pelas dicas que você já meu deu até hoje.

Um abraço.

[4] Comentário enviado por douglas_dksh em 22/03/2010 - 13:25h

Obrigado pelos comentários.


Espero continuar contribuindo sempre.


Douglas.

[5] Comentário enviado por lemurbr em 21/04/2010 - 10:48h

Douglas,

Parabéns pelo excelente artigo, vc foi muito didático e me ajudou muito na implantação de uma solução similar em um cliente.
Seu artigo esta muito bem escrito e direto.
Estou tentando adaptar essa solução para um servidor samba com controlador de dominio o processo está de vento em popa.
Mas ficaram três dúvidas :
Primeiro - Utilizo o Debian Lenny atualizado, mas o parâmetro que foi indicado no FSTAB ( _netdev ) não esta seno reconhecino na inicialização da máquina, consequentemente ele não monta o filesystem OCFS2 automaticamente.
Segundo - No início do seu artigo deu a entender que precisava-se de 2 placas de rede em cada máquina mas ao implementar o mesmo não encontrei referência alguma da configuração dessa segunda placa.
Terceiro com relação ao LVS achei a idéia muito boa mas é realmente necessário a adição de uma terceira máquina no serviço ? Poderia-se colocar o LVS em uma das máquinas do cluster?

Mais uma vez parabéns pelo excelente artigo continue assim nossa comunidade só tem a ganhar ....

Viva a Liberdade
Viva o Linux

Uma abraço

Luiz Xavier .:

[6] Comentário enviado por lemurbr em 23/04/2010 - 16:10h

Boa Tarde Douglas !!!


Das minhas dúvidas eu já consegui resolver uma :
a linha do FSTAB referente a montagem do OCFS2 está errada o correto segue abaixo :

/dev/drbd1 /ocfs2 ocfs2 _netdev,defaults 0 0

Espero ter ajudado ;)

Atenciosamente

Luiz Xavier.:

Viva a Liberdade !!!
Viva o Linux !!!

[7] Comentário enviado por lemurbr em 28/04/2010 - 17:30h

Boa Tarde a todos ....

Mais uma vez gostaria de deixar minhas impressões com as pessoas que verem esse tópico.

Nosso colaborador Douglas está de parabéns .

Segui seu tutorial e fiz alguns ajustes e hoje sou um feliz próprietário de um cluster total rodanda Samba PDC, Squid Autenticado e OpenVpn.


Parabéns mais uma vez

Continue sempre assim ...

Viva a Liberdade !!!
Viva o Linux !!!!

Luiz Xavier .:

[8] Comentário enviado por fermguft em 30/04/2010 - 14:58h

Olá...

Primeiramente parabéns pelo artigo. Será de grande valia!!!

Tenho um problema: na hora de executar o Heartbeat em modo gráfico (heartbeat-2-gui) dá erro e nao abre. Tentei instalar em outra máquina e utilizar o putty e colocar o comando, mas ele nem abre. Se eu digitar o comando, da erro também. Alguem passou por isso, ou sabe como ontornar isso?

Situação:
Instalação em duas máquinas Debian/Lenny atualizadas, somente modo texto.

Erro:

debian1:~# /usr/lib/heartbeat-gui/haclient.py &
[1] 2372
debian1:~# /var/lib/python-support/python2.5/gtk-2.0/gtk/__init__.py:72: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
/usr/lib/heartbeat-gui/haclient.py:1964: Warning: invalid (NULL) pointer instance
win_widget = gtk.Window()
/usr/lib/heartbeat-gui/haclient.py:1964: Warning: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
win_widget = gtk.Window()
/usr/lib/heartbeat-gui/haclient.py:2077: Warning: invalid (NULL) pointer instance
menubar = uimanager.get_widget('/menubar')
/usr/lib/heartbeat-gui/haclient.py:2077: Warning: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
menubar = uimanager.get_widget('/menubar')
/usr/lib/heartbeat-gui/haclient.py:2077: GtkWarning: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
menubar = uimanager.get_widget('/menubar')
/usr/lib/heartbeat-gui/haclient.py:2077: Warning: g_object_get: assertion `G_IS_OBJECT (object)' failed
menubar = uimanager.get_widget('/menubar')
/usr/lib/heartbeat-gui/haclient.py:2077: Warning: value "TRUE" of type `gboolean' is invalid or out of range for property `visible' of type `gboolean'
menubar = uimanager.get_widget('/menubar')
/usr/lib/heartbeat-gui/haclient.py:2084: Warning: invalid (NULL) pointer instance
glade = gtk.glade.XML(UI_FILE, "mainwin_main", "haclient")
/usr/lib/heartbeat-gui/haclient.py:2084: Warning: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
glade = gtk.glade.XML(UI_FILE, "mainwin_main", "haclient")
/usr/lib/heartbeat-gui/haclient.py:2084: GtkWarning: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
glade = gtk.glade.XML(UI_FILE, "mainwin_main", "haclient")
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: Warning: g_object_get: assertion `G_IS_OBJECT (object)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_context_set_font_description: assertion `context != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_context_set_base_dir: assertion `context != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_context_set_language: assertion `context != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_new: assertion `context != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_text: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_attributes: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_alignment: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_ellipsize: assertion `PANGO_IS_LAYOUT (layout)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_single_paragraph_mode: assertion `PANGO_IS_LAYOUT (layout)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_set_width: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_get_extents: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_get_pixel_extents: assertion `PANGO_IS_LAYOUT (layout)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: Warning: g_object_unref: assertion `G_IS_OBJECT (object)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_icon_size_lookup_for_settings: assertion `GTK_IS_SETTINGS (settings)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: /build/buildd-gtk+2.0_2.12.12-1~lenny2-i386-2RfKoO/gtk+2.0-2.12.12/gtk/gtkstyle.c:2123: invalid icon size '3'
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_style_render_icon: assertion `pixbuf != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: Failed to render icon
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: Warning: g_object_ref: assertion `G_IS_OBJECT (object)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_context_get_language: assertion `context != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_context_get_metrics: assertion `PANGO_IS_CONTEXT (context)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_font_metrics_get_approximate_char_width: assertion `metrics != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_layout_get_context: assertion `layout != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_font_metrics_get_approximate_digit_width: assertion `metrics != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_font_metrics_get_ascent: assertion `metrics != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: PangoWarning: pango_font_metrics_get_descent: assertion `metrics != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_screen_get_default_colormap: assertion `GDK_IS_SCREEN (screen)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_colormap_get_visual: assertion `GDK_IS_COLORMAP (colormap)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_enable_synchronized_configure: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_user_data: assertion `window != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_style_attach: assertion `window != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_style_set_background: assertion `GTK_IS_STYLE (style)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_paint_flat_box: assertion `GTK_IS_STYLE (style)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_accept_focus: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_focus_on_map: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_modal_hint: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gtk_window_realize_icon: assertion `widget->window != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_geometry_hints: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_invalidate_rect: assertion `window != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_show: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_get_events: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_events: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_screen_get_display: assertion `GDK_IS_SCREEN (screen)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_cursor_new_for_display: assertion `GDK_IS_DISPLAY (display)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_cursor_unref: assertion `cursor != NULL' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_back_pixmap: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_drawable_get_colormap: assertion `GDK_IS_DRAWABLE (drawable)' failed
win_widget.show_all()
/usr/lib/heartbeat-gui/haclient.py:2092: GtkWarning: gdk_window_set_background: assertion `GDK_IS_WINDOW (window)' failed
win_widget.show_all()


[9] Comentário enviado por douglas_dksh em 03/05/2010 - 08:59h

Bom dia.

Cara pela sua situação abaixo.
Situação:
Instalação em duas máquinas Debian/Lenny atualizadas, somente modo texto.

Não tem como você executar o haclient.

/usr/lib/heartbeat-gui/haclient.py &

para você poder exportar a tela eu comentei no tutorial que precisa de uma maquina com modo gráfico.

e dava para fazer a exportação da tela do haclient.py via putty em modo grafico.

nem precisa ser a que tenha o servidor mais pelo meno um cliente pois a tela que vc esta querendo exportar é feita em python e necessita de algumas bibliotecas de modo grafico X.


para resolver o seu problema instale uma maquina com o modo grafico so para voce gerenciar o seu cluster e deixe os seus server somente com o modo texto para não ficar enchendo o seu server de aplicativos e bibliotecas X.


Douglas.

[10] Comentário enviado por lanzelotti em 06/08/2010 - 10:41h

Bom dia Douglas,

Já tinha o heartbeat instalado nos servidores(Debian 5), mas com a versão 1, instalei o heartbeat-gui nos servidores (locais) e usei o comando "/usr/lib/heartbeat-gui/haclient.py &".
Acesso os servidores com o ssh com X11 para usar a interface grafica da minha maquina local:
#ssh servidor -XY
Abri o Haclient normalmente:
Server 127.0.0.1
User Name hacluster
Password: em branco

Utilizo a senha que cadastrei mas não consigo conectar no servidor, tentei a conexão com o IP LAN do servidor mas gera o mesmo erro.
Tenho que especificar alguma porta?
Sabe o que pode estar ocorrendo?

Obs.: Não tenho firewall habilitado neste servidor e adicionei o user hacluster no grupo haclient(encontrei em um forum)

Obrigado e parabens!

[11] Comentário enviado por douglas_dksh em 06/08/2010 - 11:29h

Bom dia caro colega.

acho que vc esqueceu disso aqui.

Como na instalação do Heartbeat ele não pediu senha para o hacluster, temos que inserir uma para podemos conectar no Heartbeat.

# passwd hacluster

dai vc informa a senha e loga o hacliet.


Douglas

[12] Comentário enviado por joelmp em 26/09/2010 - 23:32h

Boa noite a todos

Agradeço o artigo, está me ajudando bastante.

Porem ainda tenho um problema com o heartbeat.
Quando o host1 e host2 estão operando não consigo acessar o apache na rede, porem quando coloco qualquer um deles em standby o serviço funciona.
alguem pode me dar uma dica?

[13] Comentário enviado por joelmp em 26/09/2010 - 23:43h

ops!

Já resolvi, era apenas um location para o mesmo serviço, ou seja, por engano setei um outro location qualquer com apache tbm, ai duplicou o serviço.

[14] Comentário enviado por doomk em 03/11/2010 - 15:16h

Tutorial simplesmente perfeito.


Está de parabéns.

[15] Comentário enviado por rodrigom em 17/05/2011 - 16:56h

Pessoal, estava seguindo esse tutorial, mas ai surgiu uma dúvida, onde gero essa senha ?


# vim /etc/ha.d/authkeys

# /etc/ha.d/authkeys

#Definir qual o método de autenticação.
auth 3

#Métodos de autenticação disponíveis
1 crc <--------------------------------------------------------------------
2 sha1 senha <----------------------------------------------------------
3 md5 senha <----------------------------------------------------------


Muito obrigado a todos, bom dia.

[16] Comentário enviado por felipeogutierrez em 20/11/2012 - 15:41h

Olá Douglas,

O heartbeat só funciona com cabo crossover ligando os nodos?

Obrigado,
Felipe

[17] Comentário enviado por douglas_dksh em 20/11/2012 - 16:09h

Boa tarde.

Não, pode ser utilizado um cabo padrão de rede, o heartbeat somente vai garantir que um endereço ip seja compartilhado entre os servidores, ou vai monitorar um determinado serviço ou partição, mas o servidor pode ser montado como qualquer outro.

[18] Comentário enviado por fernandofrauches em 04/06/2013 - 18:03h

Boa noite a todos.

Fui seguindo o tutorial passo a passo porem adaptando ele para minha situação. Estou utilizando ja o debian wheezy, e não consigo instalar o heartbeat-gui....
Busco ele no apt-get e ele não encontra....o heartbeat instalado é a versão 3

Obrigado.

[19] Comentário enviado por douglas_dksh em 06/06/2013 - 10:04h

E ai fernando o que acontece é o seguinte o projeto do heartbeat e do corosync forão separados e foram descontinuadas algumas features.

da uma olhada nesse link aqui http://www.douglas.wiki.br/doku.php?id=corosync_pacemaker_lcmc_no_debian_squeeze

aqui eu fiz a implementação com o novo modelo a implementação do squeeze e do wheezy é para ser a mesma.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts