wordpress hosting - vpn - cloud - statistiekservice - email

High Availabilty met heartbeat

High Availabilty met heartbeat

High Availability met heartbeat

Algemeen

Om een hogere beschikbaarheid te bieden van bijv. een web of databaseserver kan gekozen worden om heartbeat te gebruiken. Het idee erachter is simpel en het eenvoudigst uit te leggen aan de hand van een voorbeeld. We gaan uit van een clustertje van 2 servers die MySQL draaien met de bedoeling als 1 van de 2 servers uitvalt, de andere het automatisch overneemt. In deze documentatie die uit de praktij komt is uitgegaan van een eenvoudige opzet met 2 servers die via een aparte netwerkinterface het heartbeatsignaal versturen. Dit kan ook serieel gebeuren maar dat komt in de praktijk minder voor.

De bron/sourcebestanden en de documentatie zijn te vinden op http://www.linux-ha.org/wiki/Main_Page

Installatie van heartbeat

Voor de meeste distributies is er wel een package beschikaar van heartbeat 3.x. In dit praktijkgeval werd gekozen om de van de source/broncode RPM packages te maken voor de twee RedHat Enterprise Linux 5 servers. Dit is, als voldaan is aan de verschillende dependencies, eenvoudig omdat er .spec files worden meegeleverd.

Er zijn drie source/broncode archives nodig: resource-agents, cluser-glue en heartbeat. Deze zijn te vinden op http://www.linux-ha.org/wiki/Downloads

Voorbeeldconfiguratie

Gegevens MySQL server 1:

  • hostnaam : dbserver01.mijndomein.nl
  • ipadres : 192.168.1.5 / 255.255.255.0
  • heartbeat ip : 10.10.37.1

Gegevens MySQL server 2

  • hostnaam : dbserver02.mijndomein.nl
  • ipadres : 192.168.1.6 / 255.255.255.0
  • heartbeat ip : 10.10.37.2

Als virtueel IP adres wordt 192.168.1.10 gebruikt.

Configuratie hearbeat

De configuratie van hearbeat bestaat uit het configuren van /etc/ha.d/ha.cf, /etc/ha.d/haresources en /etc/ha.d/authkeys.

/etc/ha.d/authkeys

In dit bestand komt een sleutel te staan die gedeeld wordt over de nodes binnen het cluster en heeft het volgende formaat:

      auth num
      num algorithm secret

Waarbij num een opvolgend nummer is, te beginnen bij 1. Het algoritme is meestal sha1 en secret is de daadwerkelijk sleutel. Deze sleutel kan worden aangemaakt met het onderstaande shell script:

   ( echo -ne "auth 1\n1 sha1 "; \
   dd if=/dev/urandom bs=512 count=1 | openssl md5 ) > /etc/ha.d/authkeys
   chmod 0600 /etc/ha.d/authkeys

Hiermee wordt tevens aan een andere vereiste voldaan, het authkeys bestand mag alleen voor root leesbaar zijn en hieronder staat een voorbeeld de inhoud van de authkeys:

   auth 1
   1 sha1 29d72a23963e8350a65b78e8052678ef

/etc/ha.d/ha.cf

logfacility   local0
autojoin      none
keepalive     2
deadtime      15
ucast eth3 10.10.37.1
auto_failback on
node          dbserver01.mijndomein.nl
node          dbserver02.mijndomein.nl
logfacility

Geeft aan hoe middels de syslog daemon gelogd wordt.

autojoin

Er wordt door autojoin none voorkomen dat er automatisch naar nieuwe nodes voor het cluster wordt gezocht bij het opstarten van heartbeat. Dit versnelt het opstarten in met name kleinere clusteromgevingen.

keepalive

De tijd in seconden dat een heartbeat signaal wordt verzonden.

deadtime

De tijd in seconden voordat een node ‘dood’ verklaard wordt en het overfailen naar de andere node wordt gestart.

ucast

In deze omgeving is gekozen om middels ucast de aanwezigheid van de nodes te controleren. Een andere optie zou multicast (mcast) zijn. Indien,zoals in dit voorbeeld, er een apart VLAN voor heartbeat is opgezet kan ucast gebruikt worden.

auto_failback

Geeft aan met de optie on of off of heartbeat automatisch moet overfailen.

node

Definieert de nodes binnen het heartbeat cluster. Het is raadzaam de hostnamen op te nemen in /etc/hosts zodat deze ten alle tijde te resolven zijn en niet door eventuele nameserverproblemen het heartbeatproces verstoord.

