İçeriğe geç

Linux Ubuntu Server İşletim Sisteminde Docker’ın içine MongoDB Database Kurulumu – Master ve Slave VM’lerin Ayarları

Last updated on Eylül 1, 2022

Merhabalar. Değerli okuyucu bugün Linux altyapısına sahip olan Ubuntu Server 20.04 LTS İşletim Sisteminde Docker ve Docker Compose uygulamalarını kullanarak MongoDB Database Uygulamasını ve ona bağlı olarak Master ve Slave kurulumlarını yapacağız. Öncelikle MongoDB Databese nedir ve ne işe yarar onu anlamamız gerekiyor. Gelin genel bir kısa bir bakış bakalım.

MongoDB Database Nedir?

MongoDB (“humongous”), MongoDB Inc. tarafından ölçeklenebilir, doküman tabanlı, C++ ile geliştirilmiş açık kaynak, NoSQL (Not only SQL) veritabanı uygulamasıdır. MongoDB, verileri JSON tipinde dökümanlarda saklanmaktadır, anlamsal alanları dökümandan dökümana değişir ve veri yapısı zaman içinde değiştirilebilir. Belge modeli, uygulamanızın kodundaki neslelerle eşleştirilir, böylece verilerin kullanımı kolaylaşır. Geçici sorgular, dizin oluşturmak için ve gerçek zamanlı verilerinize erişmek ve analiz etmek için güçlü yollar sağlar.

İçeriğin devamını okumak için tıklayınız.

MongoDB Master ve Slave Kurulumu

Proxmox’ta VM’in Kurulması ve Linux Ubuntu Server 20.04 LTS İşletim Sisteminin kurulması

Burada yine önceki yazılarımda yaptığım gibi Proxmox fiziksel sunucusunda yeni bir VM açacağız. Sonrasında o VM’in içine Linux altyapısını kullanan Ubuntu Server 20.04 LTS işletim sistemini entegre edeceğiz. Bu adımı hızlıca geçeceğim çünkü bunu daha önce bir blog yazısında yazmıştım. İncelemek isterseniz buradan yazıya ulaşabilirsiniz.

Linux Ubuntu Server 20.04 LTS İşletim Sistemine Docker ve Docker Compose Uygulamasının Kurulması

Yukarıdaki “Proxmox’ta VM’in Kurulması ve Linux Ubuntu Server 20.04 LTS İşletim Sisteminin Kurulması” başlığında bahsettiğim gibi aynı şekilde bunu ayrıntılı anlattığım bir blog yazım var. İncelemek isterseniz buradan yazıya ulaşabilirsiniz.

VM’e Uzaktan Giriş ve Gerekli İlk Komut Satırları

Yukarıdaki iki maddeyi uyguladıktan sonra sistemimize PuTTy uygulamasıyla giriş yapıyoruz. Tabii ki bunlar sanal bilgisayarlar olduğu için ve ben de Proxmox fiziksel sunucusunu kullandığım için OpenVPN uygulamasına ihtiyaç duyuyorum. VM için kullandığım Sanal Makineler sanal IP adreslerine sahiplerdir. Bunu başka bir blog yazısında yazmaya özen göstereceğim.

Burada Hem Master Sanal Makinesi için hem de Slave Sanal Makinesi için ayrı ayrı sanal makine açmak gerekir. Aklınıza şu soru gelebilir. “İyi de tek bir Sanal makine açsam ve öyle Master ve Slave bölümlerini Docker uygulamasına yüklesem olmaz mı” sorusu aklınıza gelebilir.

Bakın sevgili okuyucu, bizim buradaki asıl gayemiz yönetmek. Eğer Master Sanal Makinesi çökerse bilgilerin yok olmaması için Slave bölümüne ihtiyaç doğuyor. Tekrardan soruya dönmek gerekirse tek bir Sanal Makinede oluşturmak ve bilgileri tek bir Docker uygulamasının içine kurmak bilgileri tehlikeye atabilmektedir. Bundan dolayı 2 farklı Sanal makineye ihtiyaç vardır ve bunları bağlamamız gerekmektedir. Hadi gelin nasıl bağlayacağımızı görelim.

