Takip et

Nesne Depolama Nedir ve Minio Neden Önemlidir?

Nesne Depolama Nedir ve Minio Neden Önemlidir? Modern uygulama geliştirme ve büyük veri çağında, geleneksel dosya sistemleri veya blok depola

Nesne Depolama Nedir ve Minio Neden Önemlidir?

Modern uygulama geliştirme ve büyük veri çağında, geleneksel dosya sistemleri veya blok depolama çözümleri, hızla artan veri hacimleri karşısında yetersiz kalabilmektedir. İşte bu noktada nesne depolama (Object Storage) devreye girer. Nesne depolama, verileri dosya hiyerarşileri yerine “nesneler” olarak saklayan, her nesneye benzersiz bir kimlik atayan ve meta verilerle zenginleştiren dağıtık bir depolama mimarisidir. Bu yaklaşım, yüksek ölçeklenebilirlik, dayanıklılık ve maliyet etkinliği sunar.

Minio, açık kaynaklı, yüksek performanslı ve Amazon S3 uyumlu bir nesne depolama sunucusudur. Bulut yerel uygulamalar için tasarlanmış olup, geleneksel dosya sistemlerinin ve blok depolamanın kısıtlamalarını aşarak, büyük veri, makine öğrenimi, yapay zeka ve web uygulamaları gibi çeşitli senaryolarda esneklik ve ölçeklenebilirlik sağlar. Minio’nun temel özellikleri arasında basit kurulum, S3 API uyumluluğu, gelişmiş veri koruma (Erasure Coding), web arayüzü ve güçlü komut satırı araçları bulunur. Ubuntu 18.04 üzerinde Minio kurmak, stabil ve yaygın kullanılan bir işletim sistemi üzerinde güvenilir bir nesne depolama çözümü elde etmenizi sağlar.

Minio Sunucusu Kurulumu İçin Ön Hazırlıklar

Minio sunucusunu kurmadan önce, sisteminizin hazır olduğundan emin olmalıyız. Bu adımlar, güvenli ve düzenli bir kurulum için kritik öneme sahiptir.

Sistem Güncellemesi ve Temel Paketlerin Kurulumu

İlk olarak, Ubuntu sisteminizin paket listesini güncelleyip mevcut paketleri yükseltin. Bu, güvenlik güncellemelerini almanızı ve en son paket sürümlerini kullanmanızı sağlar.

sudo apt update
sudo apt upgrade -y

Minio’yu indirmek ve yönetmek için gerekli olabilecek bazı temel araçları da yükleyelim:

sudo apt install -y wget unzip

Minio İçin Özel Kullanıcı ve Dizin Oluşturma

Güvenlik en iyi uygulamalarına uygun olarak, Minio’yu root kullanıcısı yerine özel bir kullanıcı altında çalıştırmak önemlidir. Ayrıca, Minio verileri ve yapılandırma dosyaları için ayrı dizinler oluşturacağız.

# Minio grubu ve kullanıcısı oluşturma
sudo groupadd -r minio
sudo useradd -M -r -g minio -s /sbin/nologin minio

Veri depolama dizinini oluşturma (Birden fazla disk kullanılıyorsa, her disk için ayrı bir dizin oluşturulabilir)

sudo mkdir -p /mnt/data/minio

Dizin sahibini minio kullanıcısı olarak ayarlama

sudo chown -R minio:minio /mnt/data/minio

Minio yapılandırma dosyaları için dizin oluşturma (opsiyonel ama iyi bir uygulama)

sudo mkdir -p /etc/minio sudo chown -R minio:minio /etc/minio

/mnt/data/minio dizini, Minio’nun nesneleri depolayacağı ana yoldur. Eğer birden fazla disk kullanıyorsanız, her diski /mnt/disk1/minio, /mnt/disk2/minio gibi ayrı ayrı bağlayıp bu dizinleri Minio’ya gösterebilirsiniz.

Minio Sunucusunun Kurulumu ve Yapılandırması

Sistemimiz hazır olduğuna göre, Minio’yu indirip kurabilir ve bir sistem servisi olarak yapılandırabiliriz.

