ubuntu部署minio集群

minio集群介紹

官方文檔:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html

本方案采用在多節點多驅動器 (MNMD) 或“分布式”配置部署 MinIO。 MNMD 部署提供企業級性能、可用??性和可擴展性,是所有生產工作負載的推薦拓撲。

MNMD 部署支持糾刪碼配置,該配置可以容忍部署中最多一半的節點或驅動器丟失,同時繼續提供讀取操作服務。
在這里插入圖片描述

集群部署要求

  • 官方推薦的最小配置是4臺服務器,每臺服務器4個盤,這樣可以做到minio高可用。
  • 建議使用單獨的分區作為minio的數據存儲目錄,不能使用根分區的目錄作為minio的數據存儲目錄,但可以每個節點僅一塊獨立磁盤創建4個常規目錄。
  • MinIO 不支持分布式部署的非連續主機名或 IP 地址。可以在每個節點上使用 /etc/hosts 來設置支持擴展表示法的簡單 DNS 方案。
  • 多節點系統必須保持時間和日期同步,以維持穩定的節點間操作和交互。

ubuntu部署minio集群

節點規劃及磁盤規劃如下,每個節點準備四塊磁盤:

節點名稱節點IPminio磁盤掛載點操作系統
minio1.example.com192.168.72.51/dev/sdb /dev/sdc /dev/sdd /dev/sde/var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4Ubuntu22.04
minio2.example.com192.168.72.52/dev/sdb /dev/sdc /dev/sdd /dev/sde/var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4Ubuntu22.04
minio3.example.com192.168.72.53/dev/sdb /dev/sdc /dev/sdd /dev/sde/var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4Ubuntu22.04
minio4.example.com192.168.72.54/dev/sdb /dev/sdc /dev/sdd /dev/sde/var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4Ubuntu22.04
lb1.example.com192.168.72.55--Ubuntu22.04
lb2.example.com192.168.72.56--Ubuntu22.04
VIP192.168.72.100---

說明:VIP地址解析到minio.example.com域名,作為統一入口。

  • minio API訪問地址為:http://minio.example.com
  • minio console訪問地址為:http://minio.example.com/minio/ui

集群架構如下:
在這里插入圖片描述

準備節點

所有minio節點分別配置主機名

hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com

所有minio節點分別配置hosts解析

cat >/etc/hosts<<EOF
192.168.72.51 minio1.example.com
192.168.72.52 minio2.example.com
192.168.72.53 minio3.example.com
192.168.72.54 minio4.example.com
EOF

所有minio節點配置時間同步。
Minio 多節點系統必須保持時間和日期同步,以維持穩定的節點間操作和交互。

apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai

準備磁盤

每個節點掛載4塊磁盤,其中sda為系統盤:

root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde

在每個節點上,分別創建四個目錄來掛載四個驅動器:

sudo mkdir -p /var/lib/minio/data1
sudo mkdir -p /var/lib/minio/data2
sudo mkdir -p /var/lib/minio/data3
sudo mkdir -p /var/lib/minio/data4

分別在每個節點上,將磁盤格式化為 XFS 文件系統:

sudo mkfs.xfs /dev/sdb -L DISK1
sudo mkfs.xfs /dev/sdc -L DISK2
sudo mkfs.xfs /dev/sdd -L DISK3
sudo mkfs.xfs /dev/sde -L DISK4

配置自動掛載

cat >>/etc/fstab<<EOF
LABEL=DISK1      /var/lib/minio/data1     xfs     defaults,noatime  0       2
LABEL=DISK2      /var/lib/minio/data2     xfs     defaults,noatime  0       2
LABEL=DISK3      /var/lib/minio/data3     xfs     defaults,noatime  0       2
LABEL=DISK4      /var/lib/minio/data4     xfs     defaults,noatime  0       2
EOF

掛載所有在 /etc/fstab 文件中已定義但尚未掛載的文件系統

sudo mount -av

確認文件系統掛載正常

root@minio1:~# df -hT
......
/dev/sdb                     xfs    100G  746M  100G   1% /var/lib/minio/data1
/dev/sdc                     xfs    100G  746M  100G   1% /var/lib/minio/data2
/dev/sdd                     xfs    100G  746M  100G   1% /var/lib/minio/data3
/dev/sde                     xfs    100G  746M  100G   1% /var/lib/minio/data4

安裝minio

分別在每個節點上使用deb包安裝 MinIO

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240704142545.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

使用 groupadduseradd 命令創建用戶和組

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio

