Bir replika seti, aralarında replikasyon ve otomatik yük devretme yapılandırılmış birden fazla düğümden oluşan bir veritabanı kümesi olarak tanımlanır. PRIMARY veritabanının doğru şekilde seçildiğinden emin olmak için, kümede tek sayıda üye bulunması önemlidir (buna Arbiter düğümü dahil veya hariç).
Seçilen veritabanı tüm ana görevlerden sorumludur. Gelen yazma işlemlerini işler ve bunların bilgilerini oplog'da saklar. Bu bilgilere SECONDARY replika üyeleri tarafından erişilebilir ve kendi veri kümelerine uygulamak üzere replike edilebilir. Sonuç olarak, kümedeki tüm sunucular aynı içeriği temsil edecek ve kullanılabilirliğini sağlayacaktır:

Şimdi, beklenmedik bir sorunun (donanım veya bağlantı hatası gibi) birincil veritabanının kesinti yaşamasına neden olduğu bir durumu düşünün. Böyle bir durumda sistem, herhangi bir manuel müdahaleye gerek kalmadan normal işleyişi geri yüklemek için otomatik olarak yeni bir seçim süreci başlatacaktır. Böyle bir sistemin faydası, replikasyonun, sunduğu artan kullanılabilirlik, yük devretme yedekliliği ve felaket kurtarma gibi en iyi özelliklerden, birden fazla veritabanını ayrı ayrı yönetme konusunda endişelenmenize gerek kalmadan yararlanabilmenizdir.
Benzer bir sistem kullanmak istiyorsanız, bu eğitim size CloudSigma PaaS ile bir MongoDB replika setini nasıl yapılandıracağınızı gösterecektir. Bu kılavuzda göreceğiniz gibi, çoğu yaygın uygulama için I/O işlemlerini gerçekleştirmek üzere iyi bir bilgi güvenliği marjı ve çıktı sağlamak için genellikle yeterli olan üç üye kullanacağız. Replikasyonun asıl yapılandırmasının yanı sıra, ortamı nasıl hazırlayacağımızı, DB düğümleri arasında kimlik doğrulamayı nasıl ayarlayacağımızı ve çalışmanızın başarılı olduğundan nasıl emin olacağımızı da öğreneceğiz.
Adım 1: Yeni Bir Ortam Oluşturun
Başlamak için, bir replika seti yapılandırmaya başlamak üzere en az 3 MongoDB düğümüne ihtiyacınız olacak. Bu yüzden devam edin ve aşağıdaki gibi bir yeni ortam oluşturun:

Örneğimizde, 4.0.2 sürümündeki tüm MongoDB örneklerini aynı ortama tahsis ediyoruz. Gerekirse verilen alanda Ortam Adı bilgisini değiştirebilir ve kurulum işlemine devam edebilirsiniz.
Süreçteki bir sonraki adım, kimlik doğrulama anahtar dosyasını kullanarak bu düğümler arasındaki iletişimin güvenliğiyle ilgilenmek olacaktır.
Adım 2: Bir Kimlik Doğrulama Anahtar Dosyası Ekleyin
Kimlik doğrulama, herhangi bir replikasyonun kritik bir bileşenidir. Bir replika seti üyesine, yalnızca benzersiz bir kimlik doğrulama anahtar dosyasıyla kendisini doğru bir şekilde tanımladıktan sonra erişim izni veren bir güvenlik güvencesi sürecidir. Bu, verilerinizi istenmeyen izleyicilerden ve üçüncü taraflardan korur. Kendi kimlik doğrulama anahtar dosyanızı şu şekilde oluşturabilirsiniz:
- Veritabanı düğümlerinden biri için Web SSH seçeneğine tıklayın ve giriş yapın:

2. Ardından, kendi anahtar dosyanızı girebilir veya aşağıdaki komutu kullanarak openssl ile yeni bir tane oluşturabilirsiniz:
|
1 |
openssl rand -base64 741 > my.key |
Bu komutta, 741 bayt cinsinden anahtar boyutunu temsil eder ve my.key anahtarın adıdır.
3. Yeni anahtar dosyasını tüm MongoDB örneklerinize dağıtma zamanı. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
- Veritabanı düğümlerinden herhangi birinin yanındaki Dosya Yöneticisi'ni açmak için Config düğmesine tıklayın:

- Şu yoldaki yapılandırma sekmesinde my.key dosyasını bulun: /home/jelastic/my.key. Dosyayı açın ve içeriğini kopyalayın:

- Şu yolun altında: /var/lib/jelastic/keys you will find the keys dizinini bulacaksınız. MongoDB örneklerinin birbirlerinin kimliklerini doğrulamak için kullanacağı bir Yeni Dosya oluşturun. Bizim durumumuzda, mongo-set.key:

