GNU/Linux >> Belajar Linux >  >> Linux

Menyiapkan server MinIO untuk penggunaan arsitektur penyimpanan

Dalam tutorial ini, saya akan menjelaskan cara mengatur server MinIO untuk penggunaan arsitektur penyimpanan. Seperti siapa pun yang belum tahu apa itu MinIO:ini adalah sistem penyimpanan objek terdistribusi dengan kinerja tinggi. Ini ditentukan oleh perangkat lunak, berjalan pada perangkat keras standar industri, dan 100% open source. Ini sengaja dibangun untuk melayani objek sebagai arsitektur lapisan tunggal untuk mencapai semua fungsi yang diperlukan tanpa kompromi. Hasilnya terlihat sebagai server objek cloud-native yang secara bersamaan dapat diskalakan dan ringan.

Karena dunia rekayasa Cloud telah berkembang semakin matang, ada beberapa hal yang terlintas dalam pikiran mengapa kita membutuhkan MinIO?

Pertimbangkan bahwa jika saat Anda menyajikan solusi Anda di cloud, Anda mungkin akhirnya menggunakan penyimpanan solusi seperti AWS S3, Azure Blob Storage, dan Alibaba OSS. Hal yang sama berlaku untuk konsep jika solusi Anda masih tetap di lokasi karena Minio berfungsi sebagai alternatif arsitektur penyimpanan yang sama dengan layanan penyimpanan cloud yang disediakan.



1. Bagaimana cara kerjanya

Secara konsep sederhana, Minio hadir dalam 2 bagian - bagian klien dan bagian server. Konsep ini juga mencakup dashboard melalui web-ui atau file-browser. Setiap sisi klien dan server relatif mudah diatur dan jika Anda terbiasa dengan CLI (Command Line Interface), Anda akan mudah memahaminya.

Namun ketika kami mendesainnya ke tingkat Produksi, semuanya harus didistribusikan yang berarti solusi yang diberikan harus memastikan untuk berkinerja baik dalam skala besar, pertumbuhan berkembang sendiri, dan ketersediaan tinggi siap. Dengan mempertimbangkan hal ini, minio memiliki konsepnya sendiri yang disebut Kode Penghapusan Terdistribusi .

Konsep ini adalah pendekatan yang andal untuk memecah data di beberapa drive dan mengambilnya kembali, bahkan ketika beberapa drive tidak tersedia. Dengan menggunakan konsep ini, Anda dapat kehilangan setengah dari drive dan data Anda tetap terjamin

Untuk tutorial ini, saya akan menunjukkan cara menginstal dan mengkonfigurasi server MinIO sebagai kode penghapusan terdistribusi. Setelah itu, kita akan melihat sekilas sisi klien tentang cara memanfaatkan layanan MinIO sebagai pengguna akhir.

2. Tahap Instalasi

Untuk tahap instalasi, saya akan mengkonfigurasi 2 server sebagai minio cluster untuk menyiapkan konfigurasi kode penghapusan terdistribusi.

Sekarang kami akan mencantumkan 4 disk drive yang akan kami gunakan untuk mempartisinya sebagai perangkat blok untuk penggunaan minio. Karena arsitektur kami memutuskan untuk menyiapkan beberapa server, drive minimum yang diperlukan untuk server adalah 2 namun jika Anda menggunakan satu server, persyaratan minimum drive adalah 1. Persyaratan detail yang diperlukan untuk desain kode penghapusan dapat dilihat di sini .

Berikut langkah-langkahnya:

 [[email protected] ~]# fdisk -l 

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a4fd8

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 104.1 GB, 104144568320 bytes, 203407360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Seperti yang Anda lihat di atas, di sisi kami ada 4 drive yang terpasang di server kami dengan ukuran masing-masing 8gb.

Selanjutnya kita akan membuat partisi dari setiap drive, kemudian membuat dedicated directory yang akan me-mount ke setiap partisi yang akan kita buat. Berikut langkah-langkahnya.

 
[[email protected] ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4217c4d9.

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-16777215, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
Using default value 16777215
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System
/dev/sdb1 2048 16777215 8387584 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): q

