4. RabbitMq Mirroring ile High Avaliblity ve Fault Tolerance System

RabbitMq Mirroring ile High Avaliblity ve Fault Tolerance System

Çokça kullandığımız queue mekanizmalarından olan rabbitmq’nın en çok odaklandığı iki konu data kaybını minimum seviyede tutmak ve high availibilty. Aslında birbirleriyle ilişkili olan bu kavramlar üzerinden ilerlediğimizde data kaybını minimum tutmak istersek availibility de maksimum tutmamız gerekir. Çoğu yapıda olduğu gibi rabbitmq’da da avalibilityi maksimum tutmanın yolu cluster yapısı oluşturmaktır. Rabbitmq high avalibility’e ana nodeunuzdaki queuenın başka node’a mirror queuelarını alarak ulaşır. Aslında mirroing dediğimiz olay bir nevi replicationdur. Elimizde olan ana queuemuza master, queue mirrorlarını oluşturduğumuz queuelara da mirror queue deriz. Dolayısıyla master queuedaki message, mirror queuelara sync olacak hale gelir.

Her ne kadar elinizde artık clustered yapınız ve mirror queuelarınız da olsa, producer olarak messajınızı gönderebileceğiniz yer yalnızca master node’dur. Özellikle mirror queue’a da message göndermek isteseniz dahi bu otomatik olarak master queue’a yönlendirilecektir.

Peki tüm bu yapıyı kurduktan sonra, bir nodeumuz fail olduğunda ne olacak? Mirror queuelardan birinin tüm messageleri alıp master queue gibi davranmasının sağlanması olayına queue promotion denir. Queue promotion ya rabbitmq tarafından otomatik olarak tetiklenir ya da bir admin tarafından manuel olarak yapılabilir. RabbitMqnun queue promotionu otomatik olarak yaptığı senaryo, master queuenın erişilemez durumda olduğu senaryodur ve bu durumda en eski mirror queue master queue durumuna gelir. Bu durumdan sonra tüm messagelar artık bu queue’a yönlenecektir.