verify-minio-cluster.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/bin/bash
  2. # MinIO集群验证脚本
  3. # 版本: 1.0
  4. # 描述: 验证MinIO集群状态和功能
  5. # 使用方法: ./verify-minio-cluster.sh
  6. # 配置参数
  7. NODE67_IP="172.16.0.67"
  8. NODE68_IP="172.16.0.68"
  9. MINIO_USER="minioadmin"
  10. MINIO_PASSWORD="minioadmin@123456"
  11. # 颜色输出
  12. RED='\033[0;31m'
  13. GREEN='\033[0;32m'
  14. YELLOW='\033[1;33m'
  15. NC='\033[0m' # No Color
  16. echo -e "${GREEN}========================================${NC}"
  17. echo -e "${GREEN}MinIO集群验证脚本${NC}"
  18. echo -e "${GREEN}========================================${NC}"
  19. echo ""
  20. # 检查mc命令
  21. if ! command -v mc &> /dev/null; then
  22. echo -e "${YELLOW}MinIO客户端(mc)未安装,正在安装...${NC}"
  23. wget -q https://dl.min.io/client/mc/release/linux-amd64/mc -O /tmp/mc
  24. chmod +x /tmp/mc
  25. sudo mv /tmp/mc /usr/local/bin/mc || mv /tmp/mc ~/mc
  26. if [ -f ~/mc ]; then
  27. export PATH=$PATH:~
  28. echo -e "${GREEN}✓ mc已安装到 ~/mc${NC}"
  29. else
  30. echo -e "${GREEN}✓ mc已安装${NC}"
  31. fi
  32. fi
  33. # 配置集群别名
  34. echo -e "${YELLOW}[1/5] 配置集群别名...${NC}"
  35. mc alias set minio-cluster http://${NODE67_IP}:9000 ${MINIO_USER} ${MINIO_PASSWORD} 2>/dev/null
  36. if [ $? -eq 0 ]; then
  37. echo -e "${GREEN}✓ 集群别名配置成功${NC}"
  38. else
  39. echo -e "${RED}✗ 集群别名配置失败${NC}"
  40. exit 1
  41. fi
  42. echo ""
  43. # 检查集群节点状态
  44. echo -e "${YELLOW}[2/5] 检查集群节点状态...${NC}"
  45. mc admin info minio-cluster 2>/dev/null
  46. if [ $? -eq 0 ]; then
  47. echo -e "${GREEN}✓ 集群节点状态正常${NC}"
  48. else
  49. echo -e "${RED}✗ 无法获取集群节点状态${NC}"
  50. exit 1
  51. fi
  52. echo ""
  53. # 检查集群健康状态
  54. echo -e "${YELLOW}[3/5] 检查集群健康状态...${NC}"
  55. HEAL_OUTPUT=$(mc admin heal minio-cluster --dry-run 2>&1)
  56. if echo "$HEAL_OUTPUT" | grep -q "No healing needed"; then
  57. echo -e "${GREEN}✓ 集群健康状态良好${NC}"
  58. elif echo "$HEAL_OUTPUT" | grep -q "Objects to heal"; then
  59. echo -e "${YELLOW}⚠ 发现需要修复的对象,执行修复...${NC}"
  60. mc admin heal minio-cluster
  61. echo -e "${GREEN}✓ 修复完成${NC}"
  62. else
  63. echo -e "${RED}✗ 无法检查集群健康状态${NC}"
  64. echo "$HEAL_OUTPUT"
  65. fi
  66. echo ""
  67. # 测试存储桶操作
  68. echo -e "${YELLOW}[4/5] 测试存储桶操作...${NC}"
  69. TEST_BUCKET="cluster-test-$(date +%s)"
  70. mc mb minio-cluster/${TEST_BUCKET} 2>/dev/null
  71. if [ $? -eq 0 ]; then
  72. echo -e "${GREEN}✓ 存储桶创建成功: ${TEST_BUCKET}${NC}"
  73. # 测试文件上传
  74. echo "test cluster $(date)" > /tmp/test-cluster.txt
  75. mc cp /tmp/test-cluster.txt minio-cluster/${TEST_BUCKET}/ 2>/dev/null
  76. if [ $? -eq 0 ]; then
  77. echo -e "${GREEN}✓ 文件上传成功${NC}"
  78. # 测试文件下载
  79. mc cp minio-cluster/${TEST_BUCKET}/test-cluster.txt /tmp/test-cluster-download.txt 2>/dev/null
  80. if [ $? -eq 0 ]; then
  81. echo -e "${GREEN}✓ 文件下载成功${NC}"
  82. # 验证文件内容
  83. if diff -q /tmp/test-cluster.txt /tmp/test-cluster-download.txt > /dev/null; then
  84. echo -e "${GREEN}✓ 文件内容验证通过${NC}"
  85. else
  86. echo -e "${RED}✗ 文件内容不一致${NC}"
  87. fi
  88. else
  89. echo -e "${RED}✗ 文件下载失败${NC}"
  90. fi
  91. # 清理测试文件
  92. rm -f /tmp/test-cluster.txt /tmp/test-cluster-download.txt
  93. mc rb --force minio-cluster/${TEST_BUCKET} 2>/dev/null
  94. echo -e "${GREEN}✓ 测试存储桶已清理${NC}"
  95. else
  96. echo -e "${RED}✗ 文件上传失败${NC}"
  97. fi
  98. else
  99. echo -e "${RED}✗ 存储桶创建失败${NC}"
  100. fi
  101. echo ""
  102. # 检查节点连通性
  103. echo -e "${YELLOW}[5/5] 检查节点连通性...${NC}"
  104. if curl -s -o /dev/null -w "%{http_code}" http://${NODE67_IP}:9000/minio/health/live | grep -q "200"; then
  105. echo -e "${GREEN}✓ 67机器节点健康检查通过${NC}"
  106. else
  107. echo -e "${RED}✗ 67机器节点健康检查失败${NC}"
  108. fi
  109. if curl -s -o /dev/null -w "%{http_code}" http://${NODE68_IP}:9000/minio/health/live | grep -q "200"; then
  110. echo -e "${GREEN}✓ 68机器节点健康检查通过${NC}"
  111. else
  112. echo -e "${RED}✗ 68机器节点健康检查失败${NC}"
  113. fi
  114. echo ""
  115. echo -e "${GREEN}========================================${NC}"
  116. echo -e "${GREEN}MinIO集群验证完成!${NC}"
  117. echo -e "${GREEN}========================================${NC}"
  118. echo ""
  119. echo "集群访问信息:"
  120. echo " 67机器控制台: http://${NODE67_IP}:9001"
  121. echo " 68机器控制台: http://${NODE68_IP}:9001"
  122. echo " 集群API端点: http://${NODE67_IP}:9000 或 http://${NODE68_IP}:9000"
  123. echo ""