Minio: Adım adım nesne (s3) depolama sunucusu kurulumu

Kerem Titiz
Turk Telekom Bulut Teknolojileri
5 min readMar 20, 2023

Merhaba,

Minio, Nesne tabanlı ücretsiz bir depolama çözümü olan minio’u inceleyip basit kurulumunu yapacağız. Sonraki yazılarımızda cluster yapılandırması ve replikasyonu işleyeceğiz.

Minio S3 tabanlı bir uygulamadır. S3 platformu Amazon Web Servisleri üzerinde Nesne depolama (S3) hizmeti olarak kullanılmak için Awslabs tarafından geliştirilmiştir.

Minio uygulamasını donanım bağımsız olarak; sunucularda, bilgisayarlarınızda işletim sistemi bağımsız olarak kurabilir ve yapılandırıp kullanabilirsiniz.

Bugünkü kurulumumuzda Ücretsiz olarak dağıtılan açık kaynak kodu Debian Distro 11.6 sürümü üzerinde yapacağız.

Kuruluma Hazırlık

Öncelikle sunucumuza ssh üzerinden login oluyoruz;

Kendi Bilgisayarımda oluşurmuş olduğum sanal bir sunucudur.

Sisteme giriş yaptıktan sonra sunucuyu güncel duruma getiriyoruz. Sunucu üzerinde root yetkiniz yok ise sudo ile ilerleyebilirsiniz.

apt update && apt upgrade -y
Sunucuyu en güncel haline getirerek, yama ve uygulamaları güncelliyoruz.

Certgen Paketi İndirilmesi ve Kurulması

Minio üzerinde kullanmak üzere sertifika oluşturacağımız uygulamayı Github üzerinden yüklüyoruz. (Certgen) Kullanmış olduğunuz işlemci mimarisine göre paketi indirip sunucu üzerine yüklüyoruz.

wget wget https://github.com/minio/certgen/releases/download/v1.2.1/certgen_1.2.1_linux_amd64.deb
dpk -i certgen_1.2.1_linux_amd64.deb

Minio Paketi İndirilmesi ve Kurulması

Minio sitesi üzerinden güncel kurulum paketini indirerek kurulum yapıyoruz.

Uygulama sürümleri günden güne yenilendiğinden dolayı, aşağıdaki bağlantıyı min.io sitesinden güncel olan dosyayı indirmeniz gerekmektedir.
Kurulum paketi binary olduğundan, bağlı ek paket gereksinimi yoktur.

İndirilen kurulum paketini aşağıdaki komutları kullanarak kuruyoruz.

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20230313194617.0.0_amd64.deb
dpkg -i minio_20230313194617.0.0_amd64.deb
Kendi işlemci platformunuza uygun paketi indirmeyi unutmayın.

Kurulum

Uygulama Tanımları ve Konfigürasyonu

Uygulamanın sağlıklı çalışması için, aşağıdaki kullanıcı tanımları ve uygulama konfigürasyon dosyasını oluşturuyoruz. Kendi sistemimizde yapabileceğiniz farklı kurulum dizinleri için aşağıdaki görsellerin yorumlarını inceleyebilirsiniz.

Minio uygulama kullanıcısı, grubu ve ev dizinlerinin oluşturulması.
groupadd -r minio_user
useradd -M -r -g minio-user minio-user
mkdir /minio
chown minio-user:minio-user /minio

Yukarıdaki bash script’inde minio-user adlı kullanıcı ve grup oluşturuldu. Oluşturulan bu kullanıcının kullanması ve uygulama dosyalarının saklanacağı yer olarak “/minio” klasörü oluşturuldu ve yetkileri tanımlandı. Bu yapılan işlem bir sonraki adım olan konfigürasyon dosyasında kullanılacaktır.

touch /etc/default/minio

echo "MINIO_VOLUMES="/minio"" >> /etc/default/minio
echo "MINIO_OPTS="--certs-dir /root/.minio/certs --console-address :9001"" >> /etc/default/minio
echo "MINIO_ROOT_USER=minioadmin" >> /etc/default/minio
echo "MINIO_ROOT_PASSWORD=minioadmin" >> /etc/default/minio
Minio basit konfigürasyon parametreleri

Sertifika Oluşturulması

Hatırlarsanız, Certgen paketi kurulumunu yapmıştık. Certgen uygulamasını kullanarak minio içinde kullanmak üzere bir sertifika oluşturuyoruz. Bu sertifika minio arayüz sertifikası değildir. Sadece uygulama içinde dosyaları saklarken ve replikasyon süreçlerinde kullanılacaktır.

