目的先行:我为什么要写这么一个自动化工具

说实话,现在的我是一点也离不开AI了,自从开始研究AIOps后,以往日常工作中,重复的事情,无异议的事情,浪费时间的事情,现在只要一看到,我就会先思考怎么做成自动,怎么可以提高我的个人效率,当然,也想过帮同事提效,不过最主要的还是想把自己的时间腾出来,才可能有精力帮助别人。

言归正传,那我做这个“SLB 权重调整工具”的初衷是什么呢

这就要从一项日常工作说起:“配合研发上下线服务”

  • ①就是将需要上线的服务所在监听的权重改为0;
  • ②研发通过发版平台将代码发布到服务器上;
  • ③验证测试无误后,再讲对应权重改为100;
    在这里插入图片描述
    【图1】
    在这里插入图片描述【图2】

用过阿里云负载的伙伴们都知道,默认服务器组修改权重,直接生效。

不过“虚拟服务器组”则不然,改完权重需要保存,才生效,这还不算完,改完权重,界面会直接跳转到“虚拟服务器组”界面,这是就要手动翻找刚才“虚拟服务器组”,点击进去,等待下一步操作,说实话,就是这一步让我烦不胜烦。
在这里插入图片描述
【图3】
在这里插入图片描述
【图4】

可能很多运维大佬会觉得:就这?

对,就这,操作不难,但是心烦,所以,忍无可忍,我就写了这么一个工具,下面,简单介绍下它的功能。


AutoOps — SLB 权重调整工具

一键调整阿里云 SLB 后端服务器权重,用于服务上下线操作。

直接本地浏览器操作,不用登录云平台,只需要知道负载IP、端口,然后“点、点、点”,就可以了

原发已发布到github,有需自取哈:
Github-AutoOps-SLB源码

一、功能

当前版本大概有这么4个功能

  • 搜索负载均衡 — 按名称 / ID / IP 搜索
  • 查看后端服务器 — 展示实例 ID、私网 IP、端口、类型、当前权重
  • 调整权重 — 0(下线)/ 100(上线),含变更预览和确认
  • 安全约束 — 只调权重,其他操作不写不改
    在这里插入图片描述

二、使用方式

cd AutoOps
python -m venv .venv
source .venv/Scripts/activate      # Windows Git Bash
# 或 .venv\Scripts\activate        # Windows CMD
pip install -r requirements.txt
python main.py
# 浏览器打开 http://localhost:10000

操作流程

1. 输入 LB 名称/ID/IP + 端口 → 搜索
2. 勾选要操作的服务器 + 选目标权重
3. 预览变更 → 确认执行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、原理

通过阿里云 SLB API 查询监听器和后端服务器关联,支持四种协议:

协议 查询 API
HTTP DescribeLoadBalancerHTTPListenerAttribute
HTTPS DescribeLoadBalancerHTTPSListenerAttribute
TCP DescribeLoadBalancerTCPListenerAttribute
UDP DescribeLoadBalancerUDPListenerAttribute

服务器检索优先级:

1. ListenerPortAndProtocol 的 VServerGroupId
2. 协议专属 ListenerAttribute API 补查
3. 转发规则 DescribeRules
4. 默认服务器组(兜底)

四、项目结构

AutoOps/
├── main.py              # FastAPI 服务入口
├── config.py            # 配置加载
├── aliyun_slb.py        # SLB API 封装
├── templates/
│   ├── base.html        # 基础模板
│   ├── index.html       # 主页
│   └── partials/        # HTMX 分部模板
├── static/style.css     # 深色主题样式
├── requirements.txt
├── README.md
└── .env.example

五、配置

凭证从项目根目录的 .env 文件读取:

这个env的目录自定义即可

ALIBABA_ACCESS_WRITE_KEY=xxx   # 读写密钥,用于调整权重
ALIBABA_SECRET_WRITE_KEY=xxx
ALIBABA_REGION=cn-beijing

参考 .env.example 复制创建。也可同时在 .env 中配置只读密钥(ALIBABA_ACCESS_KEY)供其他工具使用。

六、安全说明

  • 只封装 SetBackendServers / SetVServerGroupAttribute 两个写操作
  • 执行前必有变更预览 + 用户确认弹窗
  • 服务仅绑定 127.0.0.1(本地访问)

请不要以此视为定论,这只是我的个人经验,如需实践使用,请现在测试环境验证无误再对生产环境操作

愿AI为每一个岗位所用

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