OpenMQ HA cluster kialakitasa MySQL hatterrel

az OpenMQ nem mas, mint egy nyilt forraskodu JMS broker megvalositas. Java EE alkalmazasokban altalaban az uzenetkuldest JMS-sel szoktak megvalositani, es mivel ez sok rendszerben fontos pontja az adatcserenek, igy nem art, hogyha magas rendelkezesreallast tudunk biztositani. nezzuk hogy.

szedjuk le a teleptito (ez platformonkent mas, es mas) az openmq honlapjarol, telepitsuk fel. ezt ratok bizom. :)

inditsuk el egyszer az OpenMQ -t, hogy letrehozza a megfelelo fajlokat amik az instancehoz tartoznak, majd
keressuk meg a config.properties filet (ez nalam a /root/MessageQueue/var/mq/instances/imqbroker/props alatt van).

adjuk hozza a kovetkezo beallitasokat:


imq.cluster.ha=true
imq.persist.jdbc.dbVendor=mysql
imq.brokerid=broker1
imq.persist.jdbc.mysql.user=[loginnev]
imq.persist.jdbc.mysql.password=[jelszo]
imq.cluster.brokerlist=[gep1 hostja], [gep2 hostja]
imq.persist.jdbc.mysql.property.url=jdbc\:mysql\://[db gep hotsja]\:3306/[adatbazis neve]
imq.cluster.clusterid=mqcluster
imq.persist.store=jdbc
imq.persist.jdbc.mysql.tableoption=ENGINE\=INNODB

nyilvan a [] -ben levo ertekeket csereljetek ki a megfeleloekre :)
az imq.brokeridnak egyedinek kell lennie!

ezutan hozassuk letre vele a tablakat:


[root@hera bin]# ./imqdbmgr create tbl
[07/Apr/2009:13:44:29 CEST] Using plugged-in persistent store:
        version=410
        brokerid=broker1
        database connection url=jdbc:mysql://db.intra:3306/mq
        database user=mq
[07/Apr/2009:13:44:29 CEST] Creating database table MQVER41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQBKR41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQSES41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQPROP41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQCREC41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQCON41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQCONSTATE41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table index MQCONSTATE41CmqclusterIDX1 ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQDST41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table index MQDST41CmqclusterIDX1 ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQMSG41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table index MQMSG41CmqclusterIDX1 ...
[07/Apr/2009:13:44:29 CEST] Creating database table MQTXN41Cmqcluster ...
[07/Apr/2009:13:44:29 CEST] Creating database table index MQTXN41CmqclusterIDX1 ...
Database tables for the HA cluster mqcluster created.
[root@hera bin]#

majd elindithatjuk a nodeokat:


[root@hera bin]# ./imqbrokerd
[07/Apr/2009:13:45:42 CEST]
================================================================================
Open Message Queue 4.3
Sun Microsystems, Inc.
Version:  4.3  (Build 7-g)
Compile:  Fri Nov  7 18:14:54 PST 2008

Copyright (c) 2007 Sun Microsystems, Inc.  All rights reserved.  Use is
subject to license terms.
================================================================================
Java Runtime: 1.6.0_13 Sun Microsystems Inc. /usr/java/jdk1.6.0_13/jre
[07/Apr/2009:13:45:42 CEST]    IMQ_HOME=/root/MessageQueue/mq
[07/Apr/2009:13:45:42 CEST] IMQ_VARHOME=/root/MessageQueue/var/mq
[07/Apr/2009:13:45:42 CEST] Linux 2.6.18-128.1.6.el5 i386 auth.dev.intra (2 cpu) root
[07/Apr/2009:13:45:42 CEST] Java Heap Size: max=193920k, current=193920k
[07/Apr/2009:13:45:42 CEST] Arguments:
[07/Apr/2009:13:45:42 CEST] [B1060]: Loading persistent data...
[07/Apr/2009:13:45:43 CEST] Using plugged-in persistent store:
        version=410
        brokerid=broker1
        database connection url=jdbc:mysql://db.intra:3306/mq
        database user=mq
[07/Apr/2009:13:45:44 CEST] [B1039]: Broker "imqbroker@auth.dev.intra:7676" ready.
[07/Apr/2009:13:45:52 CEST] [B1071]: Established cluster connection to broker mq://192.168.1.119:7676/?instName=imqbroker&brokerID=broker2&brokerSessionUID=3830910168871747584&ha=true&storeSessionUID=3830910168871747584[/192.168.1.119:41036]

ha megnezzuk a brokerek listajat, latszik, hogy elertuk celunkat:


[root@hera bin]# ./imqcmd list bkr
Username: admin
Password: admin
Listing all the brokers in the cluster that the following broker is a member of:

-------------------------
Host         Primary Port
-------------------------
localhost    7676

Cluster ID                    mqcluster
Cluster is Highly Available   true

----------------------------------------------------------------------------------------------------
                                                                 ID of broker       Time since last
Broker ID         Address           State     Msgs in store   performing takeover   status timestamp
----------------------------------------------------------------------------------------------------
broker2     zeus.dev.intra:7676   OPERATING   0                                     26 seconds
broker1     auth.dev.intra:7676   OPERATING   0                                     5 seconds

Successfully listed brokers in the cluster.
[root@hera bin]#

voila. :)

ezutan nincs mas dolgunk, mint a kliensnek megadni a ket broker cimet, hogy ha az egyik nem lenne elerheto,
a masikra be tudjon csatlakozni.

K:
mi van ha meghal az egyik node? veszik el uzenet?

V:
attol fugg. :)

ha durable subscriptiont hasznalsz, nem veszik el. ha nem durablet, akkor a kieses es a failover kozotti
idoszakban keletkezett uzenetek elveszhetnek. (ez a tipikus eset).

stay tuned, legkozelebb megnezzuk hogy lehet OpenDS -bol clustert csinalni.

Hozzászólások

Itt a 2 node kozos mysql szervert hasznal?

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!