华为云用户手册

  • 环境要求 OHOS SDK需要集成到APP工程中,建议您在如下推荐环境中进行集成开发。 准备DevEco,推荐使用4.0.0(10) SDK及以上。 准备Android运行环境:API 21、Android 5.0以上设备。 支持的终端CPU架构:armeabi-v7a、arm64-v8a。 手机的CPU架构可通过以下方式查询。 手机开启USB调试,连接上电脑,然后打开Windows操作系统中的cmd程序,输入如下命令: adb shell getprop ro.product.cpu.abi
  • SDK使用 创建引擎。 AppId获取方法请参见创建应用。 1 2 3 4 5 6 7 8 9 10 11 HRTCEngineConfig config = new HRTCEngineConfig(); config.setAppId(appId); // AppId需在控制台中创建应用后获取 config.setCountryCode(countryCode); // 可以根据Grs国家码对照表传值,建议传"CN" config.setContext(getApplicationContext()); // 上下文,请传入Application Context config.setDomain(webSocketFalvor); // 该字段已废弃,不需要再传值 config.setMuteAudioRoute(isMuteAudioRoute); config.setLogEnable(true); config.setLogSize(logSize); config.setLogLevel(logLevel); config.setLogPath(logPath); // logPath为目录,非文件 mHwRtcEngine = HRTCEngine.create(config, mHwHandler); // mHwHandler继承自IHRTCEngineEventHandler,用于监听各种回调事件 设置本地窗口。 1 2 SurfaceView surface = mHwRtcEngine.createRenderer(getApplicationContext()); // 不可使用new SurfaceView(context)创建 mHwRtcEngine.setupLocalView(surface, HRTCEnums.HRTCVideoDisplayMode.HRTC_VIDEO_DISPLAY_MODE_HIDDEN); 加入房间。 1 2 3 4 5 6 7 8 9 10 11 12 HRTCJoinParam joinParam = new HRTCJoinParam(); joinParam.setUserId(mUserId); // userId用于标识同一房间的不同用户 joinParam.setUserName(mUserName); // 用户昵称,如无特殊需求,保持和userId一致即可 joinParam.setRole( HRTCJoinParam.HRTCRoleType.HRTC_ROLE_TYPE_JOINER); joinParam.setRoomId(roomid); joinParam.setScenario(1); joinParam.setOptionalInfo(optionInfo); joinParam.setAuthorization(signature); joinParam.setCtime(ctime); joinParam.setAutoSubscribeVideo(false); joinParam.setAutoSubscribeAudio(true); mHwRtcEngine.joinRoom(joinParam ); joinParam:入会参数,包含用户ID、用户名、房间号、认证信息、ctime、是否自动订阅音频和视频、SFU类型、场景和用户角色,具体请参见HRTCJoinParam。 监听远端用户加入房间,并设置远端窗口。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 @Override public void onRemoteUserOnline(String roomId, final String userId, String nickname) { if (userId.equals(mUserId)||mRole == HRTC_ROLE_TYPE_JOINER.ordinal()) { return; } Log.e(TAG, "onRemoteUserOnline userId: " + userId); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(LiveActivity.this, userId + "加入了房间", Toast.LENGTH_SHORT).show(); SurfaceView surface = mHwRtcEngine.createRenderer(getApplicationContext()); mHwRtcEngine.startRemoteStreamView(userId,surface, HRTCEnums.HR TCS treamType.HRTC_STREAM_TYPE_HD); mHwRtcEngine.updateRemoteRenderMode(userId,HRTCEnums.HRTCVideoDisplayMode.HRTC_VIDEO_DISPLAY_MODE_Fit); // 将userId对应surface添加到布局中 } }); } 监听远端用户离开房间,并删除远端窗口。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Override public void onRemoteUserOffline(String roomId, final String userId, int reason) { Log.i(TAG, "HwRtcDemo onRemoteUserOffline roomId:" + roomId + ", userId:" + userId + ", reason:" + reason); runOnUiThread(new Runnable() { @Override public void run() { Log.e(TAG, "HwRtcDemo run removeRemoteUser! "); Toast.makeText(LiveActivity.this, userId + "离开了房间", Toast.LENGTH_SHORT).show(); mHwRtcEngine.stopRemoteStreamView(userId); // 将userId对应的surface从布局中移除 } }); } 离开房间。 1 2 mHwRtcEngine.leaveRoom(); finish(); 销毁引擎 1 HRTCEngine.destroy(); 父主题: Android SDK
  • 环境要求 OHOS SDK需要集成到APP工程中,建议您在如下推荐环境中进行集成开发。 准备DevEco,推荐使用4.0.0(10) SDK及以上。 准备Android运行环境:API 21、Android 5.0以上设备。 支持的终端CPU架构:armeabi-v7a、arm64-v8a。 手机的CPU架构可通过以下方式查询。 手机开启USB调试,连接上电脑,然后打开Windows操作系统中的cmd程序,输入如下命令: adb shell getprop ro.product.cpu.abi
  • SDK使用 创建引擎并初始化。 域名 不需要设置,由SDK自动获取。appId获取方法请参见创建应用。 1 2 3 4 5 6 7 8 9 10 11 12 _rtcEngine = [HWRtcEngine sharedEngine]; HWRtcEngineConfig * cfg = [[HWRtcEngineConfig alloc]init]; cfg.appId = appid;// appId需在控制台中创建应用后获取 cfg.domain = domain;// 该字段已废弃,不需要再传值 cfg.countryCode = rtcCountryCode;// 可以根据Grs国家码对照表传值,建议传"CN" cfg.enableHaTrace = YES; cfg.logLevel = HWRtcLogLevelDebug;//输出DEBUG级别日志 cfg.logPath = [NSString stringWithFormat:@"%@/",logFilePath];//日志存储路径 cfg.enableLog = YES;//开启日志 cfg.logSize = 10*1024; cfg.muteAudioRoute = NO;//远端音频路由 [_rtcEngine initWithConfig:cfg]; 设置本地窗口。 1 2 3 4 5 HWRtcVideoCanvas *canvas = [[HWRtcVideoCanvas alloc] init]; canvas.view = [[UIView alloc] initWithFrame:CGRectMacke(0, 0, 90, 160)];//iOS //canvas.view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 90, 160)];//macOS canvas.uid = @"HW"; [_rtcEngine setupLocalVideo:canvas viewMode:HWRtcVideoDisplayModeFit]; 加入房间。 1 2 3 4 5 6 7 8 9 10 11 12 HWRtcJoinParam *joinParam = [[HWRtcJoinParam alloc]init]; NSString *authorization = @"";// 鉴权信息 joinParam.role = HWRtcRoleJoiner; joinParam.userId = @"HW"; // userId用于标识同一房间的不同用户 joinParam.userName = @"HW";// 用户昵称,如无特殊需求,保持和userId一致即可 joinParam.scenario = 1; joinParam.authorization = authorization; joinParam.ctime = time; joinParam.roomId = roomid; joinParam.autoSubscribeAudio = YES;//是否主动订阅音频 joinParam.autoSubscribeVideo = NO ;//默认-关闭 BOOL result = [self.rtcEngine joinRoom:joinParam ]; joinParam:入会参数,包含用户ID、用户名、房间号、认证信息、ctime、是否自动订阅音频和视频、SFU类型、场景和用户角色,具体请参见HWRtcJoinParam。 监听远端用户加入房间,并设置远端窗口。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -(void)onRemoteUserOnline:(NSString*)roomId userId:(NSString*)userId userName:(NSString*)userName{ if([userId isEqualToString:localUid]){ return; } dispatch_async(dispatch_get_main_queue(), { UIView *videoView = [[UIVIew alloc] initWithFrame:CGRectMake(0, 0, 90, 160)];//iOS //NSView *videoView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 90, 160)];//macOS [self.view addSubview:videoView]; HWRtcVideoCanvas *canvas = [[HWRtcVideoCanvas alloc] init]; canvas.uid = userId; canvas.view = videoView; int result = [self.rtcEngine startRemoteStreamView:canvas treamType:self.streamType]; if (result == 0) { [self.rtcEngine updateRemoteRenderMode:userId displayMode:HWRtcVideoDisplayModeFit mirrorMode:HWRtcVideoMirrorTypeDisable ]; } [self.viewsArray addObject:canvas]; }); } 监听远端用户离开房间,并删除远端窗口。 1 2 3 4 5 6 7 8 9 10 11 - (void)onRemoteUserOffline:(NSString *)roomId userId:(NSString *)userId reason:(NSInteger)reason { dispatch_async(dispatch_get_main_queue(), ^{ for (HWRtcVideoCanvas * canvas in self.viewsArray) { if ([userId isEqualToString:canvas.uid]) { [self.viewsArray removeObject:canvas]; } } }); } 离开房间。 [_rtcEngine leaveRoom]; 父主题: iOS/macOS SDK
  • 服务公告 ASM使用istio-system、istio-operator命名空间承载网格运行所需的系统组件和系统运行配置,对于其下的资源对象: istio-system命名空间中的Deployment、DaemonSet、Service、ConfigMap、Secret、Role、RoleBinding、ServiceAccount资源对象; istio-operator命名空间下的Deployment、IstioOperator、ConfigMap、Secret、Role、RoleBinding、ServiceAccount资源对象; 建议您谨慎根据应用服务网格官网资料文档或在相关技术支持的指导下进行修改操作,以避免对您的业务产生影响。若用户有特定需求,也可通过提交工单进行咨询。
  • 修订记录 发布日期 修订记录 2024-06-21 第七次正式发布。 新增内建质量 修改如下章节: 进入开发中心 版本基线化 配置服务扩展信息 2024-05-08 第六次正式发布。 新增版本基线化 修改如下章节: AppStage开发中心使用流程 账号信息管理 创建版本 规划交付件 管理交付件 测试评估 标准发布 调测发布 流水线管理 删除如下章节: 规划版本需求(基线类型的版本) 2024-03-30 第五次正式发布。 新增如下章节: 测试 发布配置 修改如下章节: 添加开发中心用户 申请成为开发中心用户 审批成为开发中心用户的申请 团队空间概览 查看需求详情(仅支持基线类型的版本) 需求管理 代码仓管理 缺陷管理 配置服务扩展信息 2024-02-29 第四次正式发布。 新增调测发布 修改如下章节: AppStage开发中心使用流程 标准发布 2024-01-31 第三次正式发布。 申请成为开发中心用户 审批成为开发中心用户的申请 配置服务扩展信息 2023-12-31 第二次正式发布。 新增如下章节: 账号信息管理 添加开发中心用户 2023-11-25 第一次正式发布。
  • 操作步骤 新用户(未被组织管理员添加至开发中心用户)首次登录开发中心工作台,在工作台首页根据界面提示,单击“申请成为开发中心用户”。 在“申请成为开发中心用户”页面,在“申请原因”处填写申请原因,在“审批人”下拉列表中选择审批人员(组织管理员)。 单击“确定”,界面提示“提交成功”,该申请将生成一条待办信息至组织管理员的业务控制台界面的“我的待办”中,由其单击待办链接跳转至审批页面完成申请的审批,具体操作请参见审批成为开发中心用户的申请。
  • 更多操作 添加自定义交付件完成后,还可以执行如下表2所示的操作。 表2 更多操作 操作 说明 编辑交付件 说明: 不同类型的交付件只能其相应的处理角色才可编辑。 在交付件列表中,单击“操作”列的“编辑”。 在“编辑自定义交付件”页面,可编辑交付件描述、版本类型、产能、版本开始时间和版本发布发布时间。 单击“提交”。 删除交付件 说明: 不同类型的交付件只能其相应的处理角色才可删除。 在交付件列表中,单击“操作”列的“删除”。 单击“确认”。
  • 操作指导 需求管理功能操作的详细介绍如表1所示。 表1 需求管理功能说明 项目类型 需求管理功能导航 说明 参考文档的链接 IPD系统设备类项目 IPD系统设备类项目功能介绍 IPD系统设备类项目是面向系统设备类产品开发场景的IPD需求管理方法,通过结构化流程、强大的跨项目协作能力来对大型产品开发进行高质高效的管理,主要包含原始需求、系统特性、研发需求、任务、缺陷等内容,任务和缺陷是在需求实现过程中产生的活动和发现的问题。 IPD系统设备类项目功能介绍。 原始需求(RR) 原始需求生命周期共有提交、分析、规划、实现、交付、验收、关闭七个状态,通过新建/分析/规划/交付/验收原始需求等完成生命周期的状态流转。 请参见原始需求(RR)。 特性(FE) 特性全生命周期共有初始、研发、完成三个状态,通过新建/初始/研发特性等完成生命周期的状态流转。 请参见特性(FE)。 研发需求(IR/SR/AR) 研发需求生命周期共有初始、分析、开发、测试、完成五个状态,通过新建/分解/处理研发需求等完成生命周期的状态流转。 请参见研发需求(IR/SR/AR)。 任务(Task) 任务全生命周期共有初始、处理中、完成三个状态,通过新建/处理/编辑任务等完成生命周期的状态流转。 请参见任务(Task)。 缺陷(Bug) 缺陷的全生命周期共有分析、修复、测试、验收、关闭五个状态,通过新建、处理、编辑缺陷等完成生命周期的状态流转。 请参见缺陷(Bug)。 评审 评审类型分为三种:变更评审(CR)、基线评审(BR)、通用评审(GR)。 请参见评审。 统计 按照PI和时间两个维度对项目所有数据展示统计报表,包括项目概览、缺陷度量。 请参见统计。 计划管理 新建PI和迭代、设置PI和迭代基线、查看历史记录、删除PI和迭代等。 请参见计划管理。 工作配置 项目的工作设置主要包括:项目的基础配置、工作项相关设置、标签和工时类型的自定义设置、添加协同下游项目、通知设置及导入导出记录的查询和下载。 请参见工作配置。 IPD独立软件类项目 IPD独立软件类项目功能介绍 IPD独立软件类项目是面向独立软件类开发场景的IPD需求管理方法,通过结构化流程、强大的跨项目协作能力来对大型软件开发进行高质高效的管理,主要包含原始需求、系统特性、研发需求、任务、缺陷等内容,任务和缺陷是在需求实现过程中产生的活动和发现的问题。 请参见IPD独立软件类项目功能介绍。 原始需求(RR) 原始需求生命周期共有提交、分析、规划、实现、交付、验收、关闭七个状态,通过新建/分析/规划/交付/验收原始需求等完成生命周期的状态流转。 请参见原始需求(RR)。 特性(FE) 特性全生命周期共有初始、研发、完成三个状态,通过新建/初始/研发特性等完成生命周期的状态流转。 请参见特性(FE)。 研发需求(IR/US) 研发需求生命周期共有初始、分析、开发、测试、完成五个状态,通过新建/分解/处理研发需求等完成生命周期的状态流转。 请参见研发需求(IR/US)。 任务(Task) 任务全生命周期共有初始、处理中、完成三个状态,通过新建/处理/编辑任务等完成生命周期的状态流转。 请参见任务(Task)。 缺陷(Bug) 缺陷的全生命周期共有分析、修复、测试、验收、关闭五个状态,通过新建、处理、编辑缺陷等完成生命周期的状态流转。 请参见缺陷(Bug)。 评审 评审类型分为三种:变更评审(CR)、基线评审(BR)、通用评审(GR)。 请参见评审。 统计 按照PI和时间两个维度对项目所有数据展示统计报表,包括项目概览、缺陷度量。 请参见统计。 计划管理 新建PI和迭代、设置PI和迭代基线、查看历史记录、删除PI和迭代等。 请参见计划管理。 工作配置 项目的工作设置主要包括项目的基础配置、工作项相关设置、标签和工时类型的自定义设置、添加协同下游项目、通知设置及导入导出记录的查询和下载。 请参见工作配置。 Scrum项目 Scrum项目开发流程 在使用Scrum项目前,请先了解Scrum项目的开发流程。具体流程如下: 通过需求的分层和分解,多角色协作,确保需求范围可调整 按迭代持续交付,实现闭环反馈 Scrum项目典型迭代操作流程 请参见Scrum项目开发流程。 需求规划 根据项目分解需求,进行思维导图或甘特规划。 请参见需求规划。 新建需求 以客户视角描述的原始问题或者原始诉求放在原始需求中管理,通过新建原始需求功能,可以设置需求的背景、价值、详情、优先级等信息。 请参见新建工作项(Epic/Feature/Story/Task或Bug)中的“Story”。 管理需求 新建完需求后,可以查看需求详情,新建子需求,复制子需求,对需求批量导入导出、进行修改或删除,进行批量复制、批量编辑和批量删除操作等。 请参见管理工作项中的“Story”。 需求详情 在需求详情页面,除了可以修改需求的处理人、状态等,还可以查看关联需求、查看工作代码提交记录、查看需求操作历史、添加需求附件等。 请参见工作项详情中的“Story”。 自定义工作流(可选) 自定义配置不同需求的状态,以及自定义调整状态的前后顺序,包括根据项目需求定制需求字段与模板、状态与流转以及公共字段设置和公共状态设置。 请参见自定义工作流。
  • 初始化Matomo 首次登录应用镜像管理页面需要初始化,后续在“镜像信息”区域中,单击“管理”可直接登录管理页面。 在服务器“概览”页“镜像信息”中,单击“管理”登录管理页面。 单击“下一步”。 Matomo进行系统检查,单击“下一步”。 Matomo自动检查云服务器是否满足Matomo的安装条件,在每一项后显示检查结果。 设置MySQL数据库,单击“下一步”。 Matomo已经预置了MySQL,并已经配置一个默认的数据库帐号,初始化界面会自动获取此默认的数据库帐号信息,请勿改动界面信息,直接进行下一步。 Matomo自动创建数据表,单击“下一步”。 在“超级用户”页面,设置Matomo管理员用户名、密码和电子邮件,单击“下一步”。 超级用户是您在安装 Matomo 时创建的用户。每个Matomo只有一个超级用户,该用户拥有最高权限。请妥善保管此超级用户的用户名及密码。 在“设置网站”页面,添加第一个您想用Matomo追踪、分析的网站名称和URL。单击“下一步”。 安装Matomo后,您可以添加更多网站。 了解JavaScript跟踪代码,单击“下一步”。 要用Matomo追踪您网站的流量,您需要确认在您网站的每个页面都增加了一些额外的代码,即JavaScript跟踪代码。Matomo会自动生成一个JavaScript跟踪代码,安装结束后,您可以在管理页面“追踪代码”选项下查看跟踪代码。 完成初始化向导,单击“继续使用MATOMO”进入登录页面。 输入超级用户的用户名密码,单击“登录”,进入Matomo管理页面。 至此,您已获得一台完备的Matomo应用Flexus应用服务器 L实例 。您可以开始使用Matomo,也可以按照使用Matomo监控网站中的步骤监控网站。 父主题: 使用Matomo应用镜像进行网站数据分析
  • 步骤三:登录宝塔面板。 在浏览器地址栏中输入上述步骤2记录的宝塔面板地址。 地址格式为:http://弹性公网IP:随机端口号/随机字符串。本例为:http://1.95.xx.xx:28796/0ed54a3b。 显示如下界面: 图2 登录宝塔面板 输入上述步骤2记录的账户和密码登录宝塔面板,根据提示阅读并勾选《用户协议》。 登录后如果出现如下提示,请单击“未有账号,免费注册”在宝塔官网注册。 在宝塔官网注册后,在此输入注册的手机号和密码绑定宝塔官网账号。 根据业务需要安装基础组合软件。 请选择LNMP(推荐)或者LAMP基础组合软件,单击“一键安装”,等待安装直至结束。 后续也可以在“软件商店”中自行选择并安装其他软件。 至此,您已成功安装并登录宝塔面板。您现在可以开始通过宝塔面板部署网站,更多关于宝塔面板的信息请参见宝塔面板官网。
  • 资源和成本规划 本实践以如下资源规划为例,您可根据实际需要进行调整。 资源 配置 说明 Flexus云服务器X实例 CPU:2核 内存:4GB 本例以此配置为例,您也可以根据店铺需求选择合适的X实例规格。 镜像 Huawei Cloud EulerOS 2.0 标准版 64位 选择Huawei Cloud EulerOS 2.0 标准版 64位公共镜像。 弹性公网IP 创建X实例时同时关联一个弹性公网IP。 本例需从官网下载宝塔面板安装包,因此需要服务器关联弹性公网IP。
  • 步骤一:安装宝塔面板 购买并登录X实例。 购买X实例的步骤详见购买Flexus云服务器X实例。 登录X实例的步骤详见登录Flexus云服务器X实例。 执行以下命令,下载并安装宝塔面板。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 当出现以下提示信息时,输入“y”: ... Do you want to install Bt-Panel to the /www directory now?(y/n): y ... 安装完成后,回显如下类似信息: 图1 宝塔面板安装成功 首行为宝塔面板的登录地址,请记录并妥善保存。 地址格式为:http://弹性公网IP:随机端口号/随机字符串。本例为:http://1.95.xx.xx:28796/0ed54a3b。为确保能正常访问宝塔面板,须在云服务器安全组放通随机端口号(本例为28796)。 username/password:登录宝塔面板的用户名及密码。
  • 步骤二:在华为云 SMS 控制台设置目的端迁移配置 登录目的端Flexus应用服务器L实例所在的华为云SMS控制台,选择左侧“迁移服务器”。 在迁移服务器列表页面,找到待迁移的源端服务器,单击“设置目的端”,进入迁移配置页面。 在完成步骤一后,在SMS服务控制台的“迁移服务器”列表中,将会显示源端服务器记录。 设置基本配置。 基本配置保持默认设置:使用公网迁移,不限制带宽大小,不调整磁盘分区,迁移后目的端Flexus应用服务器L实例自动开机。 各项参数说明详见设置迁移目的端。 设置目的端配置后,单击右下角“下一步:确认配置”。 区域:选择之前购买好的Flexus应用服务器L实例的区域。 服务器选择:选择“已有服务器”,并选中之前购买好的Flexus应用服务器L实例。 仅支持迁移最多一个数据盘的云服务器,不支持迁移多个数据盘的云服务器。并确保目的端Flexus应用服务器L实例系统盘或数据盘容量不小于源端。 目的端服务器的操作系统类型需要和源端的OS类型保持一致(指Linux或Windows类型)。 确保目的端服务器所在安全组配置准确。如果是Windows系统,开放TCP的8899端口、8900端口和22端口;如果是Linux系统,开放TCP的22端口。 执行此步骤时,如果出现如下提示,添加提示的端口,刷新页面后,重新执行本步骤。 在“确认配置”界面,确认信息无误后,单击“保存配置”或“保存配置并开始迁移”。 单击“保存配置”后,仔细阅读“迁移条件须知和风险提示”后,单击“是”。后续请根据步骤三:开始迁移服务器完成迁移。 单击“保存配置并开始迁移”后,仔细阅读“迁移条件须知和风险提示”后,单击“是”,随即自动开始迁移。后续请跳转步骤3查看迁移状态和详情按步骤执行。
  • 步骤四:查看并检查迁移结果 在目的端Flexus应用服务器L实例查看服务器操作系统。 单击Flexus应用服务器L实例资源卡片上的“远程登录”,可看到操作系统已经变更为源端服务器的CentOS系统及内核信息,表示迁移成功。 输入源端服务器的用户名密码,可直接登录,您可查看其它信息。 (可选)为Flexus应用服务器L实例安装一键式密码重置插件。 如果您的源端服务器为非华为云镜像的服务器,迁移后请为目的端服务器安装一键式密码重置插件。安装安装一键式密码重置插件后,在您遗忘密码时可重置密码,否则无法使用重置密码功能。 如果您知晓您的源端服务器密码,请参考安装一键式密码重置插件安装插件。 如果您遗忘了您的源端 镜像服务 器密码,请参设置密码并安装一键式密码插件安装插件。 (可选)检查HSS服务状态。 如果您的目的端Flexus应用服务器L实例未包含HSS服务,请忽略此步骤。 在您的目的端Flexus应用服务器L实例包含HSS服务的情况下,如果您迁移服务器后,HSS为“未防护”异常状态请参考使用私有镜像创建/切换服务器后,主机安全(HSS)服务未启动怎么办?启用HSS。 图3 HSS为“未防护”异常状态
  • 步骤三:开始迁移服务器 登录目的端Flexus应用服务器L实例所在的华为云SMS控制台,选择左侧“迁移服务器”。 在迁移服务器列表页面,找到待迁移的源端服务器,单击“操作”列“开始”,进入迁移配置页面。 或勾选待迁移的服务器,单击上方“开始”按钮批量迁移。 开始迁移后,单击源端服务器名称,可查看迁移状态和详情。 “迁移实时状态”为“已完成”,说明已启动目的端,整个迁移操作已完成。 (可选)如果您的源端服务器首次全量迁移完成后有增量数据,您可以使用同步功能,将源端增量数据同步到目的端。 首次全量迁移完成后,如果您仍然想迁移新增的数据,请勿对目的端服务器重装或切换操作系统,否则将迁移失败。
  • 步骤五:制作并切换镜像 迁移完成后,目的端Flexus应用服务器L实例控制台仍然显示迁移前的操作系统名称(Huawei Cloud EulerOS 2.0),如下图。同时,如果目的端Flexus应用服务器L实例在迁移后重装操作系统,将会回退至原操作系统(Huawei Cloud EulerOS 2.0)非迁移后的操作系统(CentOS 7.9),源端服务器数据也将丢失。 基于此两种情况,请根据本节指导,及时对Flexus应用服务器L实例创建私有镜像并切换至该私有镜像。切换镜像后,可解决此两种问题。 一旦切换镜像,将无法同步源端服务器增量数据。请确保无增量数据后再制作并切换镜像。 图4 目的端Flexus应用服务器L实例镜像名称 进入IMS控制台,在“创建私有镜像”页面,配置如下镜像信息。 区域:服务器所在区域,请保持此默认配置。 创建方式:创建私有镜像,请保持此默认配置。 镜像类型:系统盘镜像,请保持此默认配置。 镜像源:迁移系统的Flexus应用服务器L实例中云服务器名称。 名称:填写便于识别的镜像名称,例如CentOS 7.9_source-server-image。 协议:阅读并勾选协议。 单击“立即创建”,根据界面提示创建私有镜像。 私有镜像创建完成后,返回Flexus应用服务器L实例控制台,在Flexus应用服务器L实例右上角单击“切换镜像”。 设置切换操作系统的相关配置后,单击“立即切换”。 选择待切换的镜像:选择步骤1创建的私有镜像CentOS 7.9_source-server-image。 变更规格前请先将云服务器关机,或根据页面提示勾选“立即关机”。 阅读并勾选“协议许可”。 检查控制台镜像名称是否更改。
  • 准备工作 使用SMS服务前,请参考以下步骤准备好帐号、权限及源端、目的端服务器环境,以确保顺利完成迁移。 已注册华为帐号并开通华为云,登录华为云完成实名认证。 已获取华为帐号的迁移权限。 如果您使用华为帐号登录,默认拥有迁移权限,无需配置迁移权限;如果您使用 IAM 用户登录,可参考创建用户组并授权进行授权。 已获取目的端帐号的AK/SK。 迁移时使用访问密钥即AK/SK(Access Key ID/Secret Access Key)进行鉴权认证。请在目的端帐号创建并获取AK/SK,具体操作请参见如何获取AK/SK?(账号)。 主机迁移服务 不支持使用企业联邦用户(虚拟IAM用户)的AK/SK进行鉴权认证。 源端服务器账号密码要求。 如果您的源端服务器非华为云的服务器,请您牢记源端服务器账号密码。迁移服务器后,在目的端服务器安装一键式重置密码插件时,如果您知晓源端服务器账号密码,操作将较为简便,否则操作将较为复杂。 帐号余额不少于100元(充值、代金券皆可)。 建议您目的端账户余额不少于100元(充值、代金券皆可),避免迁移过程中欠费,导致迁移失败。 主机迁移 服务本身免费,但迁移过程中会创建按量付费资源并产生少量费用,具体费用请参见计费说明。 操作系统要求。 主机迁移服务支持迁移的源端服务器操作系统列表请参见Windows兼容性列表、Linux兼容性列表。 目的端服务器的操作系统类型需要和源端的OS类型(指Linux或Windows类型)保持一致。 迁移网络要求。 源端能连接到华为云API Gateway(安全组放通端口:443),具体操作请参见源端能连接到API Gateway。具体操作请参见配置安全组。 源端出网方向端口,建议全部开放。 源端能连接到目的端。具体操作请参见源端能连接到目的端。 本例使用弹性公网IP连接,源端和目的端均需要提前购买和配置正确的弹性公网IP。其中,目的端Flexus应用服务器L实例在创建后已经默认分配一个固定弹性公网IP。 目的端服务器所属安全组需要开放入方向端口: Windows系统需要开放TCP的8899端口、8900端口和22端口。 Linux系统文件级迁移开放22端口,块级迁移开放8900端口、22端口。 具体操作请参见配置安全组。 以上端口,建议只对源端服务器开放。 防火墙开放端口与操作系统开放端口保持一致。 源端服务器环境、剩余空间及其他要求。 源端服务器剩余空间要求: Windows:当分区大于等于600MB,该分区的可用空间小于320MB时不能迁移;当分区小于600MB,该分区的空间小于40MB时不能迁移。 Linux:根分区可用空间小于200MB时不能迁移。 源端服务器环境要求: 源端服务器时间与标准时间一致,避免源端Agent注册失败。 当源端服务器为Linux系统时,执行rsync -v查看是否安装Rsync库。 当未安装Rsync库,执行如下命令安装Rsync库: CentOS:执行yum -y install rsync。 Ubuntu:执行apt-get -y install rsync。 Debian:执行apt-get -y install rsync。 SUSE:执行zypper install rsync。 其他平台系统:参见官网安装相关文档。 当前主流服务器系统已默认安装Rsync库,无需手动安装。
  • 步骤一:在源端待迁移服务器安装并启动SMS-Agent 如果源端是linux系统,请参考安装Linux版的SMS-Agent。 如果源端是windows机器,请参考安装Windows版的SMS-Agent。 常见问题 在Linux源端待迁移服务器安装SMS-Agent时,如果出现rsync未安装的错误提示,请根据安装Rsync库先安装rsync,再重新安装SMS-Agent。 当出现如下错误提示时,请检查访问密钥是否输入正确,或者是否删除了访问密钥。 图1 错误提示 图2 访问密钥
  • 操作流程 操作步骤 说明 准备工作 使用SMS服务前,请准备好帐号、权限及源端、目的端服务器环境,以确保顺利完成迁移。 步骤一:在源端待迁移服务器安装并启动SMS-Agent 您需要在源端服务器上安装迁移Agent并且输入目的端Flexus应用服务器L实例所在华为帐号的AK/SK。迁移Agent启动成功后会收集源端服务器信息并自动发送给主机迁移服务。 步骤二:在华为云SMS控制台设置目的端迁移配置 迁移前,您需要设置目的端服务器,该目的端用来接收源端的数据。 步骤三:开始迁移服务器 将源端服务器所有数据都复制到目的端,复制速度取决源端服务器出网带宽和目的端服务器入网带宽(两者取较小者)。 步骤四:查看并检查迁移结果 查看源端服务器是否迁移成功,并安装一键式重置密码插件和主机安全Agent。 步骤五:制作并切换镜像 通过制作并切换镜像,可更改Flexus应用服务器L实例资源卡片上的镜像名称,并且在Flexus应用服务器L实例重装系统时,避免回退至Flexus应用服务器L实例迁移前的操作系统。
  • 资源和成本规划 资源 数据规划 说明 成本 源端服务器 服务器名称:source-server 操作系统:CentOS 7.9 源端服务器可以是华为云服务器,也可以是其他云平台或线下物理服务器。 如果您的源端服务器未配置弹性公网IP,需要购买弹性公网IP,此时涉及费用。 目的端服务器 服务器名称:destination_server 操作系统: Huawei Cloud EulerOS 2.0 目的端服务器为华为Flexus应用服务器L实例。 Flexus应用服务器L实例需付费购买。 SMS服务 - SMS服务为您免费提供服务器迁移服务。 主机迁移服务本身免费,但迁移过程中会创建按量付费资源(包括云硬盘、云硬盘快照、流量)并产生少量费用,具体费用请参见计费说明。
  • url_extract_protocol函数 提取URL中的协议信息。 语法:url_extract_protocol(expr) 表16 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_PROTOCOL('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表17 查询分析结果 类型 场景 查询语句 URL_EXTRACT_PROTOCOL('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 http
  • url_extract_port函数 提取URL中的端口信息。 语法:url_extract_port(expr) 表14 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_PORT('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表15 查询分析结果 类型 场景 查询语句 URL_EXTRACT_PORT('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 8080
  • url_extract_query函数 提取URL中的查询部分的信息。 语法:url_extract_query(expr) 表18 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_QUERY('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表19 查询分析结果 类型 场景 查询语句 URL_EXTRACT_QUERY('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 parameterName=parameterValue
  • url_extract_path函数 提取URL中的path信息。 语法:url_extract_path(expr) 表12 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型: String类型 示例:SELECT URL_EXTRACT_PATH('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表13 查询分析结果 类型 场景 查询语句 URL_EXTRACT_PATH('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 /index
  • url_extract_fragment函数 提取URL中的fragment信息。 语法:url_extract_fragment(expr) 表6 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_FRAGMENT('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表7 查询分析结果 类型 场景 查询语句 URL_EXTRACT_FRAGMENT('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 fragment
  • url_extract_host函数 提取URL中的host信息。 语法:url_extract_fragment(expr) 表8 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_HOST('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表9 查询分析结果 类型 场景 查询语句 URL_EXTRACT_HOST('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 host
  • url_encode函数 对URL进行编码。 语法:url_encode(expr) 表2 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_ENCODE('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 表3 查询分析结果 类型 场景 查询语句 URL_ENCODE('http://username:password@host:8080/index?parameterName=parameterValue#fragment') 返回结果 http%3A%2F%2Fusername%3Apassword%40host%3A8080%2Findex%3FparameterName%3DparameterValue%23fragment
  • url_decode函数 对URL进行解码。 语法:url_decode(expr) 表4 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 返回值类型:String类型 示例:SELECT URL_DECODE('http%3A%2F%2Fusername%3Apassword%40host%3A8080%2Findex%3FparameterName%3DparameterValue%23fragment') 表5 查询分析结果 类型 场景 查询语句 URL_DECODE('http%3A%2F%2Fusername%3Apassword%40host%3A8080%2Findex%3FparameterName%3DparameterValue%23fragment') 返回结果 http://username:password@host:8080/index?parameterName=parameterValue#fragment
  • url_extract_parameter函数 提取URL中的参数信息。 语法:url_extract_host(expr) 表10 参数说明 参数名称 描述 类型 是否必选 expr URL字符串 String 是 paramName 参数名称 String 是 返回值类型:String类型 示例:SELECT URL_EXTRACT_PA RAM ETER('http://username:password@host:8080/index?parameterName=parameterValue#fragment', 'parameterName') 表11 查询分析结果 类型 场景 查询语句 URL_EXTRACT_PARAMETER('http://username:password@host:8080/index?parameterName=parameterValue#fragment', 'parameterName') 返回结果 parameterValue
共100000条