KMS Internet VIP资源治理现场变更方案
背景
KMS产品在基线中申请了一个internet VIP,通过基线申请的云平台内解析生效的DNS域名提供服务。
为了提升安全性,该文档提供手动现场变更方案,指导对该Internet VIP进行下线动作。
企业版v3.16已进行过修复,方案为:新申请一个intranet类型的不同名vip(kms-internet-inner)及一个相关联的dns(kms-internet-inner),而原先的internet类型的vip(kms-internet)作为在tianji中的残留资源,后续确保无流量后可手动下线。
该方式存在遗留问题:原先旧的internet类型的vip有可能有用户通过配置DNS解析同步,同步解析记录的方式来访问,则切换dns关联的vip为内部以后,该类访问方式可能受影响。
场景梳理
预期所有316版本均已经使用最新修复方案的hotfix版本(v3.16.2r-kms-SP001)。如现场版本为316版本但与该316hotfix版本不一致则请先升级。commitid: `70b67b5f-5223-4205-99e8-5aae3374bcb7`
注意:
目前该方案仅适用于场景一及场景二。如下场景三及场景四不需要做治理变更。
场景一:3.16之前历史版本(不包含3.16)
存在kms-internet vip资源,需要下线该资源使用内部intranet类型。
3.16之前历史版本指小于企业版3.16版本(commitid:`fd1bf2c6-eec9-4590-ba50-961b74feb46e`)
方案总览
a.检查kms-internet vip是否有流量使用,确保无流量访问后可执行后续下线操作。
b.删除对应的kms-internet vip资源
c.创建resource.conf配置文件,新申请一个同名的kms-internet vip资源,但是类型设置为intranet。触发rolling
场景二:3.16及之后版本(由低版本升级,且未手动下线外部vip)
升级至316版本后kms-internet vip本身为inernet类型,需要确认无流量访问后执行外部vip下线变更方案。
方案总览
a.检查kms-internet vip是否有流量使用,确保无流量访问后可执行后续下线操作。
b.删除对应的kms-internet vip资源
c.创建resource.conf配置文件,新申请一个同名的kms-internet vip资源,但是类型设置为intranet。触发rolling
场景三:3.16及之后版本(低版本升级,已手动下线外部vip)
升级至316版本后kms-internet vip本身为inernet类型,通过手动变更方案处理后已经更正为intranet类型,无需再重复做修复操作。
场景四:3.16及之后版本(全新部署)
新申请kms-internet vip资源默认为intranet类型,无需做修复及下线操作。
方案介绍
a.检查原internet vip是否有承载流量
通过SLS日志平台查看
通过SLS日志平台查看
获取天基服务注册表中SLS对应的portal地址。服务变量名为:sls_portal.endpoint
- 登录天基控制台,选择报表 > 全部报表。在全部报表页面,搜索 服务注册变量 集群,如下图所示
- 在全部报表页面,模糊搜索 服务注册变量 集群,如下图所示。点击后进入
- 在服务注册变量页面,点击搜索图标后模糊搜索 sls,找到sls-common服务。
- 右键点击sls-common服务对应的服务注册变量,选择查看更多。找到对应的服务变量名为:
sls_portal.endpoint
的变量值复制至浏览器中访问。示例: - 获取sls portal的登录ak/sk。
- 输入ak/sk登录后,选择对应的project:tjm-kms及logstore:monitor_kms_debug/monitor_kms_audit. 并点击 查询日志
- 直接填入并搜索对应的外部vip/dns资源值,查看日志中对应的 RequestAddr 属性是否匹配。匹配到的内容即为服务调用的日志记录。注意外部vip/dns的资源值都需要分别搜索检查。
外部vip/dns的资源值获取方法可参考下方:获取internet vip对应的vip/dns资源信息
获取internet vip对应的vip/dns资源信息
登录tianji,在天基资源报表中查询资源"kms-internet"的vip/dns资源,点击显示更多查看资源详情
查看vip信息
查看dns信息
b. 切换公网域名
因为产品侧注册的域名,后端vip挂载的都是intranet的“kms-intranet”vip资源,因此原有的internet vip,有两种可能的引流方式:
- 客户侧使用云平台提供的internet-domain域名,(云平台内部不应依赖internet-domain)
- 客户侧的自有公网域名,后端挂载的internet vip
- client端通过指定host的方式,通过ip直接访问
当通过sls查询internet vip统计信息,日志调用记录为0时,需要确认上述三种情况,要求客户:
- 取消调用云平台侧提供的internet-domain域名
- 取消原有公网域名的注册
- 去除可能存在的client端的host ip绑定
修改之后再次通过sls查询internet vip统计信息,直到调用记录为0为止。
注意:sls portal中可查看访问的源端地址信息,例如 logstore为monitor_kms_debug时,ClientIp对应的值=源端地址信息。
需要排除掉健康检查或产品内部集群IP的访问记录,一般包含tianji上查看的集群物理机器(一般为3台)及service_test所在的VM机器(1台)。
c. slb上将vip置为inactive
登录slb-ag容器
- 登录天基控制台,选择运维 > 集群运维。
- 在集群运维页面,模糊搜索 slb 集群,选择 监控 > 集群运维中心,如下图所示。
- 在 集群运维中心 页面,选择 slb-controller 服务,SlbAg# 服务角色,如下图所示。
- 单击 Terminal,进入SlbAg#服务角色对应的机器,如下图所示。
- 执行如下命令,查找容器ID。
docker ps | grep slb-ag
- 执行如下命令,进入容器。
docker exec -it [$Docker_ID] bash
注:[$Docker_ID]为容器ID。
进入slb api cli工具
cli
1
查询对应的internet vip地址
获取对应的lb_id和user-id
info admin eip_or_lb address_or_lb_id [$internet_vip]
注:[$internet_vip]为internet VIP地址。
将internet vip置为inactive
config loadbalancer inactive user_id [$user_id] lb_id [$lb_id]
注:[$lb_id]为查询到的lb_id,[$user_id]为查询到的user_id
观察期:sls查看日志调用记录为0后,需要保持一个观察期,建议时间为7天。
d. 将vip置为active(用于方案回滚)
进入slb api cli工具,将internet vip置为active
config loadbalancer active user_id [$user_id] lb_id [$lb_id]
注:[$lb_id]为查询到的lb_id,[$user_id]为查询到的user_id
e. 删除原有internet vip资源
在确认原有vip不再使用,并且在观察期内(建议设置7天)无使用记录的前提下:(删除后无法回滚)
- 调用天基API,delete原internet vip资源
- 先获取资源的id,然后调用tianji的api设置deleting状态
- 获取资源id可以根据资源名,如:curl "127.0.0.1:7070/api/v3/column/service.res.*?service.res.name=$vip_name&service.res.type=vip"
- curl 'localhost:7070/api/v5/UpdateServiceResInfo?service=resmgr&instance_id=$service_id' -d '{"status": "deleting"}'
f. 修改tianji resource.conf文件
i、在tianji portal中添加resource.conf,如果没有可以直接提交。如果有建议人工处理,要看下之前这个文件做什么,自动处理的话可以把当前的vip配置更新进去,不丢掉已有配置就可以。
文件路径:services/${service_name}/resource.conf
ii、点击“预览并提交”,之后,天基会触发rolling,重新申请资源
文件路径:services/${service_name}/resource.conf
resource.conf的格式:
KmsInit#:
db_init:
vip:
- name: kms-internet
port: 443
src_port: 5555
protocol: tcp
check_type: http
uri: /status.html
type: intranet
hosts: ${myService.KmsHost:IP_LIST}
open_tcp_session: false
ha_apply_type: active-active
bid: cloudbiz