PERFORCE change 194675 for review
Rene Ladan
rene at FreeBSD.org
Mon Jun 13 14:15:09 UTC 2011
http://p4web.freebsd.org/@@194675?ac=10
Change 194675 by rene at rene_acer on 2011/06/13 14:15:04
handbook/disks: finish update modulo spellcheck
Affected files ...
.. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml#26 edit
Differences ...
==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml#26 (text+ko) ====
@@ -4910,12 +4910,265 @@
<programlisting>hastd_enable="YES"</programlisting>
- <!--rene hier-->
+ <sect3>
+ <title>Failover-configuratie</title>
+
+ <para>Het doel van dit voorbeeld is om een robuust opslagsysteem te
+ bouwen dat resistent is tegen het falen van alle knooppunten. De
+ hoofdtaak is het oplossen van een scenario waarin een
+ <literal>primair</literal> knooppunt van het cluster faalt. Mocht dit
+ gebeuren, dan neemt het <literal>secundaire</literal> knooppunt het
+ feilloos over, controleert en koppelt het het bestandssysteem aan, en
+ gaat het verder zonder dat er een bit aan gegevens ontbreekt.</para>
+
+ <para>Om deze taak voor elkaar te krijgen, is het nodig om een andere
+ eigenschap te gebruiken die beschikbaar is op &os; en dat voorziet in
+ automatische failover van de IP-laag — <acronym>CARP</acronym>.
+ <acronym>CARP</acronym> staat voor Common Address Redundancy Protocol
+ en maakt het mogelijk dat meerdere hosts in hetzelfde netwerksegment
+ een IP-adres delen. Stel <acronym>CARP</acronym> in op beide
+ knooppunten van het cluster volgens de documentatie die beschikbaar is
+ in <xref linkend="carp">. Nadat deze taak voltooid is, zou elk
+ knooppunt een eigen interface <devicename>carp0</devicename> met een
+ gedeeld IP-adres <replaceable>172.16.0.254</replaceable> moeten
+ hebben. Het primaire <acronym>HAST</acronym>-knooppunt van het
+ cluster moet het meester-<acronym>CARP</acronym>-knooppunt
+ zijn.</para>
+
+ <para>De <acronym>HAST</acronym>-pool die in de vorige sectie is gemaakt
+ is nu klaar om geëxporteerd te worden naar de andere hosts op het
+ netwerk. Dit kan gedaan worden door het te exporteren over
+ <acronym>NFS</acronym>, <application>Samba</application>, etc., door
+ gebruik te maken van het gedeelde IP-adres
+ <replaceable>172.16.0.254</replaceable>. Het enige overgebleven
+ probleem is een automatische failover in het geval dat het primaire
+ knooppunt het begeeft.</para>
+
+ <para>Als een <acronym>CARP</acronym>-interface aan- of uitgaat,
+ genereert &os; een &man.devd.8;-gebeurtenis, wat het mogelijk maakt om
+ toestandsveranderingen op de <acronym>CARP</acronym>-interfaces in de
+ gaten te houden. Een toestandsverandering op het
+ <acronym>CARP</acronym>-interface geeft aan dat een van de knooppunten
+ het begaf of weer online kwam. In zulke gevallen is het mogelijk om
+ een script te draaien dat automatisch de failover afhandelt.</para>
+
+ <para>Om de toestandsverandering op de
+ <acronym>CARP</acronym>-interfaces af te vangen, dient de volgende
+ configuratie te worden toegevoegd aan het bestand
+ <filename>/etc/devd.conf</filename> op elk knooppunt:</para>
+
+ <programlisting>notify 30 {
+ match "system" "IFNET";
+ match "subsystem" "carp0";
+ match "type" "LINK_UP";
+ action "/usr/local/sbin/carp-hast-switch master";
+};
+
+notify 30 {
+ match "system" "IFNET";
+ match "subsystem" "carp0";
+ match "type" "LINK_DOWN";
+ action "/usr/local/sbin/carp-hast-switch slave";
+};</programlisting>
+
+ <para>Draai het volgende commando op beide knooppunten om de nieuwe
+ configuratie te laten gelden:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
+
+ <para>Als het interface <devicename>carp0</devicename> aan of uit gaat
+ (i.e. de toestand van het interface verandert), genreert het systeem
+ een notificatie wat het subsysteem &man.devd.8; in staat stelt om een
+ willekeurig script te draaien, in dit geval
+ <filename>/usr/local/sbin/carp-hast-switch</filename>. Dit is het
+ script dat de automatische failover afhandelt. Raadpleeg de
+ handleidingpagina &man.devd.conf.5; voor verdere uitleg over de
+ bovenstaande configuratie van &man.devd.8;.</para>
+
+ <para>Het volgende zou een voorbeeld van zo'n script kunnen zijn:</para>
+
+ <programlisting>#!/bin/sh
+# Origineel script door Freddie Cash <fjwcash at gmail.com>
+# Gewijzigd door Michael W. Lucas <mwlucas at BlackHelicopters.org>
+# en Viktor Petersson <vpetersson at wireload.net>
+
+# De namen van de HAST-hulpbronnen, zoals vermeld in /etc/hast.conf
+resources="test"
+
+# vertraging voor het aankoppelen van de HAST-hulpbron na het worden van meester
+# doe een gok
+delay=3
+
+# logging
+log="local0.debug"
+name="carp-hast"
+
+# einde van gebruiker-instelbare dingen
+
+case "$1" in
+ master)
+ logger -p $log -t $name "Omschakelen naar primaire aanbieder voor ${resources}."
+ sleep ${delay}
+
+ # Wacht totdat de "hastd secondary" processen zijn gestopt
+ for disk in ${resources}; do
+ while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
+ sleep 1
+ done
+
+ # Verwissel de rol voor elke schijf
+ hastctl role primary ${disk}
+ if [ $? -ne 0 ]; then
+ logger -p $log -t $name "Omschakelen van rol naar primair voor hulpbron ${disk} mislukt."
+ exit 1
+ fi
+ done
+
+ # Wacht totdat de apparaten /dev/hast/* verschijnen
+ for disk in ${resources}; do
+ for I in $( jot 60 ); do
+ [ -c "/dev/hast/${disk}" ] && break
+ sleep 0.5
+ done
+
+ if [ ! -c "/dev/hast/${disk}" ]; then
+ logger -p $log -t $name "GEOM-aanbieder /dev/hast/${disk} is niet verschenen."
+ exit 1
+ fi
+ done
+
+ logger -p $log -t $name "Rollen van HAST-hulpbronnen ${resources} omgeschakeld naar primair."
+
+
+ logger -p $log -t $name "Schijven aankoppelen."
+ for disk in ${resources}; do
+ mkdir -p /hast/${disk}
+ fsck -p -y -t ufs /dev/hast/${disk}
+ mount /dev/hast/${disk} /hast/${disk}
+ done
+
+ ;;
+
+ slave)
+ logger -p $log -t $name "Omschakelen naar secundaire aanbieder voor ${resources}."
+
+ # Schakel de rollen van de HAST-hulpbronnen om
+ for disk in ${resources}; do
+ if ! mount | grep -q "^/dev/hast/${disk} on "
+ then
+ else
+ umount -f /hast/${disk}
+ fi
+ sleep $delay
+ hastctl role secondary ${disk} 2>&1
+ if [ $? -ne 0 ]; then
+ logger -p $log -t $name "Omschakelen van rol naar secundair voor hulpbron ${disk} mislukt."
+ exit 1
+ fi
+ logger -p $log -t $name "Rol van hulpbron ${disk} omgeschakeld naar secundair."
+ done
+ ;;
+esac</programlisting>
+
+ <para>In een notendop doet het script het volgende wanneer een knooppunt
+ <literal>meester</literal> / <literal>primair</literal> wordt:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De <acronym>HAST</acronym>-pools opwaarderen naar primair op
+ een gegeven knooppunt.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het bestandssysteem onder de <acronym>HAST</acronym>-pool
+ controleren.</para>
+ </listitem>
+
+ <listitem>
+ <para>De pools op de juiste plaats aankoppelen.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Wanneer een knooppunt <literal>backup</literal> /
+ <literal>secundair</literal> wordt:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De <acronym>HAST</acronym>-pools afkoppelen.</para>
+ </listitem>
+
+ <listitem>
+ <para>De <acronym>HAST</acronym>-pools degraderen naar
+ secundair.</para>
+ </listitem>
+ </itemizedlist>
+
+ <caution>
+ <para>Houd in gedachte dat dit slechts een voorbeeldscript is dat
+ dienst doet om aan te tonen dat alles werkt. Het behandeld niet
+ alle mogelijke situaties en kan op elke manier worden uitgebreid of
+ veranderd, het kan bijvoorbeeld benodigde diensten starten en
+ stoppen.</para>
+ </caution>
+
+ <tip>
+ <para>Voor het doel van dit voorbeeld hebbwn we een standaard
+ UFS-bestandssysteem gebruikt. Om de tijd die nodig is voor herstel
+ te verkorten, kan een bestandssysteem met UFS-journalling of ZFS
+ worden gebruikt.</para>
+ </tip>
+
+ <para>Meer gedetailleerde informatie met aanvullende voorbeelden kunnen
+ gevonden worden op de <ulink
+ url="http://wiki.FreeBSD.org/HAST">HAST Wiki</ulink>-pagina.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Problemen oplossen</title>
+
+ <sect3>
+ <title>Algemene tips om problemen op te lossen</title>
+
+ <para><acronym>HAST</acronym> zou over het algemeen zonder problemen
+ moeten werken, maar net als met elk ander software-product zijn er
+ momenten waarop het anders werkt dan het zou moeten. De oorzaken van
+ de problemen kunnen verschillen, maar de vuistregel is om ervoor te
+ zorgen dat de klokken zijn gesynchroniseerd op alle knooppunten in het
+ cluster.</para>
+
+ <para>Het debug-niveau van &man.hastd.8; dient verhoogd te worden
+ wanneer problemen met <acronym>HAST</acronym> worden verholpen. Dit
+ kan gedaan worden door het daemon &man.hastd.8; met het argument
+ <literal>-d</literal> op te starten. Merk op dat dit argument
+ meerdere malen kan worden opgegeven om het debug-niveau nog verder op
+ te hogen. Op deze manier kan veel nuttige informatie worden vergaard.
+ Het is ook de moeite te overwegen om het argument
+ <literal>-F</literal> te gebruiken, dat het daemon &man.hastd.8; in de
+ voorgrond zal starten.</para>
+ </sect3>
+
<sect3 id="disks-hast-sb">
<title>Herstellen van de Split-brain-conditie</title>
- <para/>
- <!--placeholder-->
+ <para>Het gevolg van de situatie waarin beide knooppunten van het
+ cluster niet met elkaar kunnen communiceren en beide als primaire
+ knooppunten zijn ingesteld wordt <literal>split-brain</literal>
+ genoemd. Dit is een gevaarlijke situatie omdat het beide knooppunten
+ in staat stelt om incompatibele veranderingen aan de gegevens te
+ maken. Deze situatie dient handmatig door de systeembeheerder te
+ worden afgehandeld.</para>
+
+ <para>Om deze situatie op te lossen moet de beheerder besluiten welk
+ knooppunt de belangrijkere veranderingen bevat (of ze handmatig
+ samenvoegen) en <acronym>HAST</acronym> de volledige synchronisatie
+ op het knooppunt dat de kapotte gegevens heeft laten uitvoeren. Voer
+ hiervoor de volgende commando's uit op het knooppunt dat opnieuw
+ gesynchroniseert moet worden:</para>
+
+ <screen>&prompt.root; <userinput>hastctl role init <resource></userinput>
+&prompt.root; <userinput>hastctl create <resource></userinput>
+&prompt.root; <userinput>hastctl role secondary <resource></userinput></screen>
</sect3>
</sect2>
</sect1>
More information about the p4-projects
mailing list