創建服務環境文件

/etc/default/minio 創建環境文件。 MinIO 服務使用此文件作為 MinIO 和 minio.service 文件使用的所有環境變量的源。

cat >/etc/default/minio<<EOF
MINIO_VOLUMES="http://minio{1...4}.example.com:9000/var/lib/minio/data{1...4}/minio"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=Minio@123456
MINIO_BROWSER_REDIRECT_URL="http://minio.example.com/minio/ui"
EOF

在部署中的每個節點上發出以下命令以啟動 MinIO 服務,需要多個節點依次同時執行

sudo systemctl restart minio.service

使用以下命令確認服務在線且正常運行:

sudo systemctl status minio.service
journalctl -f -u minio.service

打開MinIO控制臺

打開瀏覽器并訪問端口 :9001 處的任何 MinIO 主機名以打開 MinIO 控制臺登錄頁面。例如

http://minio1.example.com:9001

使用上一步中的 minio_root_userminio_root_password 登錄。

可以使用 MinIO 控制臺執行一般管理任務,例如身份和訪問管理、指標和日志監控或服務器配置。每個 MinIO 服務器都包含其自己的嵌入式 MinIO 控制臺。

配置負載均衡

官方文檔:https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

使用nginxkeepalived實現負載均衡,準備2臺服務器作為負載均衡節點。

分別在lb節點配置主機名

hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com

分別在lb節點配置hosts解析

cat >/etc/hosts<<EOF
192.168.72.55 lb1.example.com
192.168.72.56 lb2.example.com
192.168.72.51 minio1.example.com
192.168.72.52 minio2.example.com
192.168.72.53 minio3.example.com
192.168.72.54 minio4.example.com
EOF

在2個節點安裝nginx和keepalived:

apt install -y nginx keepalived

創建nginx配置文件,修改server地址并自定義listen端口,注意修改server_name參數:

cat > /etc/nginx/conf.d/minio-lb.conf <<'EOF'
upstream minio_s3 {least_conn;server minio1.example.com:9000;server minio2.example.com:9000;server minio3.example.com:9000;server minio4.example.com:9000;
}upstream minio_console {least_conn;server minio1.example.com:9001;server minio2.example.com:9001;server minio3.example.com:9001;server minio4.example.com:9001;
}server {listen       80;listen  [::]:80;server_name  minio.example.com;# Allow special characters in headersignore_invalid_headers off;# Allow any size file to be uploaded.# Set to a value such as 1000m; to restrict file size to a specific valueclient_max_body_size 0;# Disable bufferingproxy_buffering off;proxy_request_buffering off;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 300;# Default is HTTP/1, keepalive is only enabled in HTTP/1.1proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;proxy_pass https://minio_s3; # This uses the upstream directive definition to load balance}location /minio/ui/ {rewrite ^/minio/ui/(.*) /$1 break;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-NginX-Proxy true;# This is necessary to pass the correct IP to be hashedreal_ip_header X-Real-IP;proxy_connect_timeout 300;# To support websockets in MinIO versions released after January 2023proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)# Uncomment the following line to set the Origin request to an empty string# proxy_set_header Origin '';chunked_transfer_encoding off;proxy_pass https://minio_console; # This uses the upstream directive definition to load balance}
}
EOF

啟動nginx服務

systemctl restart nginx

創建keepalived配置文件,根據實際環境修改interfacevirtual_ipaddress參數,2個節點配置相同:

cat > /etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalivedglobal_defs {router_id miniovrrp_version 2vrrp_garp_master_delay 1script_user rootenable_script_security 
}vrrp_script chk_nginx {script       "/usr/bin/killall -0 nginx"timeout 3interval 3   # check every 1 secondfall 2       # require 2 failures for KOrise 2       # require 2 successes for OK
}vrrp_instance lb-minio {state BACKUPinterface ens33virtual_router_id 51priority 100advert_int 1nopreemptauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.100}track_script {chk_nginx}
}
EOF

啟動keepalvied服務

systemctl restart keepalived

查看生成的VIP地址

root@lb1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:50:56:9a:92:75 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.72.55/24 brd 192.168.72.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.72.100/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::250:56ff:fe9a:9275/64 scope link valid_lft forever preferred_lft forever

測試連接

在需要訪問minio的機器上,配置hosts解析

echo "192.168.72.100 minio.example.com" >>/etc/hosts

瀏覽器訪問minio console

http://minio.example.com/minio/ui/

查看Metrics信息:
在這里插入圖片描述

