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/minioMinio’nun verilerini depolayacağı yoldur.--config-dir /etc/minioise yapılandırma dosyalarının saklanacağı dizini belirtir.UserveGroup: Minio’nunminiokullanı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/miniodosyası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.txtdosyası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_USERveMINIO_ROOT_PASSWORDiç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.