İki farklı Sanal Makine açtığımıza ve onun içine Docker Uygulamasını kurduğumuza göre ilk komut satırımız diğer blog satırlarının aksine direkt olarak “nano” komutunu kullanacağız. Komut satırı aşağıdaki gibidir.

sudo nano docker-compose.yml

Master VM’i için Docker Compose Dosya İçeriği

Öncelikle “nano” komutunu kullandıktan sonra aşağıdaki örnek Docker Compose içeriğine bakalım.

version: “3.7”

services:
mongo:
image: “bitnami/mongodb:4.2”
hostname: 172.16.64.40
ports:
– 27017:27017
environment:
– MONGODB_ADVERTISED_HOSTNAME=172.16.64.40
– MONGODB_REPLICA_SET_MODE=primary
– MONGODB_REPLICA_SET_NAME=rs0
– MONGODB_ROOT_PASSWORD=password123
– MONGODB_SECONDARY_ROOT_PASSWORD=password123
– MONGODB_REPLICA_SET_KEY=replicasetkey123
– MONGODB_ENABLE_DIRECTORY_PER_DB=yes
volumes:
– “mongodb:/bitnami/mongodb”
networks:
mongodb:
aliases:
– 172.16.64.40

volumes:
mongodb:

networks:
mongodb:

Gelin “docker-compose.yml” dosyasındaki komut satırlarını inceleyelim.

Burada bakacağımız ilk şey hostname bölümüdür. Burada yazacağımız şey kullandığınız VM’in IP adresi olacaktır.

ikinci durum ise port numarasıdır. Diğer blog yazılarımda sürekli söylediğim için tekrarlamak istiyorum 27017 nolu port numarası MongoDB Database uygulamasının default port numarasıdır. Biz burada 27017 port numaramızı default olan port numarasına eşledik.

Üçüncü durum ise environment kısmıdır. ilk bakacağımız kısım MONGODB_ADVERTISED_HOSTNAME kısmıdır. Buraya yine kullandığınız VM’in IP adresi olacaktır. ikinci bakacağımız kısım ise MONGODB_REPLICA_SET_MODE kısmı Master VM’inde olduğumuz için primary olacaktır. Password kısımlarını iyi belirlemeniz gerekiyor çünkü o password MongoDB Compass uygulamasına girerken işimize yarayacaktır. Diğer bölümler default olmasında bir sıkıntımız yoktur.

Son olarak network kısmıdır yine mongodb: aliases bölümündeki IP adresi yine kullandığınız IP adresi olacaktır.

Dosyamızı “Ctrl+s” ve “Ctrl+x” komutlarıyla birlikte dosyamızı kapatıyoruz.

Tabii ki portların dış dünyaya açılabilmesi için “ufw” komut satırını kullanıyoruz.

sudo ufw enable
sudo ufw allow 27017/tcp

Master bölümünde işimiz bitti gelelim Slave Sanal Makinesine.

Slave VM’i için Docker Compose Dosya İçeriği

Öncelikle “nano” komutunu kullandıktan sonra aşağıdaki örnek Docker Compose içeriğine bakalım.

version: “3.7”

services:
mongo:
image: “bitnami/mongodb:4.2”
hostname: 172.16.64.41
ports:
– 27017:27017
environment:
– MONGODB_ADVERTISED_HOSTNAME=172.16.64.41
– MONGODB_REPLICA_SET_MODE=secondary
– MONGODB_REPLICA_SET_NAME=rs0
– MONGODB_PRIMARY_HOST=172.16.64.40
– MONGODB_PRIMARY_ROOT_PASSWORD=password123
– MONGODB_REPLICA_SET_KEY=replicasetkey123
– MONGODB_ENABLE_DIRECTORY_PER_DB=yes
– MONGODB_PORT_NUMBER=27017
volumes:
– “mongodb:/bitnami/mongodb”
networks:
mongodb:
aliases:
– 172.16.64.41

volumes:
mongodb:

networks:
mongodb:

Burada bakacağımız ilk şey hostname bölümüdür. Burada yazacağımız şey kullandığınız VM’in IP adresi olacaktır.

ikinci durum ise port numarasıdır. Diğer blog yazılarımda sürekli söylediğim için tekrarlamak istiyorum 27017 nolu port numarası MongoDB Database uygulamasının default port numarasıdır. Biz burada 27017 port numaramızı default olan port numarasına eşledik.

