华为云用户手册

  • 条件(Condition) 条件(Condition)是SCP生效的特定条件,包括条件键和运算符。 条件键表示SCP语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见全局条件键。 服务级条件键(前缀通常为服务缩写,如cbr:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个 VPC终端节点 发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,SCP才能生效。支持的运算符请参见:运算符。 cbr定义了以下可以在自定义SCP的Condition元素中使用的条件键,您可以使用这些条件键进一步细化SCP语句应用的条件。 表4 cbr支持的服务级条件键 服务级条件键 类型 单值/多值 说明 cbr:TargetOrgPaths string 单值 cbr服务添加备份成员API请求中指定的目标账号所属的组织路径。 cbr:VaultId string 单值 根据请求参数中指定的存储库ID过滤访问。 cbr:PolicyId string 单值 根据请求参数中指定的策略ID过滤访问。 cbr:EnabledPolicy boolean 单值 根据策略是否开启过滤访问。
  • 条件(Condition) 条件(Condition)是SCP生效的特定条件,包括条件键和运算符。 条件键表示SCP语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀通常为服务缩写,如ga:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,SCP才能生效。支持的运算符请参见:运算符。 GA定义了以下可以在SCP的Condition元素中使用的条件键,您可以使用这些条件键进一步细化SCP语句应用的条件。 表4 GA支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ga:RequestRegionId string 单值 按照在请求中传递的地域ID筛选访问权限。 ga:RequestResourceType string 单值 按照在请求中传递的资源类型筛选访问权限。 ga:RequestResourceId string 单值 按照在请求中传递的资源ID筛选访问权限。 ga:RequestIpAddress string 单值 按照在请求中传递的IP地址筛选访问权限。 ga:RequestDomainName string 单值 按照在请求中传递的 域名 筛选访问权限。 ga:RegionId string 单值 按照终端节点组的地域筛选访问权限。 ga:ResourceType string 单值 按照终端节点的资源类型筛选访问权限。 ga:ResourceId string 单值 按照终端节点的资源ID筛选访问权限。 ga:IpAddress string 单值 按照终端节点的IP地址筛选访问权限。 ga:DomainName string 单值 按照终端节点的域名筛选访问权限。
  • 操作步骤 多机RoCE网卡带宽测试。 执行以下命令查看昇腾的RoCE IP: cat /etc/hccn.conf 图1 查看昇腾的RoCE IP RoCE测试。 在Session1:在接收端执行 -i卡id。 hccn_tool -i 7 -roce_test reset hccn_tool -i 7 -roce_test ib_send_bw -s 4096000 -n 1000 -tcp 在Session2:在发送端执行 -i卡id,后面的ip为上一步接收端卡的ip。 cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test hccn_tool -i 0 -roce_test reset hccn_tool -i 0 -roce_test ib_send_bw -s 4096000 -n 1000 address 192.168.100.18 -tcp RoCE测试结果如图: 图2 RoCE测试结果(接收端) 图3 RoCE测试结果(服务端) 当某网卡已经开始RoCE带宽测试时,再次启动任务会有如下报错: 图4 报错信息 需要执行下述命令后关闭roce_test任务后再启动任务。 hccn_tool -i 7 -roce_test reset 可执行如下命令查看网卡状态。 for i in {0..7};do hccn_tool -i ${i} -link -g;done 可执行如下命令查看单节点内网卡IP连通性。 for i in $(seq 0 7);do hccn_tool -i $i -net_health -g;done
  • 操作步骤 首次配置环境时,需要先处理磁盘分配,这样可以把机器上几个T的空间用起来。这一步操作放在最开始,避免使用一段时间再挂载容易冲掉用户已存储的内容。执行命令: lsblk 查看系统存储信息,可以看到有八块nvme SSD硬盘(/dev/nvme0n1、/dev/nvme2n1、/dev/nvme1n1、/dev/nvme4n1、/dev/nvme5n1、/dev/nvme6n1、/dev/nvme3n1、/dev/nvme7n1)。 创建pv(物理卷physical volume基本存储逻辑块)。 依次执行以下命令: pvcreate /dev/nvme0n1 pvcreate /dev/nvme1n1 pvcreate /dev/nvme2n1 pvcreate /dev/nvme3n1 pvcreate /dev/nvme4n1 pvcreate /dev/nvme5n1 pvcreate /dev/nvme6n1 pvcreate /dev/nvme7n1 创建vg(卷组Volume Group将两块pv组成一个组),路径信息使用命令“fdisk -l”查询。 vgcreate nvme_group /dev/nvme0n1 /dev/nvme2n1 /dev/nvme1n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme3n1 /dev/nvme7n1 创建lv(逻辑卷logical volume可以在组里划分逻辑存储,每个lv可对应文件系统比如/home或者/usr等,这里将100%的VG空间都给这个lv)。 lvcreate -l 100%VG -n local_data nvme_group 格式化分区。 mkfs -t xfs /dev/nvme_group/local_data 挂载到/home/data目录。 mkdir /home/data mount /dev/nvme_group/local_data /home/data 执行“lsblk”查看磁盘合并挂载结果。 图1 磁盘合并挂载结果 通过脚本执行。 将以上步骤内容写入到“setup.sh”中,并保存。 #!/bin/bash pvcreate /dev/nvme0n1 pvcreate /dev/nvme1n1 pvcreate /dev/nvme2n1 pvcreate /dev/nvme3n1 pvcreate /dev/nvme4n1 pvcreate /dev/nvme5n1 pvcreate /dev/nvme6n1 pvcreate /dev/nvme7n1 vgcreate nvme_group /dev/nvme0n1 /dev/nvme2n1 /dev/nvme1n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme3n1 /dev/nvme7n1 lvcreate -l 100%VG -n local_data nvme_group mkfs -t xfs /dev/nvme_group/local_data mkdir /home/data mount /dev/nvme_group/local_data /home/data mkdir /home/data mount /dev/nvme_group/local_data /home/data UUID=$(blkid -s UUID -o value "/dev/nvme_group/local_data") fstab_entry="UUID=$UUID /home/data xfs defaults 0 0" echo "$fstab_entry" | sudo tee -a /etc/fstab 设置“setup.sh”为可执行文件。 chmod +x setup.sh 执行脚本 ./setup.sh 图2 脚本执行结果
  • 操作步骤 安装cann-toolkit。下载Ascend-cann-toolkit_6.3.T205_linux-aarch64.run,并执行: ./Ascend-cann-toolkit_6.3.T205_linux-aarch64.run --quiet --full 安装mpich-3.2.1.tar.gz。下载mpich-3.2.1.tar.gz,并执行: mkdir -p /home/mpich mv /root/mpich-3.2.1.tar.gz /home/ cd /home/;tar -zxvf mpich-3.2.1.tar.gz cd /home/mpich-3.2.1 ./configure --prefix=/home/mpich --disable-fortran make && make install 设置环境变量和编译hccl算子。 export PATH=/home/hjh/mpich/bin:$PATH cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test export LD_LIBRARY_PATH=/home/hjh/mpich/lib/:/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH make MPI_HOME=/home/hjh/mpich ASCEND_DIR=/usr/local/Ascend/ascend-toolkit/latest 算子编译完成后显示内容: 图1 算子编译完成 测试通信算子。 执行命令: export HCCL_BUFFSIZE=2048 单机all_reduce_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 单机单卡: mpirun -n 1 ./bin/all_reduce_test -b 8 -e 1024M -f 2 -p 8 单机多卡: mpirun -n 8 ./bin/all_reduce_test -b 8 -e 2048M -f 2 -p 8 图2 单机all_reduce_test 单机reduce_scatter_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 单机多卡: mpirun -n 8 ./bin/reduce_scatter_test -b 8K -e 2048M -f 2 -d fp32 -o sum -p 8 图3 单机reduce_scatter_test 单机all_gather_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 单机多卡: mpirun -n 8 ./bin/all_gather_test -b 8K -e 2048M -f 2 -d fp32 -p 8 图4 单机all_gather_test 单机alltoallv_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 单机多卡: mpirun -n 8 ./bin/alltoallv_test -b 8K -e 2048M -f 2 -d fp32 -p 8 图5 单机alltoallv_test 以下为昇腾相关的常用命令: 查看网卡状态UP和DOWN for i in {0..7};do hccn_tool -i ${i} -link -g;done 查看单节点内网卡IP连通性 for i in $(seq 0 7);do hccn_tool -i $i -net_health -g;done 当某网卡已经开始RoCE带宽测试时,再次启动任务会报错如下,解决这个问题需要关闭roce_test任务。 hccn_tool -i 7 -roce_test reset 图6 RoCE带宽测试
  • 场景描述 本文介绍如何使用在NPU Snt9B服务器上进行集合通信算子性能测试,包括的集合通信算子:allreduce、reducescatter、allgather、all2all。 本文选择的服务器镜像是:EulerOS-2.10-Arm-rc3-64bit-for-Snt9B-BareMetal-with-CANN7.0.RC1。该镜像已经安装CANN和mpich,并进行了环境配置,若选择其他镜像需要先执行步骤1和2。
  • 场景描述 昇腾为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力,需要安装PyTorch Adapter插件用于适配PyTorch,本文介绍如何安装Pytorch框架和Pytorch Adapter插件。 本文使用ModelArts上的NPU Snt9B裸金属服务器以及其提供的昇腾镜像EulerOS-2.10-Arm-rc3-64bit-for-Snt9B-BareMetal-with-CANN7.0.RC1,具体镜像环境可参考NPU Snt9B裸金属服务器支持的镜像详情。该Snt9B资源中的Python环境为3.7.9,参考昇腾官网文档可知,最高支持PyTorch1.11.0。
  • 操作步骤 安装PyTorch环境依赖。 pip3 install pyyaml pip3 install wheel pip3 install typing_extensions 安装官方aarch64 torch1.11.0版本包。 # 安装1.11.0版本 wget https://download.pytorch.org/whl/torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl pip3 install torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl 安装Pytorch Adapter插件torch_npu。 # 安装1.11.0版本 wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc3-pytorch1.11.0/torch_npu-1.11.0.post4-cp37-cp37m-linux_aarch64.whl pip3 install torch_npu-1.11.0.post4-cp37-cp37m-linux_aarch64.whl 验证命令。 python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())" 如下图返回True即为成功 图1 验证成功
  • 场景描述 本文介绍如何使用在2台NPU Snt9B服务器上进行集合通信算子多机性能测试,包括的集合通信算子:allreduce、reducescatter、allgather、all2all。 本文选择的服务器镜像是:EulerOS-2.10-Arm-rc3-64bit-for-Snt9B-BareMetal-with-CANN7.0.RC1。该镜像已经安装CANN和mpich,并进行了环境配置,若选择其他镜像需要先执行步骤1和2。
  • 操作步骤 安装cann-toolkit。下载Ascend-cann-toolkit_6.3.T205_linux-aarch64.run,并执行: ./Ascend-cann-toolkit_6.3.T205_linux-aarch64.run --quiet --full 安装mpich-3.2.1.tar.gz。下载mpich-3.2.1.tar.gz,并执行: mkdir -p /home/mpich mv /root/mpich-3.2.1.tar.gz /home/ cd /home/;tar -zxvf mpich-3.2.1.tar.gz cd /home/mpich-3.2.1 ./configure --prefix=/home/mpich --disable-fortran make && make install 设置环境变量和编译hccl算子。 export PATH=/home/hjh/mpich/bin:$PATH cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test export LD_LIBRARY_PATH=/home/hjh/mpich/lib/:/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH make MPI_HOME=/home/hjh/mpich ASCEND_DIR=/usr/local/Ascend/ascend-toolkit/latest 算子编译完成后显示内容: 图2 算子编译完成 测试通信算子。在主节点中执行以下命令。 多机all_reduce_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 多机多卡测试执行如下命令: mpirun -f hostfile -n 16 ./bin/all_reduce_test -b 8k -e 2048M -f 2 -d fp32 -o sum -p 8 图3 多机all_reduce_test 多机reduce_scatter_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 多机多卡测试执行如下命令: mpirun -f hostfile -n 16 ./bin/reduce_scatter_test -b 8k -e 2048M -f 2 -d fp32 -o sum -p 8 图4 多机reduce_scatter_test 多机all_gather_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 多机多卡测试执行如下命令: mpirun -f hostfile -n 16 ./bin/all_gather_test -b 8k -e 2048M -f 2 -d fp32 -p 8 图5 多机all_gather_test 多机alltoallv_test cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test 多机多卡测试执行如下命令: mpirun -f hostfile -n 16 ./bin/alltoallv_test -b 8K -e 2048M -f 2 -d fp32 图6 多机alltoallv_test
  • 前提条件 确保主节点已经配置了其他节点机器的免密登录,配置方法参考NPU Snt9B裸金属服务器多机免密互通解决方案。 确保mpirun的安装路径都是相同的。 确保设置的hostfile文件位于主节点中,且配置格式如下所示。 # 训练节点ip:每节点的进程数 192.168.1.1:8 图1 示例 确保所有节点的机器防火强都已关闭 # 查看防火墙状态 systemctl status firewalld # 关闭防火墙 systemctl stop firewalld
  • 场景描述 本文介绍GP Ant8裸金属服务器使用本地盘实现软RAID5的解决方案,该方案保障了本地盘数据的可靠性,当其中一块硬盘故障时,备份硬盘可自动恢复数据。 RAID1:同时对2个硬盘读写(同样的数据),强调数据的绝对安全性,一般会对系统盘做RAID1方案,但是该方案磁盘利用率只有50%,比较浪费。 RAID5:把多个(最少3个)硬盘合并成1个逻辑盘使用,数据读写时会建立奇偶校验信息,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。相当于raid0和raid1的综合。
  • 操作步骤 根据所需要的环境拉取镜像。 拉取Ascend+PyTorch镜像: # 配套Snt9b的容器镜像,包含pytorch 1.11 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_1_11_ascend:pytorch_1.11.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 拉取Ascend+Mindspore镜像: # 配套Snt9b的容器镜像,包含mindspore 2.2.0 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/mindspore_2_2_ascend:mindspore_2.2.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 启动容器镜像,注意多人多容器共用机器时,需要将卡号做好预先分配,不能使用其他容器已使用的卡号: # 启动容器,请注意指定容器名称、镜像信息。ASCEND_VISIBLE_DEVI CES 指定容器要用的卡,0-1,3代表0 1 3这3块卡,-用于指定范围 # -v /home:/home_host是指将宿主机home目录挂载到容器home_host目录,建议在容器中使用该挂载目录进行代码和数据的存储以便持久化 docker run -itd --cap-add=SYS_PTRACE -e ASCEND_VISIBLE_DEVICES=0 -v /home:/home_host -p 51234:22 -u=0 --name 自定义容器名称 上一步拉取的镜像SWR地址 /bin/bash 进入容器: docker exec -ti 上一命令中的自定义容器名称 bash 进入conda环境: source /home/ma-user/.bashrc cd ~ 查看容器中可以使用的卡信息: npu-smi info 如果命令报如下错误,则代表容器启动时指定的“ASCEND_VISIBLE_DEVICES”卡号已被其他容器占用,此时需要重新选择卡号并重新启动新的容器。 图1 报错信息 npu-smi info检测正常后,可以执行一段命令进行简单的容器环境测试,能正常输出运算结果代表容器环境正常可用。 pytorch镜像测试: python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);" mindspore镜像测试: # 由于mindspore的run_check程序当前未适配Snt9B,需要先设置2个环境变量才能测试 unset MS_GE_TRAIN unset MS_ENABLE_GE python -c "import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()" # 测试完需要恢复环境变量,实际跑训练业务的时候需要用到 export MS_GE_TRAIN=1 export MS_ENABLE_GE=1 图2 进入conda环境并进行测试
  • Step 4:docker run方式启动任务 Snt9B集群在纳管到cce集群后,都会自动安装docker,如果仅做测试验证,可以不需要通过创建deployment或者volcano job的方式,直接启动容器进行测试。训练测试用例使用NLP的bert模型,详细代码和指导可参考Bert。 拉取镜像。本测试镜像为bert_pretrain_mindspore:v1,已经把测试数据和代码打进镜像中。 docker pull swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 docker tag swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 bert_pretrain_mindspore:v1 启动容器。 docker run -tid --privileged=true \ -u 0 \ -v /dev/shm:/dev/shm \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /etc/hccn.conf:/etc/hccn.conf \ bert_pretrain_mindspore:v1 \ bash 参数含义: --privileged=true //特权容器,允许访问连接到主机的所有设备 -u 0 //root用户 -v /dev/shm:/dev/shm //防止shm太小训练任务失败 --device=/dev/davinci0 //npu卡设备 --device=/dev/davinci1 //npu卡设备 --device=/dev/davinci2 //npu卡设备 --device=/dev/davinci3 //npu卡设备 --device=/dev/davinci4 //npu卡设备 --device=/dev/davinci5 //npu卡设备 --device=/dev/davinci6 //npu卡设备 --device=/dev/davinci7 //npu卡设备 --device=/dev/davinci_manager //davinci相关的设备管理的设备 --device=/dev/devmm_svm //管理设备 --device=/dev/hisi_hdc //管理设备 -v /usr/local/Ascend/driver:/usr/local/Ascend/driver //npu卡驱动挂载 -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi //npu-smi工具挂载 -v /etc/hccn.conf:/etc/hccn.conf //hccn.conf配置挂载 进入容器,并查看卡信息。 docker exec -it xxxxxxx bash //进入容器,xxxxxxx替换为容器id npu-smi info //查看卡信息 图18 查看卡信息 执行下述命令启动训练任务。 cd /home/ma-user/modelarts/user-job-dir/code/bert/ export MS_ENABLE_GE=1 export MS_GE_TRAIN=1 bash scripts/run_standalone_pretrain_ascend.sh 0 1 /home/ma-user/modelarts/user-job-dir/data/cn-news-128-1f-mind/ 图19 训练进程 查看卡占用情况,如图所示,此时0号卡被占用,说明进程正常启动。 npu-smi info //查看卡信息 图20 查看卡信息 训练任务大概会运行两小时左右,训练完成后自动停止。若想停止训练任务,可执行下述命令关闭进程,查询进程后显示已无运行中python进程。 pkill -9 python ps -ef 图21 关闭训练进程
  • 操作步骤 磁盘合并挂载。首次配置环境时,需要先处理磁盘分配。这一步操作建议放在最开始,避免使用一段时间再挂载容易冲掉用户已存储的内容。 通过“df -h”查看是否已经有多个大于1T的存储空间,如果有代表已挂载过,如下图可以看到有四块nvme SSD硬盘(/dev/nvme0n1、/dev/nvme1n1、/dev/nvme2n1)。 图1 查看系统存储信息 创建pv(物理卷physical volume基本存储逻辑块)。 依次执行以下命令: pvcreate /dev/nvme0n1 pvcreate /dev/nvme1n1 pvcreate /dev/nvme2n1 pvcreate /dev/nvme3n1 创建vg(卷组Volume Group将两块pv组成一个组),路径信息使用命令“fdisk -l”查询。 vgcreate nvme_group /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 创建lv(逻辑卷logical volume可以在组里划分逻辑存储,每个lv可对应文件系统比如/home或者/usr等,这里将100%的VG空间都给这个lv)。 lvcreate -l 100%VG -n local_data nvme_group 格式化分区。 mkfs -t xfs /dev/nvme_group/local_data 挂载到/home/data目录。 mkdir /home/data mount /dev/nvme_group/local_data /home/data 设置开机自动挂载。 # 查看UUID blkid /dev/nvme_group/docker_data vim /etc/fstab # 文件末尾一行填写以下内容: UUID=上一步查询出的UUID值1 /home/data xfs defaults 0 0
  • 问题现象 在使用华为云Snt9B裸金属服务器多机多docker容器进行SSH免密互通时,发现免密互通失败。报错为: error: Could not load host key: /etc/ssh/ssh_host_rsa_key error: Could not load host key: /etc/ssh/ssh_host_dsa_key error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key 在容器的/etc/ssh目录只有如下图所示的文件。 图1 目录内容
  • 处理方法 该问题是由于docker容器sshd服务密钥缺失、sshd守护进程无法加载SSH主机密钥导致。在容器的/etc/ssh目录缺少ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key等文件。 按照以下步骤执行,即可成功配置并启动sshd服务。 生成相关ssh key。 执行如下三条命令,生成sshd服务所需的主机密钥。 ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' 此时/etc/ssh目录下应该存在如下文件。 图2 目录文件 修改sshd_config文件 vim /etc/ssh/sshd_config #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: 将上面四行改为下方内容,监听所有的ipv4和ipv6地址: Port 22 #AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: 重新启动ssh服务。 /usr/sbin/sshd 免密互联。以2台Snt9B裸金属服务器为例,实现两台机器之间互相免密SSH登录,它们的VPC IP分别为: 172.16.0.67 server1 172.16.0.92 server2 客户端生成秘钥。 若想上server1免密连接上server2,需要在server1上生成私钥和公钥,执行如下命令: ssh-keygen ssh-keygen默认使用RSA算法,长度为2048位,执行完后会在用户目录下的.ssh文件夹创建rsa密钥类型的一个公钥和一个私钥,如下图。 图3 .ssh文件夹 传输公钥。 执行如下命令,将server1的公钥上传到server2的root用户下,会在server2的/root/.ssh目录下生成一个authorized_keys文件 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.0.92 在server2执行 vim authorized_keys 可以看到server1的公钥已经写如在authorized_keys文件中,就可以实现server1免密SSH登录server2。 测试免密连接。 如下图所示,server1已经可以免密SSH登录server2了。按照上述步骤同样的方式,将server2的公钥发给server1,即可实现server2免密ssh登录server1,从而实现免密互联。 图4 server1免密SSH登录server2 常见问题: sshd启动时报错Loaded : error(Reason: No such file or directory) 该报错说明当前容器中未安装ssh服务,执行如下命令安装: yum install sshd // centos 系统 apt-get install sshd // ubuntu系统 ssh互联时报错Bad owner or permissions on xxx(e.g. /root/.ssh/config) 该报错是权限问题导致,要保证报错显示的路径从.ssh目录开始权限均为600。例如:Bad owner or permissions on /root/.ssh/config。需要执行: chmod 600 /root/.ssh chmod 600 /root/.ssh/config 配置免密互通后,调用ssh仍需要输入密码。 要保证调用ssh连接时的用户和.ssh目录以及.ssh/authorized_keys的用户名和用户组保持一致。例如,如果用户是root,那么用户名和用户组都要为root。
  • 步骤7:容器环境保存镜像 配置好环境后可以进行业务代码的开发调试。通常为了避免机器重启后环境丢失,建议将已经配好的环境保存成新的镜像,命令如下: # 查看需要保存为镜像的容器ID docker ps # 保存镜像 docker commit 容器ID 自定义镜像 名:自定义镜像tag # 查看已保存的镜像 docker images # 如果需要将镜像分享给其他人在其他环境使用,可将镜像保存为本地文件,该命令耗时较久,保存完后ls可查看到文件 docker save -o 自定义名称.tar 镜像名:镜像tag # 其他机器上使用时加载文件,加载好后docker images即可查看到该镜像 docker load --input 自定义名称.tar 到此环境配置就结束了,后续可以根据相关的迁移指导书做业务迁移到昇腾的开发调测工作。
  • 开启昇腾RoCE网卡网口 查询RoCE网卡的IP,记录address_0地址。 cat /etc/hccn.conf 图1 查询RoCE网卡的IP 由于hccn_tool没有直接up的命令,因此需要执行以下命令,重新配置一个RoCE网卡的IP,address为步骤1查询的IP。 hccn_tool -i -0 -ip -s address 29.29.xx.xx netmask 255.255.0.0 图2 关闭和开启RoCE网卡网口 更多hccn_tool用法,请见HCCN Tool接口参考。
  • 节点池管理 在资源池详情页,单击“节点池管理”页签,您可以创建、更新和删除节点池。 图1 节点池管理 创建节点池 当您需要更多节点池时,可单击“创建节点池”新增节点池,相关参数请参见k8s Cluster资源购买。 查看节点列表 当您想查看某一节点池下的节点相关信息,可单击操作列的“节点列表”,可查询节点的名称、规格及可用区。 更新节点池 当您想更新节点池配置时,可单击操作列的“更新”,相关参数介绍请参见k8s Cluster资源购买。 需注意,更新节点池配置时,配置仅对新增的节点生效,其中仅节点池K8S标签及污点支持对存量节点同步改动(勾选对应的复选框)。 图2 更新节点池 删除节点池 当有多个节点池时,支持删除节点池,此时在操作列会显示“删除”按钮,单击“删除”后输入“DELETE”并单击“确定”即可。 每个资源池至少需要有一个节点池,当只有一个节点池时不支持删除。 父主题: k8s Cluster资源使用
  • 修复节点 当前修复节点功能为白名单邀测阶段,如果您有试用需求,请联系技术支持。 若资源池节点发生硬件故障,可在资源池详情页的“节点管理”页签,查看对应故障节点。在对应节点的操作列的“更多”按钮中,修复按钮变为可单击状态,此时可单击“修复”按钮,对节点进行修复,待修复完成后,节点状态会变为“可用”。 当前支持“换件维修”和“重部署”两种修复方式: - 换件维修:通过更换硬件实现原地修复,修复耗时较长,对于非本地盘类故障,本地盘数据可以保留。 - 重部署:通过更换为新服务器实现修复,修复耗时较短,本地盘数据会丢失。 修复期间实例将无法工作,请确保相关实例业务已离线。如果云服务器上的业务不可停止,请勿修复,并联系技术支持进行处理。 若选择了重部署修复方式,实例会立即关机并迁移到新服务器,本地盘数据会被清空,请提前做好业务迁移和数据备份。 图1 修复节点 父主题: k8s Cluster资源使用
  • 压测工具环境 压测机器规格 表3 压测机器规格 名称 测试客户端E CS CPU 16vCPUs 内存 64GB 操作系统 Centos7.4 压测工具信息 表4 压测工具信息 测试工具 YCSB 版本 0.12.0 下载地址 https://github.com/brianfrankcooper/YCSB curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz
  • 测试环境 开源Cassandra测试环境 表1 开源Cassandra测试环境 名称 开源Cassandra集群 Cassandra版本 3.11.5 集群节点数 3 操作系统版本 Centos7.4 ECS规格 通用增强型4vCPUs | 16GB 通用增强型8vCPUs | 32GB 通用增强型16vCPUs | 64GB 通用增强型32vCPUs | 128GB GeminiDB Cassandra测试环境 表2 GeminiDB Cassandra测试环境 名称 GeminiDB Cassandra集群 区域 华东-上海二 集群节点 3 可用区 可用区三 版本 3.11 规格 4vCPUs | 16GB 8vCPUs | 32GB 16vCPUs | 64GB 32vCPUs | 128GB
  • 测试结果 性能结果 表6 性能数据 qps_avg统计 节点规格 客户端并发数 预置数据量 _read95_update5 _update50_read50 _read65_update25_insert10 _insert90_read10 开源Cassandra集群性能数据 4U6GB 32 50 2884 5068 8484 10694 8U32GB 64 100 2796 2904 5180 7854 16U64GB 128 200 5896 14776 14304 15707 32U128GB 256 400 8964 22284 19592 22344 GeminiDB Cassandra集群性能数据 4U6GB 32 50 8439 10565 9468 23830 8U32GB 64 100 24090 24970 21716 44548 16U64GB 128 200 48985 51335 43557 67290 32U128GB 256 400 91280 85748 74313 111540 GeminiDB Cassandra与开源Cassandra性能比 4U6GB 32 50 2.93 2.08 1.12 2.23 8U32GB 64 100 8.62 8.60 4.19 5.67 16U64GB 128 200 8.31 3.47 3.05 4.28 32U128GB 256 400 10.18 3.85 3.79 4.99 测试结论 社区版Cassandra对读较不友好,GeminiDB Cassandra在读时延的性能表现上,要优于社区版数十倍。 在写性能表现上,GeminiDB Cassandra与社区版基本保持一致。 社区版和GeminiDB Cassandra在节点扩容过程中,对业务都有轻度的影响。 GeminiDB Cassandra扩容较快,影响业务的时间较为短暂,为10s,且不涉及参数调整,扩容过程十分钟。 社区版根据数据量的大小,参数的设置,整个扩容流程比较长,对性能的影响也参差不齐,50G预置数据,在实验场景中,扩容会超过30分钟。 计算公式:最快迁移速度=(nodetool setstreamthroughput 32设置的迁移流量限制,默认为200Mbps)*原节点数。 本测试过程中,最快的迁移速度=32Mbps/s*3=12MB/S=720MB/min=0.703GB/min,计算可得50GB数据在此场景下迁移的最快时间是:50/0.703=71.1分钟。
  • 购买x GB的GeminiDB Redis的实例,优选主备还是集群? 优选集群。集群最小支持4GB,相比主备架构,可扩展性好,同规格QPS也会更高。集群有以下优点: GeminiDB Redis集群所有计算节点可读可写,节点资源利用率100%;而主备架构,备节点shard不能承担写操作,资源利用率低。 GeminiDB Redis集群为Proxy集群,兼容单机、Cluster集群访问方式。 父主题: 产品咨询
  • 注意事项 目前仅支持MySQL到GeminiDB Redis接口Hash类型的转换。 新规则的Redis键前缀+键分隔符不能是已有规则的Redis键前缀+键分隔符的子前缀,反之亦然。例如新规则的前缀为 "pre1:",键分隔符为 "," ,老规则前缀为 "pre1",分隔符为":", 这种情况不允许创建新规则。 如果修改映射规则中MySQ L实例 的表名后,则需要重新配置映射规则。 暂不支持ENUM、SET、JSON三种数据类型的同步。 如果对映射规则中键(Key)字段中的一个或多个字段执行改名、删除等操作时,会使映射规则失效。
  • 自建Redis主备、集群实例如何迁移到GeminiDB Redis? 在线迁移可以使用DRS服务进行迁移: 单机Redis迁移至GeminiDB Redis主备操作请参考将Redis迁移到GeminiDB Redis。 集群Redis迁移至GeminiDB Redis集群操作请参考将Redis集群迁移到GeminiDB Redis。 RDB文件迁移到GeminiDB Redis操作请参考RDB文件恢复到GeminiDB Redis。 父主题: 数据迁移
  • GeminiDB Redis版本补丁升级包含的在线升级和离线升级有什么区别,通常需要多长时间,对业务有哪些影响? 在线升级:和在线变更原理类似,实例节点依次滚动升级,执行时长和节点数正相关,每个节点约需2~5分钟。主备和集群实例,都包含3个内部管理节点,会同时进行版本升级。例如一个GeminiDB实例有3个worker节点,包含3个内部管理节点,共计6个节点,在线升级时长约在12-30分钟。单个节点升级过程中,对业务影响是秒级抖动,需要业务有重连机制。建议在业务低峰期间升级,实例CPU和内存利用率保持低位,避免单节点变更时,其他节点负载过高,进程拉起失败等异常情况。 离线升级:全部节点将并行升级,升级过程中业务不可用,会导致业务中断约10-20分钟左右。通常可用于停服期间,无业务访问等场景。请谨慎操作! GeminiDB Redis版本补丁升级详情操作请参考升级内核小版本。 父主题: 数据库使用
  • 自建主备Redis,迁移到GeminiDB Redis集群,需要考虑哪些因素? GeminiDB Redis集群为Proxy集群,支持以单机、主备的方式直接访问,无需修改。对于多key操作,Redis主备和集群用法不一样,若涉及多key命令,则需要业务修改。 自建Redis单机、主备架构所有数据都在同一个节点上。因此,对于多key操作,比如lua、rpoplpush、集合(sdiff、sunion)等操作,可以保证其操作的原子性。在自建Redis集群中,对key进行hash取模,决定key被哪一个分片(节点)所处理。因此,对跨分片的多个key进行操作难以保证原子性。为了保证集群中多key操作的原子性,Redis cluster采用hashtag来保证需要操作的多个key落在同一个节点。 Redis hashtag的使用方法为,为需要操作的多key加增相同的字符串。例如{aaa}list1、{aaa}list2,Redis服务在处理以上key时,识别到“{}”时,仅根据“{}”的字符串“aaa”计算hash值,因此可以确保其落在相同的节点上。 GeminiDB Redis集群中需要增加hashtag的命令请参考GeminiDB Redis集群版实例中,哪些命令需要使用hashtag。 父主题: 数据迁移
  • 为什么阿里云Redis、腾讯云Redis等云服务不能使用DRS进行数据迁移? 通常有以下因素: 不支持PSync迁出协议:存在一些自研的Redis-like数据库没有兼容PSync协议。 架构限制:较多云厂商支持代理模式,即在用户与Redis服务之间增加Proxy组件。因为Proxy组件的存在,所以PSync协议无法支持。 安全限制:在原生Redis中PSync协议基本会触发fork,会导致内存膨胀与用户请求延迟增加,甚至可能会发生“out of memory”。 商业策略:较多用户使用RedisShake是为了下云或者换云,屏蔽了PSync协议。 通常可以使用对应云服务的数据迁移服务,可以完成迁移,迁移详情请参考Redis数据迁移方案概览。 父主题: 数据迁移
共100000条