搭建Ubuntu上的MinIO集群可以通過Docker容器化技術實現,這樣可以簡化部署和管理過程,提高系統的可移植性和可擴展性。以下是詳細的搭建步驟:
在兩臺服務器的 /etc/hosts
文件中添加對方的主機名解析:
echo "192.168.1.101 minio-node1" | sudo tee -a /etc/hosts
echo "192.168.1.102 minio-node2" | sudo tee -a /etc/hosts
在每臺服務器上創建Docker卷用于數據存儲:
docker volume create minio-data1
docker volume create minio-data2
在每臺服務器上使用Docker運行MinIO容器,并指定數據卷和網絡模式:
docker run -d --name minio \
--restart=always \
--net=host \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v minio-data1:/data1 \
-v minio-data2:/data2 \
minio/minio server \
--address ":9000" \
http://minio-node1:9000/data1 \
http://minio-node1:9000/data2 \
http://minio-node2:9000/data1 \
http://minio-node2:9000/data2
使用MinIO客戶端工具 mc
來驗證集群狀態:
mc alias set myminio http://minio-node1:9000 minioadmin minioadmin
mc admin info myminio
如果輸出顯示所有節點都已加入集群并且狀態正常,說明集群搭建成功。
pip install minio
from minio import Minio
from minio.error import S3Error
# 初始化MinIO Client
client = Minio("minio-node1:9000", access_key="minioadmin", secret_key="minioadmin", secure=False)
# 檢查存儲桶是否存在,不存在則創建
bucket_name = "my-bucket"
try:
client.make_bucket(bucket_name)
except S3Error as exc:
if exc.code != 'BucketAlreadyOwnedByYou':
raise
# 上傳文件
file_path = "/path/to/your/file"
try:
client.fput_object(bucket_name, "object-name", file_path)
except S3Error as exc:
print("Error occurred: ", exc)
# 列出存儲桶中的文件
objects = client.list_objects(bucket_name)
for obj in objects:
print(obj.object_name)
通過上述步驟,你可以在兩臺Ubuntu服務器上成功搭建MinIO集群,并使用Python進行連接和操作。這種部署方式不僅簡化了配置和管理,還提高了系統的可擴展性和可靠性。
請注意,以上步驟是一個大致的指南,具體的搭建過程可能會因為網絡配置、節點環境等因素而有所不同。在實際操作中,建議參考相關的官方文檔和教程,根據具體情況進行操作。