使用CLI便捷管理弹性负载均衡ELB
引导式阅读
Others
使用CLI便捷管理弹性负载均衡ELB
作者
C***
上架时间
2022-01-28 08:24:05

描述

基于华为云CLI,以shell脚本模板形式集成CLI调用命令,对弹性负载均衡ELB进行管理和配置。

关于华为云CLI更多使用帮助请参考用户指南

场景介绍

本示例以以创建并配置弹性负载均衡ELB为主,同时以注释的形式提供了弹性负载均衡ELB相关操作的其他命令,具体如下:

弹性负载均衡ELB相关:创建、查询、更新、删除负载均衡器,以及查询负载均衡状态树;

后端云服务器组相关:创建、查询、更新、删除后端云服务器组;

后端云服务器相关:创建、查询、更新、删除后端云服务器;

健康检查相关:创建、查询、更新、删除健康检查;

监听器相关:创建、查询、更新、删除监听器;

转发策略相关:创建、查询、更新、删除转发策略;

转发规则相关:创建、查询、更新、删除转发规则。

前提条件

下载安装HCloud CLI

HCloud CLI的下载安装请参考安装指南

获取认证相关的信息

1.AK/SK 访问密钥

请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的AK/SK。更多信息请查看访问密钥

2.region 当前可调用的区域

华为云各服务应用区域和各服务的终端节点请查看地区和终端节点

3.project-id 云服务所在项目ID

根据需要操作的项目所属区域选择对应的项目ID 。

配置(删除配置)HCloud CLI

hcloud configure set --profile=cliProfile --project-id={project_id} --region={region} --mode=AKSK --access-key={AK} --secret-key={SK} --read-timeout=60 --connect-timeout=30

hcloud configure delete --profile=cliProfile

获取负载均衡器相关的参数

vip_subnet_id:负载均衡器所在的子网ID

可通过执行hcloud VPC ListSubnets/v2 --vpc_id={vpc_id}命令获取。

开发说明

本模板以创建并配置弹性负载均衡ELB为主线,过程中如遇异常将逆向释放相关云资源。同时,以注释的形式提供了弹性负载均衡ELB相关操作的其他命令。使用时请根据实际需要略过相关过程、或修改部分参数内容。执行完模板后,建议您检查帐户中的资源,以确保资源已经全部释放。

示例代码

使用如下代码管理弹性负载均衡ELB,调用前请根据实际情况修改或替换部分参数内容。

# Creating a load balancer hcloud ELB CreateLoadbalancer/v2 --loadbalancer.name="loadbalancer20210819" --loadbalancer.description="simple of balancer" --loadbalancer.vip_subnet_id={subnet_id} # Querying Load Balancers hcloud ELB ListLoadbalancers/v2 # Querying Details of a Load Balancer hcloud ELB ShowLoadbalancer/v2 --loadbalancer_id=$loadbalancer_id # Querying the Status Tree of a Load Balancer hcloud ELB ShowLoadbalancersStatus/v2 --loadbalancer_id={loadbalancer_id} # Updating a Load Balancer hcloud ELB UpdateLoadbalancer/v2 --loadbalancer_id={loadbalancer_id} --loadbalancer.name={loadbalancer_name} --loadbalancer.description={loadbalancer_description} # Deleting a Load Balancer hcloud ELB DeleteLoadbalancer/v2 --loadbalancer_id={loadbalancer_id}

使用如下代码管理后端云服务器组,调用前请根据实际情况修改部分参数内容。

# Creating a Backend Server Group hcloud ELB CreatePool/v2 --pool.protocol="HTTP" --pool.session_persistence.type="SOURCE_IP" --pool.loadbalancer_id={loadbalancer_id} --pool.name="server-group-in-cn-north-4" --pool.lb_algorithm="ROUND_ROBIN" --pool.description="simple of server group" # Querying Backend Server Groups hcloud ELB ListPools/v2 --name={pool_name} # Querying Details of a Backend Server Group hcloud ELB ShowPool/v2 --pool_id={pool_id} # Updating a Backend Server Group hcloud ELB UpdatePool/v2 --pool_id={pool_id} --pool.name={pool_name} --pool.session_persistence.persistence_timeout=30 --pool.session_persistence.type="HTTP_COOKIE" --pool.session_persistence.cookie_name={cookie_name} --pool.lb_algorithm="LEAST_CONNECTIONS" --pool.description={pool_description} # Deleting a Backend Server Group hcloud ELB DeletePool/v2 --pool_id={pool_id}

使用如下代码管理后端云服务器,调用前请根据实际情况修改或替换部分参数内容。

# Adding a Backend Server hcloud ELB CreateMember/v2 --pool_id={pool_id} --member.address={member_address} --member.protocol_port=80 --member.name={member_name} --member.subnet_id={subnet_id} --member.weight=1 # Querying Backend Servers hcloud ELB ListMembers/v2 --pool_id={pool_id} # Querying Details of a Backend Server hcloud ELB ShowMember/v2 --member_id={member_id} --pool_id={pool_id} # Updating a Backend Server hcloud ELB UpdateMember/v2 --member_id={member_id} --pool_id={pool_id} --member.name={member_name} --member.weight=2 # Removing a Backend Server hcloud ELB DeleteMember/v2 --member_id={member_id} --pool_id={pool_id}

使用如下代码管理健康检查,调用前请根据实际情况修改部分参数内容。

