华为云用户手册

  • 自定义lua配置 表14 customLuaConf字段说明 参数名 是否必选 说明 slb100GlobalInit 否 大小不得超过16KB slb200WorkerInit 否 大小不得超过16KB slb300PreFlowControl 否 大小不得超过16KB slb400OnFlowControled 否 大小不得超过16KB slb500PreGrey 否 大小不得超过16KB slb600PostGrey 否 大小不得超过16KB slb700PostRoute 否 大小不得超过16KB slb750RespHeaderFilter 否 大小不得超过16KB slb800RespBodyFilter 否 大小不得超过16KB slb_instance_config/SLB_100_Global_Init_iac3.lua #SLB_100_Global_Init_iac3.lua默认配置 --the custom point SLB_100_Global_Init, running when Global init. --will be triggered in exec function, so pls make sure there is a exec function in global_init local global_init = {}; function global_init.exec(gen_param) --eg:ngx.log(ngx.ERR,"i am in global_init") end return global_init slb_instance_config/SLB_200_Worker_Init_iac3.lua #SLB_200_Worker_Init_iac3.lua默认配置 --the custom point SLB_200_Worker_Init, running when Worker init. --will be triggered in exec function, so pls make sure there is a exec function in worker_init local worker_init = {}; function worker_init.exec(gen_param) --eg:ngx.log(ngx.ERR,"i am in worker init"); end return worker_init slb_instance_config/SLB_300_Pre_FlowControl_iac3.lua #SLB_300_Pre_FlowControl_iac3.lua默认配置 --the custom point SLB_300_Pre_FlowControl, running before flowcontrol and blacklist. --will be triggered in exec function, so pls make sure there is a exec function in pre_flowcontrol local pre_flowcontrol = {}; function pre_flowcontrol.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in pre flowcontrol") end return pre_flowcontrol slb_instance_config/SLB_400_On_FlowControled_iac3.lua #SLB_400_On_FlowControled_iac3.lua默认配置 --the custom point SLB_400_On_FlowControlled, running when request is flowcontrolled or blocked due to blacklist. --will be triggered in exec function, so pls make sure there is a exec function in on_flowcontroled local on_flowcontroled = {}; function on_flowcontroled.exec(gen_param) --eg:ngx.log(ngx.ERR,"the flowcontrol type is:",gen_param.control_type) end return on_flowcontroled slb_instance_config/SLB_500_Pre_Grey_iac3.lua #SLB_500_Pre_Grey_iac3.lua默认配置 --the custom point SLB_500_Pre_Grey, running before Greyrule judge. --will be triggered in exec function, so pls make sure there is a exec function in pre_grey local pre_grey = {}; function pre_grey.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in pre grey"); end return pre_grey slb_instance_config/SLB_600_Post_Grey_iac3.lua #SLB_600_Post_Grey_iac3.lua默认配置 --the custom point SLB_600_Post_Grey, running after get result of greyrule. --will be triggered in exec function, so pls make sure there is a exec function in post_grey local post_grey = {}; function post_grey.exec(gen_param) --eg:ngx.log(ngx.ERR,"I AM IN POST GREY"); end return post_grey slb_instance_config/SLB_700_Post_Route_iac3.lua #SLB_700_Post_Route_iac3.lua默认配置 --the custom point SLB_700_Post_Route, running after get result of routerule. --will be triggered in exec function, so pls make sure there is a exec function in post_route local post_route = {}; function post_route.exec(gen_param) --eg:ngx.log(ngx.ERR,"I AM IN POST Route"); end return post_route slb_instance_config/SLB_750_Resp_Header_Filter_iac3.lua #SLB_750_Resp_Header_Filter_iac3.lua默认配置 --the custom point SLB_750_Resp_Header_Filter, running during header filter. --will be triggered in exec function, so pls make sure there is a exec function in header_filter local header_filter = {}; function header_filter.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in header filter"); end return header_filter slb_instance_config/SLB_800_Resp_Body_Filter_iac3.lua #SLB_800_Resp_Body_Filter_iac3.lua默认配置 --the custom point SLB_800_Resp_Body_Filter, running during body filter. --will be triggered in exec function, so pls make sure there is a exec function in body_filter local body_filter = {}; function body_filter.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in body filter"); end return body_filter
  • 内网段配置 表3 innerSegmentsConf字段说明 参数名 是否必选 说明 segment 是 IP地址段,格式为ip/子网掩码。 slb_instance_config/inner_segments_config.yaml #内网段配置 - segment: 10.0.0.0/8 - segment: 127.0.0.1/32 - segment: 172.16.0.0/12 - segment: 192.168.0.0/16 - segment: 100.125.0.0/16
  • 重写重定向配置 表2 urlResetConf字段说明 参数名 是否必选 说明 transferType 是 转换类型,为以下枚举值: rewriteGrey 灰度重写 rewriteNormal 生产重写 redirectGrey 灰度重定向 redirectNormal 生产重定向 source 是 匹配路径,例:/abc/portal/login.jsp(.*)$ target 是 目标路径,例:/abc/def/$1 slb_instance_config/url_reset_config.yaml #重写重定向配置 - transferType: rewriteNormal #必填,转发类型,rewriteNormal代表生产重写 source: /a1 #必填,匹配路径 target: /b1 #必填,目标路径 - transferType: rewriteGrey #必填,转发类型,rewriteGrey代表灰度重写 source: /a2 #必填,匹配路径 target: /b2 #必填,目标路径
  • 流控配置 表9 flowControlConf字段说明 参数名 是否必选 说明 flowControlSwitch 是 流控总开关,取值为on或off。 autoDivideSwitch 是 分摊模式开关,取值为on或off。 flowControlOrder 是 流控类型执行顺序,和下面的流控配置相匹配。 nodeFlowControl 否 节点级流控配置 interfaceFlowControl 否 接口级流控配置 serviceFlowControl 否 服务级流控配置 ipFlowControl 否 IP流控配置 singleParamFlowControl 否 自定义参数流控配置 multiParamFlowControl 否 多参数组合流控配置 quotaFlowControl 否 配额流控配置 concurrentFlowControl 否 并发连接流控配置
  • 其他配置 表13 confLuaConf字段说明 参数名 说明 addGreyFlag 灰度标记开关,取值为on或off。 greyTestSwitch 灰度测试开关,取值为on或off。 greyTestServiceId 灰度测试服务Id。 greyTestSwitch为on时必传。 getIpType 取IP方式,取值为1或2,1表示从左取,2表示从右取,默认为1。 isBypassOnGreyDown 灰度服务器全部宕机后,请求路由到生产开关,取值为on或off,默认为off。 areaGreyGetIpFromLeft 地域灰度IP从左侧取值开关,取值为on或off,默认为off。 greyTestQpsLimit 灰度测试每秒转发量限制,取值为1到1000。 successRateAlarmAbsThreshold 成功率告警阈值绝对值,非负浮点数,取值为0到100,默认值为90。 successRateAlarmOffsetThreshold 成功率下降告警阈值(相比1分钟前或者5分钟前),非负浮点数,取值为0到100,默认值为5。 healthCheckAlarmServerCountThreshold 健康检查不健康机器数告警阈值,正整数,默认为1,表示有1台节点不健康就会告警。 healthCheckAlarmDurationThreshold 健康检查告警持续时间阈值,非负正整数,默认为0,表示不健康主机立即告警;如果配置为1,表示发现不健康持续1分钟以上,才会告警。 concurrentFlowControlAlarmThreshold 并发请求流控告警阈值,非负整数,默认为0,表示只要发生1次流控,就会告警。 serviceFlowControlAlarmThreshold 服务级流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 singleParamFlowControlAlarmThreshold 自定义参数流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 multiParamFlowControlAlarmThreshold 多参数流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 quotaFlowControlAlarmThreshold 配额流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 manyRequestPreAlarmThreshold 请求数过多告警阈值,正整数,例如:25000,表示每个cpu每分钟平均处理达到25000请求,则触发告警。 以4C的主机为例,1分钟处理超过25000*4=100000请求,则开始告警。 manyRequestAlarmThreshold 请求数警阈值,非负整数,默认为0。 statisticsParams 统计日志参数,格式为格式为ParamName:position。 ParamName为参数名称。 Position为参数位置,取值为queryString或header。 slb_instance_config/conf_lua_config.yaml #其他配置 addGreyFlag: 'off' #非必填,灰度标记开关,取值为off或on greyTestSwitch: 'off' #非必填,灰度测试开关,取值为off或on greyTestServiceId: 123456 #非必填,灰度测试服务ID isBypassOnGreyDown: 'off' #非必填,宕机时路由到生产集群开关,取值为off或on areaGreyGetIpFromLeft: 'off' #非必填,地域灰度IP从左取值开关 ,取值为off或on getIpType: 1 #非必填,取IP方式,取值为1或2 statisticsParams: #非必填,统计日志参数 greyTestQpsLimit: 1000 #非必填,灰度测试每秒转发量限制,取值为1到1000 manyRequestAlarmThreshold: 1000 #非必填,请求数量告警 successRateAlarmAbsThreshold: 90 #非必填,成功率告警阈值,取值为0到100 successRateAlarmOffsetThreshold: 90 #非必填,成功率下降告警阈值,取值为0到100 healthCheckAlarmServerCountThreshold: 1000 #非必填,健康检查告警阈值 healthCheckAlarmDurationThreshold: 1000 #非必填,健康告警持续时间阈值 concurrentFlowControlAlarmThreshold: 1000 #非必填,并发连接流控告警阈值 serviceFlowControlAlarmThreshold: 1000 #非必填,服务级流控告警阈值 multiParamFlowControlAlarmThreshold: 1000 #非必填,多参数流控告警阈值 singleParamFlowControlAlarmThreshold: 1000 #非必填,自定义参数流控告警阈值 quotaFlowControlAlarmThreshold: 1000 #非必填,配额流控告警阈值 manyRequestPreAlarmThreshold: 1000 #非必填,请求数量预告警
  • nginx配置 slb_instance_config/nginx.conf #nginx默认配置 #user slb slb; worker_processes auto; #worker_cpu_affinity 0001 0010 0100 1000; pid logs/nginx.pid; ##################################################################### ### Default: Close the error log error_log /dev/null crit; # nofile per worker around 20000-100000 is ok, eg, if have 8 worker, nginx will use no more than 8*worker_rlimit_nofile nofile, should make this result less than system nofile. worker_rlimit_nofile 51200; events { use epoll; # connections per worker, usually setup same or similar value as worker_rlimit_nofile. worker_connections 51200; } http { ##################################################################### ### load basic lua script include 'lua/nginx.http.lua.conf'; init_by_lua_file 'conf/lua/initial.lua'; init_worker_by_lua_file 'conf/lua/initialWorker.lua'; log_by_lua_file 'conf/lua/monitor/LogRequest.lua'; #rewrite_by_lua_no_postpone on; ##################################################################### uninitialized_variable_warn off; server_tokens off; autoindex off; port_in_redirect off; ssi off; proxy_hide_header X-Powered-By; add_header X-XSS-Protection "1; mode=block"; add_header X-frame-options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains "; add_header Content-Security-Policy "default-src 'self'"; add_header Cache-control "no-cache, no-store, must-revalidate"; add_header Pragma no-cache; add_header Expires 0; client_header_timeout 60s; client_body_timeout 60s; keepalive_timeout 75s; send_timeout 60s; client_header_buffer_size 1k; large_client_header_buffers 4 8k; client_body_buffer_size 16k; client_max_body_size 1m; proxy_buffer_size 8k; proxy_buffers 8 8k; proxy_busy_buffers_size 16k; include mime.types; default_type text/html; ##################################################################### ### gzip compress gzip on; gzip_http_version 1.1; gzip_comp_level 5; gzip_min_length 1k; gzip_disable "MSIE [1-6]."; gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss application/xhtml+xml; ##################################################################### ### enabled the error page process fastcgi_intercept_errors on; error_page 400 401 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 /4xx.html; error_page 500 501 502 503 504 505 /5xx.html; ##################################################################### ### log format and switch. log_format main '$time_local|$request_time|$upstream_response_time|$uri' '|$status|$body_bytes_sent|$request_length|$bytes_sent|$http_user_agent|$http_host' '|$upstream_addr|$upstream_status|$scheme|$is_grey_server|$resp_status|$server_protocol'; access_log logs/access.log main buffer=5m flush=10s; log_format bigData '$time_local|$server_addr|$upstream_addr|$is_grey_server|$uri' '|$upstream_status|$resp_status|$request_time|$upstream_response_time|$request_length|$bytes_sent|$connections_active|$target_all|$remote_addr' '|$http_x_forwarded_for|$request_method|$http_user_agent|$status|$http_referer|$server_protocol|$body_bytes_sent|$request_length|$http_host|$request' '|$server_port|-|$http_x_api_method||||||||||'; access_log logs/access_for_big_data.log bigData buffer=5m flush=10s; ##################################################################### ### load sub configure include vhosts/*.conf; include slb_conf/*.conf; }
  • 包描述文件介绍 iacspec包描述文件package.json样例如下: { "type": "iacspec", # 代码包类型 "name": "service/1180196813870297088", # 代码包名称,格式:service/{自有服务Id}(必须) "version": "1.0.0" # 代码包版本号(必须) } 表1 package.json字段说明 位置 类型 必填 描述 type string 是 包类型,常量:iacspec或iacpatch。 name string 是 包名称 iacspec包名称格式:service/{service-id},其中service-id为服务ID。 iacpatch包名称格式:service/{service-id}/{component-name},其中{service-id}为服务ID,{component-name}为组件名称。 您可以在AppStage运维中心工作台右上角的个人账号信息管理中,选择“租户管理”,查看服务ID。 version string 是 版本号。 父主题: 应用平台IaC部署代码开发
  • 配置管理 本章介绍如何通过IaC代码描述配置信息,支持私有配置和公共配置两种类型。 IaC3.0公共配置集模型与私有配置项绝大部分字段参数一样,具体请参见表1。 表1 配置管理字段说明 参数 是否必选 类型 说明 格式校验 name 是 string 配置集名称 私有配置集:服务环境下name唯一。 公共配置集:产品环境下name唯一。 建议:^[A-Za-z0-9_]{1,64} type 是 string 资源类型 私有配置集:WiseCloud::MicroService::PrivateConfig 公共配置集:WiseCloud::MicroService::PublicConfig - prefix 否 string 为虚机订阅坐标,虚机部署按prefix前缀来订阅配置,容器场景下不填。 私有配置样例:/app/cloudeye/WiseEyeConfig/v1/rnd 公共配置样例:/public/cloudeye/test 私有配置:/app/${scope}/${module}/${version}/${tag} 公共配置:/public/${scope}/${tag} version 私有配置必填 公共配置无此字段 string 配置版本 满足正则:^[A-Za-z0-9_.,:()-]{1,100} schema 否 object 配置项属性,描述配置项类型和作用。 properties属性为key-object格式,key是配置名称,object是配置项各项描述。 N/A description:最大长度256。 format当前支持的类型如表2所示。 records 是 object 描述配置,key:value格式,key为配置名称,value为配置值。 records数组内: key:满足正则^[A-Za-z0-9_.,:-]{1,100}$ value:最大长度5000 format为schema下的一个字段,对配置进行说明,不同的配置项在使用方式上有所不同。 表2 format说明 类型 中文 说明 notype 未分类 不提供时配置项默认为未分类的类型。 sensitive 敏感配置项 标记此配置项为敏感配置项,此类配置项存储的是配置在STS的路径,非配置密文。 env 环境 - business 调优 - thirdparty 对接三方配置 - system 业务系统配置项 - middleware 中间件配置 - internal 对接内部服务配置 - function 服务功能调优配置 - oap OAP - 私有配置样例: name: my_config type: WiseCloud::MicroService::PrivateConfig properties: prefix: /app/cloudeye/WiseeyeConfig/v1/rnd version: v1 schema: type: object properties: keyl: description: type: string format: notype key2: description: type: string format: sensitive records: key1: value1 key2: value2 公共配置样例: name: test_config_lhq type: WiseCloud::MicroService::PublicConfig properties: prefix: /public/cloudeye/wiseEyeConfigService schema: type: object properties: key_lhq1: description: KEY1相关描述 type: string format: notype key_lhq2: description: KEY2相关描述 type: string format: notype records: key_lhq1: value_lhq1 key_lhq2: value_lhq2 父主题: 资源列表
  • 配置监听 表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
  • 自服务License类商品 生产系统接口地址 商家发布License授权码商品时,需在生产接口服务器开发一个生产接口,后续通过此生产系统接口地址对不同场景调用。 同一个商品发布时,针对不同的调用场景(新购、续费、过期、释放),只需要配置一个“生产系统接口地址”; License类商品接入手册及视频指导可查看《联营License类商品接入指南》; 云商店开放接口描述可参考《云商店开放接口描述》; 商家接入接口描述可参考《商家接入接口描述》。
  • 联营License类商品 生产系统接口地址 商家发布License授权码商品时,需在生产接口服务器开发一个生产接口,后续通过此生产系统接口地址对不同场景调用。 同一个商品发布时,针对不同的调用场景(新购、续费、过期、释放),只需要配置一个“生产系统接口地址”。 License类商品接入手册及视频指导可参考《联营License类商品接入指南》; 云商店开放接口描述可参考《云商店开放接口描述》; 商家接入接口描述可参考《商家接入接口描述》。 license规则 商品名称中如有”HCS版“或”CNP版“,请选择线下license服务流;如无,请选择联营线上License授权码服务流; license开通方式 如对接工业软件云,请选线上license交付,后续在商品规格处,需选择与规格相关联的资产;如未对接接工业软件云,请选线下license交付;
  • 通用License类商品 生产接口地址 商家发布License授权码商品时,需在生产接口服务器开发一个生产接口,后续通过此生产系统接口地址对不同场景调用。 同一个商品发布时,针对不同的调用场景(新购、续费、过期、释放),只需要配置一个“生产系统接口地址”。 License类商品接入手册及视频指导可参考《联营License类商品接入指南》; 云商店开放接口描述可参考《云商店开放接口描述》; 商家接入接口描述可参考《商家接入接口描述》。
  • 背景信息 2020年12月08日,CentOS官方宣布了停止维护CentOS Linux的计划,并推出了CentOS Stream项目。更多信息,请参见CentOS官方公告。 CentOS 8系统2021年12月31日已停止维护服务,CentOS 7系统将于2024年06月30日停止维护服务。CentOS官方不再提供CentOS 9及后续版本,不再支持新的软件和补丁更新。CentOS用户现有业务随时面临宕机和安全风险,并无法确保及时恢复。
  • 影响 基于CentOS官方的变更计划,对CentOS操作系统的使用者产生的影响如下所述: 2021年12月31日以后,CentOS 8的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。 2024年06月30日以后,CentOS 7的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。 对于华为云的公共镜像及服务支持存在一定影响: 华为云暂不会下线CentOS 8公共镜像,同时已经使用CentOS 8创建的ECS实例运行不会受到影响,但将停止更新镜像。 华为云对于CentOS操作系统的服务支持将和CentOS官方日期保持同步。2021年12月31日以后将不再对CentOS 8提供服务支持;对CentOS 7的服务支持将持续至2024年6月30日。
  • 应对策略 为了保障使用CentOS系统的业务正常运行,华为云为您提供替换CentOS操作系统的应对策略。替换CentOS操作系统的方式分为两类,切换操作系统和迁移操作系统。 切换到Debian或Ubuntu具体操作、详见切换操作系统。 将CentOS操作系统切换为支持切换的操作系统。 如果现有的ECS配置(网卡、磁盘、VPN等配置的类型和数量)都不需要改变,仅需要修改ECS的操作系统镜像,并且您的软件和原操作系统耦合度较低,建议使用系统切换。 切换到Huawei Cloud EulerOS具体操作,详见将操作系统切换为HCE OS。 切换到Debian或Ubuntu具体操作、详见切换操作系统。 将CentOS操作系统迁移为Huawei Cloud EulerOS操作系统。 如果现有的ECS配置(网卡、磁盘、VPN等配置的类型和数量)都不需要改变,希望保留操作系统软件的配置参数,可以通过操作系统迁移的方式迁移到Huawei Cloud EulerOS。 系统迁移详见将操作系统迁移为HCE OS。 系统切换和迁移的区别如下表,请根据需要选择合适的替换方式。 表1 系统切换和迁移的区别 区别 系统切换 系统迁移 数据备份 切换操作系统会清除系统盘数据,包括系统盘上的系统分区和所有其它分区。 切换操作系统不影响数据盘数据。 迁移操作系统不会清除系统盘数据,为避免系统软件的数据丢失,建议将其备份。 迁移操作系统不影响数据盘数据。 个性化设置 切换操作系统后,当前操作系统内的个性化设置(如DNS、主机名等)将被重置,需重新配置。 迁移操作系统后,当前操作系统内的个性化设置(如DNS、主机名等)不需重新配置。 表2 支持切换的操作系统 操作系统 概述 适用人群 Huawei Cloud EulerOS Huawei Cloud EulerOS(简称HCE OS)是基于openEuler构建的云上操作系统。 HCE OS打造云原生、高性能、高安全、易迁移等能力,加速用户业务上云,提升用户的应用创新空间,可替代CentOS、EulerOS等公共镜像。 适用于希望使用免费镜像,并延续开源社区镜像使用习惯的个人或企业。 Debian、Ubuntu操作系统 Linux的其他发行版操作系统,不同操作系统在使用习惯和应用兼容性上存在一定差异。 适用于可以自行应对操作系统切换成本的个人或企业。
  • Huawei Cloud EulerOS、openEuler和EulerOS镜像的主要区别是什么? Huawei Cloud EulerOS、openEuler和EulerOS镜像均为华为自研镜像,主要区别如下表 1所示: 表1 Huawei Cloud EulerOS、openEuler和EulerOS镜像的区别与联系 镜像类型 描述 Huawei Cloud EulerOS(简称HCE OS) Huawei Cloud EulerOS(简称HCE OS),是基于openEuler开发的一款商业发行版镜像,可替代CentOS、EulerOS等操作系统,并提供专业的维护保障能力,镜像目前免费对用户使用。 说明: Huawei Cloud EulerOS 2.0是基于openEuler 22.03 LTS版本构建的云上操作系统。 openEuler openEuler是一款开源镜像,您可以免费使用,但是不提供商业维护保障能力。openEuler最初由华为研发,但是已经在2021年11月9日正式捐赠给开放原子开源基金会,openEuler的技术支持由开源社区提供。 EulerOS EulerOS是基于开源技术的企业级Linux操作系统软件,具备高安全性、高可扩展性、高性能等技术特性,能够满足客户IT基础设施和云计算服务等多业务场景需求。 说明: EulerOS是基于开源操作系统openEuler进行开发的华为内部的操作系统。
  • 修订记录 发布日期 更新说明 2024-03-30 第五次正式发布。 新增 xfs创建文件失败问题说明 2024-03-15 第四次正式发布。 新增 OOM相关参数配置与原因排查 2023-12-30 第三次正式发布。 新增 Huawei Cloud EulerOS、openEuler和EulerOS镜像的主要区别是什么? HCE OS如何配置与EulerOS相同的日志转储? 如何打开内核wireguard模块以及安装wireguard-tools? 2023-09-27 第二次正式发布。 新增 如何安装mlnx驱动? 如何开启HCE OS操作系统的SELinux功能? 迁移系统后,如何更改控制台操作系统名称? 2022-10-20 第一次正式发布。
  • 操作步骤 打开配置文件/boot/grub2/grub.cfg,删除selinux=0。 执行touch /.autorelabel命令。 /.autorelabel文件将触发OS在启动过程中对磁盘上所有文件relabel重新打selinux标签,该过程可能需要持续几分钟。relabel完成后OS将自动重启一次并生效,同时自动删除/.autorelabel文件确保下次不会再重复执行relabel动作。 打开配置文件/etc/selinux/config,设置SELINUX=permissive,并执行reboot重启操作系统。 再次打开配置文件/etc/selinux/config,设置SELINUX=enforcing,并执行reboot重启操作系统。 重启后执行getenforce命令查看SElinux状态。 显示Enforcing表示SElinux已经开启。
  • OOM可能的原因 cgroup内存不足 使用的内存超出了cgroup中memory.limit_in_bytes配置的大小,如下示例演示memory.limit_in_bytes配置为80M,使用memhog模拟分配100M,触发OOM,/var/log/messages部分日志如下,可以从日志中看到memhog所在进程(PID: 2021820)使用了81920kB内存,超出了限制,触发了OOM: warning|kernel[-]|[2919920.414131] memhog invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0 info|kernel[-]|[2919920.414220] memory: usage 81920kB, limit 81920kB, failcnt 30 err|kernel[-]|[2919920.414272] Memory cgroup out of memory: Killed process 2021820 (memhog) total-vm:105048kB, anon-rss:81884kB, file-rss:1544kB, shmem-rss:0kB, UID:0 pgtables:208kB oom_score_adj:0 父cgroup内存不足 在子cgroup中内存仍然足够,但是父cgroup的内存不足,超过了内存限制,如下示例演示父cgroup memory.limit_in_bytes配置为80M,两个子cgroup memory.limit_in_bytes均配置为50M,在两个子cgroup中使用程序循环分配内存,触发OOM,/var/log/messages部分日志如下: warning|kernel[-]|[2925796.529231] main invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0 info|kernel[-]|[2925796.529315] memory: usage 81920kB, limit 81920kB, failcnt 199 err|kernel[-]|[2925796.529366] Memory cgroup out of memory: Killed process 3238866 (main) total-vm:46792kB, anon-rss:44148kB, file-rss:1264kB, shmem-rss:0kB, UID:0 pgtables:124kB oom_score_adj:0 系统全局内存不足 一方面由于OS的空闲内存不足,有程序一直在申请内存,另一方面也无法通过内存回收机制解决内存不足的问题,因此触发了OOM,如下示例演示OS中使用程序循环分配内存,触发OOM,/var/log/messages部分日志如下,可以从日志中看到内存节点Node 0的空闲内存(free)已经低于了内存最低水位线(low),触发了OOM: kernel: [ 1475.869152] main invoked oom: gfp_mask=0x100dca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), order=0 kernel: [ 1477.959960] Node 0 DMA32 free:22324kB min:44676kB low:55844kB high:67012kB reserved_highatomic:0KB active_anon:174212kB inactive_anon:1539340kB active_file:0kB inactive_file:64kB unevictable:0kB writepending:0kB present:2080636kB managed:1840628kB mlocked:0kB pagetables:7536kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB kernel: [ 1477.960064] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/sshd.service,task=main,pid=1822,uid=0 kernel: [ 1477.960084] Out of memory: Killed process 1822 (main) total-vm:742748kB, anon-rss:397884kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:1492kB oom_score_adj:1000 内存节点(Node)的内存不足 在NUMA存储模式下,OS会存在多个内存节点,如果程序制定使用特定节点的内存,可能在OS内存充足的情况下触发OOM,如下示例演示在两个内存节点的条件下,使用程序循环在Node 1分配内存,导致Node 1内存不足,但是OS内存足够,/var/log/messages部分日志如下: kernel: [ 465.863160] main invoked oom: gfp_mask=0x100dca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), order=0 kernel: [ 465.878286] active_anon:218 inactive_anon:202527 isolated_anon:0#012 active_file:5979 inactive_file:5231 isolated_file:0#012 unevictable:0 dirty:0 writeback:0#012 slab_reclaimable:6164 slab_unreclaimable:9671#012 mapped:4663 shmem:2556 pagetables:846 bounce:0#012 free:226231 free_pcp:36 free_cma:0 kernel: [ 465.878292] Node 1 DMA32 free:34068kB min:32016kB low:40020kB high:48024kB reserved_highatomic:0KB active_anon:188kB inactive_anon:778076kB active_file:20kB inactive_file:40kB unevictable:0kB writepending:0kB present:1048444kB managed:866920kB mlocked:0kB pagetables:2752kB bounce:0kB free_pcp:144kB local_pcp:0kB free_cma:0kB kernel: [ 933.264779] oom-kill:constraint=CONSTRAINT_MEMORY_POLICY,nodemask=1,cpuset=/,mems_allowed=0-1,global_oom,task_memcg=/system.slice/sshd.service,task=main,pid=1733,uid=0 kernel: [ 465.878438] Out of memory: Killed process 1734 (main) total-vm:239028kB, anon-rss:236300kB, file-rss:200kB, shmem-rss:0kB, UID:0 pgtables:504kB oom_score_adj:1000 其他可能原因 OS在内存分配的过程中,如果伙伴系统的内存不足,则系统会通过OOM Killer释放内存,并将内存提供至伙伴系统。
  • 在x86架构安装mlnx驱动 下载CX6网卡驱动安装包MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64.tgz。 解压驱动安装包并进入工作目录。 tar -xf MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64.tgz cd MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64 安装CX6网卡驱动软件。 ./mlnxofedinstall --basic --without-depcheck --distro OPENEULER22.03 --force --kernel 5.10.0-60.18.0.50.oe2203.x86_64 --kernel-sources /lib/modules/$(uname -r)/build 其中,“5.10.0-60.18.0.50.oe2203.x86_64“是官方MLNX_OFED包本身编译时的内核版本。 创建链接。 ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/extra/mlnx-ofa_kernel /lib/modules/$(uname -r)/weak-updates/ ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/extra/kernel-mft /lib/modules/$(uname -r)/weak-updates/ depmod -a 执行reboot命令重新系统。 执行/etc/init.d/openibd status命令查看驱动安装结果。 显示如下信息表示驱动安装成功。
  • 在arm架构安装mlnx驱动 下载CX6网卡驱动安装包MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64.tgz。 解压驱动安装包并进入工作目录。 tar -xf MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64.tgz cd MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64 安装CX6网卡驱动软件。 ./mlnxofedinstall --basic --without-depcheck --distro OPENEULER22.03 --force --kernel 5.10.0-60.18.0.50.oe2203.aarch64 --kernel-sources /lib/modules/$(uname -r)/build 其中,“5.10.0-60.18.0.50.oe2203.aarch64”是官方MLNX_OFED包本身编译时的内核版本。 执行如下命令创建链接。 ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.aarch64/extra/mlnx-ofa_kernel /lib/modules/$(uname -r)/weak-updates/ ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.aarch64/extra/kernel-mft /lib/modules/$(uname -r)/weak-updates/ depmod -a 执行reboot命令重新系统。 执行/etc/init.d/openibd status命令查看驱动安装结果。 显示如下信息表示驱动安装成功。
  • HCE OS如何配置与EulerOS相同的日志转储? HCE OS版本中的日志转储配置在hce-logrotate软件包中,对应EulerOS中的euleros-logrotate软件包。 操作方法如下: 2023年6月之前发布的HCE OS 版本,默认未安装hce-logrotate软件包,需执行命令yum install -y hce-logrotate进行手动安装。 2023年6月之后发布的HCE OS版本,已默认安装hce-logrotate软件包,如果有自定义的配置,需要手动同步配置,如果没有则无需其他操作。
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 错误码 更多服务错误码请参见API错误中心。 状态码 错误码 错误信息 描述 处理措施 400 CBH.10020009 请求消息格式非法 请求消息格式非法 请求消息格式非法 400 CBH.10020010 Request message param error. 请求消息体参数错误! 请核对您的请求参数。 400 CBH.10020011 serverId错误 serverId错误 serverId错误 401 CBH.10020100 The IAM token is invalid. 无法通过IAM校验! 请核对您的token是否正确。 403 CBH.10020002 Tenant has no authority. 租户无权限! 该租户无权限,请去IAM确认用户权限。 500 CBH.10020000 Unknown error! 未知错误! 未知错误,请联系技术人员处理。 父主题: 附录
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 name String 云堡垒机实例名称。 status String 堡垒机实例状态。 POWERING_ON:正在开启 POWERING_OFF:正在关闭 DELETE_WAITE:等待删除 REBOOTING:重启中 RESIZE:变更中 UPGRADING:升级中 FROZEN:冻结 ACTIVE:运行 server_id String 云堡垒机实例ID,使用UUID格式表示。 实例ID获取方式。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 请求参数错误。 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 校验TOKEN失败。 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 租户无权限操作。 状态码: 404 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 没有找到CBH资源。
  • URI GET /v2/{project_id}/cbs/instance/get-om-url 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法详见API参考,附录获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 server_id 是 String 云堡垒机服务器ID ip_address 是 String 被纳管主机IP host_account_name 是 String 被纳管主机的账户
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 state String 链接获取状态 # SUCCESS(0): 成功;非SUCCESS状态都认为获取失败,需要展示错误代码及description # IAM_USER_CONFLICT(1016): IAM用户冲突; # HOST_NOT_MANAGE(1): 查询主机未被纳管; # HOST_ACCOUNT_NOT_EXIST(553): 主机账户不可用; # IAM_USER_NO_PERMISSION(901): IAM用户无运维该主机权限; # CUR_VERSION_NOT_SUPPORT_OPERATION(9001):当前服务版本不支持; # INS_WHITE_LIST_INITIALIZING(9002):实例白名单正在初始化,请稍后重试; # UNKNOWN_ERROR(9003):未知错误; 枚举值: SUCCESS IAM_USER_CONFLICT HOST_NOT_MANAGE HOST_ACCOUNT_NOT_EXIST IAM_USER_NO_PERMISSION CUR_VERSION_NOT_SUPPORT_OPERATION INS_WHITE_LIST_INITIALIZING UNKNOWN_ERROR description String 链接获取异常时说明提示 login_url String ECS运维登录地址 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 请求参数错误。 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 校验TOKEN失败。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 租户无权限操作。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 没有找到CBH资源。
  • 响应示例 状态码: 200 List AvailableZone Info Success { "availability_zone" : [ { "region_id" : "cn-north-4", "id" : "cn-north-4a", "type" : "Core", "display_name" : "可用区1", "status" : "Running" }, { "region_id" : "cn-north-4", "id" : "cn-north-4b", "type" : "Core", "display_name" : "可用区2", "status" : "Running" }, { "region_id" : "cn-north-4", "id" : "cn-north-4c", "type" : "Core", "display_name" : "可用区3", "status" : "Running" } ] }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 availability_zone Array of AvailabilityZones objects 可用区信息 表4 AvailabilityZones 参数 参数类型 描述 region_id String 可用区ID。 id String 可用分区ID。 display_name String 可用分区显示名称。 status String 可用分区状态。 Running:运行中 type String 可用分区类型。 Core:核心可用区 Dedicated:专属可用区,只对内部客户开放 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 请求参数错误。 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 校验TOKEN失败。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 租户无权限操作。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 没有找到CBH资源。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Token获取方法详见获取用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 server_id 是 String 云堡垒机实例ID,使用UUID格式表示。 实例ID获取方式。 reboot_type 是 String 重启方式,不区分大小写。 SOFT:普通重启,关闭虚拟机服务 HARD:强制重启,重启虚拟机
共100000条