华为云用户手册

  • 异常5:Key not found, cause 或者 item lose 异常:类似 Key not found, cause: /Dbmonitor/status/DB/Services/xzjDB/xzjDB/activeDBs/mysql222, at index: 211562166 或者: item lose 关键字 或者:Caused by: com.huawei.rainbow.exception.ParameterErrorException: xxxx can not be null, length need bigger than 0
  • 异常6:datasource.properties没有更新,或者没有拉取到某个数据库配置 原因1:ETCD地址是否配错。 原因2:检查是否配置了DBDataSource的懒加载模式,只有当用数据库的时候才初始化,拉取配置。 定位: 检查ETCD地址是否配错,查看日志是否有ETCD连接相关的错误。如果有,请修改重启。 检查是否配置了DBDataSource的懒加载模式、只有当用数据库的时候才初始化,拉取配置。如果是,触发一次数据库操作,看下是否更新。
  • 异常4:dbGroupKey can not be null 异常:ParameterErrorException: dbGroupKey can not be null, length need bigger than 0(或者类似参数异常错误)。 原因1:dbGroupKey为null或者空串。 必填字段会做参数校验,请检查相关参数是否设置。 原因2:确定是否在rainbow.properties 中配置ETCD地址。 解决: 找到设置参数的地方,咨询核对配置的appName,dbGroupKey,dbName是否正确。
  • 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 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概述 构建云原生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/SecurityC CS ervice/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名称列表。 父主题: 开发指导
  • 操作场景 用户创建裸金属服务器后,可以通过“申请状态”栏查看任务的创建状态。创建裸金属服务器的任务可以包括创建裸金属服务器资源、绑定弹性公网IP、挂载云硬盘等子任务。 申请状态栏的任务状态包括如下两类: 处理中:指系统正在处理的请求。 处理失败:指未能成功处理的请求。对于处理失败的任务,系统会自动回退,同时在界面上直观的展示错误码,例如“(BMS.3033)创建系统卷失败。” 本节介绍如何查看裸金属服务器的申请状态以及申请状态栏的提示信息说明。
  • 配置自定义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网络
  • 操作场景 本文以裸金属服务器的操作系统为“Windows Server 2012 R2 Standard 64bit”、云硬盘容量为3 TB举例,提供容量大于2 TB的Windows数据盘的初始化操作指导。 MBR格式分区支持的磁盘最大容量为2 TB,GPT分区表最大支持的磁盘容量为18 EB,因此当为容量大于2 TB的磁盘分区时,请采用GPT分区方式。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍。 不同服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的服务器操作系统的产品文档。 首次使用云磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。
  • 操作场景 为安全起见,裸金属服务器登录时建议使用密钥对方式进行身份验证。因此,您需要使用已有密钥对或创建一个密钥对,用于远程登录身份验证。 创建密钥对 如果没有可用的密钥对,需要创建一个密钥对,生成公钥和私钥,并在登录裸金属服务器时提供私钥进行鉴权。创建密钥对的方法如下: (推荐)通过管理控制台创建密钥对,公钥自动保存在系统中,私钥由用户保存在本地,具体操作请参见通过管理控制台创建密钥对。 通过PuTTYgen工具创建密钥对,公钥和私钥均保存在用户本地,具体操作请参见通过PuTTYgen工具创建密钥对。创建成功的密钥对,还需要执行导入密钥对,导入系统才能正常使用密钥对。 PuTTYgen是一款公钥私钥生成工具,获取路径:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 使用已有密钥对 如果本地已有密钥对(例如,使用PuTTYgen工具生成的密钥对),可以在管理控制台导入密钥对公钥,由系统维护您的公钥文件。具体操作请参见导入密钥对。
  • Ubuntu 16.04安装操作 登录裸金属服务器,执行以下命令,切换至root权限。 sudo root (可选)如果不存在依赖包gcc、g++和make,请执行以下命令进行安装。 apt-get install gcc apt-get install g++ apt-get install make (可选)将Nouveau驱动列入黑名单。 如果已经安装并加载了Nouveau的显卡驱动,请执行以下操作将Nouveau驱动列入黑名单以避免冲突。 编辑“/etc/modprobe.d/blacklist.conf”,在文件后面加入以下内容: blacklist nouveau options nouveau modeset=0 执行以下命令备份与重建initramfs: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak sudo update-initramfs -u 重启:sudo reboot (可选)如果X服务正在运行,请执行systemctl set-default multi-user.target命令并重启裸金属服务器以进入多用户模式。 (可选)安装NVIDIA GPU驱动。 如果选择了特定版本的NVIDIA GPU驱动,而不是捆绑在CUDA工具包中的版本,则需要执行此步骤。 下载NVIDIA GPU驱动安装包NVIDIA-Linux-x86_64-xxx.yy.run(下载链接:https://www.nvidia.com/Download/index.aspx?lang=en),并将该安装包上传至裸金属服务器的“/tmp”目录下。 图2 搜索NVIDIA驱动包(Ubuntu 16.04) 执行以下命令,安装NVIDIA GPU驱动。 sh ./NVIDIA-Linux-x86_64-xxx.yy.run 执行以下命令,删除安装包。 rm -f NVIDIA-Linux-x86_64-xxx.yy.run 安装CUDA工具包。 下载CUDA Toolkit安装包cuda_a.b.cc_xxx.yy_linux.run(下载链接:https://developer.nvidia.com/cuda-downloads),并将该安装包上传至裸金属服务器的“/tmp”目录下。 执行以下命令,修改安装包的权限。 chmod +x cuda_a.b.cc_xxx.yy_linux.run 执行以下命令,安装CUDA工具包。 ./cuda_a.b.cc_xxx.yy_linux.run --toolkit --samples --silent --override --tmpdir=/tmp/ 执行以下命令,删除安装包。 rm -f cuda_a.b.cc_xxx.yy_linux.run 执行如下三条命令,验证是否安装成功。 cd /usr/local/cuda/samples/1_Utilities/deviceQueryDrv/ make ./deviceQueryDrv 回显信息中包含“Result = PASS”,表示CUDA工具包和NVIDIA GPU驱动安装成功。
  • CentOS 7.4安装操作 登录裸金属服务器,执行以下命令,切换至root权限。 su root (可选)如果不存在依赖包gcc、gcc-c++、make和kernel-devel,请执行以下命令进行安装。 yum install gcc yum install gcc-c++ yum install make yum install kernel-devel-`uname -r` (可选)将Nouveau驱动列入黑名单。 如果已经安装并加载了Nouveau的显卡驱动,请执行以下操作将Nouveau驱动列入黑名单以避免冲突。 编辑“/etc/modprobe.d/blacklist.conf”,在文件后面添加blacklist nouveau。 运行以下命令备份与重建initramfs: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -v /boot/initramfs-$(uname -r).img $(uname -r) 重启:reboot。 (可选)如果X服务正在运行,请执行systemctl set-default multi-user.target命令并重启裸金属服务器以进入多用户模式。 (可选)安装NVIDIA GPU驱动。 如果选择了特定版本的NVIDIA GPU驱动,而不是捆绑在CUDA工具包中的版本,则需要执行此步骤。 下载NVIDIA GPU驱动安装包NVIDIA-Linux-x86_64-xxx.yy.run(下载链接:https://www.nvidia.com/Download/index.aspx?lang=en),并将该安装包上传至裸金属服务器的“/tmp”目录下。 图1 搜索NVIDIA驱动包(CentOS 7.4) 执行以下命令,安装NVIDIA GPU驱动。 sh ./NVIDIA-Linux-x86_64-xxx.yy.run 执行以下命令,删除安装包。 rm -f NVIDIA-Linux-x86_64-xxx.yy.run 安装CUDA工具包。 下载CUDA Toolkit安装包cuda_a.b.cc_xxx.yy_linux.run(下载链接:https://developer.nvidia.com/cuda-downloads),并将该安装包上传至裸金属服务器的“/tmp”目录下。 执行以下命令,修改安装包的权限。 chmod +x cuda_a.b.cc_xxx.yy_linux.run 执行以下命令,安装CUDA工具包。 ./cuda_a.b.cc_xxx.yy_linux.run --toolkit --samples --silent --override --tmpdir=/tmp/ 执行以下命令,删除安装包。 rm -f cuda_a.b.cc_xxx.yy_linux.run 执行如下三条命令,验证是否安装成功。 cd /usr/local/cuda/samples/1_Utilities/deviceQueryDrv/ make ./deviceQueryDrv 回显信息中包含“Result = PASS”,表示CUDA工具包和NVIDIA GPU驱动安装成功。
  • 前提条件 已绑定弹性公网IP。 已下载对应操作系统所需驱动的安装包。 表1 NVIDIA GPU驱动和CUDA工具包下载 操作系统 需要下载的驱动 下载地址 Ubuntu 16.04、CentOS 7.4 NVIDIA GPU驱动安装包“NVIDIA-Linux-x86_64-384.81.run” https://www.nvidia.com/download/driverResults.aspx/124722/en-us CUDA工具包安装包“cuda_9.0.176_384.81_linux.run” https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=CentOS&target_version=7&target_type=runfilelocal
  • 操作指导 在裸金属服务器桌面,单击左下方开始图标。 弹出Windows Server窗口。 单击“服务器管理器”。 弹出“服务器管理器”窗口,如图1所示。 图1 服务器管理器 在左侧导航树中,选择“文件和存储服务”。 进入“服务器”页面,如图2所示。 图2 服务器 在左侧导航栏单击“磁盘”。 进入磁盘页面,如图3所示。 图3 磁盘 在页面右侧可以查看磁盘列表,若新增磁盘处于脱机状态,需要先进行联机,再进行初始化。 选中新增磁盘,右键单击菜单列表中的“联机”。 弹出“使磁盘联机”对话框,如图4所示。 图4 使磁盘联机 在弹出的对话框中,单击“是”,确认联机操作。 单击界面右上方,刷新磁盘信息。 当磁盘状态由“脱机”变为“联机”,表示联机成功,如图5所示。 图5 联机成功 联机成功后,初始化新增磁盘。 选中新增磁盘,右键单击菜单列表中的“初始化”。 弹出“初始化磁盘”对话框,如图6所示。 图6 初始化磁盘(Windows 2016) 在弹出的对话框中,单击“是”,确认初始化操作。 单击界面右上方,刷新磁盘信息。 当磁盘分区由“未知”变为“GPT”,表示初始化完成,如图7所示。 图7 初始化完成 单击界面左下方的“若要创建卷,请启动新建卷向导”超链接,新创建卷。 弹出“新建卷向导”窗口,如图8所示。 图8 新建卷向导 根据界面提示,单击“下一步”。 进入“选择服务器和磁盘”页面,如图9所示。 图9 选择服务器和磁盘 选择服务器和磁盘,系统默认选择磁盘所挂载的服务器,您还可以根据实际需求指定服务器,此处以保持系统默认配置为例,单击“下一步”。 进入“指定卷大小”页面,如图10所示。 图10 指定卷大小(Windows 2016) 指定卷大小,系统默认卷大小为最大值,您还可以根据实际需求指定卷大小,此处以保持系统默认配置为例,单击“下一步”。 进入“分配到驱动器号或文件夹”页面,如图11所示。 图11 分配到驱动器号或文件夹 分配到驱动器号或文件夹,系统默认为磁盘分配驱动器号,驱动器号默认为“D”,此处以保持系统默认配置为例,单击“下一步”。 进入“选择文件系统设置”页面,如图12所示。 图12 选择文件系统设置 选择文件系统设置,系统默认的文件系统为NTFS,并根据实际情况设置参数,此处以保持系统默认设置为例,单击“下一步”。 不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。 进入“确认选择”页面,如图13所示。 图13 确认选择 根据界面提示,确认卷位置、卷属性以及文件系统设置的相关参数,确认无误后,单击“创建”,开始新建卷。 当出现如图14所示界面,表示新建卷完成。 图14 新建卷完成 新建卷完成后,单击,在文件资源管理器中查看是否有新建卷,此处以“新建卷(D:)”为例。 若如图15所示,可以看到“新建卷(D:)”,表示磁盘初始化成功,任务结束。 图15 文件资源管理器 若无法看到“新建卷(D:)”,请执行以下操作,为新建卷重新添加驱动器号或文件夹。 单击,输入cmd,单击“Enter” 弹出管理员窗口。 在管理员窗口,执行diskmgmt命令。 弹出“磁盘管理”窗口,如图16所示。 图16 磁盘管理(Windows 2016) 在磁盘1右侧“新建卷”区域,右键单击菜单列表中“更改驱动器号和路径”。 弹出“更改新建卷的驱动器号和路径”对话框,如图17所示。 图17 更改新建卷的驱动器号和路径 单击“添加”。 弹出“添加驱动器号和路径”对话框,如图18所示。 图18 添加驱动器号和路径 选择“分配以下驱动器号(A)”,重新为磁盘分配驱动器号,此处以分配驱动号D为例,并单击“确定”。 分配完成后,即可在文件资源管理器中看到“新建卷(D:)”。 此处选择请与11中的配置保持一致。
  • 操作场景 本文以服务器的操作系统为“Windows Server 2016 Standard 64bit”为例,提供云硬盘的初始化操作指导。 MBR格式分区支持的磁盘最大容量为2 TB,GPT分区表最大支持的磁盘容量为18 EB,因此当为容量大于2 TB的磁盘分区时,请采用GPT分区方式。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍。 不同服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的服务器操作系统的产品文档。 首次使用云磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。
共100000条