İşletmeler çok miktarda veri anlamına gelir ve bu da verilerin işlenmesi ve yönetilmesi sorununu zorlaştırır. Geleneksel olarak sektör onlarca yıldır RDBMS sistemlerini kullanıyor, ancak 21. yüzyılda Big Data'nın ortaya çıkmasıyla birlikte, büyük ölçekli yapılandırılmamış ve yarı yapılandırılmış veriler için NoSQL (Not only SQL) veritabanları devreye girdi.
Bu yazıda bir MongoDB kümesi kuracağım.
MongoDB sağladığı yüksek düzeyde ölçeklenebilirlik ve esneklik nedeniyle yaygın olarak kullanılan, ücretsiz ve açık kaynaklı bir NoSQL belge veritabanıdır.
MongoDB'yi canlı ortamda devreye almak için Replica Set'lerin kullanılması önerilir. Replica set'ler, MongoDB'nin ilişkisel dünyadaki Master/Slave kurulumunun karşılığıdır, ancak buna karşın, her şey yerleşik olduğu için kurulumları son derece zahmetsizdir. Replica Set'ler hakkında daha fazla bilgi için şuraya göz atın: TutorialsPoint’in replikasyon süreci hakkındaki tanımı.
MongoDB Bulut Sunucu Kümenizi Planlama
3 düğümlü bir küme oluşturacağım. Bunlara eşit kaynaklar vermek önemlidir çünkü herhangi biri birincil (yani master) sunucu haline gelebilir. Bu düğümler veya makineler herhangi bir işletim sisteminde çalışabilir, ancak bu eğitimde Ubuntu 18.04 LTS kullanacağım. CloudSigma’ın kütüphanesindeki önceden yüklenmiş imajın nasıl bağlanacağı ve kurulacağı konusunda şuraya başvurabilirsiniz: bu eğitim.
Bir Replica Set kullanmanın tüm amacı, kümenin tek bir düğümün devre dışı kalmasından sağ çıkabilmesi olduğundan, tüm sunucularınızın aynı fiziksel ana bilgisayarda bulunması oldukça anlamsız olurdu. Neyse ki CloudSigma, şu adla anılan bir özellik sunuyor: kullanılabilirlik grupları. Bunun anlamı, sisteme her üç sunucunuzu da farklı gruplara ayırması talimatını verebilmenizdir. Böylece hiçbir zaman aynı fiziksel ana bilgisayarda bulunmazlar. Bu ve diğer güvenlik ile iş sürekliliği özellikleri hakkında daha fazla bilgiye şuradan ulaşabilirsiniz: buradan.
Linux'un 64-bit sürümünü kullanmak da önemlidir. Bunun nedeni basitçe MongoDB'nin 32-bit sistemlerde iyi çalışmamasıdır (bu konuda daha fazla bilgi için: buraya).
Bulutta MongoDB Kurulumu
Bu bölüm oldukça basittir. Önceden yapılandırılmış olanlardan birini kullanın: Ubuntu 18.04 imajlarını kullanın veya kendiniz kurun.
CPU, RAM ve disk yapılandırması tamamen kişiseldir ve yükünüze bağlıdır. Küçük bir kurulum için 4 GHz CPU, 4 GB RAM ve 10 GB disk (sistem için) yeterli olacaktır. Sürücülerinizi bağlarken, VirtIO kullandığınızdan emin olun. IDE kullanırsanız performans önemli ölçüde düşecektir. Ayrıca, bir Replica Set oluşturduğunuz için tüm düğümlerin (ve uygulama sunucularının) aynı VLAN üzerinde olması gerekir.
Diğer birçok bulut sağlayıcısının aksine, performansı artırmak için depolama alanınızı RAID10 veya benzeri bir şekilde yapılandırmanıza gerek yoktur. Birçok müşterimizin bildirdiği gibi, CloudSigma'da hem SSD hem de manyetik diskler kullanarak kutudan çıktığı haliyle harika bir performans elde edeceksiniz.
Yine de MongoDB verilerini ayrı bir sürücüde tutmanızı öneririm. Bunun nedeni basitçe, bir noktada tüm dosya sisteminize uygulamak istemeyeceğiniz bazı dosya sistemi optimizasyonları yapmak zorunda kalabilmenizdir.
Bunu akılda tutarak, bu sürücüyü sunucuların kurulumundan sonra eklemek en kolayıdır. Şimdilik sadece sistem kurulumuna odaklanalım. Kendiniz kurulum yapıyorsanız (önceden yapılandırılmış sistemleri kullanmak yerine), önyükleme menüsünde F4 tuşuna basmanızı ve şunu seçmenizi öneririm: ‘Minimal bir sanal makine kur’.
Her biri aşağıdaki özelliklere sahip 3 makine oluşturuyorum:
- CPU: 4 GHz
- RAM: 4 GB
- SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (ekstra sürücü)
SSD bölümünde belirtildiği gibi, üzerinde Ubuntu 18.04 LTS kurulu olan 10 GB boyutunda bir sürücü bağlıyorum.
Ayrıca, MongoDB verilerini depolamak için bununla birlikte 20 GB boyutunda başka bir boş sürücü daha bağlıyorum. Bunun boyutu büyük ölçüde kullanımınıza bağlıdır, ancak küçük bir sistem için 20 GB muhtemelen yeterli olacaktır. Ancak, ne kadar veri depolayacağınızı tahmin etmek bazen zor olduğundan, şunu kullanacağız: LVM. Bu, daha sonra kolayca başka bir sürücü eklemenize ve baştan başlamak zorunda kalmadan birimi genişletmenize olanak tanır. Alternatif olarak, tek bir sürücü kullanabilir ve daha sonra bunu şununla ölçeklendirebilirsiniz:resize2fs.
To add the disk, just go to the ‘Drives’ Section, click on ‘Create a new drive’ icon on the top, give the new disk a name and size it to 20 GB. Once it’s saved, go to the individual machine to which you want to attach it and under drives section of that machine’s details, I can click on ‘Attach a drive’ and select the disk.
Artık üç makineniz olduğuna göre, MongoDB veri depolamanız için eklediğiniz ekstra diski her makineye bağlamaya (mount) geçebilirsiniz. Bu diski bir bölüm (partition) olarak eklemenizi öneririm. Bölümleme kullanmak, işletim sisteminin her bölgedeki bilgileri ayrı ayrı yönetmesini sağlar. Diski bir bölüm olarak eklemek için öncelikle makinemize bağlı tüm diskleri kontrol edeceğim. Bunun için aşağıdaki komutu çalıştıracağım:
|
1 |
fdisk -l |
Komutu çalıştırdığımda, makinemdeki diskleri ve aygıtları belirten çıktıyı alıyorum.

