İçeriğe geç

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

Last updated on Ağustos 25, 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 Postgresql Database Uygulamasını ve ona bağlı olarak Master ve Slave kurulumlarını yapacağız. Öncelikle Postgresql Database nedir onu anlamamız gerekiyor. Gelin Postgresql Database uygulamasına genel bakış atalım.

Postgresql Nedir?

Postgresql ya da Postgres, özgür ve açık kaynak kodlu, SQL destekli bir ilişkisel veritabanı yönetim sistemidir.

İsim konusunda, başlarda Kaliforniya Üniversitesi’nde geliştirilen Ingres veritabanının devamı niteliğinde olduğu için bu isme atıfta bulunarak POSTGRES adını aldı. 1996 yılında SQL desteğini vurgulamak maksatlı PostgreSQL şeklinde değiştirildi. Son olarak 2007 yılında isim değişikliği konusu topluluğun tartışmasına açıldı ve geliştirme ekibi PostgreSQL isminin devam etmesine, Postgres isminin de takma isim olarak kalmasına karar verildi.

Devamını okumak için lütfen buraya tıklayınız..

Peki biz neden PostgreSQL Veritabanını kullanıyoruz. Tüm ana dilleri ve arakatman yazılımını kullanan çeşitli platgromlarla uyumlu, en sofistike bir kilitleme mekanizması sunması, çok versiyonlu eşzamanlılık kontrolü desteği, olgun sunucu tarafı programlama işlevi gibi diğer veritabanlarına göre avantajı vardır. Devamını okumak için tıklayın.

Postgresql 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 yine bir klasör açmakta olacaktır. Komut satırı aşağıdaki gibidir

sudo mkdir docker
cd docker

Master için Docker Compose Dosyası İçeriği

Burada yapacağımız ilk durum “nano” komutuyla birlikte docker-compose.yml dosyasını açıp şu komut satırlarını yazmak olacaktır.

sudo nano docker-compose.yml

version: ‘2’

services:
postgresql-master:
image: docker.io/bitnami/postgresql:latest
ports:
– ‘5432:5432’
networks:
– psql
volumes:
– ‘/data/postgresql/data:/bitnami/postgresql’
environment:
– POSTGRESQL_REPLICATION_MODE=master
– POSTGRESQL_REPLICATION_USER=repl_user
– POSTGRESQL_REPLICATION_PASSWORD=postgres
– POSTGRESQL_USERNAME=postgres
– POSTGRESQL_PASSWORD=postgres
– POSTGRESQL_DATABASE=dalisto

networks:
psql:
driver: bridge

Burada “docker-compose.yml” dosyasının içinde dikkat etmemiz gereken önemli durumlar vardır.

1. olarak postgresql veritabanının Docker Hub sitesindeki sürümüdür. birden fazla sürümü vardır. Örnek olarak “image: docker.io/bitnami/postgresql:latest” komut satırını değiştirerek “image: docker.io/bitnami/postgresql:12” yazarak sürümünü değiştirebiliriz.

2. olarak port numarası olacaktır. Örnekte verilen “‘5432:5432′” ilgili port numarasının anlamı Postgresql Veritabanı için default olan “5432” numaralı portu bizim örnek olarak verdiğimiz “5432” numaralı porta eşle demektir. Bu port numarasını dış dünyaya açmak gerekmektedir bunun için gerekli komut satırı aşağıda verilmiştir.

sudo ufw enable
sudo ufw allow 5432/tcp
sudo ufw status

Yukarıdaki komut satırıyla birlikte “5432” port numarası dış dünyaya açılmış durumdadır.

3. olarak volumes bölümüne dikkat edilmelidir. Örnekte verilen ifadede “‘/data/postgresql/data:/bitnami/postgresql'” bilgisi verilmiştir. Bizim yapacağımız iş sol taraftaki verilen adres bilgisini Docker uygulamasına açmak olacaktır. Bu adresi istediğimiz şekilde değiştirebiliriz. Bu alan sadece PostgreSQL Veritabanının ayarlarının ve bilgilerimizin saklandığı yerdir. Bunu Docker Uygulamasına bağlamak için ekstra “/var/run/docker.sock” dosyasının da tam yetkide olması gerekmektedir. Aşağıda komut satırlarını izleyerek izinlerimizi ve yetkimizi arttırabiliriz.

cd /
sudo mkdir data
cd data/
ls
sudo mkdir postgresql
cd postgresql/
sudo mkdir data
sudo chmod -R 777 /var/run/docker.sock
sudo chown -R 1001:1001 /data/postgresql/data
sudo usermod -aG docker $USER

4. olarak environment bölümüne dikkat edilmelidir. Örnekte verilen örnek komut satırlarını inceleyelim. 1. olarak “POSTGRESQL_REPLICATION_MODE=master” bölümü Master Sanal Makinesinde uygulamasında yaptığımız için master olması gerekmektedir. 2. olarak “POSTGRESQL_REPLICATION_USER=repl_user” bölümü Slave bölümünde giriş yapabilmek için gerekli olan kullanıcı adı bölümü burada işlenmektedir. 3. olarak önemli olan durum ise Master ve Slave kullanıcılarının şifreleri bununla birlikte Master bölümündeki kullanıcı adının postgres olmasına özen göstermeliyiz. Çünkü ben denemeyle birlikte çalıştırmayı denedim ve root olarak postgres kullanıcısını kullanıyor.

Tüm bu ayarları yaptıktan sonra geçelim Slave bölümündeki ayarlara.

Slave için Docker Compose Dosyası İçeriği

