Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jun 2011 14:15:08 GMT
From:      Rene Ladan <rene@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 194675 for review
Message-ID:  <201106131415.p5DEF8Ld054510@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@194675?ac=10

Change 194675 by rene@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 &mdash; <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&euml;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 &lt;fjwcash@gmail.com&gt;
+# Gewijzigd door Michael W. Lucas &lt;mwlucas@BlackHelicopters.org&gt;
+# en Viktor Petersson &lt;vpetersson@wireload.net&gt;
+
+# 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 &lt;resource&gt;</userinput>
+&prompt.root; <userinput>hastctl create &lt;resource&gt;</userinput>
+&prompt.root; <userinput>hastctl role secondary &lt;resource&gt;</userinput></screen>
       </sect3>
     </sect2>
   </sect1>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106131415.p5DEF8Ld054510>