H/A MinIO Kurulumu ve MinIO Client Kullanımı
Nedir?
MinIO, Amazon S3 protokolü uyumlu bir bulut depolama sunucusudur. Bir nesne deposu olarak MinIO, fotoğraflar, videolarve dosyalar, yedeklemeler ve konteyner imajları gibi verileri depolayabilir.
Başlayalım
Öncelikle H/A yapı için minimum 2 vm ve bir load balancera ihtiyacımız var. Bunun için bu anlatımda ben nginx kullanacağım.
Anlatımda 2 sunucu üzerinden gideceğim, siz dilerseniz arttırabilirsiniz. Her sunucuya min 4 disk tanımlıyoruz.
IP | Hostname | VM | Disk |
---|---|---|---|
192.168.166.233 | minio.example.com | minio-lb | - |
192.168.166.234 | minio-01.example.com | minio-01 | 4 x 50 GB |
192.168.166.235 | minio-02.example.com | minio-02 | 4 x 50 GB |
192.168.166.236 | minio-03.example.com | minio-03 | 4 x 50 GB |
Load balancer Yapılandırması
/etc/nginx/conf.d altına minio.conf oluşturup içine aşağıdakileri yazıyoruz. SSL termination yapmak için SSL sertifikalarımızı vererek 443'den yapılandırıyoruz.
upstream minio.example.com {
zone minio.example.com 2048k;
least_conn;
keepalive 256;
server 192.168.166.234:9000 max_fails=0 slow_start=10s;
server 192.168.166.235:9000 max_fails=0 slow_start=10s;
server 192.168.166.236:9000 max_fails=0 slow_start=10s;
}
server {
listen 192.168.166.233:80;
server_name minio.example.com;
return 301 https://$host;
}
server {
listen 192.168.166.233:443 ssl;
server_name minio.example.com;
status_zone minio.example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
proxy_set_header Host $http_host;
proxy_pass http://minio.example.com;
}
location @hc {
proxy_pass http://minio.example.com;
proxy_set_header Host minio.example.com;
proxy_http_version 1.1;
proxy_set_header Connection "";
health_check uri=/minio/health/live interval=3 fails=2 passes=2;
error_log /var/log/nginx/error_hc.log info;
}
}
Disk Yapılandırması
Öncelikle her vm'e 4 adet disk taktıktan sonra disk yapılandırmasına geçiyoruz. Aşağıdaki komutları her iki sunucuda da uyguluyoruz. Aynı işlemleri /dev/sdc, /dev/sdd ve /dev/sde için de yapıyoruz.
# fdisk /dev/sdb
> n
> p
> enter
> enter
> enter
> w
> q
# mkfs.xfs -f /dev/sdb1
# mkfs.xfs -f /dev/sdc1
# mkfs.xfs -f /dev/sdd1
# mkfs.xfs -f /dev/sde1
# mkdir -p /opt/drive{1..4}
Oluşturduğumuz pathleri kalıcı olarak mount etmek için fstab'i açıyoruz.
# vim /etc/fstab
En altına ekliyoruz.
#device mountpoint fstype options dump fsck
/dev/sdb1 /opt/drive1 xfs defaults 0 1
/dev/sdc1 /opt/drive2 xfs defaults 0 1
/dev/sdd1 /opt/drive3 xfs defaults 0 1
/dev/sde1 /opt/drive4 xfs defaults 0 1
Değişiklikleri kaydetmek için
# mount -a
MinIO Yapılandırması
Şimdi load balancer ve disk yapılandırması tamamlandı, artık minIO kurulumuna geçebiliriz.
MinIO'nun linux da henüz bir paketi yok binary olarak kuracağız.
# wget https://dl.min.io/server/minio/release/linux-amd64/minio && chmod +x minio
# mv minio /usr/local/bin/
MinIO'yu yapılandırması ile beraber çalıştırmak içini bir bash yazıyoruz. Dilerseniz farklı yöntem ile de yapılabilir.
# cat > /etc/default/minio <<EOF
MINIO_ACCESS_KEY=xxxxxxx
MINIO_SECRET_KEY=xxxxxx
MINIO_PROMETHEUS_AUTH_TYPE="public"
MINIO_OPTS=http://192.168.166.{234...236}:9000/opt/drive{1...4}
EOF
Minio'nun systemd altına servisini oluşturuyoruz.
# cat > /etc/systemd/system/minio.service <<EOF
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local/
User=root
Group=root
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
Kurulum bu kadar, şimdi yazdığımız servisi tanıması için systemd deamon reload ediyoruz ve minio servisinimizi başlatıyoruz.
# systemctl daemon-reload
# systemctl enable minio
# systemctl start minio
Durumunu kontrol ediyoruz.
# systemctl status minio
● minio.service - MinIO
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-12-17 15:08:16 +03; 19h ago
Docs: https://docs.min.io
Main PID: 14491 (miniostart)
CGroup: /system.slice/minio.service
├─14491 /bin/bash /usr/local/bin/miniostart
└─14492 /usr/local/bin/minio server
Tün adımlar tamamlandı, şimdi dilerseniz ui dan dilerseniz minio client (mc) ile bucket oluşturabilirsiniz.
Minio Client (mc) Kullanımı
Kurulum
MacOS
$ brew install minio/stable/mc
Linux
# wget https://dl.min.io/client/mc/release/linux-amd64/mc
# chmod +x mc
MinIO Clusterına Bağlanmak
# mc alias set minio https://minio.example.com AccessKey SecretKey --api S3v4
Bağlı clusterları listeleme.
# mc alias list
minio
URL : https:/minio.example.com
AccessKey : xxxxxxxxx
SecretKey : xxxxxxxxx
API : S3v4
Path : auto
Bucketları listeleme
# mc ls minio
[2020-10-27 23:42:25 +03] 0B backup/
Cluster hakkında bilgi almak
# mc admin info minio
● 192.168.166.234:9000
Uptime: 19 hours
Version: 2020-10-03T02:19:42Z
Network: 2/2 OK
Drives: 4/4 OK
● 192.168.166.235:9000
Uptime: 1 month
Version: 2020-10-03T02:19:42Z
Network: 2/2 OK
Drives: 4/4 OK
22 GiB Used, 9 Buckets, 10,083 Objects
8 drives online, 0 drives offline
Bucket Oluşturma
# mc mb --with-lock minio/gitlab-backup-storage
Buckettaki dataların 3 Gün saklanması (aldığınız backupları x gün saklamak için ideal)
# mc rm --recursive --force --older-than 3d minio/backup
Bucket Silme
# mc rb minio/test --force
Buckettaki tüm verileri silmek
# mc rm -r --force minio/backup
Hola! Ben Ali. Hepsiburada’da DevOps Engineer olarak çalışmaktayım. Microservis mimarisine özgü altyapı tasarlamayı, kurmayı ve operasyonel süreçlerini yönetmeyi seviyorum. Ayrıca şu sıralar GO Lang öğrenmek için de emeklemekteyim.
Yorum Yapın