MinioCluster ve HAProxy Kurulumu

MinioCluster ve HAProxy Kurulumu

MinIO, büyük ölçekli, çoklu veri merkezli bulut depolama hizmetleri için tasarlanmıştır. Her kiracı, diğer kiracılardan tamamen izole edilmiş kendi MinIO kümesini çalıştırır ve bu da onlara yükseltme, güncelleme, güvenlik olaylarında herhangi bir kesintiye karşı koruma yeteneği verir.

Burada MiniIO kurulumunu sağlarken 3 Node olacak şekilde kuracağım. Benim kurulum sağladığım sunucularım Ubuntu22.04(Hardened Image)

İlk olarak sunucularda Minio’un hangi Data_dir’i kullanacağını ayarlıyacağız. Bunun için sunucularımda ayrı bir Path oluşturup 100GB’lık alan vereceğim dosya formatını XFS olarak ayarlıyacağım çünkü Image bazlı file tiplerinde XFS kullanılması önerilir.

Aşağıdaki link üzerinden kaç tane node’umuz varsa ona göre ayarlama sağlıyabiliriz bize daha güzel bir hesaplama sağlıyor olacaktır.

https://min.io/product/erasure-code-calculator?source=post_page—–151215e70643—————————————

3 Tane VM oluşturuldu. +100GB ek disk eklendi.

3 Sunucu üzerinde aşağıdaki gibi storage path’leri ayarladım…

/minio

https://min.io/docs/minio/linux/index.html üzerinden minio’u download edeceğiz.

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241107005220.0.0_amd64.deb -O minio.deb

İndirdiğimiz paketleri dpkg ile açıyoruz ve minio’nun kurulumunu sağlıyoruz.

sudo dpkg -i minio.deb

Kurulum tamamlandıktan sonra versiyonlarının aynı olduğundan emin oluyoruz.

minio — version

Sistem için bir kullanıcı oluşturuyoruz daha sonrasında ise “-/sbin/nologin” komutunu yazıyoruz bundan dolayıda doğrudan oturum açılmasını engellemiş oluyoruz.

useradd -r minio-user -s /sbin/nologin

minio-user adında bir sistem grubu oluşturuyoruz ve minio-user kullanıcısını minio-user grubuna dahil ediyoruz.

groupadd -r minio-user / usermod -g minio-user minio-user

chown minio-user:minio-user data1

chown -R minio-user:minio-user /minio

data1 dizini ve minio dizininin sahibini minio-user kullanıcısı ve grubuna değiştirmemiz gerekiyor.

vi /etc/default/minio

# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
# The command includes the port that each MinIO server listens on
# (default 9000)

MINIO_VOLUMES="http://minio01/minio/data1 http://minio02/minio/data1 http://minio03/minio/data1"
# Set all MinIO server options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces. The default behavior is dynamic
# port selection.

MINIO_OPTS="--console-address :9001"

# Set the root username. This user has unrestricted permissions to
# perform S3 and administrative API operations on any resource in the
# deployment.
#
# Defer to your organizations requirements for superadmin user name.
#MINIO_LOG_DIR="/var/log/minio

MINIO_ROOT_USER="admin"

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.

MINIO_ROOT_PASSWORD="Your_Password"

# Set to the URL of the load balancer for the MinIO deployment
# This value *must* match across all MinIO servers. If you do
# not have a load balancer, set this value to to any *one* of the
# MinIO hosts in the deployment as a temporary measure.
#MINIO_SERVER_URL="http://minio:9000"

Burada dikkat etmemiz gereken bazı noktalar mevcut ilk olarak hosts dosyamız içerisine cluster yapacağımız sunucuların bilgilerini yazalım. Firewall tarafından gerekli izinleri tanımlayalım. Sunucu içerisinde iptables,firewalld vb… Servislerin kapalı yada ilgili portların erişim izinlerini verdiğinden emin olalım.

systemctl start minio

http://ip_adresiniz:9001

MinioCluster kurulumunu tamamladık… Bu MinioCluster’ı şimdi nasıl HAProxy arkasına alacağız ondan bahsedeceğim.

HAProxy için iki adet sunucu kullanacağım içerisine keepalived servisini kuracağım.

Keepalived’in HAProxy ile Kullanım Amaçları

1. Failover (Hata Toleransı)

• Eğer bir HAProxy sunucusu çökerse, Keepalived otomatik olarak diğer HAProxy sunucusuna trafiği yönlendirir.

• Kullanıcılar kesinti yaşamaz ve hizmet devam eder.

2. VIP (Virtual IP) Kullanımı

• Keepalived, bir sanal IP adresi (VIP) oluşturur.