[[email protected] ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[[email protected] ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2096896, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[[email protected] ~]#
[[email protected] ~]# mkdir -p /opt/drive1
[[email protected] ~]# mkdir -p /opt/drive2
[[email protected] ~]# mkdir -p /opt/drive3
[[email protected] ~]# mkdir -p /opt/drive4
[[email protected] ~]#
[[email protected] ~]# mount /dev/sdb1 /opt/drive1
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
[[email protected] ~]#

Setelah selesai, ulangi proses yang sama untuk membuat partisi pada drive yang tersisa kemudian pasang ke setiap direktori yang telah kita buat. Sebagai hasil akhir, Anda akhirnya harus output seperti di bawah ini :-

 [[email protected] ~]# mount /dev/sdb1 /opt/drive1 
[[email protected] ~]# mount /dev/sdc1 /opt/drive2
[[email protected] ~]# mount /dev/sdd1 /opt/drive3
[[email protected] ~]# mount /dev/sde1 /opt/drive4
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
/dev/sdc1 8.0G 33M 8.0G 1% /opt/drive2
/dev/sdd1 8.0G 33M 8.0G 1% /opt/drive3
/dev/sde1 8.0G 33M 8.0G 1% /opt/drive4

Baiklah, karena prasyarat pada drive dilakukan untuk server 1, ulangi konfigurasi yang sama pada server 2 seperti di atas.

3. Tahap Konfigurasi

Sekarang setelah kedua konfigurasi server selesai, mari lanjutkan menginstal layanan minio. Pertama, unduh paket minio seperti yang ditunjukkan di bawah ini:

 [[email protected] ~]# wget https://dl.min.io/server/minio/release/linux-amd64/minio && chmod +x minio 
--2019-09-29 22:23:57-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43831296 (42M) [application/octet-stream]
Saving to: ‘minio’

3% [=> ] 1,335,296 106KB/s eta 6m 33s

Sekarang ulangi hal yang sama seperti di atas pada server 2.

Setelah semuanya selesai, mari kita mulai konfigurasi minio. Kami akan mendefinisikan MINIO_ACCESS_KEY dan MINIO_SECRET_KEY sebagai akses otentikasi. Konfigurasinya seperti di bawah ini :-

 [[email protected] ~]# export MINIO_ACCESS_KEY=shahril && export MINIO_SECRET_KEY=shahril123 
[[email protected] ~]# ./minio server http://10.124.12.{141..142}:9000/opt/drive{1..4}
Waiting for a minimum of 4 disks to come online (elapsed 0s)

Waiting for a minimum of 4 disks to come online (elapsed 2s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for all other servers to be online to format the disks.
Status: 8 Online, 0 Offline.
Endpoint: http://10.124.12.141:9000 http://10.124.12.142:9000
AccessKey: shahril
SecretKey: shahril123

Browser Access:
http://10.124.12.141:9000 http://10.124.12.142:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://10.124.12.141:9000 shahril shahril123

Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide

Sekarang konfigurasi dilakukan di server 1, ulangi langkah yang sama di server 2 untuk konfigurasi.

Setelah semuanya selesai, kita dapat melanjutkan untuk menguji hasilnya

4. Tahap Pengujian

Setelah semuanya selesai, mari kita mulai melihat kegunaan layanan minio. Seperti terlihat pada konfigurasi di atas, kita dapat mengakses dashboard UI-nya melalui browser. Sebagai contoh kita, mari login ke http://10.124.12.141:9000 dengan kunci akses shahril dan kunci rahasia shahril123 seperti yang dikonfigurasi.

Hasilnya akan ditampilkan seperti di bawah ini:

Setelah selesai, itu akan mengarahkan kita ke dasbor ember. Sekarang mari kita buat ember pertama kita.

Klik folder ikon dengan tombol plus dan beri nama ember pertama kami sebagai mylove . Contoh seperti yang ditunjukkan di bawah ini:

Setelah selesai, Anda akan melihat bahwa ember baru telah dibuat dan ditampilkan di panel kiri seperti gambar di bawah.

Setelah selesai, Anda akan melihat bahwa ember baru telah dibuat dan ditampilkan di panel kiri seperti gambar di bawah.

Selanjutnya, mari tambahkan file apa pun dari sisi lokal Anda untuk dimasukkan ke dalam ember

Anda akan melihat bahwa file baru berhasil diunggah ke dalam ember seperti yang ditunjukkan di bawah ini.

Untuk memastikan bahwa konsep terdistribusi diterapkan dengan baik. Mari kita lakukan tes sederhana dengan mengakses dasbor minio melalui server lain. URL server lainnya adalah http://10.124.12.142:9000

Seperti yang diharapkan, bucket dan file yang kami masukkan juga ada di URL server lain seperti yang ditunjukkan di atas.

Sekarang, mari kita buat tes lain. Kali ini kita akan menggunakan workstation lain yang akan mengakses server minio kita menggunakan client console bernama mc .

Dari sisi klien, kami akan membuat file kemudian mengunggahnya ke bucket yang ada.

Kemudian sebagai hasil akhir, kita akan melihat dari dasbor bahwa file baru yang diunggah dari sisi klien ada secara otomatis.

Pertama, buka workstation klien dan unduh paket klien minio. Contoh ditunjukkan di bawah ini:

 [[email protected] ~]# wget https://dl.min.io/client/mc/release/linux-amd64/mc 
--2019-09-30 11:47:38-- https://dl.min.io/client/mc/release/linux-amd64/mc
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16592896 (16M) [application/octet-stream]
Saving to: ‘mc’

100%[==============================================================================>] 16,592,896 741KB/s in 1m 59s

2019-09-30 11:49:37 (137 KB/s) - ‘mc’ saved [16592896/16592896]

[[email protected] ~]# chmod +x mc

Kemudian, buat konfigurasi dari sisi klien untuk mengakses bucket khusus menggunakan kunci akses dan rahasia buat. Contoh seperti di bawah ini:

 [[email protected] ~]# ./mc config host add myminio http://10.124.12.142:9000 shahril shahril123 
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `myminio` successfully.

Setelah dikonfigurasi, Anda akan dapat melihat konten di dalam bucket yang ada. Contoh seperti di bawah ini:

 [[email protected] ~]# ./mc ls myminio 
[2019-09-30 11:16:25 +08] 0B mylove/

[[email protected] ~]# ./mc ls myminio/mylove/
[2019-09-30 11:16:25 +08] 55KiB myself.jpg

Sekarang, buat atau unggah file yang ada dari sisi klien ke dalam ember. Contoh seperti di bawah ini :-

 [[email protected] ~]# ./mc cp new_file.txt myminio/mylove 
new_file.txt: 38 B / 38 B ???????????????????????????????????????????????????????????????? 100.00% 1.02 KiB/s 0s
[[email protected] ~]#

[[email protected] ~]# ./mc ls myminio/mylove/
[2019-09-30 11:16:25 +08] 55KiB myself.jpg
[2019-09-30 11:58:16 +08] 38B new_file.txt

Setelah selesai, seperti yang diharapkan ketika Anda menyegarkan dari sisi dasbor melalui salah satu URL server, Anda akan melihat file baru ditampilkan di sana seperti di bawah ini.

Anda akan melihat tautan lengkap gambar ketika Anda mengklik ikon bagikan di sisi kanan Anda seperti di bawah ini. Ini adalah tautan unik dari setiap objek di dalam ember yang dapat Anda gunakan di sisi aplikasi melalui curl atau API.

Jempolan! sekarang kami telah berhasil menyiapkan dan mengonfigurasi layanan penyimpanan yang dihosting sendiri di lokasi menggunakan Minio. Untuk lebih detailnya bisa cek dokumentasinya disini


Linux
  1. Temukan semua perangkat penyimpanan yang terhubung ke mesin Linux

  2. arsitektur server NTP

  3. Server penyimpanan - Mengganti kartu SAS HBA dengan model yang berbeda

  1. Siapkan Server Email Dengan Virtualmin Untuk Email &Penyimpanan Tanpa Batas

  2. Partisi Loopdevice Tidak Muncul?

  3. Perintah Linux untuk menunggu server SSH aktif

  1. Memahami RAM untuk Server Cloud Anda

  2. Konfigurasikan Pengiriman Log untuk MSSQL Server

  3. Server Ubuntu untuk Dummies