Yukarıdaki Master bölümüyle alakalı birçok ayarların çoğu Slave için geçerli. Şimdi “docker-compose.yml” dosyasının içerine bazı komut satırlarını yazıp içeriğini inceleyelim. Aşağıdaki komut satırlarıyla birlikte “docker-compose.yml” dosyasını açalım.

sudo nano docker-compose.yml

version: ‘2’

services:
postgresql-slave:
image: docker.io/bitnami/postgresql:latest
ports:
– ‘5432:5432’
networks:
– psql
volumes:
– ‘/data/postgresql/data:/bitnami/postgresql’
environment:
– POSTGRESQL_REPLICATION_MODE=slave
– POSTGRESQL_REPLICATION_USER=repl_user
– POSTGRESQL_REPLICATION_PASSWORD=postgres
– POSTGRESQL_MASTER_HOST=172.16.64.11
– POSTGRESQL_PASSWORD=postgres
– POSTGRESQL_MASTER_PORT_NUMBER=5432
networks:
psql:
driver: bridge

Burada “docker-compose.yml” dosyasının içinde dikkat etmemiz gereken önemli durumlar vardır.

1. olarak postgresql veritabanının Docker Hub sitesindeki sürümüdür. birden fazla sürümü vardır. Örnek olarak “image: docker.io/bitnami/postgresql:latest” komut satırını değiştirerek “image: docker.io/bitnami/postgresql:12” yazarak sürümünü değiştirebiliriz.

2. olarak port numarası olacaktır. Örnekte verilen “‘5432:5432′” ilgili port numarasının anlamı Postgresql Veritabanı için default olan “5432” numaralı portu bizim örnek olarak verdiğimiz “5432” numaralı porta eşle demektir. Bu port numarasını dış dünyaya açmak gerekmektedir bunun için gerekli komut satırı aşağıda verilmiştir.

sudo ufw enable
sudo ufw allow 5432/tcp
sudo ufw status

Yukarıdaki komut satırıyla birlikte “5432” port numarası dış dünyaya açılmış durumdadır.

3. olarak volumes bölümüne dikkat edilmelidir. Örnekte verilen ifadede “‘/data/postgresql/data:/bitnami/postgresql'” bilgisi verilmiştir. Bizim yapacağımız iş sol taraftaki verilen adres bilgisini Docker uygulamasına açmak olacaktır. Bu adresi istediğimiz şekilde değiştirebiliriz. Bu alan sadece PostgreSQL Veritabanının ayarlarının ve bilgilerimizin saklandığı yerdir. Bunu Docker Uygulamasına bağlamak için ekstra “/var/run/docker.sock” dosyasının da tam yetkide olması gerekmektedir. Aşağıda komut satırlarını izleyerek izinlerimizi ve yetkimizi arttırabiliriz.

cd /
sudo mkdir data
cd data/
ls
sudo mkdir postgresql
cd postgresql/
sudo mkdir data
sudo chmod -R 777 /var/run/docker.sock
sudo chown -R 1001:1001 /data/postgresql/data
sudo usermod -aG docker $USER

4. olarak önemli olan durum ise environment bölümündeki “POSTGRESQL_MASTER_HOST” komut satırıdır. Burada örnek olarak “172.16.64.11” IP Adresi vermiştir. Bu adresi sizin Master Sanal Makinesinde belirtilen IP Adresine değişiklik sağlanmaktadır. Diğer bir durum ise “POSTGRESQL_MASTER_PORT_NUMBER” bölümüdür. Bu bölümde Master Sanal Makinesine ait port numarası girilmesi gerekmektedir.

Docker Compose Dosyasının Ayağa kaldırılması

Her iki Sanal Makinesi için aşağıdaki komut satırı çalıştırılmaktadır.

sudo docker-compose up -d

PostgreSQL Veritabanını test etmek için 2 farklı yol var. 1. olarak Docker Uygulamasının içine PgAdmin uygulamasını yükleyip internet arayüzüyle birlikte test etmek, 2. olarak PgAdmin4 uygulamasını kişisel bilgisayarınıza yükleyerek gerekli bilgileri girerek test etmek.

Ben burada Docker Uygulamasında PgAdmin uygulamasını entegre ederek test işlemini yaptım. Bir Sonraki Blog yazısında bunu yapacağız zaten. Şuanlık Bakalım test aşaması başarılı olacak mı?

Gerekli ekran görüntüleri aşağıda verilmiştir.

Test Aşaması

Master bölümümüz başarılı bir şekilde açılmış durumdadır. Bakalım Slave bölümü çalışıyor mu?

Burada denemelerimden birisi portu değiştirerek yapmayı denedim ve başarılı oldum. Bunu siz de deneyerek farklı portlara izin vererek çalıştırabilirsiniz. Ancak dediğim gibi “‘5432:5432′” bölümündeki sol tarafı değiştirmeniz gerekmektedir. yani örnek olarak yukarıdaki ekran görüntüsündeki gibi “‘5435:5432′” böyle değiştirerek yapabilirsiniz.

Böylelikle Slave bölümü de açılmış olmaktadır. Test aşamasında Master bölümünde dalisto Veritabanında bir tane tablo oluşturarak Slave bölümünde görünüp görünmediğini test edeceğiz.

Gördüğünüz üzere test aşaması da başarılı bir şekilde gerçekleşmiş durumdadır. Bu aşamaya kadar geldiyseniz projenize PostgreSQL Veritabanını entegre edebilirsiniz demektir.

Sonuç olarak PostgreSQL Veritabanı uygulamasının, iki farklı Sanal Makine açarak ve onlara Ubuntu Server 20.04 LTS İşletim Sistemini yükleyip sistemin içine 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 ComposeLinuxPostgresqlPostgresql - MasterPostgresql - SlaveProxmoxUbuntu

İlk Yorumu Siz Yapın

Bir yanıt yazın

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