Date: Thu, 4 Aug 2005 11:41:31 +0400 From: Dmitriy Kirhlarov <dimma@higis.ru> To: Anton Nikiforov <anton@nikiforov.ru> Cc: freebsd-cluster@freebsd.org Subject: Re: DRBD-like something for FreeBSD Message-ID: <20050804074117.GG46130@torch.higis.ru> In-Reply-To: <42F1105B.5040507@nikiforov.ru> References: <42EE559A.3080000@nikiforov.ru> <42EE7813.8020902@centtech.com> <42F1105B.5040507@nikiforov.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hi Anton!
On Wed, 03 Aug 2005, Anton Nikiforov wrote:
> not see the way to promote second node as prymary in case of real
> prymary crashed. Or i should test it with vrrpd (for example) and
> restart secondary as ggated instead of being ggatec? Did not clear yet.
> If you have the solution or an idea - could you please drop me a line?
Yes.
/usr/ports/net/freevrrpd
> algorythm looks the following for me:
> We have two computers:
> stage 0 (up and running claster)
> 1. da0 is exported via ggated over the network.
> This computer runing postgresql (for example) that storing data on da0.
> 2. da1 is being imported over network via ggatec as da1. Local da0 and
> remote da1 are mirrored via ggated/geom_mirror.ko
> and there is no service activity on this device. just a mirroring of data.
No.
When you work with ggate{c,d} you get devices ggate{0,1,2,...}. Not with da1.
> stage 1 (slave failed)
> 1. working as before
> 2. down
> Requests to update remote data failed. There should be no problem.
>
> stage 2 (slave is coming up)
> 1. working as before
> 2. booting and starting to mirror date from the master
> in case secondary goes down and up again there are no troubles. it just
> boots itself in the stage0 config. that is it
When slave is start you can rebuild mirror on the fly.
But it get many time (in my case) -- 54Gb slice rebuilded slow :(
> stage 3 (master is down)
> 1. down
> 2. should consider master is down and stop ggatec, then start ggated and
> export the da0. Then mount da0 and start PostgreSQL.
when master down, then freevrrpd can run script on slave machine.
> stage 4 (master coming up)
> 1. Should understand it is not the master anymore and start ggatec and
> mirror remote data to the local drive.
> 2. running as a master. with services moved/started at stage 3
> Here troubles begins. When bouth become synchronized the service that
> was running on this disk shoul be moved from 2 to 1. to do that i'll
> have to restart services in stage 0. But how? using vrrpd? or some other
> utility? How can i understand that the system is ready to get the
> Postgresql back to 1 and stop it on 2?
Yes. vrrp -- your friend. But moving from node2 -> node1, when node1 coming up bad idea. Service must continue to run on node2.
> stage 5 (bouth down, master coming up first)
>
> stage 6 (bouth down, slave is coming up first)
My algoritm.
No difference between master and slave in start time.
We have:
/etc/rc.conf -- this file identical on both nodes. Many parametes in it and 2 includes:
/etc/rc.clh -- specific addreses and specific params for every node.
/etc/rc.cluster -- simlink dinamically switching between:
/etc/rc.custer.master or /etc/rc.cluster.slave
If we can ping shared IP, when starting -- we start as slave. In not -- master.
We start freevrrpd with master or slave config (see /etc/rc.d/freevrrpd).
/etc/rc.d/freevrrpd run after network start, but before all daemons.
It work in RELENG_5* with new style rc-scripts.
/boot/loader.conf have different autoboot_delay on different nodes (bad guarantee what important start-ping not run in one time on both machines)
> This is main confuse. Maybe i did not read mutch, but it is not clear
> for me, how to inderstand which drive contain the last data?
Yes. It's a problem in one case:
reboot node0 and reboot node1, when mirror not fully synchronize.
See attached scripts -- this my experiments. It have some known and, my be unknown issues:
- in /usr/local/ifstated/bin/ggatec-gmirror.sh script I can't get unit name with one line:
ggate=`/sbin/ggatec ${ggatec_flags}`
- when I restart /etc/rc.d/freevrrpd many time I get many ggate devices.
- parametert for ggate{c,d} may be not ideal, but it work on gigabit interconnect.
- I can't undestand what I must open on firewall for freevrrpd.
By.
Dmitriy
[-- Attachment #2 --]
BZh91AY&SY\ ? B `m]=/]8kOX6&TmI553TI'jiOFjzL h?R2zꁐJ"hђi4)PxA 4444@b M
!eI<6SM4di
4i J4bj?OTmMP @ H M L@AL4hd i
!(3xae#@֍,HbC2H@%CIb%R%ڰw\%1ASUƪt"VX#HhI2a/N_OYYO1z#vfc31h0pNB+k\ Y)XJXP-~}HAQ6Z)fICe2eZYE`,c/bg+"K#d2;Z3HKi&Goi*r.zqkCaQe#s02TXzkJ2Z:McrbCa-R1TxپIk7^T
remo3b-v]rW:p"a+!pZnMF:P;CO|٬-ѨC-SNSymGACR爼yRa,bJɪIf mѰmV}W % P!u|lhjV0N湇m3 :l1WŚڍKQ\ӵFy"%̼e_Ee'Px)[ģ]Vae﹩
0u'4#P,f'#8pM<u2Lז̳qe}v:EU8m2)C7=Ԕ2drtQp6vҏ˅^;oNe)
?O\HS$
Se]wZYX'GWOhcoL.=S|VOx_9Ejỉ0g@"I(RaDۈD!!&K}7Xlh ,H)*v!#=Ԍ3:FL`Y
c3Y^H܂RKtN3B$t20(MϼF9]`;n7
P4.i5Y4LUF
iCs$0Σ#LNB<)n;Hg)32r=f8/߾qr@q`|^UІ^W:%$`
B:StY^h7 `z9SM K=}ٺÓY#ibHCu:mB1m
5q3\PZX0 n|5
!cZ"F}dlC 6I&з1|y 4yr5TK__Лz{z|b,mxCZ$9y9
i=jn$|Ie7`3
IYATV21e[G6`D.A'<
*Z?ĵ8IWJGI05P}dHƖJߖqg=P̑Jb"^8Ew3Ҕ%5; ZsMi*Ռyea"}gZ"AE;{w\Js&r';ۂԙhy|$tQ.iY
d
##4Q֦JAgTKѥ'4 p]>I̤-yjIU#ǂ`GNެmQ9<VD'1.#i͐t[#
QFzc5~:7x{/ ΊZؕO1KZIƻ+tiɆWUs
Ew5B¹a'ZVkY-Rf,~qM\Xl:TT[,#mXǥ[RbR,@%l4b jp90xDMvnS?δcVӻOczY1<eQPlRj33"%$`KRX*,]xRʓ/qy0e?1?7\_@Y
+taIҥڔg_]m@ɃTH1.N|AuP1JjiPZ-賅k*c/
xV7G(\Tc@HM"
F9n~翬n8D\b-6 ^ð> `bm}0tPZh h$i AY>HB+ d@B4"}$ye\:2v@sJJd_>k:"@nq=g?fJ˰tqׅT,e+g'$M
~fU0o+nf͔P764+&MmޗH=紸씴O,K$"4Fk.362j"cKsAY=FobtbƱ5nd) Y5 L'y'Y!HuHZE.KBz3f RŵW5 $h@/0Pm"HɕBMg|{hE p#G* D#䄭03dKz&wyv=NTmVYwf'`T[(yֻ$l^iMD.E|'Qy?IRD7_[htu
z(
R#p斳ZB̑~##T2:)V ҩ}!$.,؎q1UW0 FPA1
AL<ijT/M&g!x`
@ $^/YCu,S}C\KDHKwP@L**V2B/i?8)#i!kҫ dǏ0,JVJX!O3 ^bWdg*@Ty3TSm\.ѩ-B(q&kƬ`-b!
]m4JE59D7y$j
>K1dP*_Nӥ:i`4$%nnNj$40@Bѡ bJhȡD)\sj?2ydz $quo$NFwg3-mkЈQ}ft(zg}viLWj)!$tJ?R]ޔDᱴ;. kFS(1eoZ\Ey0I
pc_ʰuDKˢċ$kzo*DceHQ*TSՅ
/!>Y6w.O&AIZ[ &l{6mE01,1$$$!B`OÆBf-JbM'x=q
j}{B۞ȲήkQi#SPCบ'#o&̐]iX&YYClG&"'l ]%*#0i`яEE0:
/=' s= HHȼc%>tK}\MC
enrSl ͼ7K]Q',{ LچTR4@xH
)&bBIrXtZcl
{J*&;gӺuH--/"0MU~X%043,
YJ0YG@2X{FC
wtggEsK~aЄg$ SXejA7^Wi=ZKXP b%7ͣ2c._ ,5xpKh 1BX3~(Е2ʚ1:l|\;TgY} Eꥤ^t-DxXd8Xx\+>Eٌڠ]BBrD
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050804074117.GG46130>