/etc/ha.d/haresources

   dbserver01.mijndomein.nl 192.168.1.10 mysql

In deze file wordt aangegeven welke node de master is, wat het virtuele ipadres voor de buitenwereld is om een bepaalde service aan te bieden. In dit geval is dus de dbserver01 de primaire node met het virtuele ipadres 192.168.1.10 en wordt de service MySQL geclusterd. Dit staat los van hoe MySQL geinstalleerd is. Zodra er zich een overfail situatie voordoet wordt het virtuale ipdres op de primaire node down gebracht en wordt MySQL gestopt. De secundaire node zal dan na de periode die opgegeven is, het virtuele ipadres up brengen en MySQL starten. De data van MySQL werd in dit geval op een shared storage opgeslagen.

ha_propagate

Als de configuratie op de primaire node afgerond is kunnen de nodes de noodzakelijke configuratiebestanden via ha_propagate worden gepushed. Deze tool in te vinden in /usr/lib/heartbeat/ha_propagate of /usr/lib64/heartbeat/ha_propagate. Middels scp (ssh) worden de nodes die in de /etc/ha.d/ha.cf zijn opgenomen geconfigureerd. In dit voorbeeld bestaat het cluster uit slechts twee nodes en is ha_propagate misschien niet nodig maar als een cluster uit vele nodes bestaat is deze manier aan te raden.

Opmerking: Wel is het noodzakelijk om per node het ucast/mcast ipadres aan te passen en eventueel de gebruikte interface voor het heartbeat signaal.

Veel voorkomende fouten

Veel voorkomende fouten

Een verzameling van fouten die soms in het gebruik van RedHat Satellite naar voren komen en de mogelijke oplosisngen ervan. Deze verzameling is opgebouwd n.a.v. ervaringen in diverse omgevingen. In de meeste gevallen werden reeds in RHN geregistreerde servers omgehangen naar een lokale Satellite server en nieuwe servers middels kickstart uitgerold.

Errors tijdens gebruik van satellite-sync

Wanneer: Bij het uitvoeren van satellite-sync -c {channelnaam} worden foutmeldingen gegeven. Satellite is geinstalleerd met de embedded Oracle database.

Oplossing: Controleer of de Oracle database nog voldoende ruimte heeft.

  • Log in als root op de lokale Satellite server
  • Ga de Oracle user te gaan: su - oracle
  • Voer db-control report uit. De uitvoer lijkt op onderstaand voorbeeld:
Tablespace                  Size    Used   Avail   Use%
DATA_TBS                    8.3G    6.7G    1.5G    81%
SYSAUX                      500M  148.9M    351M    30%
SYSTEM                      1.1G  253.1M  946.8M    21%
UNDO_TBS                    1.4G  157.4M    1.3G    10%
USERS                       128M     64K  127.9M     0%
  • Vergroot de Tablespaces waar meer dan 70% in gebruik is m.b.v. db-control extend, voorbeeld: db-control extend DATA_TBS

Parameters worden niet gebruikt in Script

Wanneer: Tijdens de installatie worden de parameternaam niet vervangen door het waarde die in Variables wordt opgegeven

Oplossing: Zet het vinkje bij Template aan onder Script.

Registratie van bestaande server in lokale Satellite server faalt

Wanneer: Bij het runnen van rhnreg_ks komt er een melding dat het systeem al geregistreerd is

Oplossing 1: Verwijder het systeem uit RHN en voer rhn_register uit.

Oplossing 2: Zorg dat in /usr/share/rhn het CA SSL certificaat staat van de lokale Satellite server en gebruik rhnreg_ks zoals in onderstaand voorbeeld:

rhnreg_ks --serverUrl=https://mijsatellite.example.com/XMLRPC --username=admin --password=secret --force --sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT

yum.Errors.RepoError: Cannot retrieve repository metadata (repomd.xml) for repository…

Wanneer: Een systeem is succesvol in een lokale Satellite server geregistreerd maar bij het gebruik van yum komen fouten over niet een niet gevonden repository. Meestal m.b.t. de rhn-tools repository.

Oplossing: Indien vanuit de Satellite server een activation key wordt gebruikt:

  • Verwijder de activation key.
  • Verwijder het systeem uit Satellite
  • Registreer het systeem opnieuw met rhn_register
  • Voor yum clean all uit alvorens bijv. een yum check-update te geven.

Signen van RPM’s met GPG key

Signen van RPM’s met GPG key

