背景介绍
在一个ucloud的后端配置中,有2+1个后端,前两个为容器集群gateway的地址和端口,而另一个是haproxy反代,用于特殊情况下的限速处理。所以,如果启用2,则正常工作;如果启用1,则全部流量过haproxy并接受限速处理。
问题是什么呢?
梳理文件过程中,之前写的脚本不见了,我嘞个去。但是呢,有其他的文件。稀里糊涂的,不知道怎么搞的了。
处理办法
既然这样,那就根据还有依稀的记忆,进行还原吧。
处理过程
编写脚本
整个代码如下。
#!/bin/env python3
from ucloud.core import exc
from ucloud.client import Client
import sys
client = Client({
"region": "cn-bj2",
"project_id": "xxx",
"public_key": "xxx",
"private_key": "xxx",
})
def info():
try:
resp = client.ulb().describe_ulb({
'ULBId': 'ulb-23jeos'
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
def start():
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-cobbpkhwmgl',
'Enabled': 1,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-dm5jju3t',
'Enabled': 0,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-nweidvwj',
'Enabled': 0,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
def stop():
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-cobbpkhwmgl',
'Enabled': 0,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-dm5jju3t',
'Enabled': 1,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
try:
resp = client.ulb().update_backend_attribute({
'ULBId': 'ulb-23jeos',
'BackendId': 'backend-nweidvwj',
'Enabled': 1,
})
except exec.UCloudException as e:
print(e)
else:
print(resp)
if __import__('__main__').__name__ == '__main__':
if len(sys.argv) > 1:
command = sys.argv[1].lower()
if command == 'start':
start()
elif command == 'stop':
stop()
elif command == 'info':
info()
else:
print('Usage: %s start|stop|info' % sys.argv[0])
else:
print('No command provided. please enter start|stop|info.')
代码首先定义了一段ucloud的信息,包括region project_id以及aksk信息。
然后定义了三个函数,info用于获取该ulb的描述信息,里面也有3个后端的backendid。start函数用于启用haproxy节点禁用日常节点。stop函数用于关闭haproxy节点启用日常节点 。
最后来一个main函数,用于获取用户输入并调用相应函数。
测试结果还不错:
那个错误的地方不知道从哪里拷贝了一个backendid。其他两次正常测试,一次是start,一次是stop。
参考
https://ucloud.github.io/ucloud-sdk-python3/services.html#ulb