• Kullanıcılar bu VIP’ye bağlanır ve arkada çalışan birden fazla HAProxy sunucusundan hizmet alır.

3. Yüksek Erişilebilirlik (HA)

• Keepalived, iki veya daha fazla HAProxy sunucusunu Master-Slave veya Active-Active modda çalıştırır.

• Bir sunucu devre dışı kalırsa, diğeri VIP’yi devralır ve hizmet kesintisiz devam eder.

4. Sağlık Kontrolleri (Health Check)

• Keepalived, HAProxy’nin durumunu izleyebilir.

. Eğer HAProxy servisi durursa veya çökerse, Keepalived trafiği otomatik olarak diğer sunucuya yönlendirir.

Hardened Image Ubuntu 22.04

HaProxy ve Keepalived servislerinin kurulumlarını sağlıyoruz.

apt-get install — no-install-recommends software-properties-common
add-apt-repository ppa:vbernat/haproxy-3.0
apt install keepalived haproxy
chmod 644 /etc/haproxy/haproxy.cfg

useradd -r -s /bin/false keepalived_script

Bu komutun amacı, Keepalived sağlık kontrolü (health check) veya script çalıştırmaları için özel bir sistem kullanıcısı oluşturmaktır.

Her iki node üzerinde de aynı ayarları yapmamız gerekiyor.

vi /etc/keepalived/haproxy.sh

#!/bin/bash
TYPE=$1
NAME=$2
STATE=$3

case $STATE in
"MASTER") systemctl start haproxy
exit 0
;;
"BACKUP") systemctl stop haproxy
exit 0
;;
"FAULT") systemctl stop haproxy
exit 0
;;
*) echo "unknown state"
exit 1
;;
esac
~

Bu script, Keepalived ile HAProxy’nin durumunu yönetmek için yazdık.

vi /etc/keepalived/keepalived.conf

global_defs {
    enable_script_security
    max_auto_priority
}

vrrp_script check_gw {
    script "/usr/bin/ping -c1 10.0.1.1"
    interval 5
}

vrrp_instance VI_1 {
    interface ens160
    state MASTER
    virtual_router_id 28
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 987654
    }
    virtual_ipaddress {
        10.0.1.109/24 dev ens160
    }
    unicast_src_ip 10.0.1.103
    unicast_peer {

        10.0.1.104
    }
    track_script {
        check_gw
    }
    notify "/etc/keepalived/haproxy.sh" root

keepalived servisimiz için gerekli ayarlamaları sağlıyoruz.

vi /etc/haproxy/haproxy.cfg

listen haproxy-stats
    mode http
    bind 10.0.1.109:7000
    stats enable
    stats uri /

# DEV MinIO API Load Balancer
listen minio-api
    mode http
    balance roundrobin
    bind *:9000
    option httpchk GET /minio/health/live HTTP/1.1
    http-check send hdr Host minio.dev
    http-check expect status 200
    default-server inter 3s fall 2 rise 2 on-marked-down shutdown-sessions
    server minio01 10.0.1.100:9000 check maxconn 300
    server minio02 10.0.1.101:9000 check maxconn 300
    server minio03 10.0.1.102:9000 check maxconn 300

# MinIO Console Load Balancer
listen minio-console
    mode http
    balance roundrobin
    bind *:9001
    option httpchk GET /minio/health/ready
    http-check expect status 200
    default-server inter 3s fall 2 rise 2 on-marked-down shutdown-sessions
    server minio01 10.0.1.100:9001 check maxconn 300
    server minio02 10.0.1.101:9001 check maxconn 300
    server minio03 10.0.1.102:9001 check maxconn 300

HaProxy arkasına alacağımız servisimizi config’in içerisine kayıt ediyoruz. bind kısmında * olduğundan dolayı bizim keepalived’da yazdığımız VIP ip adresini baz alarak servisleri ilgili ip arkasına alacaktır.

systemctl start keepalived

keepalived servisini yeniden başlattığımızda ise master/slave farkını görebilirsiniz. Bir sunucumuzda 1.109 ip adresi var diğerinde yok. 1. sunucu bu durumda Master oluyor.

systemctl start haproxy

HA Proxy servisini de başlatıyoruz. Bu servisleri mutlaka enable etmekte de fayda var.

http://ip_adresiniz:7000

HAProxy Stat’dan ilgili ayarlarımızı görüyoruz. Servislerimizin up/down olup olmadığını kontrol ediyoruz. Sıra ise Minio servisimizi başarılı bir şekilde erişebildiğimizi kontrol ediyoruz. VIP ip adresimizin 9001 portuna erişim sağlıyacağız.

http://VIP_Adresi:9001

Bu sayede MinioCluster’ımızı HaProxy arkasına almış olduk.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *