MFen: Resync with the English version of the handbook
Obtained from: FreeBSD Mongolian Documentation project
This commit is contained in:
parent
b630eadde6
commit
3af0e91144
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=37051
1 changed files with 651 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
|||
<!--
|
||||
The FreeBSD Mongolian Documentation Project
|
||||
|
||||
Original revision 1.302
|
||||
Original revision 1.305
|
||||
|
||||
$FreeBSD$
|
||||
-->
|
||||
|
@ -3893,6 +3893,656 @@ Device 1K-blocks Used Avail Capacity
|
|||
</screen>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="disks-hast">
|
||||
<sect1info>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Даниел</firstname>
|
||||
<surname>Гэрзо</surname>
|
||||
<contrib>Хувь нэмэр болгон оруулсан </contrib>
|
||||
</author>
|
||||
</authorgroup>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Фредди</firstname>
|
||||
<surname>Кэш</surname>
|
||||
<contrib>Зарим нэг зүйлс нэмэрлэсэн </contrib>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Павел Жакуб</firstname>
|
||||
<surname>Давидек</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Майкл В.</firstname>
|
||||
<surname>Лукас</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Виктор</firstname>
|
||||
<surname>Петерсон</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
<!-- Date of writing: 26 February 2011 -->
|
||||
</sect1info>
|
||||
|
||||
<title>Highly Available Storage (HAST)</title>
|
||||
<indexterm>
|
||||
<primary>HAST</primary>
|
||||
<secondary>high availability</secondary>
|
||||
</indexterm>
|
||||
|
||||
<sect2>
|
||||
<title>Ерөнхий зүйл</title>
|
||||
|
||||
<para>Байнгын бэлэн ажиллагаатай байх (High-availability) нь
|
||||
бизнесийн чухал програм хангамжуудын хувьд хамгийн гол
|
||||
шаардлага бөгөөд тийм хадгалалтын төхөөрөмж нь уг орчны
|
||||
түлхүүр хэсэг юм. Highly Available STorage буюу
|
||||
<acronym>HAST<remark role="acronym">Highly Available
|
||||
STorage</remark></acronym>-г &a.pjd; хөгжүүлсэн бөгөөд
|
||||
энэ нь өгөгдлийг TCP/IP сүлжээнд холбогдсон хэд хэдэн
|
||||
тусдаа байгаа машинууд дээр тунгалгаар хадгалах боломжийг
|
||||
бүрдүүлдэг. <acronym>HAST</acronym>-г сүлжээний RAID1 (толь) гэж
|
||||
ойлгож болох бөгөөд GNU/&linux; тавцангийн хувьд байдаг
|
||||
DRBD® хадгалалтын системтэй төстэй юм. <acronym>CARP</acronym>
|
||||
зэрэг &os;-н бусад байнгын бэлэн ажиллагааг хангагч боломжуудын хамтаар
|
||||
<acronym>HAST</acronym> нь тоног төхөөрөмжийн эвдрэлээс ангид
|
||||
байнгын бэлэн ажиллагаатай хадгалалтын кластер бүтээх боломжийг
|
||||
бүрдүүлдэг.</para>
|
||||
|
||||
<para>Энэ хэсгийг уншаад та дараах зүйлсийг мэдэх болно:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><acronym>HAST</acronym> гэж юу болох, хэрхэн ажилладаг болон
|
||||
ямар боломжуудыг хангадаг талаар.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&os; дээр <acronym>HAST</acronym>-г хэрхэн тохируулж
|
||||
ашиглах талаар.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><acronym>CARP</acronym> болон &man.devd.8;-г
|
||||
хэрхэн тохируулж уян хатан хадгалалтын систем бүтээх талаар.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Энэ хэсгийг уншихаасаа өмнө та дараах зүйлсийг мэдсэн байх шаардлагатай:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>&unix; болон &os;-ийн үндсийг ойлгосон байх
|
||||
(<xref linkend="basics">).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Сүлжээний интерфэйсүүд болон &os;-н бусад гол дэд системүүдийг хэрхэн
|
||||
тохируулах талаар мэддэг байх (<xref
|
||||
linkend="config-tuning">).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&os;-н сүлжээний талаар сайн мэддэг байх
|
||||
(<xref linkend="network-communication">).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&os; 8.1-RELEASE буюу түүнээс хойшхи хувилбарыг ашиглах.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><acronym>HAST</acronym> төслийг &os; сан <ulink
|
||||
url="http://www.omc.net/">OMCnet Internet Service GmbH</ulink>
|
||||
болон <ulink url="http://www.transip.nl/">TransIP BV</ulink>-н дэмжлэгтэйгээр
|
||||
санхүүжүүлжээ.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>HAST-н боломжууд</title>
|
||||
|
||||
<para><acronym>HAST</acronym> системийн гол
|
||||
боломжуудад:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Локал хатуу дискний хөтчүүд дээрх I/O алдаануудыг
|
||||
халхлахад ашиглаж болох боломж.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&os;-н дэмждэг дурын файлын системийг ашиглах боломжийг
|
||||
бүрдүүлдэг файлын системээс үл хамаарсан байдал.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Тухайн цэг унасан байх үед зөвхөн өөрчлөгдсөн блокуудыг синхрончлох замаар
|
||||
үр ашигтай, хурдан дахин синхрончлох боломж.</para>
|
||||
</listitem>
|
||||
<!--
|
||||
<listitem>
|
||||
<para>Has several synchronization modes to allow for fast
|
||||
failover.</para>
|
||||
</listitem>
|
||||
-->
|
||||
<listitem>
|
||||
<para>Нэмэлт нөөц бололцоог нэмэхийн тулд
|
||||
аль хэдийн бий болгосон орчинд ашиглах боломж.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><acronym>CARP</acronym>,
|
||||
<application>Heartbeat</application> эсвэл бусад
|
||||
хэрэгслүүдийн хамтаар уян хатан, бөх бат хадгалалтын
|
||||
системийг бүтээхэд цуг ашиглаж боломж.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>HAST-н ажиллагаа</title>
|
||||
|
||||
<para><acronym>HAST</acronym> нь дурын хадгалалтын төхөөрөмжийн
|
||||
хувьд блок түвшний синхрон олшруулалтыг хэд хэдэн машин уруу
|
||||
хийдэг болохоор хамгийн багадаа хоёр цэг (физик машинууд) шаарддаг
|
||||
— Эдгээр нь <literal>анхдагч</literal> (бас
|
||||
<literal>мастер</literal> гэгддэг) цэг болон
|
||||
<literal>хоёрдогч</literal> (<literal>боол</literal>) цэг юм.
|
||||
Энэ хоёр машиныг хамтад нь кластер гэж дуудах болно.</para>
|
||||
|
||||
<note>
|
||||
<para>HAST нь одоогоор хоёр кластерын цэгээр
|
||||
хязгаарлагдсан байгаа.</para>
|
||||
</note>
|
||||
|
||||
<para><acronym>HAST</acronym> нь анхдагч-хоёрдогч тохиргоогоор
|
||||
ажилладаг болохоор тухайн үед зөвхөн нэг кластерын цэгийг
|
||||
идэвхтэй байхыг зөвшөөрдөг. <literal>анхдагч</literal> цэг буюу
|
||||
<literal>актив</literal> нь <acronym>HAST</acronym>-р удирдуулсан
|
||||
төхөөрөмжүүдэд хандах I/O хүсэлтүүдтэй ажилладаг цэг юм.
|
||||
<literal>хоёрдогч</literal> цэг нь дараа нь <literal>primary</literal>
|
||||
цэгээсээ автоматаар синхрончлогддог.</para>
|
||||
|
||||
<para><acronym>HAST</acronym> системийн
|
||||
физик хэсгүүд нь:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>локал диск (анхдагч цэг дээрх)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>алсын машин дээрх диск (хоёрдогч цэг)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><acronym>HAST</acronym> нь блок түвшинд синхроноор
|
||||
ажилладаг бөгөөд энэ нь файлын системүүд болон програм хангамжуудын
|
||||
хувьд тунгалаг болгодог. <acronym>HAST</acronym> нь
|
||||
бусад хэрэгслүүд эсвэл програм хангамжуудад ашиглах боломжтойгоор
|
||||
<filename class="directory">/dev/hast/</filename> санд ердийн
|
||||
GEOM үйлчилгээ үзүүлэгчдээр хангадаг бөгөөд ингэснээр
|
||||
<acronym>HAST</acronym>-р хангагдсан төхөөрөмжүүд болон
|
||||
түүхий дискнүүд, хуваалтууд гэх зэргүүдийн хооронд ялгаа байхгүй
|
||||
болдог байна.</para>
|
||||
|
||||
<para>Бичих, устгах, эсвэл flush үйлдэл бүрийг локал диск болон
|
||||
алсын диск рүү TCP/IP ашиглан илгээдэг. Унших үйлдэлд
|
||||
локал диск дээрх мэдээлэл шинэ биш эсвэл I/O алдаа гараагүй л бол
|
||||
локал дискнээс хариу өгдөг. Хэрэв тийм тохиолдол байвал
|
||||
унших үйлдлийг хоёрдогч цэг рүү илгээдэг.</para>
|
||||
|
||||
<sect3>
|
||||
<title>Синхрончлол ба Олшруулалтын горимууд</title>
|
||||
|
||||
<para><acronym>HAST</acronym> нь унасан байдлаас хурдан сэргээх
|
||||
боломжийг бий болгохыг оролддог. Энэ зорилгоор цэг унасны дараа
|
||||
синхрончлох хугацааг багасгах нь хамгийн чухал юм. Синхрончлолыг
|
||||
хурдан хангахын тулд <acronym>HAST</acronym> нь диск дээрх
|
||||
бохир өгөгдлүүдийн битмапыг зохицуулж байдаг бөгөөд ердийн
|
||||
синхрончлолын үед зөвхөн тэдгээрийг синхрончилдог (эхний синхрончлолыг
|
||||
тооцолгүйгээр).</para>
|
||||
|
||||
<para>Синхрончлолтой ажиллах олон аргууд байдаг.
|
||||
<acronym>HAST</acronym> нь янз бүрийн синхрончлолын аргуудтай (доор дурдсан)
|
||||
ажиллахын тулд хэд хэдэн олшруулалтын горимыг хийдэг:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis>memsync</emphasis>: локал бичих үйлдэл
|
||||
дууссан ба алсын цэг өгөгдөл ирснийг баталгаажуулсан бөгөөд
|
||||
өгөгдлийг яг хадгалахаас өмнөх үед бичих үйлдэл дууссан гэж үздэг.
|
||||
Алсын цэг дээрх өгөгдөл баталгаажуулалт илгээгдсэний дараа
|
||||
хадгалагддаг. Энэ горим нь саатлыг багасгах зориулалттай
|
||||
бөгөөд маш сайн найдвартай байдлыг хангадаг.
|
||||
<emphasis>memsync</emphasis> олшруулалтын горим нь одоогоор
|
||||
хийгдээгүй байгаа.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis>fullsync</emphasis>: локал болон алсын бичих
|
||||
үйлдэл хийгдэж дууссаны дараа бичих үйлдэл дууссан гэж үздэг. Энэ нь
|
||||
хамгийн найдвартай бөгөөд удаан горим юм. Энэ горим нь анхдагч
|
||||
байдаг.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis>async</emphasis>: локал бичих үйлдэл дууссан үед
|
||||
бичих үйлдлийг дууссан гэж үздэг. Энэ нь хамгийн хурдан бөгөөд
|
||||
аюултай олшруулалтын горим юм. Энэ горимыг бусад горимын хувьд
|
||||
саатал хэтэрхий өндөр байгаа алсын цэг рүү олшруулахдаа
|
||||
ашиглах ёстой. <emphasis>async</emphasis> олшруулалтын горим
|
||||
одоогоор хийгдээгүй байгаа.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<warning>
|
||||
<para>Зөвхөн <emphasis>fullsync</emphasis> олшруулалтын горим
|
||||
одоогоор дэмжигдсэн.</para>
|
||||
</warning>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>HAST-н тохиргоо</title>
|
||||
|
||||
<para><acronym>HAST</acronym> нь ажиллахын тулд
|
||||
<literal>GEOM_GATE</literal> дэмжлэгийг шаарддаг.
|
||||
<literal>GENERIC</literal> цөм нь анхдагчаар
|
||||
<literal>GENERIC</literal>-г <emphasis>агуулдаггүй</emphasis>
|
||||
боловч &os;-н анхдагч суулгацад дуудагдах боломжтой
|
||||
<filename>geom_gate.ko</filename> модуль байдаг.
|
||||
Мөн дараах мөрийг цөмийн тохиргооны файлд нэмэн
|
||||
<acronym>GEOM_GATE</acronym> дэмжлэгийг цөмд оруулан бүтээж
|
||||
болдог:</para>
|
||||
|
||||
<programlisting>options GEOM_GATE</programlisting>
|
||||
|
||||
<para><acronym>HAST</acronym> тогтолцоо нь үйлдлийн
|
||||
системийн өнцгөөс харахад хэд хэдэн хэсгээс тогтдог:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>өгөгдлийн синхрончлолд зориулсан &man.hastd.8;
|
||||
демон,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>хэрэглэгчийн талбарын удирдлагын хэрэгсэл &man.hastctl.8;,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&man.hast.conf.5; тохиргооны файл.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Дараах жишээ хоёр цэгийг
|
||||
<literal>мастер</literal>-<literal>боол</literal> /
|
||||
<literal>анхдагч</literal>-<literal>хоёрдогч</literal>
|
||||
үйлдлийн хувьд өгөгдлийг уг хоёр цэгийн хооронд олшруулахын
|
||||
тулд <acronym>HAST</acronym> ашиглан тохируулах талаар
|
||||
тайлбарлана. Цэгүүдийг <replaceable>172.16.0.1</replaceable> IP
|
||||
хаягтай <literal><replaceable>hasta</replaceable></literal> болон
|
||||
<replaceable>172.16.0.2</replaceable> IP хаягтай
|
||||
<literal><replaceable>hastb</replaceable></literal> гэж нэрлэе.
|
||||
Эдгээр цэгүүд нь <acronym>HAST</acronym> үйлдлийн хувьд ижил хэмжээтэй
|
||||
өөр өөрийн <devicename>/dev/<replaceable>ad6</replaceable></devicename>
|
||||
хатуу дисктэй байна. <acronym>HAST</acronym> нөөцийг (заримдаа
|
||||
эх үүсвэр гэгддэг, өөрөөр хэлбэл <filename
|
||||
class="directory">/dev/hast/</filename> дахь GEOM үйлчилгээ
|
||||
үзүүлэгч) <filename><replaceable>test</replaceable></filename>
|
||||
гэж нэрлэнэ.</para>
|
||||
|
||||
<para><acronym>HAST</acronym>-н тохиргоог
|
||||
<filename>/etc/hast.conf</filename> файлд хийнэ. Энэ файл нь
|
||||
хоёр цэг дээр ижил байх ёстой. Боломжит хамгийн хялбар
|
||||
тохиргоо дараах байдалтай байна:</para>
|
||||
|
||||
<programlisting>resource test {
|
||||
on hasta {
|
||||
local /dev/ad6
|
||||
remote 172.16.0.2
|
||||
}
|
||||
on hastb {
|
||||
local /dev/ad6
|
||||
remote 172.16.0.1
|
||||
}
|
||||
}</programlisting>
|
||||
|
||||
<para>Илүү дэлгэрэнгүй тохиргооны талаар
|
||||
&man.hast.conf.5; гарын авлагаас үзнэ үү.</para>
|
||||
|
||||
<tip>
|
||||
<para>Мөн <literal>remote</literal> гэсэн хэсэгт хостын
|
||||
нэрийг ашиглаж бас болно. Тэр тохиолдолд тэдгээр хостуудыг
|
||||
таних боломжтой байх ёстойг анхаараарай, өөрөөр хэлбэл
|
||||
тэдгээр нь <filename>/etc/hosts</filename> файл юм уу эсвэл
|
||||
локал <acronym>DNS</acronym> дээр тодорхойлогдсон байх
|
||||
ёстой.</para>
|
||||
</tip>
|
||||
|
||||
<para>Одоо хоёр цэг дээр тохиргоо байгаа болохоор
|
||||
<acronym>HAST</acronym> нөөцийг үүсгэх боломжтой. Хоёр
|
||||
цэг дээр дараах тушаалыг ажиллуулж эхний мета өгөгдлийг
|
||||
локал диск дээр байрлуулж &man.hastd.8; демонг ажиллуулна:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>hastctl create test</userinput>
|
||||
&prompt.root; <userinput>/etc/rc.d/hastd onestart</userinput></screen>
|
||||
|
||||
<note>
|
||||
<para>GEOM үйлчилгээ үзүүлэгчдийг одоо байгаа файлын
|
||||
систем дээр ашиглаж <emphasis>болохгүй</emphasis>
|
||||
(жишээ нь <acronym>HAST</acronym>-р удирдуулсан нөөц рүү
|
||||
одоо байгаа хадгалалтын төхөөрөмжийг хувиргах). Учир нь
|
||||
энэ процедур нь ямар нэг мета өгөгдлийг үйлчилгээ
|
||||
үзүүлэгч дээр хадгалах хэрэгтэй байдаг бөгөөд шаардлагатай
|
||||
зай хангалттай байхгүй байх болно.</para>
|
||||
</note>
|
||||
|
||||
<para>HAST нь цэгийн үүргийг сонгох үүрэггүй
|
||||
(<literal>анхдагч</literal> эсвэл <literal>хоёрдогч</literal>).
|
||||
Цэгийн үүргийг администратор тохируулах юм уу эсвэл
|
||||
&man.hastctl.8; хэрэгсэл ашиглан <application>Heartbeat</application>
|
||||
зэрэг бусад програмаар тохируулж болно. Анхдагч цэг рүү
|
||||
(<literal><replaceable>hasta</replaceable></literal>) шилжээд
|
||||
дараах тушаалыг өгнө:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>hastctl role primary test</userinput></screen>
|
||||
|
||||
<para>Үүнтэй адилаар хоёрдогч цэг дээр
|
||||
(<literal><replaceable>hastb</replaceable></literal>)
|
||||
дараах тушаалыг ажиллуулна:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>hastctl role secondary test</userinput></screen>
|
||||
|
||||
<caution>
|
||||
<para>Хоёр цэг хоорондоо холбогдож чадахгүй бөгөөд
|
||||
хоёулаа анхдагч гэж тохируулагдсан байж болно. Энэ
|
||||
нөхцлийг <literal>split-brain</literal> гэж нэрлэдэг.
|
||||
Энэ тохиолдолд алдааг олж засварлахын тулд <xref
|
||||
linkend="disks-hast-sb"> хэсэгт зааснаар ажиллана.</para>
|
||||
</caution>
|
||||
|
||||
<para>Үр дүнг хоёр цэг дээр &man.hastctl.8; хэрэгсэл
|
||||
ашиглан шалгаж болно:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>hastctl status test</userinput></screen>
|
||||
|
||||
<para>Гаралтаас хамгийн чухал текст нь <literal>status</literal>
|
||||
мөр бөгөөд хоёр цэг дээр <literal>complete</literal> гэж
|
||||
байх ёстой. Хэрэв энэ нь <literal>degraded</literal>
|
||||
гэж байх юм бол ямар нэг юм болохоо больсныг илтгэнэ.
|
||||
Энэ үед цэгүүдийн хооронд синхрончлол явагдаад эхэлчихсэн
|
||||
байна. <command>hastctl status</command> тушаал
|
||||
<literal>dirty</literal> гэдэг дээр 0 байт харуулж байвал
|
||||
синхрончлол дууссан гэсэн үг юм.</para>
|
||||
|
||||
|
||||
<para>Эцсийн алхам бол <devicename>/dev/hast/<replaceable>test</replaceable></devicename>
|
||||
GEOM үйлчилгээ үзүүлэгч дээр файлын систем үүсгэж холбох явдал юм.
|
||||
Үүнийг <literal>анхдагч</literal> цэг (учир нь
|
||||
<filename>/dev/hast/<replaceable>test</replaceable></filename>
|
||||
зөвхөн <literal>primary</literal> цэг дээр харагдана) дээр
|
||||
хийх ёстой бөгөөд хатуу дискийн хэмжээнээс хамаарч хэдэн
|
||||
минут үргэлжилж болох юм:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>newfs -U /dev/hast/test</userinput>
|
||||
&prompt.root; <userinput>mkdir /hast/test</userinput>
|
||||
&prompt.root; <userinput>mount /dev/hast/test /hast/test</userinput></screen>
|
||||
|
||||
<para><acronym>HAST</acronym> тогтолцоог зөв тохируулсны дараа
|
||||
хамгийн сүүлийн алхам бол <acronym>HAST</acronym> систем
|
||||
ачаалах үед автоматаар эхэлсэн байхыг шалгах явдал юм.
|
||||
Дараах мөрийг <filename>/etc/rc.conf</filename> файлд
|
||||
нэмж өгөх шаардлагатай:</para>
|
||||
|
||||
<programlisting>hastd_enable="YES"</programlisting>
|
||||
|
||||
<sect3>
|
||||
<title>Нэгээс нөгөөд шилжих тохиргоо</title>
|
||||
|
||||
<para>Энэ жишээний зорилго нь өгөгдсөн дурын цэг ажиллахаа
|
||||
больсон тохиолдолд ажиллаж байх уян хатан хадгалалтын
|
||||
систем бүтээх явдал юм. Энд хамгийн түлхүүр ажил бол
|
||||
кластерын <literal>анхдагч</literal> цэг ажиллахаа болих
|
||||
тохиолдлыг байхгүй болгох юм. Хэрэв боллоо гэхэд
|
||||
<literal>хоёрдогч</literal> цэг сааталгүйгээр авч
|
||||
ажиллан файлын системийг шалган холбож өгөгдлийн нэг
|
||||
ч битийг алдалгүйгээр үргэлжлүүлэн ажиллах ёстой.</para>
|
||||
|
||||
<para>Энэ зорилтод хүрэхийн тулд &os;-ийн өөр нэг боломж
|
||||
болох IP давхарга дээр автоматаар шилжих боломжийг
|
||||
бүрдүүлдэг <acronym>CARP</acronym>-г ашиглах шаардлагатай
|
||||
байдаг. <acronym>CARP</acronym> нь Common Address Redundancy Protocol
|
||||
гэсэн үг бөгөөд ижил сүлжээнд олон хостууд IP хаяг
|
||||
хуваалцаж хэрэглэх боломжийг бүрдүүлдэг. <acronym>CARP</acronym>-г
|
||||
кластерын цэг бүр дээр <xref linkend="carp"> хэсэгт зааснаар
|
||||
тохируулна. Үүнийг хийснийхээ дараа цэг бүр
|
||||
хуваалцсан IP <replaceable>172.16.0.254</replaceable> гэсэн
|
||||
хаягтай <devicename>carp0</devicename> гэсэн интерфэйстэй байх
|
||||
болно. Мэдээж кластерын анхдагч <acronym>HAST</acronym> цэг
|
||||
мастер <acronym>CARP</acronym> цэг байх ёстой.</para>
|
||||
|
||||
<para>Өмнөх хэсэгт үүсгэсэн <acronym>HAST</acronym> нөөц
|
||||
сүлжээн дэх бусад хостууд руу экспорт хийгдэхэд
|
||||
бэлэн болсон байна. Үүнийг <acronym>NFS</acronym>,
|
||||
<application>Samba</application> гэх мэтүүдийн тусламжтайгаар
|
||||
хуваалцсан IP хаяг <replaceable>172.16.0.254</replaceable>
|
||||
ашиглан экспорт хийх замаар хийнэ. Шийдэгдээгүй цор
|
||||
ганц асуудал бол анхдагч цэг унахад автоматаар шилжих
|
||||
асуудал юм.</para>
|
||||
|
||||
<para>Хэрэв <acronym>CARP</acronym> интерфэйсүүд унаж босоод
|
||||
байвал &os; үйлдлийн систем &man.devd.8; үйл явдал гаргах
|
||||
бөгөөд энэ нь <acronym>CARP</acronym> интерфэйсүүд дээр
|
||||
төлвийг харах боломжийг бүрдүүлдэг. <acronym>CARP</acronym>
|
||||
интерфэйс дээрх төлвийн өөрчлөлт нь аль нэг цэг ажиллахаа
|
||||
байсан эсвэл ажиллаж эхэлснийг харуулна. Энэ тохиолдолд
|
||||
шилжилтийг автоматаар зохицуулах тусгай скриптийг
|
||||
ажиллуулах боломжтой юм.</para>
|
||||
|
||||
<para><acronym>CARP</acronym> интерфэйсүүд дээрх төлвийн өөрчлөлтүүдийг
|
||||
барьж чадахын тулд дараах тохиргоог цэг бүр дээр
|
||||
<filename>/etc/devd.conf</filename> файлд хийж өгөх ёстой:</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>Шинэ тохиргоог идэвхтэй болгохын тулд
|
||||
дараах тушаалыг цэг бүр дээр ажиллуулна:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
|
||||
|
||||
<para><devicename>carp0</devicename> интерфэйс унаж босож байгаа
|
||||
тохиолдолд (өөрөөр хэлбэр интерфэйсийн төлөв өөрчлөлгдсөн тохиолдолд)
|
||||
систем мэдээлэл өгөх бөгөөд энэ нь &man.devd.8; дэд системд
|
||||
скрипт ажиллуулах боломжийг бүрдүүлэх бөгөөд энэ тохиолдолд
|
||||
<filename>/usr/local/sbin/carp-hast-switch</filename> байна. Энэ скрипт нь
|
||||
автоматаар шилжих шилжилтийг зохицуулах юм. Дээрх &man.devd.8;
|
||||
тохиргооны талаар дэлгэрэнгүйг &man.devd.conf.5; гарын авлагаас
|
||||
үзнэ үү.</para>
|
||||
|
||||
<para>Ийм скриптийн жишээ дараах байдлаар байж болох юм:</para>
|
||||
|
||||
<programlisting>#!/bin/sh
|
||||
|
||||
# Original script by Freddie Cash <fjwcash@gmail.com>
|
||||
# Modified by Michael W. Lucas <mwlucas@BlackHelicopters.org>
|
||||
# and Viktor Petersson <vpetersson@wireload.net>
|
||||
|
||||
# The names of the HAST resources, as listed in /etc/hast.conf
|
||||
resources="test"
|
||||
|
||||
# delay in mounting HAST resource after becoming master
|
||||
# make your best guess
|
||||
delay=3
|
||||
|
||||
# logging
|
||||
log="local0.debug"
|
||||
name="carp-hast"
|
||||
|
||||
# end of user configurable stuff
|
||||
|
||||
case "$1" in
|
||||
master)
|
||||
logger -p $log -t $name "Switching to primary provider for ${resources}."
|
||||
sleep ${delay}
|
||||
|
||||
# Wait for any "hastd secondary" processes to stop
|
||||
for disk in ${resources}; do
|
||||
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Switch role for each disk
|
||||
hastctl role primary ${disk}
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Wait for the /dev/hast/* devices to appear
|
||||
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 provider /dev/hast/${disk} did not appear."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
|
||||
|
||||
|
||||
logger -p $log -t $name "Mounting disks."
|
||||
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 "Switching to secondary provider for ${resources}."
|
||||
|
||||
# Switch roles for the HAST resources
|
||||
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 "Unable to switch role to secondary for resource ${disk}."
|
||||
exit 1
|
||||
fi
|
||||
logger -p $log -t $name "Role switched to secondary for resource ${disk}."
|
||||
done
|
||||
;;
|
||||
esac</programlisting>
|
||||
|
||||
<para>Товчхондоо скрипт нь цэг <literal>мастер</literal> /
|
||||
<literal>анхдагч</literal> болох үед дараахийг хийнэ:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Өгөгдсөн цэг дээр <acronym>HAST</acronym> нөөцийг анхдагч
|
||||
болгоно.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><acronym>HAST</acronym> нөөц доор байгаа файлын системийг
|
||||
шалгана.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Тохирох газарт нь нөөцүүдийг холбоно.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><literal>нөөц</literal> /
|
||||
<literal>хоёрдогч</literal> болсон тохиолдолд:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><acronym>HAST</acronym> нөөцүүдийг салгана.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><acronym>HAST</acronym> нөөцүүдийг хоёрдогч болгож
|
||||
бууруулна.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<caution>
|
||||
<para>Энэ нь зөвхөн боломжой шийдэл байдаг гэдгийг харуулсан
|
||||
жишээ скрипт гэдгийг санаарай. Энэ нь бүх л боломжит
|
||||
нөхцлийг тооцоогүй бөгөөд шаардлагатай үйлчилгээг эхлүүлэх/зогсоох
|
||||
гэх мэтээр сайжруулж өргөтгөх юм уу эсвэл
|
||||
дураараа өөрчлөх боломжтой юм.</para>
|
||||
</caution>
|
||||
|
||||
<tip>
|
||||
<para>Энэ жишээн дээр бид стандарт UFS файлын системийг
|
||||
ашигласан. Сэргээхэд шаардлагатай цагийг багасгахын
|
||||
тулд журнал дэмжигдсэн UFS эсвэл ZFS файлын системийг
|
||||
ашиглаж болох юм.</para>
|
||||
</tip>
|
||||
|
||||
<para>Нэмэлт жишээнүүд бүхий илүү дэлгэрэнгүй мэдээллийг
|
||||
<ulink
|
||||
url="http://wiki.FreeBSD.org/HAST">HAST Wiki</ulink> хуудаснаас
|
||||
олж болно.</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Алдааг олж засварлах</title>
|
||||
|
||||
<sect3>
|
||||
<title>Алдааг олж засварлах ерөнхий аргууд</title>
|
||||
|
||||
<para><acronym>HAST</acronym> ерөнхийдөө асуудалгүй ажиллах
|
||||
ёстой боловч бусад програмуудын нэгэн адил ажиллах ёстойгоосоо
|
||||
өөрөөр ажиллах тохиолдол байдаг. Асуудлын шалтгаан өөр өөр
|
||||
байж болох боловч гол шалгах юм нь кластерын цэгүүдийн
|
||||
хооронд цаг синхрончлогдсон байгаа эсэхийг мэдэх явдал
|
||||
юм.</para>
|
||||
|
||||
<para><acronym>HAST</acronym>-н асуудлуудыг шалгаж байхдаа
|
||||
&man.hastd.8;-н дибаг түвшинг ихэсгэж үзэх ёстой.
|
||||
Ингэхдээ &man.hastd.8;-г <literal>-d</literal> өгөгдөлтэйгээр
|
||||
ажиллуулах хэрэгтэй. Дибаг түвшинг дахин дахин ихэсгэхийн
|
||||
тулд энэ аргументыг олон удаа тавьж өгч болно. Энэ замаар
|
||||
маш их хэрэгтэй мэдээллийг олж авч болно.
|
||||
Мөн <literal>-F</literal> аргументыг ашиглан &man.hastd.8;
|
||||
демонг ил ажиллуулах нь зүйтэй байдаг.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="disks-hast-sb">
|
||||
<title>Split-brain нөхцлөөс сэргэж гарах</title>
|
||||
|
||||
<para>Хоёр цэг нэг нэгэнтэйгээ холбогдож чадахгүй бөгөөд
|
||||
хоёул анхдагч цэг гэж тохируулагдсан үеийн нөхцлийг
|
||||
<literal>split-brain</literal> гэдэг. Энэ нь аюултай нөхцөл
|
||||
бөгөөд учир нь энэ тохиолдолд өгөгдөлд хоёр цэг хоёул
|
||||
нийцгүй өөрчлөлтийг хийх боломжийг олгодог. Энэ нөхцлийг
|
||||
системийн администратор гараар зохицуулах шаардлагатай.</para>
|
||||
|
||||
<para>Энэ тохиолдлыг засварлахын тулд администратор
|
||||
аль цэг хамгийн чухал өөрчлөлттэй байгаа дээр шийдвэр
|
||||
гаргаж (эсвэл гараар нийлүүлэн) <acronym>HAST</acronym>-д
|
||||
эвдэрсэн өгөгдөл бүхий цэгийн бүтэн синхрончлол хийх
|
||||
боломжийг олгох ёстой. Ингэхийн тулд дараах тушаалуудыг
|
||||
дахин синхрончлол шаардлагатай байгаа цэг дээр ажиллуулна:</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>
|
||||
</chapter>
|
||||
|
||||
<!--
|
||||
|
|
Loading…
Reference in a new issue