任意機器安裝minio客戶端

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/

配置minio客戶端

mc alias set myminio http://minio.example.com minioadmin Minio@123456

通過API接口,查看集群狀態

root@ubuntu:~# mc admin info myminio
●  minio1.example.com:9000Uptime: 25 minutes Version: 2024-07-04T14:25:45ZNetwork: 4/4 OK Drives: 4/4 OK Pool: 1●  minio2.example.com:9000Uptime: 25 minutes Version: 2024-07-04T14:25:45ZNetwork: 4/4 OK Drives: 4/4 OK Pool: 1●  minio3.example.com:9000Uptime: 25 minutes Version: 2024-07-04T14:25:45ZNetwork: 4/4 OK Drives: 4/4 OK Pool: 1●  minio4.example.com:9000Uptime: 25 minutes Version: 2024-07-04T14:25:45ZNetwork: 4/4 OK Drives: 4/4 OK Pool: 1Pools:1st, Erasure sets: 1, Drives per erasure set: 1616 drives online, 0 drives offline
root@ubuntu:~#  

參考:https://elma365.com/en/help/minio-cluster.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43467.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jmeter-beanshell學習4-beanshell截取字符串

再寫個簡單點的東西&#xff0c;截取字符串&#xff0c;參數化文件統一用csv&#xff0c;然后還要用excel打開&#xff0c;如果是數字很容易格式就亂了。有同事是用雙引號把數字引起來&#xff0c;報文里就不用加引號了&#xff0c;但是這樣beanshell處理起來&#xff0c;好像容…

Facebook社交平臺的未來發展趨勢分析

隨著科技和社交需求的不斷演變&#xff0c;Facebook作為全球最大的社交平臺之一&#xff0c;其未來發展的趨勢備受關注。從技術創新到社會影響&#xff0c;Facebook正在經歷著前所未有的變化和挑戰。本文將探討Facebook未來發展的幾個關鍵趨勢&#xff0c;并分析其可能的影響和…

[Linux][Shell][Shell變量]詳細講解

目錄 1.本地變量2.變量定義3.取出變量值4.特殊變量5.特殊狀態變量6.shell內置的變量命令1.echo2.eval3.exec 7.截取字符串8.特殊shell擴展變量處理1.語法2.應用場景 1.本地變量 定義Shell變量&#xff0c;變量名不需要加$本地變量只在?戶當前shell?存期中有效 2.變量定義 變…

SpringBoot防止重復提交 AOP+自定義注解+redis

1.什么是重復提交呢 在Web開發中&#xff0c;重復提交&#xff08;也稱為雙重提交或重復表單提交&#xff09;是指用戶在沒有明確意圖的情況下&#xff0c;多次提交同一表單的情況。這可能是由于用戶多次點擊提交按鈕、表單提交過程中的網絡延遲導致用戶重復點擊、或者由于瀏覽…

雙向全橋隔離dc-dc變換器(DAB)

DAB(dual active bridge) 雙向全橋隔離dc-dc變換器&#xff08;DAB&#xff09;和Buck/Boost不同&#xff0c;該變換器通過交流電感進行功率傳輸&#xff0c;其調制和控制不適合直接借鑒已有的研究。 調制挑戰&#xff1a;開關網絡相對復雜&#xff0c;調制自由度較多&#x…

揭秘SQL Server數據庫選項:性能與行為的調控者

揭秘SQL Server數據庫選項&#xff1a;性能與行為的調控者 在SQL Server的世界中&#xff0c;數據庫選項是那些可以調整以優化數據庫性能和行為的設置。它們是數據庫管理員和開發者的得力助手&#xff0c;通過精細調控&#xff0c;可以顯著提升數據庫的響應速度和資源利用率。…

MySQL MVCC

總結自小林coding&#xff0c;bojiangzhou 臟讀、不可重復讀、幻讀 說的都是并發讀取的問題&#xff0c;最簡單的方式就是給記錄加一把鎖&#xff0c;不管是更新、讀取記錄都需要競爭到這把鎖之后才能操作。但這種方式的并發性能可想而知會有多么低。 于是 InnoDB 就設計了MVC…

C#——二進制流序列化和反序列化

C#二進制流序列化和反序列化 在C#中&#xff0c;可以使用BinaryFormatter來進行二進制的序列化和反序列化。 首先&#xff0c;定義一個可序列化的類 [Serializable] public class MyObject {public int IntProperty { get; set; }public string StringProperty { get; set; …