Minio İkili Dosyasını İndirme

Minio’nun en son kararlı sürümünü resmi web sitesinden indirelim ve çalıştırılabilir hale getirelim.

wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
sudo chmod +x /usr/local/bin/minio

Bu komut, Minio ikili dosyasını /usr/local/bin/ dizinine indirir ve tüm kullanıcılara çalıştırma izni verir.

Minio’yu Bir Systemd Servisi Olarak Yapılandırma

Minio’yu sistem açılışında otomatik olarak başlatmak ve arka planda sürekli çalışmasını sağlamak için bir systemd servisi olarak yapılandırmak en iyi yöntemdir.

Minio yapılandırma dosyası için bir dizin oluşturalım (eğer daha önce oluşturmadıysak):

sudo mkdir -p /etc/minio
sudo chown minio:minio /etc/minio

Şimdi /etc/systemd/system/minio.service adında bir dosya oluşturalım ve aşağıdaki içeriği ekleyelim:

[Unit]
Description=Minio Object Storage Server
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/minio server /mnt/data/minio --config-dir /etc/minio
Restart=always
WorkingDirectory=/home/minio
User=minio
Group=minio
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio

Güvenlik için çeşitli kısıtlamalar

NoNewPrivileges=true PrivateTmp=true PrivateDevices=true ProtectSystem=full ReadOnlyPaths=/ ReadWritePaths=/mnt/data/minio /etc/minio InaccessiblePaths=/root [Install] WantedBy=multi-user.target

Bu servis tanımında dikkat etmemiz gereken bazı noktalar:

  • ExecStart: Minio sunucusunu başlatacak komuttur. /mnt/data/minio Minio’nun verilerini depolayacağı yoldur. --config-dir /etc/minio ise yapılandırma dosyalarının saklanacağı dizini belirtir.
  • User ve Group: Minio’nun minio kullanıcısı ve grubu altında çalışmasını sağlar.
  • EnvironmentFile: Minio’nun erişim anahtarları (Access Key) ve gizli anahtarları (Secret Key) gibi ortam değişkenlerini /etc/default/minio dosyasından okumasını sağlar.

Şimdi /etc/default/minio dosyasını oluşturalım ve Minio erişim kimlik bilgilerini tanımlayalım:

sudo nano /etc/default/minio

Dosyanın içine aşağıdaki satırları ekleyin. Bu değerleri güvenli ve tahmin edilemez karakterlerle değiştirmeniz ÇOK ÖNEMLİDİR!

# Minio erişim anahtarları
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadminpassword"

Minio'nun dinleyeceği adres ve port (isteğe bağlı, varsayılan 9000)

MINIO_SERVER_URL="http://192.168.1.100:9000" # Kendi sunucunuzun IP adresiyle değiştirin

Minio veri dizinleri (Minio.service dosyasındaki ExecStart ile uyumlu olmalı)

MINIO_VOLUMES="/mnt/data/minio"

MINIO_SERVER_URL kısmını kendi sunucunuzun IP adresiyle değiştirmeyi unutmayın (veya 0.0.0.0:9000 olarak bırakarak tüm arayüzlerden erişime izin verebilirsiniz, ancak bu durumda güvenlik duvarı ayarları daha da kritik hale gelir).

Minio Servisini Başlatma

Dosyaları kaydettikten sonra, systemd servislerini yeniden yükleyin, Minio servisini etkinleştirin ve başlatın:

sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio

Minio servisinin durumunu kontrol etmek için:

sudo systemctl status minio

Çıktıda “active (running)” ifadesini görmelisiniz.

Güvenlik Duvarı Ayarları (UFW)

Minio’ya dışarıdan erişebilmek için güvenlik duvarında (UFW) gerekli portu açmanız gerekir. Varsayılan olarak Minio 9000 portunu kullanır.

sudo ufw allow 9000/tcp
sudo ufw enable # Eğer UFW etkin değilse
sudo ufw status

Minio Sunucusuna Erişim ve Kullanım

