| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #!/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 ""
|