# Creating a Health Check hcloud ELB CreateHealthmonitor/v2 --healthmonitor.delay=10 --healthmonitor.max_retries=5 --healthmonitor.name="heath-monitor-in-cn-north-4" --healthmonitor.type="HTTP" --healthmonitor.pool_id={pool_id} --healthmonitor.timeout=8 --json-filter=healthmonitor.id # Querying Health Checks hcloud ELB ListHealthmonitors/v2 --name={healthmonitor_name} # Querying Details of a Health Check hcloud ELB ShowHealthmonitors/v2 --healthmonitor_id={healthmonitor_id} # Updating a Health Check hcloud ELB UpdateHealthmonitor/v2 --healthmonitor_id={healthmonitor_id} --healthmonitor.name={healthmonitor_name} --healthmonitor.domain_name={domain_name} --healthmonitor.delay=8 --healthmonitor.max_retries=5 --healthmonitor.monitor_port=10 --healthmonitor.type="HTTP" --healthmonitor.timeout=20 --healthmonitor.expected_codes="200-204" # Deleting a Health Check hcloud ELB DeleteHealthmonitor/v2 --healthmonitor_id={healthmonitor_id}

使用如下代码管理监听器,调用前请根据实际情况修改部分参数内容。

# Creating a Listener hcloud ELB CreateListener/v2 --listener.protocol="HTTP" --listener.loadbalancer_id={loadbalancer_id} --listener.protocol_port=80 --listener.name={listener_name} --listener.description={listener_description} # Querying Listeners hcloud ELB ListListeners/v2 --name={listener_name} # Querying Details of a Listener hcloud ELB ShowListener/v2 --listener_id={listener_id} # Updating Details of a Listener hcloud ELB UpdateListener/v2 --listener_id={listener_id} --listener.name={listener_name} --listener.default_pool_id={pool_id} --listener.description={listener_description} --listener.connection_limit=10 --listener.client_ca_tls_container_ref={container_ref} # Deleting Details of a Listener hcloud ELB DeleteListener/v2 --listener_id={listener_id}

使用如下代码管理转发策略,调用前请根据实际情况修改部分参数内容。

# Creating a Forwarding Policies hcloud ELB CreateL7policy/v2 --l7policy.listener_id={listener_id} --l7policy.name={policy_name} --l7policy.action="REDIRECT_TO_POOL" --l7policy.description="sample policy" --l7policy.redirect_pool_id={policy_id} --l7policy.rules.1.compare_type="EQUAL_TO" --l7policy.rules.1.type="HOST_NAME" --l7policy.rules.1.value="/abc.com" # Querying Forwarding Policies hcloud ELB ListL7policies/v2 --name={policy_name} # Querying Details of a Forwarding Policy hcloud ELB ShowL7policy/v2 --l7policy_id={policy_id} # Updating a Forwarding Policy hcloud ELB UpdateL7policies/v2 --l7policy_id={policy_id} --l7policy.name={policy_name} --l7policy.description={policy_description} --l7policy.redirect_listener_id={listener_id} --l7policy.redirect_pool_id={pool_id} # Deleting a Forwarding Policy hcloud ELB DeleteL7policy/v2 --l7policy_id={policy_id}

使用如下代码管理转发规则,调用前请根据实际情况修改部分参数内容。

# Creating a Forwarding Rules hcloud ELB CreateL7rule/v2 --l7policy_id={policy_id} --rule.compare_type="REGEX" --rule.type="PATH" --rule.value="/aa/bbb.html" # Querying Forwarding Rules hcloud ELB ListL7rules/v2 --l7policy_id={policy_id} # Querying Details of a Forwarding Rule hcloud ELB ShowL7rule/v2 --l7policy_id={policy_id} --l7rule_id={rule_id} # Updating a Forwarding Rule hcloud ELB UpdateL7rule/v2 --l7policy_id={policy_id} --l7rule_id={rule_id} --rule.compare_type="STARTS_WITH" --rule.value="/aa" # Deleting a Forwarding Rule hcloud ELB DeleteL7rule/v2 --l7policy_id={policy_id} --l7rule_id={rule_id}

运行示例

运行时首先通过sudo ln -s CLI工具所在目录 /usr/local/bin/命令配置华为云CLI工具环境变量,或将脚本模板放置在华为云CLI工具所在目录,并在hcloud开头的相关命令前加“./”。其次,根据实际情况修改部分参数内容、或注释无关的命令,最后执行sh elb-instance-related.sh命令运行脚本。

运行结果

脚本执行成功后,控制台打印云服务器详情列表信息。

{ "loadbalancer": { "id": "6ed3345a-xxxx-xxxx-xxxx-xxxxx13ad051", "tenant_id": "4ff018xxxxxxxxxxxxxx4936df31948", "project_id": "4ff018xxxxxxxxxxxxxx4936df31948", "name": "loadbalancer20210819", "description": "simple of balancer", "vip_subnet_id": "eaed5131-xxxx-xxxx-xxxx-xxxxxf97f9cd", "vip_port_id": "e608d222-xxxx-xxxx-xxxx-xxxxx2a7487c", "provider": "vlb", "vip_address": "192.168.20.164", "listeners": [ { "id": "09a17fd3-xxxx-xxxx-xxxx-xxxxxb30c1df" } ], "pools": [ { "id": "90d1daf7-xxxx-xxxx-xxxx-xxxxx55c7d62" } ], "provisioning_status": "ACTIVE", "operating_status": "ONLINE", "admin_state_up": true, "tags": [], "created_at": "2021-08-20T02:04:53", "updated_at": "2021-08-20T02:04:54", "enterprise_project_id": "0" } }

参考

关于华为云CLI的更多信息请参考:https://support.huaweicloud.com/productdesc-hcli/hcli_01.html

修订记录

发布日期 文档版本 修订说明
2021-08-23 1.0 文档首次发布