mkdir -p /root/.minio/certs
certgen -host "Sunucu_Host_Adresi yada IpV4 adresi"
chown minio-user:minio-user /root/.minio/certs/

Minio Servislerinin başlatılması

Yukarıdaki adımları başarıyla tanımladıysak minio servisi sorunsuz bir şekilde çalışacaktır. Servisin sunucu açıldığında çalışmasını istiyorsak systemctl enable komutu ile uygulamayı çalıştırmalıyız.

systemctl enable minio
systemctl start minio
Servis sorunsuz olarak çalıştı ise yukarıdaki görseldeki gibi çıktılar oluşacaktır.

Servis durumu çıktısında belirtilen aşağıdaki adresler kullanılarak minio arayüzüne erişim sağlanır.

Örnek çıktılar

API: http://192.168.36.6:9000 (Api arayüzü)

Console: http://192.168.36.6:9001 (Kullanıcı Arayüzü (browser üzerinden bağlanılacak olan adres))

Adresi browser adres çubuğuna yazarak aşağıdaki Minio arayüzüne erişebilirsiniz. Sonraki aşamalarda tanımlamaların çoğunu bu ekran üzerinden yapacağız.

Giriş bilgileri olarak yukarıda yer alan /etc/default/minio dosyası içeriğinde bulunan kullanıcı tanımlamaları ile giriş yapabilirsiniz. (minioadmin/minioadmin)

Minio Arayüz Kullanımı

Minio arayüzü basit ve yalın tasarlanmış olup, temelde kullanımı “Object Browser”, “Access Keys” isimli iki menü üzerinde olacaktır.

Object Browser ( Nesne Klasörü )

Object Browser Penceresi

Minio üzerinde dosyaları yüklemeden önce yükleme klasörü (Bucket) oluşturmamız gerekiyor. Buradaki amaç birden fazla uygulamaya yada kullanıcıya ayrı izole alanlar oluşturabilmek, sürüm takibi yapabilmek, kota sınırı oluşturabilmek ve sadece okumaya yönelik alanlar oluşturabilmektir.

Create Bucket

Klasör (Bucket) Oluşturma

Örnek olarak oluşturacağımız test-01 bucket’i için “Create Bucket” penceresine giriş yaparak bucket’i oluşturuyoruz. Sürüm takibi ve değişiklikleri takip etmek istiyorsak “Versioning” alanını “On” seçerek “Create Bucket” düğmesini seçebiliriz.

Oluşturduğumuz test-01 bucket’i sistemde veya disklere verdiğimiz yetkilerde sorun yok ise “Buckets” Penceresi altında gözükecektir.

Buckets Penceresi

Bucket’lara Dosya Yükleme

Oluşturmuş olduğumuz test-01 klasörüne ister API ister arayüzü kullanarak dosyaları yükleyebiliriz. Dosya yükleme için “Upload” düğmesini kullanabilir yada alt klasör oluşturmak istersek “Create New Path” düğmesini kullanabiliriz.

Bucket içeriği Penceresi
Örnek olarak bir adet jpeg dosyası yüklüyoruz.

Yüklenen dosya için ayrı tanımlamalar yapabilir, ayrı işaretler (tag) tanımlayabilir yada dosyayı dışarıya paylaşıma açabiliriz.

Yüklenen jpeg dosyasının özelliklerini görüntüleyebiliyoruz. Ön izleme yapabilir, paylaşım tanımlayabilir yada dosyayı silebiliriz.

Minio Faydalı Özellikleri

Minio text bazlı dosyaları sıkıştırma ve saklama özelliği vardır. (Örn: json,txt,log)

  • Minio’ bucketları uçtan uca replikasyon ile eşleyebilir.
  • Birden fazla Minio sunucuları arasında dosyaları ve bucketları kopyalabilir, clone alabilir yada taşıyabilirsiniz.
  • Kubernete, Openshift gibi nesne tabanlı sistemlere birebir entegre haldedir.
  • Dosyalarda sürüm takibi yapabilirsiniz.
  • Bucketlarda zaman yada süreç bazlı olarak otomatik arşivleme, emekliye ayırma gibi süreçleri yönetebilirsiniz.

Sonraki yazımızda minio cluster ve replikasyonu işleyeceğiz.

--

--