Görselde, işletim sistemimizin kurulu olduğu disk olarak 10 GB'lık bir diski işaretledim. Ardından, şu anda eklenmiş olan 20 GB'lık başka bir disk var. Disk konumu: /dev/vdb. Aşağıdaki komutları kullanarak bu disk üzerinde bir bölüm oluşturabilirsiniz:
|
1 |
sudo fdisk /dev/vdb |
Bu komut, diskimizde bölümler oluşturabileceğiniz, disk bölümleme işlevleri sağlayan bir komut satırı aracı olan fdisk aracını açacaktır. Gireceğiniz yerde “Command (m for help):” şeklinde bir istem verecektir: n yeni bir bölüm oluşturmak için, ardından varsayılan değerleri kabul etmek için enter tuşuna basmaya devam edin. Bölüm oluşturulduktan sonra, değişiklikleri yazmak için w girin. Şöyle görünecektir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Komut (m için yardım): <strong>n</strong> Bölüm türü p birincil (0 birincil, 0 genişletilmiş, 4 boş) e genişletilmiş (kapsayıcı için mantıksal bölümler) Seç (varsayılan p): Kullanılıyor varsayılan yanıt p. Bölüm numarası (1-4, varsayılan 1): İlk sektör (2048-41943039, varsayılan 2048): Son sektör, +sektörler veya +boyut{K,M,G,T,P} (2048-41943039, varsayılan 41943039): Oluşturuldu bir yeni bölüm 1 of tipinde 'Linux' ve of boyutunda 20 GiB. Komut (m için yardım): <strong>w</strong> The bölüm tablosu has been değiştirildi. Çağrılıyor ioctl() için yeniden-okumak bölüm tablosunu. Eşitleniyor diskler. |
‘Linux’ tipinde ve 20 GiB boyutunda yeni bir bölüm 1 oluşturuldu. Bölüm oluşturulduğuna göre, şimdi bir LVM havuzu oluşturalım:
|
1 2 3 |
sudo pvcreate /dev/vdb1 sudo vgcreate mongodb /dev/vdb1 sudo lvcreate -n db -L 19.5g mongodb |
Bölüm boyutumuz 20g olduğu için ‘19.5g’ değerini girdim. Ardından, diskin adını öğrenmek için aşağıdaki komutu çalıştırın:
|
1 |
fdisk -l | grep mongo | awk '{print $2'} |
Ondan sonra, aşağıdaki komutla ext4 yöntemini kullanarak diski biçimlendirin:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mkfs.ext4 /dev/mapper/mongodb-db Output: root@m4:/home/cloudsigma# sudo mkfs.ext4 /dev/mapper/mongodb-db mke2fs 1.44.1 (24-Mar-2018) Oluşturuluyor dosya sistemi ile 5217280 4k bloklar ve 1305600 inode'lar Dosya sistemi UUID: 695a62e6-021d-4fc0-945c-cc51a92d86da Süperblok yedekleri depolandı üzerinde bloklar: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Tahsis ediliyor grup tabloları: tamamlandı Yazılıyor inode tabloları: tamamlandı Oluşturuluyor günlük (32768 blokları): tamamlandı Yazılıyor süperbloklar ve dosya sistemi muhasebe bilgileri: tamamlandı |
Ardından, diski bağlamak için bir konum ve MongoDB verilerinizi saklamak için bir klasör oluşturalım.
|
1 |
sudo mkdir -p /mongodb/data |
Yeni diskinizin bağlanmasıyla ilgili fstab dosyasına bir girdi eklemek için doğrudan aşağıdaki komutu kullanabilirsiniz:
|
1 |
echo -e "` blkid | grep mongodb | awk {'print $2'}`\t/mongodb\text4 auto,noexec,rw,sync,nouser\t0\t0" >> /etc/fstab |
Komutta, blkid her diskin UUID – Evrensel Benzersiz Tanımlayıcısını verir. Burada MongoDB diski için olanı grep ile ayıklıyorum ve bu UUID'yi sırasıyla bağlama klasörünün konumu, dosya sistemi türü ve disk için diğer seçeneklerle birleştiriyorum. Bu satırı /etc/fstab dosyasına ekliyorum. Bunu yapmazsanız, diski bağlarken bir hata alırsınız. Girdi şu şekilde görünür:
UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0
Şimdi, diski /mongodb konumuna bağlayabilirsiniz:
|
1 |
sudo mount /mongodb |
MongoDB Kurulumu
Sistem hazır olduğuna göre, MongoDB kurulumuna geçelim. Ubuntu kendi deposunda MongoDB'nin bir sürümünü sunsa da, bunun yerine resmi MongoDB sürümünü kullanmanızı öneririm. Bunun nedeni, Ubuntu deposunun sürümlerde oldukça geride kalmasıdır, bu nedenle MongoDB'den en iyi şekilde yararlanmak istiyorsanız resmi sürümlere yönelmeniz gerekecektir.
MongoDB kendi deposunu sunduğundan, bunu sisteminize kolayca ekleyebilir ve ardından MongoDB'yi normal şekilde kurabilirsiniz. İzlenecek adımlar şunlardır:
İlk olarak, paket yönetim sistemi tarafından kullanılan genel anahtarı içe aktarın:
|
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
Ardından, bir liste dosyası oluşturuyorum. Bu dosya MongoDB'nin bulunduğu depoyu içerecektir, böylece sisteminiz dosyayı oradan indirebilir:
|
1 |
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list |
Şimdi, değişiklikleri hesaba katabilmek için yerel paket veritabanımı güncelliyorum.
|
1 |
sudo apt-get update |
Şimdi, aşağıdaki komutu kullanarak paketi kurabilirim:
|
1 |
sudo apt-get install -y mongodb-org |
Her bir makineye MongoDB kurulumunu gerçekleştirdim.
|
1 |
sudo service mongod start |
Şimdi MongoDB, oluşturulan sürücüdeki verilerle birlikte çalışır durumdadır. Ağır yük ve/veya çok sayıda bağlantı bekleniyorsa, ulimit değerlerini yükseltmeniz gerekebilir.
Verileriniz hakkında daha fazla bilgi edinmek istiyorsanız, MongoDB'nin MMS hizmetine de kaydolmak isteyebilirsiniz; bu, MongoDB için ücretsiz, bulut tabanlı bir izleme servisidir.
MongoDB Bulutunuz için Replica Set Oluşturma
Şimdi bir replica set oluşturalım. Bundan önce, makinelerin her birinin birbiriyle iletişim kurabildiğinden emin olmanız gerekir. Bu amaçla, /etc/hosts dosyasına şu girdileri ekleyeceğiz:
|
1 2 3 |
IP-1 m1.mongo.cluster m1 IP-2 m2.mongo.cluster m2 IP-3 m3.mongo.cluster m3 |
Doğrulama için, ana bilgisayar adını kullanarak makinelere ping atmayı deneyebilirsiniz. Yani makine 1’imin IP'si IP-1 ise, diyelim ki 213.189.123.12, yazmak yerine
|
1 |
ping 123.189.123.12 |
şunu yazacağım,
|
1 2 3 |
ping m1.mongo.cluster veya ping m1. |
Güvenlik duvarını etkinleştirdiyseniz (ki bunu kesinlikle yapmalısınız), düğümlerin dahili arayüzde 28017 ve 27017 numaralı bağlantı noktalarından TCP trafiği gönderip alabildiğinden emin olun.
Şimdi, her bir makinede aşağıdaki komutları kullanarak mongod hizmetini başlatın.
m1 makinesinde,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m1.mongo.cluster |
Ardından, m2 makinesinde,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m2.mongo.cluster |
m3 makinesinde,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m3.mongo.cluster |
Burada,
mongod hizmetin adıdır
dbpath veritabanı dizinimizin konumudur
replSet replikasyon kümemizin adıdır. Aynı replika kümesindeki makinelerin her biri için aynı olmalıdır
bind_ip onu çalıştırdığınız makinenin ana bilgisayar adıdır.
mongod hizmetini başlattıktan sonra, birincil sunucuya gidin (benim durumumda m1'i seçtim) ve mongo'yu çalıştırın.
|
1 |
mongo |
MongoDB terminalini başlatacaktır. Terminalde, aşağıdaki komutu kullanarak replicaSet'i başlatın. Varsayılan yapılandırmalarla replicaSet'i oluşturacaktır:
|
1 |
rs.initiate() |
Şimdi, aşağıdaki komutları kullanarak diğer iki makineyi replika olarak ekleyelim:
|
1 2 |
rs.add("m2.mongo.cluster") rs.add("m3.mongo.cluster") |
Durumu şu komutu kullanarak izleyebilirsiniz:
|
1 |
rs.status() |
İşte bu kadar. Artık CloudSigma’nın son derece hızlı bulutunda MongoDB kümenizle çalışmaya hazır olmalısınız.
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.