In Satellite kunnen eigen software channels worden aangemaakt. Hiermee kunnen aangepaste of eigen RPM’s via Satellite beschikbaar gesteld worden aan de clients. Een voorwaarde is wel dat de RPM packages zijn gesigned met een GPG key en dat de public GPG key voor de clients beschikbaar is en is importeerd. Hieronder wordt beschreven hoe dit kan worden uitgevoerd.

De werkzaamheden omvatten voor een deel een aantal eenmalig uit te voeren werkzaamheden en een aantal wat steeds voor elk RPM package terugkeert. Bij het aanmaken van een channel zal naast de ID ook om de GPG fingerprint worden gevraagd. Deze kan worden opgevraagd door: gpg

Automatisch synchronizeren van channels

Automatisch synchronizeren van Satellite channels

Om het synchronizeren van de lokale Satellite server met RHN te bewerkstelligen kan onderstaand script als voorbeeld dienen:

#!/bin/bash
channels="rhn-tools-rhel-x86_64-server-5  rhn-tools-rhel-i386-server-5  rhn-tools-rhel-4-as-i386 rhel-x86_64-server-5 rhe
l-i386-client-5 rhel-x86_64-client-5 rhel-i386-as-4 rhel-x86_64-as-4"

SYNC="/usr/bin/satellite-sync -c"

for i in $channels;
do
    $SYNC $i
done;

Opmerkingen:

  • Uiteraard kan alleen gesynchronizeerd worden naar channels waarop een subsription aanwezig is.
  • Dit script kan in de crontab van root worden opgenomen. Voorbeeld: 0 2 * * * /scripts/sync-sat.sh 2>&1 > /dev/null

Aanmaken van eigen channels

Aanmaken van eigen channels in Satellite

Algemeen

RedHat Satellite biedt de mogelijkheid om buiten de RedHat channels eigen softwarechannels te maken. Op deze manier kan op een gestandariseerde methode software worden gedistribueerd.

Een eigen channel kan worden aangemaakt door na het inloggen in Satellite het volgende pad te volgen:

   Channels -> Manage Software Channels -> Create New Channel

Bij het aanmaken van een Channel wordt onder Security: GPG gevraagd naar de URL, het ID en de fingerprint van de GPG key.

Aanmaken eigen channel

Voorbeeld van een zelf aangemaakt channel. Alleen de verplichte velden moeten worden ingevuld, echter kan het handig zijn om bij Maintainer Name aan te geven wie het channel aangemaakt heeft.

Channel name     : Nagios plugins x86_64
Channel label    : nagois_plugins_x86_64
Parent Channel   : None
Parent Channel Architecture : x86_64 
Channel Summmary : Nagios_plugins

Security: GPG

GPG key URL : http://satellite.example.com/pub/LINUXTEAM-GPG-KEY
GPG key ID  : AE175D8E
GPG key Fingerprint : 9D9E 02F7 FE7E 57C2 C764  54A3 283C 491B AE17 5D8E

Opmerkingen:

  • De GPG key ID kan worden gevonden met gpg —-list-keys
  • De GPG fingerprint kan worden opgevraagd met gpg —-fingerprint LinuxTeam

Toevoegen van RPM packages aan een channel

Nu het eigen channel is aangemaakt kunnen RPM packages aan worden toegevoegd. Hiervoor is op de Satellite server de tool rhnpush beschikaar. In dit voorbeeld wordt een RPM package naar de Satellite server gestuurd zonder het direct aan een channel te koppelen. In Satellite kan daarna dit RPM package worden gekoppeld aan het zojuist aangemaakte channel.

    rhnpush -v -u {administratornaam} --server=https://satellite.example.com/APP {packages}

Opmerkingen:

  • In plaats van {administratornaam} wordt de administrator naam bedoeld van de Satellite server. Rhnpush zal na het aanroepen vragen om het administrator wachtwoord.
  • In plaats van {packages} wordt een of meerdere RPM packages opgegeven.

Zodra de push is voltooid kan in Satellite de RPM package(s) aan het eigen gemaakte channel worden gekoppeld. Dit wordt gedaan door het volgende pad te volgen:

   Channels -> Manage Software Channels -> {kies het aangemaakte channel} -> Packages -> Add Packages

Uit het standaard getoonde channel Packages in no channels worden dan de zojuist geuploadde RPM package(s) getoond. Selecteer deze en bevestig dat deze aan het eigen gemaakte channel moet worden toegevoegd.

Proudly powered by WordPress, hosted by LinuxPro Nederand