- Önceden kopyalanan içeriği bu dosyaya yapıştırın ve tüm örnekler için Kaydet seçeneğine tıklayarak değişiklikleri uygulayın:

Bu işlemin sonucunda, mongo-set.key dosyası tüm MongoDB düğümlerimize dağıtılmış oldu.
Adım 3: MongoDB Replikasyonunu Yapılandırın
Örneklerin güvenliğini sağladığımıza göre, artık replika setini fiilen yapılandırmaya geçebiliriz. Başlayalım:
- MongoDB düğümlerinin yapılandırma sekmesine giderek ve mongo.conf dosyasını etc klasörü. Replikasyon bölümünü bulana kadar aşağı kaydırın. Yorum satırından çıkarın ve replika kümeniz için benzersiz bir ad içeren aşağıdaki dizeyi ekleyin. Örneğimiz için bunu şu şekilde adlandıracağız: db-replication:
|
1 |
replSetName: db-replication |

3. Editör penceresindeki tüm örnekler için değişiklikleri Save etmek üzere uygun düğmeye tıklayın.
4. Şimdi yeni yapılandırma parametrelerini uygulamak için tüm veri tabanı Restart seçeneğiyle tüm nodes düğümlerinizi yeniden başlatmalısınız:

Unutmamanız gereken bir şey, replika kümesini yapılandırmayı tamamladığınızda ve tüm düğümleri veya PRIMARY düğümünü yeniden başlattığınızda, yeniden başlatma sırasında yeni PRIMARY veri tabanı seçim sürecinin başlayacağıdır.
5. PRIMARY olarak kullanmak istediğiniz MongoDB sunucusunu seçin ve SSH protokolünü kullanarak buna erişin:

Unutmayın: PRIMARY veri tabanı seçildikten sonra, diğer replika kümesi üyelerine doğrudan yazma işlemleri için artık erişilemeyecektir. Bu, tüm değişikliklerin ve yapılandırmaların yalnızca mevcut PRIMARY düğümünde gerçekleştirilebileceği ve uygulanabileceği anlamına gelir. Dolayısıyla, önceden priorities ayarlamadıysanız, uygulamanızdaki bağlantı dizesini yeni PRIMARY düğümüne göre değiştirmeniz gerekecektir.
6. Ardından, ilgili kimlik bilgilerinizi kullanarak replike edilmiş veri tabanına erişin:
|
1 |
mongo -u {user} -p {password} {DB_name} |