Üçüncü durum ise environment kısmıdır. ilk bakacağımız kısım MONGODB_ADVERTISED_HOSTNAME kısmıdır. Buraya yine kullandığınız VM’in IP adresi olacaktır. ikinci bakacağımız kısım ise MONGODB_REPLICA_SET_MODE kısmı Master VM’inde olduğumuz için secondary olacaktır. Burada en önemli kısım ise MONGODB_PRIMARY_HOST kısmıdır. Bu kısıma Master Sanal Makinesinin IP adresini yazmanız gerekmektedir. Son olarak bu bölümde şu kısım da önemlidir. MONGODB_PORT_NUMBER kısmı. Bu kısımda Master Sanal Makinesinde Docker Compose dosyasının içindeki verilen port numarasıdır. Diğerleri default olarak kalabilir.

Son olarak network kısmıdır yine mongodb: aliases bölümündeki IP adresi yine kullandığınız IP adresi olacaktır.

Dosyamızı “Ctrl+s” ve “Ctrl+x” komutlarıyla birlikte dosyamızı kapatıyoruz.

Docker Compose Komut Satırıyla Birlikte Uygulamanın Ayağa kaldırılması

Aşağıdaki komut satırıyla birlikte “docker-compose.yml” dosyamızı Hem Master Hem Slave Sanal Makinelerinde ayağa kaldırıyoruz.

sudo docker-compose up -d

Yukarıdaki komut satırını çalıştırdıktan sonra aşağıdaki ekran görüntüleri gibi veriler çıkacaktır.

Burada önemli durumlardan birisi de “docker exec” komutudur. Aşağıdaki komut satırıyla birlikte Uygulamanın Docker’daki Container’ine girebilirsiniz.

sudo docker exec -it “gireceğiniz container id numarası” (Exp: c295b399a0d7) /bin/bash

Yazdıktan sonra bugün MongoDB Database uygulamasını işlediğimiz için Mongo uygulamamızın Container’ına girmişiz demektir. Gerekli ekran görüntüleri aşağıdadır.

Ekran yazısında görüldüğü üzere “docker exec” komutundan sonra Container bölümüne giriş yaptık. Direkt olarak Mongo uygulaması karşımıza çıkmaz o yüzden şu komut satırıyla birlikte uygulamaya giriş yapabiliriz.

mongo -u root_user_name -p root_password

Mongo uygulamasına giriş yaptıktan sonra Master Sanal Makinesi için “PRIMARY”, Slave Sanal Makinesi için “SECONDARY” yazısı gelmiş olması gerekmektedir. Eğer geldiyse MongoDB Database uygulamasını iki farklı VM’de iki farklı Docker’da aynı uygulamayı bağlamış oluyorsunuz. Şimdi test aşamasına geldik. Bu test aşaması için MongoDB Compass uygulamasını kullanacağız. Gelin birlikte nasıl kullanıyoruz onu test edelim.

Ekran görüntülerine geçmeden önce bir şey demem gerek. MongoDB Compass uygulamasına girerken şu komut satırını yazarak Docker’da oluşturduğumuz Mongo uygulamasına girebiliriz ancak.

mongodb://root_username:root_password@VM_IP_ADDRESSES:VM_PORT_NUMBER/admin

Yukarıdaki komut satırını girerek Mongo uygulamasına giriş yapabiliriz. Ben uygulamayı nasıl test ettim hadi bakalım.

Master için;

Slave için;

Örnek olarak bir Databases oluşturarak Slavede eklenip eklenmemesine bakacağız.

Evet sevgili okuyucu bu aşamaya kadar geldiysen MongoDB Database uygulamasının kurulumunu Docker Uygulamasında kurmuşsun demektir.

Sonuç olarak MongoDB Databese uygulamasının, iki farklı Sanal makine açarak ve onlara Ubuntu Server 20.04 LTS İşletim Sistemini yükleyip sistemin içinde Docker uygulamasını kurarak entegresini sağlamış olduk. Kurulumun tamamı Youtube kanalımda yayınladım. Buradan ve linke tıklayarak kanalımdaki başka videoları da izleyerek destek olabilirsiniz.

Kategori:DockerDocker ComposeLinuxMongoMongoDBProxmoxUbuntu

Tek Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir