华为云用户手册

  • 异常2:Access denied for user 异常:java.sql.SQLException: Access denied for user 'xxxx'@'xx.xx.xx.xx' (using password: YES) 原因1:密码错误或者服务器分配权限错误。现网问题定位占了60%左右。数据库登录密码是否使用了明文! 定位: 请认真检查密码配置,检查MySQL权限是否分配正确。 通过dump内存,搜索相关关键字判断解密字符为需要的字符串。 解决:使用正确的密码。 原因2:或者是业务账号配错。 解决:删除SDK配置信息,重新在wisedba新建业务账号,在SDK配置重新录入配置信息。
  • 集成SDK go项目可以以go mod的方式集成,坐标为huawei.com/wisesecurity/sts-sdk。 接入需配置GOPROXY=http://cmc.centralrepo.rnd.huawei.com/go-artifactory/go-ccs/|http://mirrors.tools.huawei.com/goproxy/|http://cmc.centralrepo.rnd.huawei.com/go/|https://cmc.centralrepo.rnd.huawei.com/artifactory/product_go。
  • SDK配置及STS SDK初始化 配置方式 使用properties库提供的实例作为输入来配置sts go sdk: stsProperties := properties.LoadMap( map[string]string{ "sts.server.domain":"10.33.102.162:8080", "sts.config.path":"/opt/huawei/certs/SecurityMgmtService/SecurityMgmtMicroService/SecurityMgmtMicroService.ini"} ) stsgoapi.InitWith(*stsProperties) error 表1 配置参数含义 配置项名称 含义 sts.server.domain sts server的地址和端口号。 sts.config.path 存放微服务或者服务证书的路径。 sts.config.refresh.time 后台刷新获取所有token的时间。 启动STS SDK SDK导入本地证书和密钥,若本地无密钥则向sts server申请凭证和密钥(kek/dk/sk),sts server下发的密钥包含了所有历史版本的密钥,SDK默认采用最新版本的密钥进行加解密。如果初始化过程中产生错误,会返回错误信息,如果成功,则直接返回nil。
  • SDK概述 构建云原生DevOps全流程可信build-in的数据库治理解决方案 , 业务开箱即用。 提供MySQL/Cassandra/GaussDB/DRDS全流程设计、开发、发布、运维(管理、治理、诊断)方案。 可信build-in:过程可信,结果可信,接入安全(无人工接入密码),操作(资源高危操作)安全。 开箱即用:全球一份IaC代码。 图1 WiseDBA流程规范 父主题: WiseDBA SDK Java语言
  • 集成SDK arm:https://cmc.cloudartifact.szv.dragon.tools.huawei.com/artifactory/sz-software-release/cbg-wisesecurity/release/StsCPPSDK/1.1.15.100/sts-cpp-arm-sdk.zip x86:https://cmc.cloudartifact.szv.dragon.tools.huawei.com/artifactory/sz-software-release/cbg-wisesecurity/release/StsCPPSDK/1.1.15.100/sts-cpp-x86_64-sdk.zip
  • 配置和初始化 SDK动态库依赖项 C++ SDK依赖Openssl及libcurl动态库,需要集成业务添加。 SDK配置文件 [sts] server_domain = 10.33.102.162:8080 config_path = /opt/huawei/certs/SecurityCCService/SecurityCertDistributionMicroService/SecurityCertDistributionMicroService.ini cache_folder = /home/skjx/.sts loader_local = false 表1 配置参数含义 配置项 必选(M)/可选(O) 含义 server_domain M STS Server的地址及端口号,相当于Java SDK中的sts.server.domain。 config_path M STS证书自动签发工具生成的证书配置文件路径,可以是相对或绝对路径,相当于Java SDK中的sts.config.path。 cache_folder O STS Token缓存的路径,默认为用户home目录下.sts/,即 ~/.sts/,相当于Java SDK中的sts.cache.folder。 loader_local M 是否本地初始化,如果填写TRUE则不会连接STS刷新凭据及KEK等信息。
  • 引入Go SDK 引入Cloud Map require huawei.com/wisecloudnuwa/cloudmap-sdk v1.0.0 配置和初始化 STS的初始化 在Cloud Map初始化之前,要完成STS的初始化。 stsProperties := properties.LoadMap(map[string]string{ "sts.server.domain": "10.33.102.162:8080", "sts.config.path": "/opt/huawei/certs/Service/Microservice/Microservice.ini"}, ) err := stsgoapi.InitWith(*stsProperties) Cloud Map的初始化 Cloud Map Client初始化: cloudMapProperties := properties.LoadMap(map[string]string{ "serverAddr": "http://10.33.113.125:8080", "namespaceName": "cn_dev_default", }) cloudMapClient, err := clients.CreateCloudMapClient(*cloudMapProperties) 代码初始化完成之后,Client可作全局单例使用。 父主题: 快速开始
  • 常见问题 SDK初始化失败 SDK初始化失败,graysdk的run和debug日志会打印初始化失败原因,一般原因有如下几种: ETCD服务器配置错误(检查conf/graysdk.properties文件中server配置是否正确)。 ETCD未启动或者网络原因不可用(检查网络以及ETCD是否正常)。 ETCD中不存在此微服务名称的灰度配置。 ETCD未启用用户名/密码认证方式,但是SDK配置了认证(检查conf/graysdk.properties文件是否配置了username)。 jsonRuleFilePath没有配置。 灰度规则匹配失败 调用SDK接口执行灰度规则匹配失败,一般原因有如下几种: 实际传入的参数和值,不满足配置的微服务灰度规则。 灰度开关关闭(检查conf/graysdk.properties文件graySwitch是否为1)。 灰度规则执行异常(检查graysdk的debug日志)。 联系灰度平台开发人员定位。 灰度参数的设置 消费端需要在CSE的invocation设置想要进行灰度的参数,有两种方法: 确定需要进行灰度的参数 ,在后端的接口中使用@RequestParam参数来指定。 业务直接在消费端设置参数,例如:ContextUtils.getInvocationContext().addContext("x-is-gray", "1")。 第一种方式直接在请求流量的URL中通过设置参数的值来标识灰度流量,第二种是业务在调用SDK之前改变invocation中参数的值来标识灰度。 后端灰度节点的判断 后端的节点在自己的microservice.yaml文件中设置参数描述(参照CSE开发网站:https://servicecomb.apache.org/references/java-chassis/zh_CN/build-provider/definition/service-definition.html) 按照版本筛选灰度节点,需要在yaml中的service_description中先定义版本号,然后在管理台上选择按照版本进行灰度,填入定义的版本。 按照自定义参数筛选灰度节点,需要在yaml中的instance_description中先自定义灰度参数,并填入值,接着在管理台选择按照自定义参数进行灰度,填入自定义的参数。
  • logger名称和描述 Rainbow SDK需要配置的logger名称和描述如表1所示。 表1 logger说明 Logger名称 建议日志级别 说明 com.huawei.rainbow com.huawei.wisecloud.jetcd INFO Rainbow SDK运行日志,建议打开,方便定位问题。 com.huawei.dcg.rainbow.switch INFO Rainbow双云状态大数据日志。 com.huawei.dcg.rainbow.access INFO Rainbow SDK接入大数据日志。 com.alibaba.druid.pool.DruidDataSourceStatLoggerImpl INFO Rainbow SDK记录的慢日志查询、连接池统计相关信息。
  • 使用SDK 配置和初始化 在使用SDK的大多数其他能力前,首先需要对SDK进行初始化。在当前版本,SDK还未开放从本地缓存中初始化的能力,因此用户须保证应用程序可以正常连接至STS Server。目前有两种初始化SDK的方式: 通过配置文件初始化(推荐,支持更多自定义功能,配置修改不影响代码)。 通过参数值初始化(较快捷、更直接,适合快速开发、交互式场景)。 接口预览 pystssdk.sts_api.init(config_path=None, service=None, micro_service=None, sts_server_domain=None) 表1 接口描述参数说明 参数 说明 config_path (str) 配置文件路径,指定时,通过配置文件初始化。 service (str) 服务名称,通过参数值初始化时需指定。 micro_service (str) 微服务名称,通过参数值初始化时需指定。 sts_server_domain (str) STS Server地址,通过参数值初始化时需指定。 初始化 通过配置文件初始化 通过这种方式初始化SDK,用户需要准备一份配置文件(注意与通过STS Agent申请的证书目录中的证书配置文件相区分),并在初始化时提供它的相对或绝对路径(config_path)。 配置文件是一份符合Python可解析标准的文件(.ini),内容形如: [sts] server_domain=10.33.102.162:8080 config_path=/opt/huawei/certs/SecurityTokenService/SecurityTokenMicroService/SecurityTokenMicroService.ini cache_folder=/opt/huawei/.cache py-sts-sdk暂不支持自动定时刷新STS Token。 示例中第一行(即[sts])为配置项所属的block,不可省略,也不可为其他值。 表2 配置参数含义 配置项 必选(M)/可选(O) 含义 server_domain M STS Server的地址及端口号,相当于Java SDK中的sts.server.domain。 config_path M STS证书自动签发工具生成的证书配置文件路径,可以是相对或绝对路径,相当于Java SDK中的sts.config.path。 cache_folder O STS Token缓存的路径,默认为用户home目录下.sts/,即~/.sts/,相当于Java SDK中的sts.cache.folder。 通过配置文件初始化的方式,可以最大化自定义SDK的表现。 通过参数值初始化 通过这种方式初始化SDK,用户需要在初始化时提供服务名(service)、微服务名(micro_service)、STS服务器的地址(sts_server_domain),在这种情况下,SDK会遵循约定优于配置的模式,默认所需的证书配置文件位于/opt/huawei/certs/{service}/{micro_service}/{micro_service}.ini,其他设置均保持缺省状态下的默认值。 如果同时提供了config_path,以及service、micro_service、sts_server_domain,将优先使用配置文件初始化。
  • 软件包及使用 Cloud Map C SDK以NuwaCloudMapCSDK-{arch}-{version}.zip对外提供。结构如下所示: ├─include # Cloud Map SDK依赖的头文件 └─lib │ └─release # libcloudMapSdk.so release包仅含Cloud Map所需的头文件以及去除符号表的动态库文件。为了方便验证和调试,我们同时会编译含有所有依赖及demo工具的debug包。包结构如下所示: ├─include # Cloud Map SDK依赖的头文件 └─lib # libcloudMapSdk.so及依赖的动态链接库,如libcurl.so、libStsSdk.so │ ├─debug # 包含符号的版本 │ └─release # 去除符号的版本 ├─demo # demo示例 用户使用SDK时,需要将include添加为头文件的搜索路径,并依赖lib目录下动态库文件,在源文件包含如下头文件: #include "CloudMap/CloudMap.h" debug包中的demo为API使用样例,采用googletest单元测试框架开发。用户可以参考demo代码使用SDK API。其中demo/bin由demo/src中源文件编译得到,用户也可以按以下命令自行编译。 $ cd demo $ mkdir build $ cd build $ cmake .. $ make $ cmake --install . 编译后,会生成可执行文件安装到demo/bin目录下。 为运行demo/bin,本地需要有微服务WiseCloudTraceAdminService的STS证书,位于以下路径 /opt/huawei/certs/WiseCloudTraceService/WiseCloudTraceAdminService/WiseCloudTraceAdminService.ini,且可以连接http://10.33.113.125:8080。可以执行以下命令运行测试demo。 $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib/release $ cd demo/bin $ ./main
  • 版本变更记录 表1 Java SDK版本说明 版本 说明 1.0.12.100 支持微服务注册发现。 支持中间件注册发现。 支持URL注册发现。 支持CSE平滑切换到Cloud Map,支持cse访问不同clusterName的微服务。 支持URL AZ内就近访问,指定灰度、Tag访问。 表2 Go SDK版本说明 版本 说明 1.0.0.100 支持中间件注册发现。 支持URL注册发现。 表3 C SDK版本说明 版本 说明 1.0.1.100 支持中间件注册发现。 支持URL注册发现。 支持MicroserviceClient,用于微服务实例实例注册发现。 支持ClientManager::getInstance().stop()接口用于进程退出前清理SDK创建的线程资源。 支持MiddlewareClient用于查找中间件的资源信息。 支持ServiceDiscoveryClient用于查找服务依赖的三方服务(如URL)信息。 父主题: Cloud Map SDK Java语言/Go语言/C语言
  • 版本变更记录 表1 Java SDK版本说明 版本 说明 1.1.17.109 支持微服务之间认证。 支持业务使用导入的密钥;增加了对证书的有效期检测和报警功能。 支持在ini文件所在目录根据相对路径获取根密钥组件,支持微服务在启动时获取密钥并保存到本地。 表2 Go SDK版本说明 版本 说明 v1.0.1-20230414111016-de6565cadc5.mod - 表3 Python SDK版本说明 版本 说明 1.1.14.101 支持业务使用配置文件/参数值两种方式进行 STS SDK 的初始化。 支持从STS服务器获取微服务下的敏感配置 (STS 敏感配置功能)。 支持对敏感配置项进行解密。 支持获取以Consumer身份访问其他微服务的认证凭据(STS 2.0 认证功能)。 支持对日志输出方式的设置。 父主题: STS SDK Java语言/C语言/Go语言/Python语言/C++语言
  • SDK概述 NUWA Cloud Map是NUWA 3.0的重要组成部分,它设计的目的是作为云服务统一的服务注册发现中心,主要是为解决业务依赖环境配置繁琐的难题,主要特性如下: 图1 Cloud Map系统架构 服务注册和发现: 支持一方/二方/三方服务和中间件统一注册和发现,可作为微服务注册发现中心。 业务故障隔离:无集中式的Cloud Map中心,不同业务如应用市场的Cloud Map故障不影响其他业务的正常运行。 服务路由:支持双云、多活、跨站点访问等路由策略。 服务间调用关系正向设计和治理:在Cloud Map IaC中对服务间关系正向定义,结合运行态调用关系做逆向治理。 微服务配置中心:支持作为CSE微服务的配置中心,用于下发CSE动态配置。 父主题: Cloud Map SDK Java语言/Go语言/C语言
  • 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初始化失败,引起灰度路由失败。
  • 概述 要求业务安装包的目录结构如下: 图1 业务安装包的目录结构 bin:要求的启停脚本 configtemplate:配置中心用到模板文件 service:业务包,包含config和libs两个目录,config下为配置文件,libs下为jar包(不包含NUWA包)。 自动化部署之后的目录结构 linux下启动服务的原理: 在自动化部署以后,NUWA包会被加载到业务包里来。 图2 自动化部署自动加载NUWA包 自动化部署系统会调用bin/start.sh启动服务,bin/start.sh会把NUWA启动起来。NUWA就类似一个tomcat,业务的启动脚本去调用tomcat的启动脚本。
  • 变更流程编排开发 在一次完整的业务变更中,往往会涵盖多种类型、多个模块的变更,如集群扩容、申请ELB、创建数据库、软件升级等等。在IaC的语境下,每一个变更本质上都是IaC资源的变更。在一次完整的业务变更中,部分资源的变更依赖于其他资源的变更,如,为一个微服务创建NUWA实例之前往往需要先创建该微服务的数据库。 变更流程编排就是使用IaC代码对各资源在具体变更过程中的依赖关系、先后顺序进行代码化描述。变更流程编排本质上就是描述各模块、各资源之间的依赖关系。在变更过程中,IaC将根据依赖关系生成的有向无环图顺序执行各资源的变更过程。 变更流程编排包含两种类型: 组件内部各资源的编排 组件内部编排在spec包各组件的resources.yaml文件中描述,通过为资源指定dependsOn属性表达依赖关系。 - name: chaosmonkey-elb type: WiseCloud::LoadBalancer::ELB properties: version: V3 listeners: - name: listener protocol: HTTP protocolPort: 80 poolName: pool_a pools: - name: pool_a protocol: HTTP - name: chaosmonkey-slb type: WiseCloud::LoadBalancer::SLB dependsOn: - name: chaosmonkey-elb properties: elbName: chaosmonkey-elb elbPoolNames: ["pool_a"] deployVersion: 1.4.12 slbConfigs: targets: - clusterName: mgr routes: - location: / target: mgr 以上示例定义了两个资源,一个名为chaosmonkey-elb的ELB,一个名为chaosmonkey-slb的SLB;chaosmonkey-slb依赖于chaosmonkey-elb。在变更时,先变更chaosmonkey-elb,变更完成后再变更chaosmonkey-slb。 dependsOn是列表类型,使用name或alias描述相同组件内其他资源。组件内部各资源的name是资源的标记,不同类型的资源也应使用不同的name;组件内部允许同一个资源出现多次,这表示同一个资源的不同变更阶段,这一场景下该资源的所有节点必须声明alias字段并且alias取值必须在component内全局唯一,同一个资源的所有alias之间必须显式地在dependsOn字段中声明串行依赖。 各组件之间的编排 component间的编排在spec包中的meta.yaml文件中描述,涉及applyPipeline/pipelines两个字段。pipelines中支持定义多个流程,applyPipeline描述本次变更要使用的流程。 applyPipeline: default pipelines: - name: default action: Serial tasks: - action: Apply component: name: environment - action: Parallel tasks: - action: Apply component: name: WiseEyeChaosMonkeyMgrService - action: Apply component: name: WiseEyeChaosMonkeyPortal 以上示例定义了一个名为default的流程,该流程中编排了三个component。在变更时,先变更名为environment的component,该component变更完成后再并行变更名为WiseEyeChaosMonkeyMgrService和WiseEyeChaosMonkeyPortal的component。 流程的数据结构中,各字段含义如表1所示。 表1 字段说明 字段 含义 是否必填 name 流程名 必填 tasks 任务列表 必填 action 本流程中各任务之间的串并行关系。 Serial:串行 Parallel:并行 必填 任务的数据结构中,各字段含义如表2所示。 表2 字段说明 字段 含义 是否必填 action 本流程中各任务之间的串并行关系。 Serial:串行 Parallel:并行 Apply:本任务中只包含单个component 必填 tasks 任务列表 action取值为Serial/Parallel时必填。 component - action取值为Apply时必填。 component的数据结构中,各字段含义如表3所示。 表3 字段说明 字段 含义 是否必填 name component名称 必填 values 参数键值对 选填 父主题: 开发指导
  • NUWA系统参数修改 环境变量 在bin/start.sh或者service/bin/ startup_service.sh可以设置控制NUWA行为的环境变量。 表1 配置项说明 配置项 默认值 含义 LOG_HOME /opt/huawei/logs/业务名称 NUWA日志所在目录。 JVM_DEBUG / 是否开启JVM 远程调试,取值范围为yes/no,也可以使用--debug参数启动NUWA。 JVM_DEBUG_SUSPEND / 是否将JVM调试参数中的suspend=n改为=y,取值范围为yes/no,也可以使用--debug-suspend参数开启。 说明: 必须在开启JVM远程调试参数后才有作用。 CSE_LOCAL_SC / 是否使用CSE本地文件注册中心,也可以使用--cse-sc-local参数启动NUWA。 HeapSize 自适应 堆栈大小。 JAVA_OPTS / 可以配置额外的JVM参数。 GC类型修改 关于GC配置,在nuwa/bin下面有jvm.options文件,业务也可以根据实际情况覆盖此文件。
  • 代码仓结构 部署平台支持如下两种场景的部署模式: 同一个服务下所有微服务的IaC代码在一个仓中管理,打包生成IaCSpec的包,可以实现服务下所有的微服务在同一个服务环境下一键部署。该场景下的IaC代码放置组装服务的代码仓,目录层级如下所示: └── iacspec_WiseEyeDeployService_1.1.2.zip ├── global/ | |── meta.yaml | |── environment/... | |── WiseEyeDeployConductorService/... | ├── WiseEyeDeployRepoService/... | └── WiseEyeDeployConsoleService/ | ├── config/ | | ├── config_records.yaml | | └── config_schema.yaml | ├── resources.yaml | ├── packages.yaml | └── values.yaml ├── specs/ | |── cn_dev_default/... | ├── cn_test_default/... | └── cn_product_default/ | |── WiseEyeDeployConductorService/... | ├── WiseEyeDeployRepoService/... | └── WiseEyeDeployConsoleService/ | |── values.yaml | └── config/ | └── config_records.yaml └── package.json 微服务的IaC代码单独管理,通过IaCSpec包创建了服务环境之后,可以通过微服务级别的IaC Patch包进行微服务的独立部署。该场景下的IaC代码放置微服务代码仓与微服务软件代码共同管理。 └── iacpatch_WiseEyeDeployConsoleService_1.1.2.zip ├── global/ | ├── config/ | | ├── config_records.yaml | | └── config_schema.yaml | ├── resources.yaml | ├── packages.yaml | └── values.yaml ├── specs/ | |── cn_dev_default/... | ├── cn_test_default/... | └── cn_product_default/ | |── values.yaml | └── config/ | └── config_records.yaml └── package.json specs目录下的规格文件夹,命名采用站点级CloudMap的名称(cn_dev_default、cn_product_default)。可以在环境管理界面查看可选的站点级CloudMap名称列表。 父主题: 开发指导
  • 后续操作 私有镜像注册成功后,您可能想通过私有镜像创建裸金属服务器。 如果这个私有镜像用于创建规格为c6.22xlarge.physical的裸金属服务器,您还需要通过API为该私有镜像打上“__support_c6_22xl_physical”标签。操作方法如下: 获取Token,请参考“认证鉴权”。 参考“更新镜像信息”API,为镜像打上“__support_c6_22xl_physical”标签。 在请求消息头中增加“X-Auth-Token”。 “X-Auth-Token”的取值为步骤1中获取的Token。 请求的URI格式为: PATCH /v2/cloudimages/{image_id} 请求的body体如下所示。 [ { "op": "add", "path": "/__support_c6_22xl_physical", "value": "true" } ]
  • 操作场景 用户创建裸金属服务器后,可以通过“申请状态”栏查看任务的创建状态。创建裸金属服务器的任务可以包括创建裸金属服务器资源、绑定弹性公网IP、挂载云硬盘等子任务。 申请状态栏的任务状态包括如下两类: 处理中:指系统正在处理的请求。 处理失败:指未能成功处理的请求。对于处理失败的任务,系统会自动回退,同时在界面上直观的展示错误码,例如“(BMS.3033)创建系统卷失败。” 本节介绍如何查看裸金属服务器的申请状态以及申请状态栏的提示信息说明。
  • Security Key(OpenStack元数据API) 获取临时的AK、SK。 您如果需要在裸金属服务器获取临时的AK、SK,需要在IAM上对裸金属服务器进行云服务委托授权,并对相应的裸金属服务器资源进行授权委托管理。操作流程请参考IAM用户指南。 临时的AK、SK一小时后会失效。临时AK、SK更新时间早于失效时间10分钟,10分钟内新旧临时AK、SK均可用。 使用临时AK、SK时,需要在消息的header中增加'X-Security-Token':securitytoken。其中,securitytoken就是调用接口返回的值。 URI /openstack/latest/securitykey 方法 支持GET请求 示例 curl http://169.254.169.254/openstack/latest/securitykey
  • User data(OpenStack元数据API) 用于查询裸金属服务器的用户数据。该值仅在创建裸金属服务器时指定,不支持修改。 URI /169.254.169.254/openstack/latest/user_data 方法 支持GET请求。 示例 curl http://169.254.169.254/openstack/latest/user_data ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== 如果创建裸金属服务器时未注入用户数据,此时,该接口的查询结果是404,如图1所示。 图1 404 Not Found
  • Network data(OpenStack元数据API) 查询裸金属服务器的网络信息。 URI /openstack/latest/network_data.json 方法 支持GET请求 示例 curl http://169.254.169.254/openstack/latest/network_data.json { "services": [{ "type": "dns", "address": "100.125.1.250" }, { "type": "dns", "address": "100.125.21.250" }], "networks": [{ "network_id": "67dc10ce-441f-4592-9a80-cc709f6436e7", "type": "ipv4_dhcp", "link": "tap68a9272d-71", "id": "network0" }], "links": [{ "type": "cascading", "vif_id": "68a9272d-7152-4ae7-a138-3ef53af669e7", "ethernet_mac_address": "fa:16:3e:f7:c1:47", "id": "tap68a9272d-71", "mtu": null }] }
  • User data(EC2-兼容的API) 用于查询裸金属服务器的用户数据。该值仅在创建裸金属服务器时指定,不支持修改。 URI /169.254.169.254/latest/user-data 方法 支持GET请求。 示例 curl http://169.254.169.254/latest/user-data ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
  • Public Keys(EC2-兼容的API) 用于查询裸金属服务器的公钥。 URI /169.254.169.254/latest/meta-data/public-keys/0/openssh-key 方法 支持GET请求。 示例 curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI5Fw5k8Fgzajn1zJwLoV3+wMP+6CyvsSiIc/hioggSnYu/AD0Yqm8vVO0kWlun1rFbdO+QUZKyVr/OPUjQSw4SRh4qsTKf/+eFoWTjplFvd1WCBZzS/WRenxIwR00KkczHSJro763+wYcwKieb4eKRxaQoQvoFgVjLBULXAjH4eKoKTVNtMXAvPP9aMy2SLgsJNtMb9ArfziAiblQynq7UIfLnN3VclzPeiWrqtzjyOp6CPUXnL0lVPTvbLe8sUteBsJZwlL6K4i+Y0lf3ryqnmQgC21yW4Dzu+kwk8FVT2MgWkCwiZd8gQ/+uJzrJFyMfUOBIklOBfuUENIJUhAB Generated-by-Nova
  • Metadata(OpenStack元数据API) 用于查询裸金属服务器的元数据。 URI /169.254.169.254/openstack/latest/meta_data.json 方法 支持GET请求。 示例: 以使用cURL工具为例,介绍查询裸金属服务器元数据的方法。 curl http://169.254.169.254/openstack/latest/meta_data.json { "random_seed": "rEocCViRS+dNwlYdGIxJHUp+00poeUsAdBFkbPbYQTmpNwpoEb43k9z+96TyrekNKS+iLYDdRNy4kKGoNPEVBCc05Hg1TcDblAPfJwgJS1okqEtlcofUhKmL3K0fto+5KXEDU3GNuGwyZXjdVb9HQWU+E1jztAJjjqsahnU+g/tawABTVySLBKlAT8fMGax1mTGgArucn/WzDcy19DGioKPE7F8ILtSQ4Ww3VClK5VYB/h0x+4r7IVHrPmYX/bi1Yhm3Dc4rRYNaTjdOV5gUOsbO3oAeQkmKwQ/NO0N8qw5Ya4l8ZUW4tMav4mOsRySOOB35v0bvaJc6p+50DTbWNeX5A2MLiEhTP3vsPrmvk4LRF7CLz2J2TGIM14OoVBw7LARwmv9cz532zHki/c8tlhRzLmOTXh/wL36zFW10DeuReUGmxth7IGNmRMQKV6+miI78jm/KMPpgAdK3vwYF/GcelOFJD2HghMUUCeMbwYnvijLTejuBpwhJMNiHA/NvlEsxJDxqBCoss/Jfe+yCmUFyxovJ+L8oNkTzkmtCNzw3Ra0hiKchGhqK3BIeToV/kVx5DdF081xrEA+qyoM6CVyfJtEoz1zlRRyoo9bJ65Eg6JJd8dj1UCVsDqRY1pIjgzE/Mzsw6AaaCVhaMJL7u7YMVdyKzA6z65Xtvujz0Vo=", "uuid": "ca9e8b7c-f2be-4b6d-a639-f10b4d994d04", "availability_zone": "lt-test-1c", "hostname": "bms-ddd4-l00349281.novalocal", "launch_index": 0, "meta": { "metering.image_id": "3a64bd37-955e-40cd-ab9e-129db56bc05d", "metering.imagetype": "gold", "metering.resourcespeccode": "physical.s3.small", "metering.cloudServiceType": "service.type.ec2", "image_name": "CentOS 7.6 64bit", "os_bit": "64", "vpc_id": "3b6c201f-aeb3-4bce-b841-64756e66cb49", "metering.resourcetype": "1", "cascaded.instance_extrainfo": "pcibridge:2", "os_type": "Linux", "charging_mode": "0" }, "project_id": "6e8b0c94265645f39c5abbe63c4113c6", "name": "ecs-ddd4-l00349281" }
  • Availability Zone(EC2-兼容的API) 用于查询裸金属服务器的AZ信息。 URI /169.254.169.254/latest/meta-data/placement/availability-zone 方法 支持GET请求。 示例 curl http://169.254.169.254/latest/meta-data/placement/availability-zone az1.dc1
  • 元数据介绍 裸金属服务器元数据包含了裸金属服务器在云平台的基本信息,例如服务器ID、主机名、网络信息等。裸金属服务器元数据支持两种风格,可以分别通过兼容OpenStack和兼容EC2的API获取,如表1所示。 表1 裸金属服务器元数据类别支持列表 元数据类型 实例元数据项 说明 OpenStack类型 /meta_data.json 查询裸金属服务器的元数据信息。 元数据的关键字段请参见表2。 /password 查询裸金属服务器的密码。 对于Windows系统,使用密钥对创建服务器初始化时,Cloudbase-init用于保存密文密码。 /user_data 查询裸金属服务器的用户数据。 用户根据需要自行指定脚本和配置文件用于服务器初始化,详细操作请参考实例自定义数据注入。 若Linux服务器使用密码方式,则保存注入密码的脚本。 /network_data.json 查询裸金属服务器的网络信息。 /securitykey 获取临时的AK、SK。 对裸金属服务器获取临时的AK、SK,需要在IAM上对裸金属服务授权,并对相应的服务器资源进行授权委托管理。 兼容EC2类型 /meta-data/hostname 查询裸金属服务器的主机名称。 请参考以下链接为裸金属服务器去掉后缀.novalocal: 裸金属服务器的主机名带后缀“novalocal” /meta-data/instance-type 查询裸金属服务器的规格名称。 /meta-data/local-ipv4 查询裸金属服务器的固定IP地址。 多网卡情况下,只显示主网卡的地址。 /meta-data/placement/availability-zone 查询裸金属服务器的AZ信息。 /meta-data/public-ipv4 查询裸金属服务器的弹性公网IP地址。 多网卡情况下,只显示主网卡的弹性公网IP地址。 /meta-data/public-keys/0/openssh-key 查询裸金属服务器的公钥。 /user-data 查询裸金属服务器的用户数据。 /meta-data/security-groups 查询裸金属服务器所使用的安全组名称。 表2 metadata关键字段 参数 参数类型 描述 uuid String 裸金属服务器的ID。 availability_zone String 裸金属服务器所在可用区。 meta Dict 元数据信息,包括镜像名称、镜像ID、VPC ID等信息。 hostname String 裸金属服务器主机名。 请参考以下链接为裸金属服务器去掉后缀.novalocal: 裸金属服务器的主机名带后缀“novalocal” vpc_id String 裸金属服务器所属的虚拟私有云ID。 对于支持的元数据类型,本节详细介绍了其URI和使用方法。
  • 配置自定义VLAN网络(RedHat系列,CentOS系列,Oracle Linux系列,Euler系列) 下面以CentOS 6.8 (x86_64)操作系统为例,举例介绍裸金属服务器的自定义VLAN网络配置方法: RedHat系列、Oracle Linux系列、Euler系列及CentOS系列操作系统的配置方法类似。 以“root”用户,使用密钥或密码登录裸金属服务器。 进入裸金属服务器的命令行界面,查询网卡信息。 ip link 返回信息示例如下: 其中,“eth0”和“eth1”为承载VPC网络的网络设备,“eth3”和“eth5”为承载自定义VLAN网络的网络设备。 执行以下命令,查看“/etc/udev/rules.d/”目录下是否有“80-persistent-net.rules”配置文件。 ll /etc/udev/rules.d/ | grep 80-persistent-net.rules 如果存在“80-persistent-net.rules”,且该配置文件中已存在2中查询到的除“bond0”和“lo”以外的其它所有网卡和对应的MAC地址,请执行6。 否则,继续执行4。 执行以下命令,将“/etc/udev/rules.d/70-persistent-net.rules”文件拷贝一份(文件名为“/etc/udev/rules.d/80-persistent-net.rules”)。 cp -p /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/80-persistent-net.rules 设置udev规则。 将2中查询到的除“eth0”和“eth1”以外的网卡(即“/etc/udev/rules.d/70-persistent-net.rules”中未体现的网卡MAC地址和名称),写入“/etc/udev/rules.d/80-persistent-net.rules”文件中,使得裸金属服务器重启复位后,网卡名称和顺序不会发生改变。 网卡的MAC地址和名称中的字母,请使用小写字母。 vim /etc/udev/rules.d/80-persistent-net.rules 修改后的示例如下: 修改完成后,按“Esc”,输入:wq保存并退出。 执行以下命令,将网络配置文件“/etc/sysconfig/network-scripts/ifcfg-bond0”拷贝为“/etc/sysconfig/network-scripts/ifcfg-bond1”,将网络配置文件“/etc/sysconfig/network-scripts/ifcfg-eth0”拷贝为“/etc/sysconfig/network-scripts/ifcfg-eth3”和“/etc/sysconfig/network/ ifcfg-eth5”。 cp -p /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/sysconfig/network-scripts/ifcfg-bond1 cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth3 cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth5 执行以下命令,编辑“/etc/sysconfig/network-scripts/ifcfg-eth3”和“/etc/sysconfig/network-scripts/ifcfg-eth5”,配置“eth3”设备和“eth5”设备的网络配置文件。 vim /etc/sysconfig/network-scripts/ifcfg-eth3 “eth3”按以下格式编辑: USERCTL=no MTU=8888 NM_CONTROLLED=no BOOTPROTO=static DEVICE=eth3 TYPE=Ethernet ONBOOT=yes MASTER=bond1 SLAVE=yes 其中,“BOOTPROTO”参数取值修改为“static”,“DEVICE”为对应的网络设备名称,取值即为“eth3”,“MASTER”为对应的自定义VLAN网络端口的名称,取值如“bond1”,其他参数可保持不变。 vim /etc/sysconfig/network-scripts/ifcfg-eth5 “eth5”按以下格式编辑(格式和规则和“eth3”一致): USERCTL=no MTU=8888 NM_CONTROLLED=no BOOTPROTO=static DEVICE=eth5 TYPE=Ethernet ONBOOT=yes MASTER=bond1 SLAVE=yes 执行以下命令,编辑“/etc/sysconfig/network-scripts/ifcfg-bond1”。 vim /etc/sysconfig/network-scripts/ifcfg-bond1 按以下格式编辑: MACADDR=f4:4c:7f:3f:da:07 BONDING_MASTER=yes USERCTL=no ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static BONDING_OPTS="mode=1 miimon=100" DEVICE=bond1 TYPE=Bond IPADDR=10.10.10.3 NETMASK=255.255.255.0 MTU=8888 其中, “MACADDR”参数取值修改为自定义VLAN网络“eth3”或者“eth5”设备的MAC地址。 “BOOTPROTO”参数取值修改为“static”。 “DEVICE” 参数取值修改为“bond1”。 “IPADDR” 参数取值修改为待给“bond1”分配的IP地址(为自定义VLAN网络规划的IP地址在没有与VPC网段冲突的情况下可任意规划,需要通过自定义VLAN网络通信的裸金属服务器须将自定义VLAN网络配置在同一个网段),如“10.10.10.3”。 “NETMASK”参数为给自定义VLAN网络“bond1”配置的IP的子网掩码。 其他参数可保持不变。 修改完成后,按“Esc”,输入:wq保存并退出。 执行以下命令,启动自定义VLAN网络端口组“bond1”。 ifup bond1 Determining if ip address 10.10.10.3 is already in use for device bond1... 参见上述步骤,完成其他裸金属服务器的配置。 待其他裸金属服务器配置完成后,互相ping对端自定义VLAN网络配置的同网段IP,检查是否可以ping通。 父主题: 自定义VLAN网络
共100000条