Minio sunucusu artık çalışıyor. Ona hem web arayüzü üzerinden hem de Minio Client (mc) komut satırı aracıyla erişebiliriz.

Web Arayüzüne Erişim

Web tarayıcınızı açın ve sunucunuzun IP adresi ile Minio’nun dinlediği portu kullanarak erişin (örneğin: http://192.168.1.100:9000). Karşınıza Minio giriş ekranı gelecektir. /etc/default/minio dosyasında tanımladığınız MINIO_ROOT_USER ve MINIO_ROOT_PASSWORD ile giriş yapın.

Giriş yaptıktan sonra, “Create bucket” düğmesine tıklayarak yeni bir kova (bucket) oluşturabilirsiniz. Kovalar, nesneleri depoladığınız mantıksal birimlerdir. Dosyalarınızı sürükle-bırak yöntemiyle veya “Upload File” seçeneğini kullanarak kovalarınıza yükleyebilirsiniz.

Minio Client (mc) Kurulumu ve Kullanımı

mc, Minio sunucunuzu yönetmek için güçlü bir komut satırı aracıdır. Yerel makinenize kurarak Minio sunucunuzla etkileşim kurabilirsiniz.

mc Kurulumu

Yerel makinenizde (Ubuntu tabanlı bir sistem varsayarak) aşağıdaki komutları çalıştırın:

wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
chmod +x /usr/local/bin/mc

mc ile Minio Sunucusuna Bağlanma

Şimdi mc aracını Minio sunucunuza bağlayalım. YOUR_MINIO_SERVER_IP kısmını kendi sunucunuzun IP adresiyle değiştirin.

mc alias set myminio http://YOUR_MINIO_SERVER_IP:9000 minioadmin minioadminpassword

Bu komut, myminio adında bir takma ad (alias) oluşturur. Artık Minio sunucunuzla etkileşim kurmak için bu takma adı kullanabilirsiniz.

Temel mc Komutları

  • Kovaları listeleme:
    mc ls myminio
  • Yeni bir kova oluşturma:
    mc mb myminio/myfirstbucket
  • Bir dosyayı kovaya yükleme: (Örnek olarak yerel sisteminizdeki my_local_file.txt dosyasını kullanın)
    mc cp my_local_file.txt myminio/myfirstbucket/
  • Kovadaki nesneleri listeleme:
    mc ls myminio/myfirstbucket
  • Bir dosyayı kovadan indirme:
    mc cp myminio/myfirstbucket/my_local_file.txt ./downloaded_file.txt
  • Bir nesneyi silme:
    mc rm myminio/myfirstbucket/my_local_file.txt

Güvenlik ve Performans İpuçları, Sonuç ve SSS

Güvenlik İpuçları

  • HTTPS/SSL Kullanımı: Üretim ortamlarında Minio’ya güvenli bir şekilde erişmek için HTTPS/SSL kullanmak zorunludur. Minio, TLS/SSL sertifikalarını doğrudan destekler. Bir ters proxy (Nginx, Caddy) arkasında çalıştırarak veya Minio’nun kendi sertifika yönetim özelliklerini kullanarak HTTPS’i etkinleştirebilirsiniz.
  • Güçlü Kimlik Bilgileri: MINIO_ROOT_USER ve MINIO_ROOT_PASSWORD için karmaşık, uzun ve tahmin edilemez parolalar kullanın.
  • UFW Kuralları: Yalnızca gerekli portları (varsayılan olarak 9000) açın ve mümkünse sadece belirli IP adreslerinden erişime izin verin.
  • Kullanıcı ve Politika Yönetimi: Minio, kullanıcılar ve gruplar için ince taneli erişim kontrol politikaları (IAM) sunar. Uygulamalarınız için sadece ihtiyaç duydukları izinleri sağlayan kullanıcılar oluşturun.
  • Güncel Tutma: Minio sunucunuzu ve Ubuntu işletim sisteminizi düzenli olarak güncelleyerek bilinen güvenlik açıklarından korunmuş olursunuz.

Performans İpuçları

  • Disk Performansı: Nesne depolama performansı büyük ölçüde disk I/O hızına bağlıdır. SSD’ler veya NVMe sürücüler, geleneksel HDD’lere göre çok daha iyi performans sunar.
  • RAID/Erasure Coding: Veri dayanıklılığı ve performans için Minio’nun kendi Erasure Coding özelliğini veya altta yatan RAID yapılandırmalarını kullanabilirsiniz. Minio’nun Erasure Coding’i, birden fazla diski tek bir birim gibi kullanır ve veri bütünlüğünü korurken yüksek performans sağlar.
  • Ağ Bağlantısı: Yüksek bant genişliğine sahip bir ağ bağlantısı, Minio’dan dosya aktarımı hızını artıracaktır.

Sonuç

Bu rehberde, Ubuntu 18.04 üzerinde Minio nesne depolama sunucusunu nasıl kuracağınızı, yapılandıracağınızı ve yöneteceğinizi adım adım öğrendiniz. Minio, basitliği, S3 uyumluluğu ve yüksek performansı sayesinde, bulut yerel uygulamalarınız için güçlü ve ölçeklenebilir bir depolama çözümü sunar. Güvenlik ve performans ipuçlarını dikkate alarak, Minio dağıtımınızı üretim ortamlarında da başarılı bir şekilde kullanabilirsiniz.

Sıkça Sorulan Sorular (SSS)

S: Minio’yu üretimde kullanabilir miyim?
C: Evet, Minio üretim ortamları için tasarlanmış, yüksek performanslı ve dayanıklı bir çözümdür. Ancak, üretimde kullanmadan önce HTTPS/SSL, güçlü kimlik bilgileri ve düzenli yedekleme gibi güvenlik ve dayanıklılık en iyi uygulamalarını uyguladığınızdan emin olun.

S: Minio verilerimi nerede saklıyor?
C: Bu rehberde Minio’yu /mnt/data/minio dizinini kullanarak yapılandırdık. Minio, tüm nesnelerinizi ve ilgili meta verileri bu dizin altında saklar. Çoklu disk kurulumlarında, Minio belirtilen tüm disklerde verileri dağıtarak depolama alanını optimize eder.

S: Minio Amazon S3 ile tamamen uyumlu mu?
C: Minio, Amazon S3 API’sinin büyük bir kısmıyla uyumludur, bu da S3 ile entegre olan birçok uygulamanın ve aracın Minio ile de sorunsuz çalışabileceği anlamına gelir. Ancak, S3’ün tüm özelliklerini birebir desteklemeyebilir, özellikle AWS’ye özgü bazı gelişmiş hizmetlerle entegrasyonlarda farklılıklar olabilir.

S: Minio için HTTPS’i nasıl etkinleştiririm?
C: Minio’da HTTPS’i etkinleştirmenin birkaç yolu vardır. En yaygın yöntemlerden biri, Minio’yu bir ters proxy (örneğin Nginx veya Apache) arkasında çalıştırmak ve SSL sertifikalarını ters proxy’de yönetmektir. Minio ayrıca kendi kendine imzalı sertifikalar veya Let’s Encrypt gibi bir CA’dan alınan sertifikalarla doğrudan HTTPS’i destekleyebilir. Bu, ~/.minio/certs veya /etc/minio/certs gibi bir dizine sertifika dosyalarını (public.crt ve private.key) yerleştirerek yapılır.

S: Birden fazla sunucu üzerinde dağıtık Minio kurulumu nasıl yapılır?
C: Dağıtık Minio kurulumu, birden fazla sunucu ve disk kullanarak daha yüksek dayanıklılık ve ölçeklenebilirlik sağlar. Temel olarak, her sunucuya Minio kurduktan sonra, ExecStart komutunda tüm sunucuların disklerini (örneğin, /usr/local/bin/minio server http://server1/data http://server2/data http://server3/data gibi) belirterek Minio’yu başlatırsınız. Bu, verilerin küme genelinde dağıtılmasını ve otomatik olarak çoğaltılmasını sağlar.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık