云服务器内容精选

  • 配置监听 表4 SLB监听配置config字段说明 参数名 是否必选 说明 proxyReadTimeout 否 响应超时时间,不超过10位的数字。 proxySendTimeout 否 转发超时时间,不超过10位的数字。 keepaliveSwitch 否 启用长连接转发,是否keepalive,取值为on或off。 hostSwitch 否 是否透传请求头,取值为on或off,不填或者其他字符均为off。 xForwardedForSwitch 否 是否追加XFF,取值为on或off。 accessLogSwitch 否 是否开启access日志,取值为on或off,不填或者其他字符均为off。 proxyNextUpstreamSwitch 否 是否在异常时尝试下一台,取值为on或off,不填或者其他字符均为off。 proxyNextUpstreamCondition 否 尝试下一台场景,"403"、"404"、"429"、"500"、"502"、"503"、"504"、"error"、"timeout"、"invalid_header"。 clientConnectionFreeTime 否 客户端连接空闲时间,长度不超过10位的正整数。 proxyBuffersSwitch 否 开启响应缓存,取值为on或off,不填或者其他字符均为off。 proxyBuffersSize 否 响应缓存大小,由数字+空格+k/m组成,默认为8 k。 expiresSwitch 否 高级配置中Expires开关,取值为on或off,不填或者其他字符均为off。 expiresSize 否 设定页面缓存时间,不超过50位,不缓存或一直使用缓存。可以由字母、数字、空格、$、@、+、-、冒号、逗号组成。 indexPage 否 静态页面场景index页面设置,长度不超过255,非中文。 returnVal 否 固定返回响应码,长度不超过255,非中文。 allowMethod 否 允许的http方法,对于转发策略有效,对于监听仅为参考,在界面新增转发策略时会继承监听的此项配置,其余场景无效,"GET", "HEAD", "POST", "DELETE", "PUT", "OPTIONS", "PATCH", "MKCOL", "COPY", "MOVE", "PROPFIND", "PROPPATCH", "LOCK", "UNLOCK"。 command 否 nginx配置命令,非中文。 root 否 默认资源根目录,长度不超过500,非中文。 clientMaxBodySize 否 最大请求体大小,数字+空格+k/m组成。 clientBodyBufferSize 否 请求体buffer大小,数字+空格+k/m组成。 addHeaders 否 响应头 setVals 否 对应页面set proxySetHeaders 否 请求头 redirects 否 重定向 rewrites 否 重写 表5 addHeaders/setVals/proxySetHeaders字段说明 参数名 是否必选 说明 key 否 键,非中文 value 否 值,非中文 表6 redirects/rewrites字段字段活命 参数名 是否必选 说明 source 否 匹配规则,非中文。 target 否 重写/重定向目标,非中文。 option 否 重写标记,取值为:"last"、"break"、"permanent"。 slb_listener_config/listener_monitor_config.yaml hostSwitch: 'on' #是否透传请求头,on/off,不填或者其他字符均为off root: #默认资源根目录,不超过500非中文 clientConnectionFreeTime: 100 #客户端连接空闲时间,不超过10位的正整数 proxyReadTimeout: 70 #响应超时时间,不超过10位的数字 keepaliveSwitch: 'on' #启用长连接转发是否keepalive,on/off proxyBuffersSize: '2 m' #响应缓存大小,数字+空格+k/m组成,默认为8 k expiresSwitch: 'on' #高级配置中Expires开关,on/off,不填或者其他字符均为off proxyBuffersSwitch: 'on' #开启响应缓存,on/off,不填或者其他字符均为off accessLogSwitch: 'on' #是否开启access日志,on/off,不填或者其他字符均为off returnVal: 200 #固定返回响应码,不超过255非中文 allowMethod: POST,GET,HEAD,PUT,DELETE,OPTIONS #允许的http方法 nuwaTraceSwitch: 'off' command: #nginx配置命令,非中文 clientMaxBodySize: #最大请求体大小,数字+空格+k/m组成 clientBodyBufferSize: 10 #请求体buffer大小,数字+空格+k/m组成 expiresSize: 10 #设定页面缓存时间 indexPage: #静态页面场景index页面设置,不超过255非中文 proxyNextUpstreamCondition: error,timeout #尝试下一台场景 proxySendTimeout: 80 #转发超时时间,不超过10位的数字 xForwardedForSwitch: 'on' #是否追加XFF,on/off proxyNextUpstreamSwitch: 'on' #是否在异常时尝试下一台,on/off,不填或者其他字符均为off addHeaders: #响应头 - value: v1 key: k1 - value: v2 key: k2 rewrites: #重写 - source: s7 option: break target: t1 setVals: #对应页面set - value: v3 key: $k3 proxySetHeaders: #请求头 - value: v5 key: k5 redirects: #重定向 - source: s1 target: t1
  • 新增黑白名单 黑名单规则会直接流控满足规则的请求,白名单规则会放通满足规则的请求。 在流控服务详情页面,选择“黑白名单”页签,单击“新增黑白名单”。 配置黑白名单相关参数,参数说明如表6所示。配置完成后单击“保存”。 表6 新增黑白名单参数说明 参数 说明 资源名称 选择全局黑白名单或具体资源,全局黑白名单不限制微服务/接口,资源黑白名单则限制特定的微服务/接口。 参数名称 参数级规则的参数名。 字符长度0~50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:black_rule-001。 名单类型 白名单 黑名单 每个资源或全局黑白名单下,同一参数名称只支持添加黑白名单各一条。 开启黑白名单 选择是否开启黑白名单。 名单列表 黑白名单列表。如果存在多个,使用英文逗号分隔,不允许存在空格。 在弹出框中单击“确认”。
  • 新增流控规则 流控规则支持针对微服务/接口的资源流控、不区分微服务接口的全局参数流控和节点级动态流控规则。 在流控服务详情页面,选择“流控规则”页签,单击“新增流控规则”。 配置流控规则相关参数,配置完成后单击“保存”。 资源流控 表3 资源流控参数说明 参数 说明 限流控制类型 选择资源流控,针对微服务/接口资源进行流控。 资源名称 选择新增资源中创建的资源名称,与微服务/接口绑定,每个资源最多创建4条规则,规则的限流控制类型和是否集群流控不能重复。 流控类别 QPS:每秒速率流控。 配额:特定时间的请求阈值。 限流阈值 流控阈值,整个微服务/接口调用总量的阈值,如果请求总量超过该阈值,后续请求会被流控;0表示不流控。 禁用时间 当限流控制类型为QPS时,显示该参数。 流控后禁用时间内的所有请求不再判断请求量,直接全部流控。 允许的突增量 当限流控制类型为QPS时,显示该参数。 流控突发量,该参数可以调整令牌桶的大小,令牌桶大小为(阈值+突增量)/时间窗口,时间窗口单位为s。 是否集群限流 选择“是”或“否”。开启后对集群内此资源的调用总量进行限制。 集群限流阈值模式 当流控类别为QPS,开启集群限流时,显示该参数。 单机均摊 总体阈值 本地配额缓存数 当流控类别为配额,开启集群限流时,显示该参数。 防止D CS 热点key的参数,可以减少DCS的访问,默认值为5。 该参数需要合理配置,配置过小容易造成热点key问题,配置过大可能导致部分节点放通部分节点流控的问题。 时间窗口 填写时间,单位为秒,表示间隔多少秒允许一个请求通过。默认为1秒,取值范围为1~86400。 是否开启流控规则 选择是否开启流控规则。 新增参数 单击“新增参数”,可以根据需要新增多条流控规则。 参数名称:参数级规则的参数名。 限流阈值:默认的参数阈值,如果没有指定参数值,都按该阈值进行流控。 单击新增参数列表前的,单击“新增参数值”,可以为参数配置多条参数值。 参数值:参数级规则的参数值。 参数阈值:指定的参数值按该阈值进行流控。 全局参数流控 全局参数流控规则与资源流控的参数级规则含义类似,仅不对微服务/接口做限制。 表4 全局参数流控参数说明 参数 说明 限流控制类型 选择全局参数 参数名称 填写参数名称。 流控类别 QPS:每秒速率流控。 配额:特定时间的请求阈值。 限流阈值 流控阈值,默认的参数阈值,如果没有指定参数值,都按该阈值进行流控。 禁用时间 当限流控制类型为QPS时,显示该参数。 流控后禁用时间内的所有请求不再判断请求量,直接全部流控。 允许的突增量 当限流控制类型为QPS时,显示该参数。 流控突发量,该参数可以调整令牌桶的大小,令牌桶大小为(阈值+突增量)/时间窗口,时间窗口单位为s。 是否集群限流 选择“是”或“否”。开启后对集群内此资源的调用总量进行限制。 集群限流阈值模式 当流控类别为QPS,开启集群限流时,显示该参数。 单机均摊 总体阈值 本地配额缓存数 当流控类别为配额,开启集群限流时,显示该参数。 防止DCS热点key的参数,可以减少DCS的访问,默认值为5。 该参数需要合理配置,配置过小容易造成热点key问题,配置过大可能导致部分节点放通部分节点流控的问题。 时间窗口 填写时间,单位为秒,表示间隔多少秒允许一个请求通过。默认为1秒,取值范围为1~86400。 是否开启流控规则 选择是否开启流控规则。 新增参数 单击“新增参数值”,配置多条参数值。 参数值:参数级规则的参数值。 参数阈值:指定的参数值按该阈值进行流控。 节点级动态流控 表5 节点级动态流控参数说明 参数 说明 限流控制类型 选择节点级动态流控。 是否开启流控规则 选择是否开启流控规则。 CPU过载阈值 CPU利用率超过该值时,接口的放通比例开始降低,直到降低至最低放通比例;CPU利用率越高,接口放通比例下降越快。该阈值要求为小数,范围为0~1,支持精度为小数点后四位。 CPU恢复阈值 CPU利用率小于该值时,接口的放通比例开始恢复,直到恢复至100%;CPU利用率越低,接口放通比例恢复越快。该阈值要求为小数,范围为0~1,支持精度为小数点后四位,并且小于CPU过载阈值。 最低放通比例 配置各个接口等级对应的最低放通比例,在CPU始终处于过载状态时,仍然能放通该比例的请求。 范围为0~1,支持精度为小数点后四位。 在弹出框中单击“确认”。
  • 流控类型介绍 支持的流控类型有节点级流控,服务级流控,接口级流控,IP流控,自定义参数流控,多参数组合流控,配额流控及并发连接流控,流控类型介绍如表1所示。每种类型的流控只能添加一次,SLB流控的顺序按照页面从上往下匹配,页面支持上下移动流控的顺序。 表1 流控类型说明 类型 流控维度 窗口类型 限制 节点级流控 所有请求 漏桶 请求速率 服务级流控 以请求的Host字段为维度 漏桶 请求速率 接口级流控 以请求的uri路径为维度 漏桶 请求速率 IP流控 以取得的请求IP为维度 漏桶 请求速率 自定义参数流控 以自定义的单个参数为维度 漏桶 请求速率 多参数组合流控 以自定义的多个参数为维度 漏桶 请求速率 配额流控 以自定义的多个参数为维度 固定窗口。 请求量。 并发连接流控 以自定义的多个参数为维度 N/A 并发量。 窗口类型 漏桶:请求被均匀地限制,支持突发量配置。一般情况下,建议业务进行评估,并加上适当突发量,突发量一般不超过1秒的量。 固定窗口:只要在窗口内部超限即可。 例如同为100个/秒的限制,滑动窗口下,第0.1秒只能有10个请求,当然,滑动窗口下有个突发量的配置,在突发量10个的情况,可以在业务瞬间突发时额外再支持10个,突发池用满以后,即不可再用,只有等请求量下滑低于正常流控量时,再慢慢恢复突发池;固定窗口下,第0.1秒也可以允许100个请求。 限制类型 请求量:并不关注请求是否为并发,例如10个请求不论到来和处理的时间是否有并发情况,都记为10个。 并发量:只看某时间点,正在处理的请求的个数。如果请求1的开始时间到响应时间这个时间段,与请求2的开始时间到响应时间的时间段并不相互交叠,则请求1和请求2不是并发。否则存在并发关系。
  • 转发策略配置 本章介绍通过IaC进行转发策略配置的管理,包括监听下的转发策略、健康检查、后端服务器及动态路由管理。对应的资源类型为WiseCloud::LoadBalancer::SLB::RouteRule。 表1 转发策略配置字段说明 参数名 是否必选 说明 listenerGroupName 是 SLB监听名称,一个转发策略实例只能绑定一个监听实例。 targetGroups 否 后端集群 routes 否 转发策略(Locations) dynamicRoutes 否 动态路由 表2 targetGroups字段说明 参数名 是否必选 说明 name 是 后端集群名,不超过150位,不包含特殊字符。 protocol 是 协议,取值为:HTTP或HTTPS。 loadBalancer 是 后端集群负载均衡类型 healthCheck 否 健康检查 表3 loadBalancer字段说明 参数名 是否必选 说明 strategy 是 负载均衡算法,支持"roundRobin"、"protocolParam"、"IP_HASH"、"least_conn"。 slowStartDelay 否 预热时延,不超过30。 slowStartPeriod 否 预热周期,不超过30。 slowStartFactor 否 预热因子,默认为10,不小于1,不超过100。 hashParam 否 哈希转发字段名,Strategy类型为protocolParam时必填 长度不超过50,由字母加数字,下划线,横杠,点组成。 customParam 否 自定义参数,不包含by_lua。 默认取第一个后端集群的健康检查配置,如果为空,使用默认值。 表4 healthCheck字段说明 参数名 是否必选 说明 switchStatus 否 是否开启健康检查,取值为on或off,不填或者其他字符均为off。 protocol 否 协议,默认HTTP,不可修改。 path 否 检查路径,长度不超过500,由字母、数字、横杠、下划线和点组成。 successCodes 否 成功码列表,100-600之间的数字,以逗号隔开。 healthyThreshold 否 健康阈值,取值范围2-10,默认为2。 interval 否 探测间隔时间,取值范围1-50,默认为5。 timeout 否 探测超时时间,取值范围1-300,默认为10。 unhealthyThreshold 否 不健康阈值,取值范围2-10,默认为3。 表5 RouteRule字段说明 参数名 是否必选 说明 location 否 转发策略地址,长度不超过500,非中文。 targetGroup 否 后端集群名,长度不超过150,由字母、数字、下划线、横杠和点组成。 grayServiceName 否 灰度规则 degradeUrl 是 降级url 不降级:unDegrade 默认降级:defaultDegrade 只有值为defaultDegrade时才为默认降级,其他值均认为是不降级。 configs 否 通用与高级配置 表6 dynamicRoutes字段说明 参数名 是否必选 说明 name 是 名称,长度不超过50,由字母、数字、下划线、横杠和点组成,不能包含-in-且不能以-in结尾。 switchStatus 是 开关,取值为on或off。 defaultTargetGroup 是 默认后端集群 enableGrey 是 默认后端集群是否仍参考灰度进行分流,取值为on/off,默认为off,只有输入on才为打开状态。 rules 否 动态路由规则 locations 否 动态路由关联的转发策略列表。 表7 rules字段说明 参数名 是否必选 说明 condition 是 名称 targetGroup 是 后端集群 enableGray 是 是否仍参考灰度进行分流,取值为on或off,默认为off,只有输入on才为打开状态。 转发策略模板yaml - name: hw_test // 必填项,不可修改,不可重复 type: WiseCloud::LoadBalancer::SLB::RouteRule // 资源类型为转发策略配置 properties: routes: // 非必填 - targetGroup: group1 grayServiceName: grayServce_hw location: /abc_hw1 degradeUrl: unDegrade // 必填项,unDegrade不降级,defaultDegrade默认降级 configs: hostSwitch: 'off' addHeaders: - value: b key: aaa clientConnectionFreeTime: 60 rewrites: - source: /test option: break target: /test_hw proxyReadTimeout: 60 setVals: - value: bbb key: aaa keepaliveSwitch: 'off' proxyBuffersSize: 2 m expiresSwitch: 'on' proxyBuffersSwitch: 'on' accessLogSwitch: 'on' clientMaxBodySize: 3 k clientBodyBufferSize: 2 k expiresSize: 2 m proxyNextUpstreamCondition: 'error,timeout' proxySendTimeout: 60 xForwardedForSwitch: 'off' proxyNextUpstreamSwitch: 'on' allowMethod: 'POST,PUT,DELETE' targetGroups: // 非必填 - protocol: HTTP // 必填项 loadBalancer: // 必填项,负载均衡类型 strategy: roundRobin // 必填项,负载均衡策略 healthCheck: // 非必填,健康检查 path: /abc_test protocol: HTTP // 固定项 successCodes: '200,302' healthyThreshold: '2' unhealthyThreshold: '3' switchStatus: 'on' // 默认关闭,on为打开,打开时,不传其他参数均使用默认值 name: group1 // 必填项,并且不可重复,长度不超过150,不包含特殊字符 - protocol: HTTP loadBalancer: hashParam: $xxx strategy: protocolParam customParam: $xxx healthCheck: switchStatus: 'off' name: group2 listenerGroupName: zwx_listener1 // 必填项,SLB监听名称,一个转发策略实例只能绑定一个监听实例 dynamicRoutes: // 非必填 - enableGrey: 'off' defaultTargetGroup: group1 // 必填并且存在于targetGroups中 name: /abc_test1_hw locations: - location: /abc_hw1 rules: - targetGroup: group1 enableGray: 'off' switchStatus: 'on' 父主题: SLB
  • 执行下一阶段 将N阶段发布的灰度服务,切换到下一阶段的分流规则进行灰度。 在灰度服务管理页面,单击灰度服务列表当前状态列的“灰度管理”。 在灰度管理页面,单击“进入下一阶段”。 您也可以单击“查看所有灰度阶段”,单击其他阶段分流配置项右上角的“设为当前阶段”,直接切换到相应阶段的分流规则进行灰度。 在分流配置页签,单击“编辑分流规则”,可以编辑分流规则。 在主机群组页签,单击“编辑主机集群”,可以编辑主机群组。 在弹出框中单击“确定”。 灰度列表当前状态列显示灰度执行阶段。
  • 完成灰度发布 分流阶段执行完成后,版本即将全网发布,全网发布意味着所有机器都已升级,分流规则在SLB将不生效,消息会在正常机器+灰度机器的整个群组中负载均衡分发。 在灰度服务管理页面,单击灰度服务列表当前状态列的“灰度管理”。 在灰度管理页面,单击“完成灰度发布”。 在分流配置页签,单击“编辑分流规则”,可以编辑分流规则。 在主机群组页签,单击“编辑主机集群”,可以编辑主机群组。 请确认主机集群配置无误并已升级到最新版本。 在弹出框中单击“确定”。 灰度列表当前状态列显示为灰度完成。
  • 重启灰度 完成灰度发布后,当前处于全网发布阶段,上一轮灰度已经到全网发布阶段,如果想要进行新的一轮灰度,可以重启灰度。重启灰度后分流规则将在SLB生效,满足分流规则条件的消息分发到灰度机器群组,不满足分流规则条件的消息分发到正常机器群组。 请在确认服务有新版本的情况下进行重启灰度。 在灰度服务管理页面,单击灰度服务列表当前状态列的“重启灰度”。 在重启灰度页面,单击“重启灰度”。 在分流配置页签,单击“编辑分流规则”,可以编辑分流规则。 在主机群组页签,单击“编辑主机集群”,可以编辑主机群组。 在弹出框中单击“确定”。 灰度列表当前状态列显示灰度执行的阶段。
  • 恢复灰度发布 恢复灰度发布,用于将暂停状态的服务恢复到正常进行状态,版本将依据当前的分流规则和主机集群设置发布。 在灰度服务管理页面,单击待恢复灰度服务当前状态列的“灰度管理”。 在灰度管理页面,单击“恢复灰度发布”。 在分流配置页签,单击“编辑分流规则”,可以编辑分流规则。 在主机群组页签,单击“编辑主机集群”,可以编辑主机群组。 请确认分流配置和主机集群配置无误,否则可能发生负载不均衡等状况。 在弹出框中单击“确定”。 灰度列表当前状态列显示灰度执行的阶段。
  • 解决方法 登录SLB实例主机,执行命令su os用户切换业务账号,然后执行以下命令: openssl req -new -newkey rsa:2048 -days 3650 -sha256 -nodes -x509 \-subj '/CN=dummy' \-keyout /opt/huawei/openresty/nginx/conf/ssl/dummy.key \-out /opt/huawei/openresty/nginx/conf/ssl/dummy.pem
  • 排查定位 登录SLB实例主机,执行命令curl -k -v https://172.25.100.42:2379检查网络是否通畅。 若网络不通,执行命令ps -ef|grep easyconf,检查进程是否存在。 执行命令cat /opt/huawei/logs/easyconf/confagent_monitor.count,检查返回值是否为5;若不是,执行命令vim /opt/huawei/logs/easyconf/confagent_monitor.count修改。
  • 问题现象 SLB部署失败,日志详细信息提示如下: step2_install : generate confd conf & templates /opt/huawei/easyconf/sbin/confagent[27688]: FATAL Can't get local ip" ... "etcd_addr": "172.25.100.42:2379,172.25.100.43:2379,172.25.101.42:2379",
  • 配置同步失败,报no such file or directory......./ssl/dummy.pem 解决方法: 用业务用户登录SLB,执行以下命令: openssl req -new -newkey rsa:2048 -days 3650 -sha256 -nodes -x509 \-subj '/CN=dummy' \-keyout /opt/huawei/openresty/nginx/conf/ssl/dummy.key \-out /opt/huawei/openresty/nginx/conf/ssl/dummy.pem
  • 同步失败 : test nginx: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 524288000) failed (12: Cannot allocate memory) nginx: [alert] munmap(FFFFFFFFFFFFFFFF, 524288000) failed 解决方法: 使用最低为2C8G规格的机器。 重启Nginx再同步。 top,kill掉其他占用内存多的进程。
  • SDK使用规范和约束 表2 SDK使用规范和约束 规范分类 规范项 备注 负载均衡策略 基于CSE的微服务(包括NUWA)集成GraySDK实现灰度时,loadbalance策略不能使用默认值(Roubin),需要调整为随机(RandomRule)。 CSE的Roubin使用计数机制,经过graysdk处理后返回的serverlist会重新开始计数,导致每次只路由给第一个节点。 SDK初始化 使用SDK的builder接口初始化。 CSE集成方式不涉及。 灰度接口调用 route接口的微服务名称必须和灰度发布管理台上的名称一致。 CSE集成方式不涉及。 route接口的灰度参数不建议超过10个(json和map的key不建议超过10个)。 CSE集成方式不涉及。 参数配置 sdkServiceUrl是SDK与中心交互的地址。 参考前面的环境信息。 异常处理 业务启动时,初始化SDK需要捕获异常。 避免SDK初始化失败,引起灰度路由失败。