Bu komutta:
- {user} –e-postanıza gönderilecek olan yönetici kullanıcı adını ifade eder (varsayılan olarak genellikle admin'dir).
- {password} –bu, ilgili kullanıcı adıyla birlikte e-postanıza gönderilen şifredir.
- {DB_name}- bu replika kümesinde replike etmek istediğiniz veri tabanının adını temsil eder (örneğimizde varsayılan admin veri tabanını kullanıyoruz).
Yeni bir seçim yapılması durumunda, yeni bir PRIMARY veri tabanına giriş yapmak için aynı admin kullanıcısı kimlik bilgilerini kullanabilirsiniz.
7. Bağlantı kurulduğuna göre, mevcut MongoDB düğümünün parametrelerini tanımlamak ve replika kümesini başlatmak için aşağıdaki satırları çalıştırmanız gerekecektir:
|
1 2 3 4 5 |
config = {_id : "{replica_set}", members : [{_id : 0, host:"{current_db_ip}:27017"},]} rs.initiate() |
Yukarıdaki satırlarda, parantez içindeki değerleri kendi ilgili verilerinizle değiştireceksiniz:
- {replica_set} – bu bölümün başında belirttiğiniz replike edilen veri tabanı grubunuzun adıdır. Bizim durumumuzda bu db-replication idi.
- {current_db_ip} – seçtiğiniz veri tabanı konteynerinin IP adresini belirtir:

Bizim durumumuzda, çalıştırılan satırlar şunlardır:
|
1 2 |
config = {_id : "db-replication", members : [{_id : 0, host:"10.100.2.182:27017"},]} |

|
1 |
rs.initiate() |

8. Ardından, kalan tüm veri tabanları için aşağıdaki komutu çalıştırın:
|
1 |
rs.add("{db_ip}:27017") |
Burada, {db_ip} her bir veri tabanının IP adresini ifade eder:

9. Tüm replikasyon üyelerini ekledikten sonra, tam işlevsel bir replika kümesi elde edeceksiniz. İşlemin sonunda her şeyin düzgün şekilde yapılandırıldığından emin olmanızı öneririz. Bunu yapmak için şu komutu çalıştırın: rs.status(). Bu, replika kümenizle ilgili tüm bilgileri aşağıdaki gibi gösterecektir:

Adım 4: ReplicaSet Arbiter Kurulumu
Belirli durumlarda bir Arbiter düğümü kullanmanızı öneririz. Bir Arbiter düğümü nedir? Genellikle, replika kümesi tek sayıda düğüm içeriyorsa replikasyon daha güvenilirdir. Dolayısıyla, kümenizde şu anda çift sayıda düğüm varsa, kümedeki diğer üyelerden gelen sinyal (heartbeat) ve seçim isteklerine yanıt vererek çoğunluğu (quorum) korumak için bir Arbiter düğümü ekleyebilirsiniz. İşte Arbiter düğümleri hakkında bazı detaylar:
- Arbiter herhangi bir veri depolamaz; sadece başka bir düğümün arızalanması durumunda seçimlerde oy kullanır.
- Çok hafiftir ve çok fazla kaynak tüketmez.
- Şifrelenmiş replikalar arasında kullanıcı kimlik bilgilerini paylaştı.
- En yüksek kullanılabilirliği korumak için Arbiter'ı ayrı bir düğümde çalıştırmayı deneyin.
Replika setinize bir Arbiter düğümünü şu şekilde ekleyebilirsiniz:
- İlk olarak, yatay ölçeklendirme gerçekleştireceğiz ve kümeye fazladan bir düğüm ekleyeceğiz:


2. Düğüm eklendiğinde yeni bir anahtar dosyasına ihtiyacımız var. Şu dizine gidin: keys dizinine gidin ve bir anahtar dosyası oluşturun: mongo-set.key. Anahtar içeriğini önceden yapılandırılmış veritabanı düğümlerinden herhangi birinden kopyalayın ve daha önce yaptığımız gibi buraya yapıştırın.
3. Şu dosyaya gidin: mongod.conf yapılandırma dosyası. Replication bölümünün yorum satırını kaldırın ve şunu ekleyin: repISetName (bizim durumumuzda db-replication şeklindedir). Ayrıca, şu bölüme gidin: security bölümüne gidin ve şu parametreyi ekleyin: keyFile ( /var/lib/jelastic/keys/mongo-set.key bizim durumumuzda).
4. Son olarak, bu yeni yapılandırma parametrelerini uygulamak için yeni düğümü yeniden başlatın:

Bu noktada kümedeki tüm düğümleri yeniden başlatmanız GEREKMEDİĞİNİ unutmamak önemlidir. Yalnızca yeni eklenen Arbiter düğümünü yeniden başlatın. Tüm düğümlerin yeniden başlatılması, yeni bir PRIMARY seçimiyle sonuçlanacaktır (belirli bir veritabanı düğümünü PRIMARY olarak seçmek için öncelikler belirtmediğiniz sürece).
5. Son olarak, Arbiter replika setine eklenebilir. Bunu yapmak için PRIMARY düğümünde aşağıdaki komutu çalıştırın:
|
1 |
rs.addArb("{db_ip}:27017") |
Burada, {db_ip} yeni düğümün IP adresidir:

6. Şimdi, yeni düğümün Arbiter olup olmadığını kontrol edebilirsiniz. Bunu, SSH kullanarak yeni düğüme giriş yaparak ve düğüm oluşturma sırasında e-postanıza gelen kimlik bilgileriyle MongoDB örneğine bağlanarak yapabilirsiniz:

Bu, kümeye yeni eklediğimiz düğümün şu replikanın Arbiter'ı olarak görev yaptığını gösterir: db-replication. Bu, her durumda bir çoğunluk (quorum) sağlanmasını garanti ederek replika setini daha güvenilir hale getirir.
Step 5: Test Database Cluster Availability
Ardından, MongoDB kümemizi uzaktan bağlanacak ve işlemler gerçekleştirecek şekilde kurabiliriz. Aşağıdaki örnekte, basit bir PHP uygulaması kullanarak bağlanacağız ve birkaç kontrol komutu yürüteceğiz.
Bu amaçla, Apache gibi bir uygulama sunucusuna ihtiyacınız olacaktır. Bizim yaptığımız gibi ortamınıza bir tane ekleyebilir veya ayrı bir ortamda yeni bir tane oluşturabilirsiniz.
- Şuna tıklayarak başlayın: Change Environment Topology ve sunucuyu ekleyin:


2. Configuration Manager sekmesini Apache sunucusu için şu butona tıklayarak açın: Config (aşağıda gösterildiği gibi):

3. Şu dizindeki index.php dosyasını bulun ve açın: /var/www/webroot/ROOT ve varsayılan içeriğin yerine aşağıdaki kodu yapıştırın:
|
1 |
<!--?php try{ $mongodbConnectionURI= "mongodb://{db_username}:{db_password}@node{NodeID}-{environment_domain}:27017, node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017/?replicaSet={replica_set_name}&readPreference=primary"; $manager = new MongoDB\Driver\Manager($mongodbConnectionURI); $command = new MongoDB\Driver\Command(['ping' => 1]); $cursor = $manager->executeCommand('db', $command); $response = $cursor->toArray()[0]; var_dump($response); echo'<br><br>'; var_dump($manager->getServers()); } catch (Exception $e){ echo $e->getMessage(); } ?--> |
Yukarıdaki koddaki aşağıdaki değerlerin ilgili verilerinizle değiştirilmesi gerekir:
- {replica_set_name} – replika seti adınızı girin.
- {db_username} – seçilen birincil veritabanının yönetici kullanıcısını ekleyin (varsayılan olarak admin'dir).
- {db_password} – yönetici kullanıcısının şifresini girin.
- {NodeID} – ilgili düğümün kimlik numarasını belirtin. Bunu şurada bulabilirsiniz: CloudSigma PaaS paneli.
- {environment_domain} – ortam alan adını ekleyin. Bunu CloudSigma PaaS panelinde de bulabilirsiniz:

Replika setinizdeki her bir düğümün kimliğini uygun mongodbConnectionURI bölümünde belirttiğinizden emin olun.
İlgili değerleri girmek ve kodu çalıştırmak size buna benzer bir dizi dize gösterecektir:

Bu noktada dosyayı Kaydettiğinizden emin olun!
4. Apache'nin MongoDB sunucusuyla etkileşime girmesi için özel bir modül gerekir. Bu modülü configs içinde ekleyebilirsiniz. etc klasörüne gidin ve php.ini dosyasını açın. [mongodb] bölümünü bulun. Burada tek yapmanız gereken, bu uzantıyı etkinleştirmek için extension=mongodb.so satırının önündeki noktalı virgülü kaldırmaktır:

5. Editör penceresinde Kaydet düğmesine tıklayarak yeni yapılandırmaları uygulayın. Her zaman olduğu gibi, değişiklikleri uygulamak için düğümleri yeniden başlatmamız gerekiyor. Bunun için Düğümleri Yeniden Başlat düğmesine tıklayın (bu düğme Uygulama Sunucusu seçeneğinin yanındadır):

6. Şimdi Tarayıcıda Aç düğmesine tıklayarak test edin:

Bu simgeye tıklamak, replika seti üyeleriniz/düğümleriniz ve bunların erişilebilirliği hakkındaki tüm bilgileri şu şekilde gösterecek yeni bir tarayıcı sekmesi açacaktır:

Since we used the command ping komutunu kullandığımız için ( index.php dosyasının 6. satırı), ilk satır replika setinin kullanılabilirliğini kontrol etme sonucunu görüntüler:
|
1 |
object(stdClass)#11 (3) { ["ok"]=> float(1) } |
Bu, replika setinin başarıyla test edildiği anlamına gelir.
Sonuçlardaki bir sonraki blok, replika seti ana bilgisayarları hakkında ayrıntılı bilgi gösterir. Bu veriler, getServers işlevi sayesinde elde edilir ( index.php dosyasının 11. satırı). Benzer şekilde, bu replika setini oluşturma işlemi sırasında atanan bazı değerleri de kontrol edebilirsiniz:
- host – belirli bir veritabanının IP adresi.
- port – bu, mevcut replikasyon üyesinin portudur.
- [“is_primary”] ve [“is_secondary”] – sunucu durumunu gösteren parametreler. Seçilen birincil MongoDB sunucusu için karşılık gelen değerler sırasıyla true, false ve diğer iki MongoDB sunucusu için – false, true şeklindedir.
Ek olarak, değişiklikleri izlemek için veritabanı düğümlerini istediğiniz zaman başlatabilir ve durdurabilirsiniz. Aynı şeyi yapmak için sayfayı da yenileyebilirsiniz. Bu, MongoDB kümenizin her zaman kullanılabilir, çalışır durumda ve yapılandırdığınız gibi olmasını sağlamanıza olanak tanır.
CloudSigma PaaS, kullanıcılarının yapılandırma ve arka uç tarafı hakkında çok fazla endişelenmeden replika setleri kullanmanın avantajlarından yararlanmalarını sağlar. Bu eğitim, sadece birkaç basit adımla kendi MongoDB kümenizi kurmanın ne kadar kolay olabileceğini göstermektedir. MongoDB, bunu Ubuntu için nasıl kuracağınız veya genel bulut sunucuları için nasıl kuracağınızın yanı sıra CloudSigma PaaS'ın sunduğu diğer gelişmiş özellikler hakkında daha fazla bilgi edinebilirsiniz. Ayrıca, PaaS'ı ücretsiz olarak denemeye ve panel ile pazar yeri ve sunduklarına aşina olmaya davet ediyoruz.
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.