Skip to content

April 3, 2014

Apache Solr Replikasyon – Genel Bakış

Apache Solr Replica

Merhaba arkadaşlar, bu yazımızda bir önceki Apache Solr Replikasyon Kurulumu başlıklı yazıda değindiğimiz kurulumları diyagramlarla inceleyeceğiz.

Apache Solr replikasyon kullanımına dair bu son yazımızda, daha önce incelemeye çalıştığımız başlıkları hem görselleştirerek işleyecek hem de kurulum anlatmak yerine replikasyonu kendi içinde tarştımaya açacağız.

Master Slave Replikasyon (1-n)

solr replication 1-n sunucularBu kurulumda tüm sunucular master Solr sunucusuna bağlanıyor. Buradaki en büyük sıkıntı slave sunucu sayınız arttıkça master sunucuya gelen trafiğin darboğaz oluşturma ihtimalininde artmasıdır. İllaki bu kurulumu tercih edeceksek slave sunucuları aralık/sıklık (interval) ile değil oluşturduğunuz görev/kuyruklamalarla dakika aralığında senkronize etmeniz olacaktır. Örneğin, verilerin her 10 dakikada bir güncellenmesini istiyorsak ve 10 sunucumuz varsa her bir sunucuyu 1-2-3-..-9-10 dakikalarında güncelleme işlemine tabi tutmamız gerekir. Daha açık bir örnekle, birinci sunucunun saat 8 ‘deki senkronizasyon ayarları şu şekilde olmalı; 08:01, 08:11, 08:21, 08:31, 08:41, 08:51 …  Tabi ki unutulmaması gereken nokta, verilerin tüm sunucularda aynı anda güncellenme zorunluluğu bulunması farklı zamanlarla yapacağınız senkronizasyonlarda sorun çıkaracaktır.

solr replication 1-n dosyalarSunucular master sunucudan data çektiği gibi aynı şekilde solrconfig_slave.xml dosyasını çekiyor ve solrconfig.xml olarak kullanıyor. Replikasyona dahil edilmiş diğer dosyaları da olduğu gibi aktarıyor. Master sunucuda bulunan solrconfig.xml ‘i kullanmama nedenimiz o dosya içerisinde master sunucu konfigürasyonu bulunuyor olmasıdır. Gelen solrconfig_slave.xml dosyası içerisinde master’ın hangi sunucu olduğu da yer aldığından, slave sunucu senkronizasyon bilgilerine sahip olmuş oluyor.

Tek Repeater İle Replikasyon (1-1-n)

solr replication 1-1-n sunucularBu konfigürasyon bir master sunucu, bir repeater sunucu ve istenilen sayıda slave sunucu (1-1-n) oluşacak şekilde çalışıyor. Bir önceki kuruluma göre (1-n) avantajı master network trafiğini master sunucu üzerinden alıp bu görevi repeater’a aktarmaktır. Böylece master sunucuyu uygulamadan gelen update vd. işlemleri işlerken darboğaz oluşması gibi sorunlardan uzak tutulmuş oluruz.

solr replication 1-1-n dosyalarBu kurulumun dosya replikasyonunda ise master sunucudan repeater’a giden iki solrconfig dosyası bulunuyor. Biri solrconfig_repeater.xml dosyası, repeater sunucu bu dosyayı solrconfig.xml olarak kullanıyor. İkinci dosya ise solrconfig_slave.xml, repeater bu dosyayı alıp aynen saklıyor ve slave sunuculara gönderiyor. Slave sunucular solrconfig_slave.xml dosyasını solrconfig.xml olarak kullanıyor.

Çoklu Repeater İle Replikasyon (1-n-n)

solr replication 1-n-n sunucularBu kurulum ise bir master sunucu, istenilen sayıda repeater sunucu ve istenilen sayıda slave sunucudan (1-n-n) oluşuyor. Kurulumun çoklu repeater temelinde yapılmış olması ölçeklendirme konusunda kolaylık sağlayacaktır. Burada lokasyon bazlı, CDN ‘e benzer yapıda, repeater kullanımını anlatmaya çalıştık. Tabi ki farklı şemalar çıkarmak mümkün, amacımız sadece çalışma mantığını anlatmaya çalışmak. Bu kurulum (1-n-n) örneğinde de repeater veya slave sayımız artarsa yukarıda bahsettiğimiz gibi farklı zamanlarda senkronizasyon yapabiliriz. Master-slave, replikasyon vd. yöntemleri bir kenara bırakıp ölçeklendirme ile alakalı konuşacak olursak; 10’ lu sunucu sayılarıyla arama motorlarının mimarisini açıklamaya kalkmayacağız ama güncel verilerin arama sonuçlarında farklılık göstermesi, yük dengeleyicinin yönlendirmesine göre sorgunuzun farklı sunucularda işlenmesi nedeniyle, sonuçların değişkenlik göstermesi buna benzer nedenlerdendir.

solr replication 1-n-n dosyalarBu kurulumun (1-n-n) konfigürasyon dosyaları replikasyonu ise hemen hemen bir öncekine benzemekte. Ayrıldığı tek nokta tüm konfigürasyonu master sunucu üzerinden yönetirken herhangi bir slave sunucunun hangi repeater sunucuya bağlanacağını belirleme zorunluğumuzdur. Bunun için her repeater sunucu üzerinde solrcore.properties_slave dosyası oluşturup repeater seviyesinden sonra bu dosyayı da replikasyona dahil etmemiz gerekir. Slave sunucuya yapılan replikasyon sonrasında bu dosya solrcore.propertiesolarak, solrconfig.xml dosyasında bu şekilde tanımlamıştık, kaydedilecek ve slave sunucu üzerinde bulunan solrconfig.xml dosyası ${solr.core.master_url} değişkenini bu dosyadan okuyup hangi repeater sunucuya bağlanacağını anlamış olur.

Sonuç

Bir önceki yazıda anlattığımız replikasyon ve repeater kullanımına bu yazıda şemalarla yer verip biraz daha netleşmesini amaçladık. Tek başına yük devretme (fail-over), daha gelişmiş merkezi konfigürasyon yönetimi, çoklu master yapısı vd. özellikleri içeren cloud ile yarışamıyor olsa da kısmen cloud’un da replikasyon kullanıyor olması dolayısıyla incelemiş olduk.

Kaynak

Yazıdaki şemaları http://www.digikey.com/schemeit aracını kullanarak oluşturduk. Teşekkürü borç biliriz.

Kullanılan şemaların düzenlemeye açık haline aşağıdaki adreslerden ulaşabilirsiniz. İyi niyetli kullanıcıları tenzih ederek amacı dışında kullanılmamasını rica ediyoruz

http://www.digikey.com/schemeit/#q8h (1-n)
http://www.digikey.com/schemeit/#q8g (1-1-n)
http://www.digikey.com/schemeit/#q8b (1-n-n)

Sizin fikriniz nedir? Lütfen aşağıdaki formu kullanarak yorum yapın.

(gerekli)
(gerekli)