开源shell脚本系列-检查etcd集群可用性

2023-03-17 15:32:16 浏览数 (3)

图好看不?AI生成的,这几天也在测试AI绘图这个东东,挺牛叉的。咱们的社区工具平台在PC的web端已经完成了。

大家没事可以去看看,设置个主页也行其实挺好的:https://www.98dev.com/index,主要用于一些关键性新闻的收集,数据实时更新。

有啥意见和建议可以留言提给我。有好的IT资讯或者资源可以推荐给我,我到时候都会集成进去。

正在研究手机端页面和小程序,然后再集成各种AI项目进去。大概是这个思路。

说正事!

波哥根据自己的日常工作情况开源一个关于etcd的shell脚本。这个功能我已经集成到公司项目中了,用python写的,关联性比较强没办法单独开源出来,花点时间用shell重写了版。有需要的可以试试或者在我这个基础上改改。

脚本说明:

脚本需要可以指定集群地址,端口,账号密码以及脚本执行的循环次数。

脚本功能:

可以输出集群可用性,会对集群的/test/test.txt进行写入,读取,删除测试。结果考虑有可能中文乱码,双语显示。

代码语言:javascript复制
#!/bin/bash

# 配置etcd集群地址、端口、账号、密码
ETCD_ENDPOINTS="http://127.0.0.1:2379"
ETCD_USERNAME=""
ETCD_PASSWORD=""

# 验证集群可读可写性的key
ETCD_TEST_KEY="/test/test.txt"

# 循环次数
LOOP_TIMES=1

# 验证etcd集群是否健康
function check_cluster_health() {
  local health=$(ETCDCTL_API=3 etcdctl --endpoints=$ETCD_ENDPOINTS 
                --user=$ETCD_USERNAME:$ETCD_PASSWORD 
                endpoint health 2>&1)
  if [[ $health =~ "unhealthy" ]]; then
    echo "ETCD集群健康状态: 不健康"
    echo "ETCD Cluster Health: Unhealthy"
    echo $health
    exit 1
  else
    echo "ETCD集群健康状态: 健康"
    echo "ETCD Cluster Health: Healthy"
  fi
}

# 验证集群可读可写性
function check_read_write() {
  local value="hello world"
  # put
  ETCDCTL_API=3 etcdctl --endpoints=$ETCD_ENDPOINTS 
    --user=$ETCD_USERNAME:$ETCD_PASSWORD 
    put $ETCD_TEST_KEY "$value" >/dev/null
  if [[ $? -eq 0 ]]; then
    echo "写入ETCD集群成功,key: $ETCD_TEST_KEY, value: $value"
    echo "Write to ETCD cluster successfully, key: $ETCD_TEST_KEY, value: $value"
  else
    echo "写入ETCD集群失败,key: $ETCD_TEST_KEY, value: $value"
    echo "Write to ETCD cluster failed, key: $ETCD_TEST_KEY, value: $value"
    exit 1
  fi

  # get
  local ret=$(ETCDCTL_API=3 etcdctl --endpoints=$ETCD_ENDPOINTS 
              --user=$ETCD_USERNAME:$ETCD_PASSWORD 
              get $ETCD_TEST_KEY)
  if [[ "$ret" == *"$value"* ]]; then
    echo "从ETCD集群读取数据成功,key: $ETCD_TEST_KEY, value: $value"
    echo "Read from ETCD cluster successfully, key: $ETCD_TEST_KEY, value: $value"
  else
    echo "从ETCD集群读取数据失败,key: $ETCD_TEST_KEY, value: $value"
    echo "Read from ETCD cluster failed, key: $ETCD_TEST_KEY, value: $value"
    exit 1
  fi

  # delete
  ETCDCTL_API=3 etcdctl --endpoints=$ETCD_ENDPOINTS 
    --user=$ETCD_USERNAME:$ETCD_PASSWORD 
    del $ETCD_TEST_KEY >/dev/null

执行案例:

代码语言:javascript复制
./etcd_check.sh

觉得不错别忘了给波哥点赞,分享哦!

1 人点赞