141 lines
4.5 KiB
Bash
Executable File
141 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# MinIO集群验证脚本
|
|
# 版本: 1.0
|
|
# 描述: 验证MinIO集群状态和功能
|
|
# 使用方法: ./verify-minio-cluster.sh
|
|
|
|
# 配置参数
|
|
NODE67_IP="172.16.0.67"
|
|
NODE68_IP="172.16.0.68"
|
|
MINIO_USER="minioadmin"
|
|
MINIO_PASSWORD="minioadmin@123456"
|
|
|
|
# 颜色输出
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}MinIO集群验证脚本${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
|
|
# 检查mc命令
|
|
if ! command -v mc &> /dev/null; then
|
|
echo -e "${YELLOW}MinIO客户端(mc)未安装,正在安装...${NC}"
|
|
wget -q https://dl.min.io/client/mc/release/linux-amd64/mc -O /tmp/mc
|
|
chmod +x /tmp/mc
|
|
sudo mv /tmp/mc /usr/local/bin/mc || mv /tmp/mc ~/mc
|
|
if [ -f ~/mc ]; then
|
|
export PATH=$PATH:~
|
|
echo -e "${GREEN}✓ mc已安装到 ~/mc${NC}"
|
|
else
|
|
echo -e "${GREEN}✓ mc已安装${NC}"
|
|
fi
|
|
fi
|
|
|
|
# 配置集群别名
|
|
echo -e "${YELLOW}[1/5] 配置集群别名...${NC}"
|
|
mc alias set minio-cluster http://${NODE67_IP}:9000 ${MINIO_USER} ${MINIO_PASSWORD} 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 集群别名配置成功${NC}"
|
|
else
|
|
echo -e "${RED}✗ 集群别名配置失败${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 检查集群节点状态
|
|
echo -e "${YELLOW}[2/5] 检查集群节点状态...${NC}"
|
|
mc admin info minio-cluster 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 集群节点状态正常${NC}"
|
|
else
|
|
echo -e "${RED}✗ 无法获取集群节点状态${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 检查集群健康状态
|
|
echo -e "${YELLOW}[3/5] 检查集群健康状态...${NC}"
|
|
HEAL_OUTPUT=$(mc admin heal minio-cluster --dry-run 2>&1)
|
|
if echo "$HEAL_OUTPUT" | grep -q "No healing needed"; then
|
|
echo -e "${GREEN}✓ 集群健康状态良好${NC}"
|
|
elif echo "$HEAL_OUTPUT" | grep -q "Objects to heal"; then
|
|
echo -e "${YELLOW}⚠ 发现需要修复的对象,执行修复...${NC}"
|
|
mc admin heal minio-cluster
|
|
echo -e "${GREEN}✓ 修复完成${NC}"
|
|
else
|
|
echo -e "${RED}✗ 无法检查集群健康状态${NC}"
|
|
echo "$HEAL_OUTPUT"
|
|
fi
|
|
echo ""
|
|
|
|
# 测试存储桶操作
|
|
echo -e "${YELLOW}[4/5] 测试存储桶操作...${NC}"
|
|
TEST_BUCKET="cluster-test-$(date +%s)"
|
|
mc mb minio-cluster/${TEST_BUCKET} 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 存储桶创建成功: ${TEST_BUCKET}${NC}"
|
|
|
|
# 测试文件上传
|
|
echo "test cluster $(date)" > /tmp/test-cluster.txt
|
|
mc cp /tmp/test-cluster.txt minio-cluster/${TEST_BUCKET}/ 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 文件上传成功${NC}"
|
|
|
|
# 测试文件下载
|
|
mc cp minio-cluster/${TEST_BUCKET}/test-cluster.txt /tmp/test-cluster-download.txt 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 文件下载成功${NC}"
|
|
|
|
# 验证文件内容
|
|
if diff -q /tmp/test-cluster.txt /tmp/test-cluster-download.txt > /dev/null; then
|
|
echo -e "${GREEN}✓ 文件内容验证通过${NC}"
|
|
else
|
|
echo -e "${RED}✗ 文件内容不一致${NC}"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗ 文件下载失败${NC}"
|
|
fi
|
|
|
|
# 清理测试文件
|
|
rm -f /tmp/test-cluster.txt /tmp/test-cluster-download.txt
|
|
mc rb --force minio-cluster/${TEST_BUCKET} 2>/dev/null
|
|
echo -e "${GREEN}✓ 测试存储桶已清理${NC}"
|
|
else
|
|
echo -e "${RED}✗ 文件上传失败${NC}"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗ 存储桶创建失败${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 检查节点连通性
|
|
echo -e "${YELLOW}[5/5] 检查节点连通性...${NC}"
|
|
if curl -s -o /dev/null -w "%{http_code}" http://${NODE67_IP}:9000/minio/health/live | grep -q "200"; then
|
|
echo -e "${GREEN}✓ 67机器节点健康检查通过${NC}"
|
|
else
|
|
echo -e "${RED}✗ 67机器节点健康检查失败${NC}"
|
|
fi
|
|
|
|
if curl -s -o /dev/null -w "%{http_code}" http://${NODE68_IP}:9000/minio/health/live | grep -q "200"; then
|
|
echo -e "${GREEN}✓ 68机器节点健康检查通过${NC}"
|
|
else
|
|
echo -e "${RED}✗ 68机器节点健康检查失败${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}MinIO集群验证完成!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
echo "集群访问信息:"
|
|
echo " 67机器控制台: http://${NODE67_IP}:9001"
|
|
echo " 68机器控制台: http://${NODE68_IP}:9001"
|
|
echo " 集群API端点: http://${NODE67_IP}:9000 或 http://${NODE68_IP}:9000"
|
|
echo ""
|
|
|