ubuntu 上配置開機自動啟動ssh

一般安裝了就會自動啟動。但是各種rc.local, cron都測試了一下&#xff0c;還是這個systemd有效 使用 systemd 服務 創建文件 sudo nano /etc/systemd/system/custom-ssh.service [Unit] DescriptionStart SSH service at boot Afternetwork.target[Service] ExecStart/usr/…

軟件開發(續).NET框架

1.解釋一下.NET框架中的CLR&#xff08;公共語言運行時&#xff09;是什么&#xff0c;以及它的作用和功能是什么&#xff1f; CLR&#xff08;Common Language Runtime&#xff09;的概念和作用 在.NET框架中&#xff0c;CLR&#xff08;Common Language Runtime&#xff09…

代碼優化(2)——小程序登錄

驗證身份的時候&#xff0c;依賴的是cookie里面的token $this->request->server(HTTP_TOKEN,$this->request->request(token, \think\Cookie::get(token))) 小程序的交互權限驗證&#xff0c;一般放到header里面進行鑒權&#xff0c;極少是通過cookie來傳遞參數驗證…

一起來了解深度學習中的“梯度”

文章目錄 前言一、什么是梯度&#xff1f;二、梯度計算三、優化算法四、示例五、梯度的作用六、形象化解釋七、如果完全不懂公式可以實現這個算法嗎&#xff1f;1. 使用 Hugging Face Transformers 實現深度學習任務1) 安裝庫2) 加載預訓練模型和分詞器3) 準備數據4) 進行推理5…

LeetCode HOT100(二)雙指針

移動0 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 解法1&#xff1a;雙指針交換 指針L&…

“論基于構件的軟件開發方法及其應用”寫作框架,軟考高級論文,系統架構設計師論文

論文真題 基于構作的軟件開發 (Component-Based Software Development&#xff0c;CBSD) 是一種基于分布對象技術、強調通過可復用構件設計與構造軟件系統的軟件復用途徑。基于構件的軟件系統中的構件可以是COTS &#xff08;Commercial-Off-the-Shelf&#xff09;構件&#x…

Spring Boot輕松整合Minio實現文件上傳下載功能

一、Linux 安裝Minio 安裝 在/root/xxkfz/soft目錄下面創建文件minio文件夾&#xff0c;進入minio文件夾&#xff0c;并創建data目錄&#xff1b; [rootxxkfz soft]# mkdir minio [rootxxkfz soft]# cd minio [rootxxkfz minio]# mkdir data 執行如下命令進行下載 [rootxx…

Java內存劃分詳解:從基礎到進階

Java內存劃分詳解&#xff1a;從基礎到進階 1. 程序計數器&#xff08;Program Counter Register&#xff09;2. Java虛擬機棧&#xff08;Java Virtual Machine Stack&#xff09;3. 堆&#xff08;Heap&#xff09;4. 方法區&#xff08;Method Area&#xff09;5. 運行時常量…

DDD架構面試問題

基礎概念 什么是領域驅動設計&#xff08;DDD&#xff09;&#xff1f; 請解釋一下DDD的核心思想和目標。 DDD中的領域&#xff08;Domain&#xff09;是什么&#xff1f; 請描述一下領域的概念以及它在軟件開發中的重要性。 什么是限界上下文&#xff08;Bounded Context&am…

ArduPilot開源代碼之OpticalFlow_backend

ArduPilot開源代碼之OpticalFlow_backend 1. 源由2. Library設計3. 重要例程3.1 OpticalFlow_backend::_update_frontend3.2 OpticalFlow_backend::_applyYaw 4. 總結5. 參考資料 1. 源由 光流計是一種低成本定位傳感器&#xff0c;所有的光流計設備傳感驅動代碼抽象公共部分統…

[計網初識1] TCP/UDP

學習內容 1.TCP建立鏈接的3次握手&#xff0c;斷開連接的4次揮手 2.TCP報文段組成 內容 1.TCP 建立連接的3次握手? 假設主動方是客戶端&#xff0c;被動方是服務端。 第一次 客戶端給服務端發送 “hello,我是客戶端” (TCP段中 SYN1) 第二次 服務端給客戶端發送"我接…

從零開始的python學習生活2

接上封裝 class Phone:__volt0.5def __keepsinglecore(self):print("讓cpu以單核運行")def if5G(self):if self.__volt>1:print("5G通話已開啟")else:self.__keepsinglecore()print("電量不足&#xff0c;無法使用5G通話&#xff0c;已經設置為單…