• 关于

    linux i节点

    的搜索结果

问题

简述 Linux 文件系统通过 i 节点把文件的逻辑结构和物理结构转换的工作过程?

黄一刀 2020-03-06 15:10:01 0 浏览量 回答数 1

回答

详细信息 如何验证CDN节点是否已经生效,详情请参考如下三种方法。 方法一:通过ping或dig的方式查看所添加的加速域名 方法二:在CDN控制台中查看节点是否生效 方法三:获取对应加速域名资源的response查看节点是否生效 方法一:通过ping或dig的方式查看所添加的加速域名 在Linux系统中执行如下命令,通过ping的方式查看所添加的加速域名。 ping www.xxxxx.cn 系统显示类似如下,如果被转向*.kunlun.com的域名,即表示CDN功能已生效。 11.png 在Windows系统中执行如下命令,通过dig的方式查看所添加的加速域名,可以查看相应的加速域名访问CDN节点的IP和延时丢包等基本信息。 dig www.xxxxx.cn 系统显示类似如下,确认CDN节点以生效。 dig.png 方法二:在CDN控制台中查看节点是否生效 登录CDN控制台。 单击 工具服务,输入CDN节点IP,单击 检测,即可确认CDN节点是否生效。 {C7731D36-676B-4445-9F3D-CAD85081A29B}_20191029142617.png 方法三:获取对应加速域名资源的response查看节点是否生效 提示:方法三本文以Linux系统的操作为例。 执行如下命令,获取对应加速域名资源的response,查看是否有CDN加速的对应节点信息,从而判断CDN是否生效。 curl -I bnos.xxxxxxxxxx.cn/10.JPG 系统显示类似如下。 1.JPG

保持可爱mmm 2020-03-30 15:03:28 0 浏览量 回答数 0

回答

在使用Kubernetes集群实现GPU计算时,为了有效利用GPU设备,可根据需要将应用调度到具有GPU设备的节点上,为此,您可利用GPU节点标签进行灵活调度。 前提条件 您已成功创建一个拥有GPU节点的Kubernetes集群,参见Kubernetes GPU集群支持GPU调度。 您已连接到Master节点,方便快速查看节点标签等信息,参见通过 kubectl 连接 Kubernetes 集群。 背景信息 阿里云Kubernetes在部署Nvidia GPU节点的时候会发现GPU的属性,并且作为NodeLabel信息暴露给用户,拥有如下优势: 可以快速筛选GPU节点 部署时可以作为调度条件使用 操作步骤 登录容器服务管理控制台。 在Kubernetes菜单下,单击左侧导航栏中的集群 > 节点,查看该集群的节点。 说明 本例中,该集群中拥有3个Worker节点,其中有两个Worker节点挂载了GPU设备,请查看节点IP,方便进行验证。 查看节点 选择GPU节点,单击操作列的更多 > 详情,进入Kubernetes Dashboard页面,查看GPU节点提供的节点标签。 节点详情 您也可登录到Master节点,执行以下命令,查看GPU节点的标签。 kubectl get nodes NAME STATUS ROLES AGE VERSION cn-beijing.i-2ze2dy2h9w97v65uuaft Ready master 2d v1.11.2 cn-beijing.i-2ze8o1a45qdv5q8a7luz Ready 2d v1.11.2 #可与控制台进行比对,确定GPU节点 cn-beijing.i-2ze8o1a45qdv5q8a7lv0 Ready 2d v1.11.2 cn-beijing.i-2ze9xylyn11vop7g5bwe Ready master 2d v1.11.2 cn-beijing.i-2zed5sw8snjniq6mf5e5 Ready master 2d v1.11.2 cn-beijing.i-2zej9s0zijykp9pwf7lu Ready 2d v1.11.2 选择一个GPU节点,执行以下命令,查看该GPU节点的标签。 kubectl describe node cn-beijing.i-2ze8o1a45qdv5q8a7luz Name: cn-beijing.i-2ze8o1a45qdv5q8a7luz Roles: Labels: aliyun.accelerator/nvidia_count=1 #注意 aliyun.accelerator/nvidia_mem=12209MiB aliyun.accelerator/nvidia_name=Tesla-M40 beta.kubernetes.io/arch=amd64 beta.kubernetes.io/instance-type=ecs.gn4-c4g1.xlarge beta.kubernetes.io/os=linux failure-domain.beta.kubernetes.io/region=cn-beijing failure-domain.beta.kubernetes.io/zone=cn-beijing-a kubernetes.io/hostname=cn-beijing.i-2ze8o1a45qdv5q8a7luz ...... 本例中,该GPU节点包含如下3个节点标签(NodeLabel)。 key value aliyun.accelerator/nvidia_count GPU核心数量 aliyun.accelerator/nvidia_mem GPU显存,单位为MiB aliyun.accelerator/nvidia_name nvida设备的GPU计算卡名称 同一类型的GPU云服务器的GPU计算卡名称相同,因此,您可通过该标签筛选节点。 kubectl get no -l aliyun.accelerator/nvidia_name=Tesla-M40 NAME STATUS ROLES AGE VERSION cn-beijing.i-2ze8o1a45qdv5q8a7luz Ready 2d v1.11.2 cn-beijing.i-2ze8o1a45qdv5q8a7lv0 Ready 2d v1.11.2 返回容器服务控制台主页,单击左侧导航栏应用 > 无状态,单击右上角使用模板创建。 创建一个tensorflow的Deployment,将该应用调度到GPU节点上。 创建应用 本例的yaml编排如下所示。 Define the tensorflow deployment apiVersion: apps/v1 kind: Deployment metadata: name: tf-notebook labels: app: tf-notebook spec: replicas: 1 selector: # define how the deployment finds the pods it mangages matchLabels: app: tf-notebook template: # define the pods specifications metadata: labels: app: tf-notebook spec: nodeSelector: #注意 aliyun.accelerator/nvidia_name: Tesla-M40 containers: - name: tf-notebook image: tensorflow/tensorflow:1.4.1-gpu-py3 resources: limits: nvidia.com/gpu: 1 #注意 ports: - containerPort: 8888 hostPort: 8888 env: - name: PASSWORD value: mypassw0rdv 您也可避免将某些应用部署到GPU节点。下面部署一个nginx的Pod,利用节点亲和性的特性进行调度,具体参见镜像创建无状态Deployment应用中关于节点亲和性的说明。 该示例的yaml编排如下所示: apiVersion: v1 kind: Pod metadata: name: not-in-gpu-node spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: aliyun.accelerator/nvidia_name operator: DoesNotExist containers: - name: not-in-gpu-node image: nginx 单击左侧导航栏应用 > 容器组,选择所需的集群和命名空间,进入容器组列表。 查看容器组 执行结果 在容器组列表中,您可看到两个示例的Pod(容器组)成功调度到对应的节点上,从而实现基于GPU节点标签的灵活调度。

1934890530796658 2020-03-26 23:03:59 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

E-HPC 混合云集群 您可以通过E-HPC创建HPC混合云集群,利用本地的HPC集群向阿里云扩容计算资源,统一调度公共云上资源和用户本地计算节点。 集群的调度结点(头节点),域账号管理节点都在本地,您可以通过以下方式进行本地和云上的节点通信: 云企业网:请参见 什么是云企业网。 物理专线:请参见 申请专线接入。 VPN网关:请参见 什么是VPN网关。 如何搭建VPN网关和建立连接,请参见 配置站点到站点连接。本地网关如果使用strongswan,请参见 strongSwan配置。 注意:本地网关需要允许 UDP 端口 500 和 4500 连入, strongswan 对外监听端口是 500 和 4500。本地网关需要允许域账号系统以及 HPC 集群头结点相关服务监听的端口连入。 环境要求 本地HPC集群管理节点的环境要求如下: 操作系统: Linux CentOS 6.8、6.9 或者 7.2、7.3、7.4 调度集群类型:PBSPro 18.1.1、Slurm 17.2.4 账号管理类型:nis 2.31、ldap 2.4 创建混合云集群 准备工作 搭建好网络连接、VPN、云企业网或者物理专线。 提供本地HPC集群调度节点信息:hostname、ip。 提供本地域账号节点信息: hostname、ip、账号域名 (domain name)。 E-HPC支持如下两种方式创建混合云集群 本地集群已经存在,那么本地集群节点不需要做额外的配置 本地集群还不存在,E-HPC会自动安装配置本地集群调度节点和域账号节点 API调用创建混合云集群 OpenAPI:CreateHybridCluster, 这里假设选择的地域是杭州(regionId:cn-hangzhou)。有关 API 文档,请参见 混合云管理API。 部分参数说明: VpcId:指定以上搭建网络连接相关的VPC。 Nodes:json格式的字符串,内容包含本地集群的调度节点以及账号节点的信息,可以参照以下的例子。 [ {"Role":"AccountManager", "HostName":"account", "IpAddress":"...", "AccountType":"nis"}, {"Role":"ResourceManager", "HostName":"scheduler","IpAddress":"...","SchedulerType":"pbs"} ] 注意: 如果本地调度节点和账号节点为同一个节点,以上 AccountManager 和 ResourceManager 下只需配置 HostName 和 IpAddress 的其中一个。 集群创建成功之后,通过E-HPC控制台可以查看集群基本信息,集群状态处于“安装中”。 本地集群配置 获取集群配置 在混合云集群创建成功之后,通过 API 获取集群配置信息。OpenAPI GetHybridClusterConfig,有关文档请参见 混合云管理API。 配置本地集群节点 登录本地集群调度节点和域账号管理节点,执行如下命令: echo -e "集群配置信息" > /root/ehpc.conf 账号节点和调度节点为两个节点 登录本地域账号管理节点运行如下命令安装配置 E-HPC agent: curl -O http://e-hpc-hangzhou.oss-cn-hangzhou.aliyuncs.com/packages/deploy_ehpc_agent.sh chmod +x deploy_ehpc_agent.sh ./deploy_ehpc_agent.sh -r AccountManager -i -r: # 指定节点角色 -i: # 如果本地集群是已经存在的,指定这个选项就会跳过安装配置域账号服务 登录本地集群调度节点运行如下命令安装配置E-HPC agent: 下载或者从以上域账号节点拷贝部署脚本 curl -O http://e-hpc-hangzhou.oss-cn-hangzhou.aliyuncs.com/packages/deploy_ehpc_agent.sh chmod +x deploy_ehpc_agent.sh ./deploy_ehpc_agent.sh -r ResourceManager -i -r: # 指定节点角色 -i: # 如果本地集群是已经存在的,指定这个选项就会跳过安装配置HPC集群调度服务 账号节点和调度节点为同一个节点 登录本地集群节点运行如下命令安装配置E-HPC agent curl -O http://e-hpc-hangzhou.oss-cn-hangzhou.aliyuncs.com/packages/deploy_ehpc_agent.sh chmod +x deploy_ehpc_agent.sh ./deploy_ehpc_agent.sh -r AccountManager,ResourceManager -i -r: #指定节点角色 -i: #如果本地集群是已经存在的,指定这个选项就会跳过安装配置HPC集群调度服务 本地管理节点部署之后,通过E-HPC控制台可以查看集群基本信息,集群状态会转变为“运行中”。 增加节点 调用 E-HPC OpenAPI AddNodes,请参见 节点管理API。 管理本地节点 E-HPC支持管理部署本地计算节点,将本地计算节点加入到混合云集群,也可以加入到云上的集群,最终统一调度管理。目前支持API方式接入: 增加本地计算节点到E-HPC集群 调用 E-HPC OpenAPI AddLocalNodes,请参见 混合云管理API。 获取新增加的节点配置 调用 E-HPC OpenAPI GetHybridClusterConfig获取该节点配置信息,注意请求参数’Node’必须设置为本地节点的hostname,请参见 混合云管理API。 登录本地计算节点运行如下命令安装配置E-HPC agent: 设置节点配置 echo -e "节点配置信息" > /root/ehpc.conf 下载或者从以上域账号节点拷贝部署脚本 curl -O http://e-hpc-hangzhou.oss-cn-hangzhou.aliyuncs.com/packages/deploy_ehpc_agent.sh chmod +x deploy_ehpc_agent.sh ./deploy_ehpc_agent.sh -r ComputeNode -i -r: # 指定节点角色 -i: # 如果本地计算节点已经安装配置好,指定这个选项就会跳过安装配置HPC集群调度相关服务

1934890530796658 2020-03-23 17:49:08 0 浏览量 回答数 0

回答

问题原因 导致该问题的可能原因包括: 磁盘分区空间使用率达到百分之百。 磁盘分区inode使用率达到百分之百。 僵尸文件:已删除文件因句柄被占用未释放导致相应空间未释放。 挂载点覆盖:在原有文件系统的相应目录下已经存在大量文件。挂载了新磁盘后,导致使用 df 命令能统计到相关空间使用,而使用 su 命令统计不到。 处理办法 不同的原因需要通过不同的方法解决: 分区容量满 inode容量满 修改inode数量 僵尸文件分析删除 挂载点覆盖 分区容量满 如果是分区容量满导致磁盘空间满,按以下步骤操作: 远程连接Linux实例。 运行 df -h 查看磁盘使用率。返回结果如下图所示。 注意: 返回结果里 Mounted on 下显示的是挂载目录。 查看磁盘使用率 循环执行如下指令,找到容量比较大的目录并进入目录,直到找到最精确的文件或目录,再结合业务情况等判断,删除相关文件或目录。您也可以购买更大的数据盘来分担处理。 cd / du -sh * inode容量满 如果是inode容量满导致磁盘空间满,按以下步骤操作: 远程连接Linux实例。 运行以下命令分析根目录下每个目录下面有多少个文件。 for i in /*; do echo $i; find $i | wc -l; done 返回结果如下图所示。 查根目录下有多少个文件 逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。 修改inode数量 ECS Linux 实例的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置;如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。 按以下步骤调整inode节点数量: 注意: inode的调整需要重新格式化磁盘,请确保您已经备份了数据再执行以下操作。 远程连接Linux实例。 运行以下命令查询inode使用情况。 df -i 返回结果如下图所示。 查看inode使用情况 运行以下命令卸载系统文件。假设卸载的文件系统为 /home。 umount /home 运行以下命令重新建立文件系统,指定inode节点数。 mkfs.ext3 /dev/xvdb -N 1638400 (可选)运行命令 vim /etc/fstab 修改fstab文件。 运行以下命令查看修改后的inode节点数。 dumpe2fs -h /dev/xvdb | grep node 返回结果如下图所示。 查看修改后的inode节点数 僵尸文件分析删除 如果磁盘和inode都没有问题,则需要查看是否存在未被清除句柄的僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间。如果这些文件过多,会占用很大的磁盘空间。 按以下步骤查看并删除僵尸文件: 远程连接Linux实例。 运行以下命令安装lsof。 yum install lsof -y 运行以下命令查看僵尸文件占用情况。 lsof |grep delete | more 返回结果示例如下图所示。 查看僵尸文件数量 采用以下方法释放句柄,以清除僵尸文件: 重启服务器。 正常停止或杀掉占用这些文件的服务进程。 挂载点覆盖 先取消磁盘挂载,再检查原挂载目录下的空间占用情况。

KB小秘书 2019-12-02 02:06:55 0 浏览量 回答数 0

问题

在使用Ubuntu的时候,命令ls -ai /出现了以下情况

a123456678 2019-12-01 20:06:56 838 浏览量 回答数 1

问题

PostgreSQL 数据库集群和PL/Proxy配置安装出错

huc_逆天 2020-05-28 09:17:46 1 浏览量 回答数 0

问题

PostgreSQL 数据库集群和PL/Proxy配置安装指南:报错

kun坤 2020-06-05 23:49:06 0 浏览量 回答数 1

问题

SSH密钥对访问Kubernetes集群

青蛙跳 2019-12-01 21:32:44 647 浏览量 回答数 0

问题

云服务器 ECS Linux 磁盘空间满(含 inode 满)问题如何排查

boxti 2019-12-01 22:04:42 1547 浏览量 回答数 0

回答

概述 当网站访问很慢或无法访问时,若已经排除显著的问题,而使用ping命令检测到有明显丢包时,建议您做链路测试。Linux环境下,推荐优先使用mtr命令行工具测试,或使用traceroute命令行工具进行链路测试来判断问题来源。通常情况下,链路测试步骤如下。 利用链路测试工具探测网络状况和服务器状态。 根据链路测试结果分析处理。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 如下分别介绍mtr命令行工具和tracert命令行工具的使用方法及如何分析链路测试结果。 mtr命令行工具 mtr(My traceroute)几乎是所有Linux发行版本预装的网络测试工具,集成了tracert与ping这两个命令的图形界面,功能十分强大。ping与tracert通常被用来检测网络状况和服务器状态,具体说明如下。 命令名称 具体说明 ping 送出封包到指定的服务器。如果服务器有回应就会传送回封包,并附带返回封包来回的时间。 tracert 返回从用户的电脑到指定的服务器中间经过的所有节点(路由)以及每个节点的回应速度。 mtr默认发送ICMP数据包进行链路探测,通过“-u”参数指定UDP数据包用于探测。相对于traceroute只做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。 用法说明 mtr [-hvrctglspni46] [--help] [--version] [--report] [--report-cycles=COUNT] [--curses] [--gtk] [--raw] [--split] [--no-dns] [--address interface] [--psize=bytes/-s bytes] [--interval=SECONDS] HOSTNAME [PACKETSIZE] 示例输出 [root@centos ~]# mtr 223.5.5.5 My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 23:16:27 2016 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. 192.X.X.20 0.0% 7 13.1 5.6 2.1 14.7 5.7 3. 111.X.X.41 0.0% 7 3.0 99.2 2.7 632.1 235.4 4. 111.X.X.197 0.0% 7 1.8 2.0 1.2 2.9 0.6 5. 211.X.X.25 0.0% 6 0.9 4.7 0.9 13.9 5.8 6. 211.X.X.70 0.0% 6 1.8 22.8 1.8 50.8 23.6 211.X.X.134 211.X.X.2 211.X.X.66 7. 42.X.X.186 0.0% 6 1.4 1.6 1.3 1.8 0.2 42.X.X.198 8. 42.X.X.246 0.0% 6 2.8 2.9 2.6 3.2 0.2 42.X.X.242 9. ??? 10. 223.5.5.5 0.0% 6 2.7 2.7 2.5 3.2 0.3 常见可选参数说明 -r或--report:以报告模式显示输出。 -p或--split:将每次追踪的结果分别列出来,而非--report统计整个结果。 -s或--psize:指定ping数据包的大小。 -n或--no-dns:不对IP地址做域名反解析。 -a或--address:设置发送数据包的IP地址。用于主机有多个IP的情况。 -4:只使用IPv4协议。 -6:只使用IPv6协议。 在mtr运行过程中,您也可以输入相应字母来快速切换模式,各字母的含义如下。 ?或h:显示帮助菜单。 d:切换显示模式。 n:切换启用或禁用DNS域名解析。 u:切换使用ICMP或UDP数据包进行探测。 返回结果说明 默认配置下,返回结果中各数据列的说明如下。 第一列(Host):节点IP地址和域名。按 n 键可切换显示。 第二列(Loss%):节点丢包率。 第三列(Snt):每秒发送数据包数。默认值是10,可以通过“-c”参数指定。 第四列(Last):最近一次的探测延迟。 第五、六、七列(Avg、Best、Worst):分别是探测延迟的平均值、最小值和最大值。 第八列(StDev):标准偏差。越大说明相应节点越不稳定。 traceroute命令行工具 traceroute是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet 协议(IP)数据包传送到目标地址时经过的路径。traceroute先发送最大存活时间值(Max_TTL)的UDP探测数据包,然后侦听从网关开始的整个链路上的ICMP TIME_EXCEEDED响应。探测从TTL=1开始,TTL值逐步增加,直至接收到ICMP PORT_UNREACHABLE消息。ICMP PORT_UNREACHABLE消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大TTL值。traceroute默认发送UDP数据包进行链路探测。可以通过“-I”参数来指定发送ICMP数据包用于探测。 用法说明 traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ] 示例输出 [root@centos ~]# traceroute -I 223.5.5.5 traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets 1 * * * 2 192.X.X.20 (192.X.X.20) 3.965 ms 4.252 ms 4.531 ms 3 111.X.X.41 (111.X.X.41) 6.109 ms 6.574 ms 6.996 ms 4 111.X.X.197 (111.X.X.197) 2.407 ms 2.451 ms 2.533 ms 5 211.X.X.25 (211.X.X.25) 1.321 ms 1.285 ms 1.304 ms 6 211.X.X.70 (211.X.X.70) 2.417 ms 211.138.114.66 (211.X.X.66) 1.857 ms 211.X.X.70 (211.X.X.70) 2.002 ms 7 42.X.X.194 (42.X.X.194) 2.570 ms 2.536 ms 42.X.X.186 (42.X.X.186) 1.585 ms 8 42.X.X.246 (42.X.X.246) 2.706 ms 2.666 ms 2.437 ms 9 * * * 10 public1.alidns.com (223.5.5.5) 2.817 ms 2.676 ms 2.401 ms 常见可选参数说明 -d:使用Socket层级的排错功能。 -f:设置第一个检测数据包的存活数值TTL的大小。 -F:设置不要分段标识。 -g:设置来源路由网关,最多可设置8个。 -i:使用指定的网卡送出数据包。用于主机有多个网卡时。 -I:使用ICMP数据包替代UDP数据包进行探测。 -m:设置检测数据包的最大存活数值TTL的大小。 -n:直接使用IP地址而非主机名称(禁用DNS反查)。 -p:设置UDP传输协议的通信端口。 -r:忽略普通的Routing Table,直接将数据包送到远端主机上。 -s:设置本地主机送出数据包的IP地址。 -t:设置检测数据包的TOS数值。 -v:详细显示指令的执行过程。 -w:设置等待远端主机回包时间。 -x:开启或关闭数据包的正确性检验。 分析链路测试结果 以如下链路测试结果示例图为基础进行阐述。 判断各区域是否存在异常,并根据各区域的情况分别处理。 区域A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析。本地网络提供商网络相关节点问题,请向当地运营商反馈。 区域B:运营商骨干网络。针对该区域异常,可根据异常节点IP查询归属运营商,然后直接或通过阿里云售后技术支持,向相应运营商反馈问题。 区域C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。 结合Avg(平均值)和StDev(标准偏差),判断各节点是否存在异常。 若StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。 若StDev不高,则通过Avg来判断相应节点是否存在异常。 注意:上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则同样的StDev为25ms,反而认为是不高的偏差。 查看节点丢包率,若“Loss%”不为零,则说明这一跳路由的网络可能存在问题。导致节点丢包的原因通常有两种。 人为限制了节点的ICMP发送速率,导致丢包。 节点确实存在异常,导致丢包。 确定当前异常节点的丢包原因。 若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第2跳路由的网络所示。 若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第5跳路由的网络所示。 说明:前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳路由的网络的丢包率为准。如前文链路测试结果示例图所示,在第5、6、7跳路由的网络均出现了丢包。所以,最终丢包情况,以第7跳路由的网络的40%作为参考。 通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析。 若某一跳路由的网络之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第5跳路由的网络之后的后续节点延迟明显陡增,则推断是第5跳路由的网络节点出现了网络异常。 注:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合反向链路测试一并分析。 ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第3跳路由的网络有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。 操作建议 若数据包在目标地址出现了100%的丢包,建议对目标服务器的安全策略配置进行排查。 若数据包出现循环跳转,导致无法到达目标服务器,建议联系相应节点归属运营商处理。 若数据包在跳转后无法收到任何反馈,建议结合反向链路测试做进一步确认,并联系相应节点归属运营商进行处理。 阿里云中国内地机房和其他国家或地区机房有网络通信的专线,为降低通信时候的丢包率,推荐使用高速通道。 若主机掉包和延迟非常高,建议做mtr双向测试,即本地到服务器的和服务器到本地的测试。无法远程登录时,请通过管理终端进行登录。

1934890530796658 2020-03-25 23:50:39 0 浏览量 回答数 0

问题

区块链私链搭建资料

leitgo 2019-12-01 21:29:05 2903 浏览量 回答数 0

回答

Cassandra操作 本文档操作都是在单数据中心,Vnode上操作 1.1. 添加节点到集群中 1.1.1. 添加非seed单节点 1.在新节点上安装Cassandra,但不要启动 2.修改cassandra.yaml文件: cluster_name – 新节点加入集群名称 listen_address/rpc_address – 新节点IP seed_provider – 集群seeds列表 3.启动新节点Cassandra 4.使用nodetool status验证节点是否启动完毕:状态为UN 5.运行nodetool cleanup(或OpsCenter)在集群节点上:移除脏数据(建议在低峰执行) 1.2. 添加非seed单节点案例: 已经存在Cassandra集群: cluster_name = ‘Test Cluster’ xxx_address = 192.168.92.148 seed_provider = 192.168.92.148 wKiom1cppL3B4g3eAAAi2QSK7_A312.png 添加新节点192.168.92.149: 1.安装Cassandra 参考《Cassandra教程》 wKioL1cppdWBh1E0AAAqS7BJjj8685.png 2.修改cassandra.yaml cluster_name: wKiom1cppRyQgL1OAAAJH-7ICJM624.png seed_provider wKiom1cppTGRTNDYAAAFzgKBsxI614.png listen_address: wKiom1cppUKSINlaAAARH9Y2M4k195.png rpc_address: wKioL1cppiuSXaHTAAAwhOPL0cU905.png 3.启动Cassandra wKiom1cppWrQEh_ZAAAHfko1RTA314.png 4.验证新节点192.168.92.149是否启动完毕 wKioL1cpplGjOAObAAAwiZhPyqs058.png 5.删除192.168.92.148上的脏数据 wKioL1cppnDRvX69AAAJU_XNzH8484.png 或者 wKiom1cppa6zkjcMAAEQ_CWmkCk571.png 1.1.3. 添加非seed多个节点 步骤参考1.1.1,唯一不同点步骤3,启动Cassandra需要同时启动,避免数据多次迁移。 wKiom1cppcXgG_yVAAATIyr-29o972.png wKioL1cppqqx_7fCAAAJIH1hzKU774.png 1.1.4. 添加seed节点 由于seed需要修改cassandra.yaml文件,所以需要重启所有节点 1.先将seed作为非seed节点安装启动,完成数据迁移操作 步骤参考1.1.1 2.修改所有节点的cassandra.yaml文件,添加seed 3.重启所有节点 1.2. 替换一个dead节点 由于一些硬盘损坏等原因,需要执行替换dead节点 1.确保dead节点状态为DN,使用nodetool status: wKioL1cppsGzufqHAADpeBCNoHM141.png 注意Address需要在下面步骤用到 2.修改新节点cassandra.yaml文件:参考1.1.1 3.启动新节点,使用replace_address选项: $ sudo bin/cassandra -Dcassandra.replace_address=address_of_dead_node 删除节点:参考1.4(建议72小时之后操作,确保gossip删除掉了老节点) 1.3. 替换一个running节点 由于升级新硬件等原因,需要使用新节点替换 添加新节点到集群中,参考步骤1.1.1 确保替换running节点状态为UN,使用nodetoolstatus: wKiom1cpphiDrWPlAAA1B_i8fJk015.png 4.删除running节点,参考1.4 1.4. 删除节点 1.4.1. 删除UN状态节点 运行nodetooldecommission删除UN节点 wKioL1cppv_j7ZivAAAH3iGF5ks849.png 或者: wKiom1cppjmTCRaaAAE-5vBVfQI416.png 1.4.2. 删除DN状态节点 运行nodetoolremovenode命令 wKiom1cppkrQRrCpAAAItR3PQ6g995.png 注意 如果以上步骤无法删除,可能是由于节点存在脏数据,请运行nodetool assassinate,强制删除 1.5. 修改ReplicationFactor 1.5.1. ReplicationFactor减少 运行nodetool cleanup,删除脏数据 或者: wKioL1cpp0Situ8oAAEQ_GnCSZU529.png 1.5.2. ReplicationFactor增加 运行nodetool repair,迁移数据 或者: wKioL1cpp2bw3WA-AAEwA_ieu7E092.png Cassandra优化 2.1. 安装前配置建议 2.1.1. 安装jemalloc jemalloc适合多线程下内存分配管理 wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2 tar xjf jemalloc-3.6.0.tar.bz2 cd jemalloc-3.6.0 ./configure make &&make install echo '/usr/local/lib'>/etc/ld.so.conf.d/local.conf ldconfig wKioL1cpp5HyAG8oAAA3jpQPa8Y101.png 2.1.2. 安装NTP (略) 2.1.3. Commit log和data目录在独立硬盘 wKioL1cpp6PyIWveAAAvC7KYWAI807.png wKiom1cppt2gKIqAAAAhpSf2WaI010.png 2.1.4. 硬盘类型 硬盘类型 SSD(微秒) SAS(毫秒) SATA(秒) 延迟 100~120 8~40 15 2.1.5. Linux优化 1.文件操作符 /etc/security/limits.conf nofile 65535 memlock unlimited – nofile 32768 – as unlimited /etc/security/limits.d/90-nproc.conf nproc 32768 2.Swap /etc/sysctl.conf vm.max_map_count = 131072 #最大限度使用物理内存 vm.swappiness = 0 使之生效 sysctl -p 永久关闭swap swapoff –a /etc/fstab:注释掉swap wKiom1cppyKA6sJrAAAzLjQpz9o105.png 3.NUMA echo 0 > /proc/sys/vm/zone_reclaim_mode 4.文件系统类型 EXT4 2.1.6. 磁盘阵列RAID优化 使用高效性能RAID0 sudo blockdev --setra 128 /dev/ 2.1.7. cassandra-evn.sh配置建议 JVM配置在cassandra-evn.sh中 MAX_HEAP_SIZE 生产环境建议8G wKiom1cpp1GwzHp0AACEXhULvLs062.png HEAP_NEWSIZE 一般设置为MAX_HEAP_SIZE的1/4 添加cassandra压缩线程级别,减少其资源占用 -Dcassandra.compaction.priority=1 打开JVM压缩,减少内存占用,适用于64位JVM -XX:+UseCompressedOops wKiom1cpp4KxPqHZAABZY1Ttqvc623.png 2.1.8. cassandra.yaml配置建议 concurrent_reads:16 * number_of_drives concurrent_counter_writes:16 * number_of_drives concurrent_writes:8 * number_of_cores #使用Memory Mapped File IO,性能超过Standard IO,64位 disk_access_mode: mmap #write性能提升5% memtable_allocation_type: offheap_objects 2.2. 安装后监控——定位——优化 2.2.1. nodetool tpstats 线程池使用统计,看是否有积压线程 wKiom1cpp6nTmTMAAABUQAaTpeo434.png 或者使用OpsCenter wKioL1cpqJCz6-lvAAA-lJo_EU0610.png wKioL1cpqKWDALVwAAAmDlC-FsU281.png 2.2.2. Read Requests/Write Requests 结合CPU和Disk使用监控,来判断系统每秒可以支持的操作数量 wKiom1cpp_DQtQE8AABRdkfpp3w679.png wKioL1cpqMbC1TDwAAA-wD4PguY526.png 2.2.3. total Memtable size 与内存使用比较,确保大的memtable不会导致内存竞争,大的memtable有利于写多读少情况 wKioL1cpqOKCHLMgAAAk_7lutxM979.png 2.2.4. SSTable count 确保sstablecount比较低(个位数),每次读操作会检查所有sstable,太多的sstable影响read性能 wKioL1cpqPaDs7LMAAAncf0Pt6g071.png 2.2.5. total bytes compacted 确保不会发生频繁操作 wKioL1cpqQiwB3gFAAA_LtjQpYs529.png 2.2.6. read latency/write latency 确保延迟在可接受范围之内,不包含网络延迟 wKioL1cpqSPCdxQWAAAnjLcjGm4907.png wKiom1cpqE6TT1WAAAAnQwgF-7o431.png 出问题后定位 writelatency写响应平均时长(以毫秒为单位)。依赖于consistency level和replication factor,也包含了写replicas的网络延迟 read latency受到硬盘,网络和应用程序读的方式等影响。比如,使用二级索引,读请求数据大小,client需要的consistencylevel都将影响readlatency。I/O的争用也会增加read latency。当SSTables有很多碎片,compaction跟不上写负载则读也会变慢。 2.2.7. partition size 监控表分区大小,确保max不超过100M wKiom1cpqG2zVpQaAAAl8484Yio823.png 2.2.8. cell count 监控表cell count,确保不超过20亿 wKioL1cpqVeCp-SOAAAkXqDKpLU110.png 2.2.9. write Read active 读写请求数 wKioL1cpqWnjxZXkAAAqG5kF0pA383.png 2.2.10. OS系统监控 监控CPU、Memory、Disk的使用率、饱和度。 wKioL1cpqYzy_ASAAAAhDAPQE1U728.png wKiom1cpqLjjAFHLAAAlkQpGBhY571.png wKioL1cpqY3QeNSrAAAhZsQei-k449.png 转载于:https://blog.51cto.com/eric100/1770036

养狐狸的猫 2019-12-02 02:11:44 0 浏览量 回答数 0

问题

Kubernetes工作节点cpu和内存请求始终为零

k8s小能手 2019-12-01 19:34:07 1110 浏览量 回答数 1

回答

请参考个人博客:https://blog.csdn.net/u010870518/article/details/79450295 在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树! 学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。 一、二叉查找树 (1)二叉树简介: 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 1、任意节点左子树不为空,则左子树的值均小于根节点的值; 2、任意节点右子树不为空,则右子树的值均大于于根节点的值; 3、任意节点的左右子树也分别是二叉查找树; 4、没有键值相等的节点; 上图为一个普通的二叉查找树,按照中序遍历的方式可以从小到大的顺序排序输出:2、3、5、6、7、8。 对上述二叉树进行查找,如查键值为5的记录,先找到根,其键值是6,6大于5,因此查找6的左子树,找到3;而5大于3,再找其右子树;一共找了3次。如果按2、3、5、6、7、8的顺序来找同样需求3次。用同样的方法在查找键值为8的这个记录,这次用了3次查找,而顺序查找需要6次。计算平均查找次数得:顺序查找的平均查找次数为(1+2+3+4+5+6)/ 6 = 3.3次,二叉查找树的平均查找次数为(3+3+3+2+2+1)/6=2.3次。二叉查找树的平均查找速度比顺序查找来得更快。 (2)局限性及应用 一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链。如下图: 大家看上图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线性结构。上图中的平均查找次数为(1+2+3+4+5+5)/6=3.16次,和顺序查找差不多。显然这个二叉树的查询效率就很低,因此若想最大性能的构造一个二叉查找树,需要这个二叉树是平衡的(这里的平衡从一个显著的特点可以看出这一棵树的高度比上一个输的高度要大,在相同节点的情况下也就是不平衡),从而引出了一个新的定义-平衡二叉树AVL。 二、AVL树 (1)简介 AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,它是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入删除次数比较少,但查找多的情况。 从上面是一个普通的平衡二叉树,这张图我们可以看出,任意节点的左右子树的平衡因子差值都不会大于1。 (2)局限性 由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。当然,如果应用场景中对插入删除不频繁,只是对查找要求较高,那么AVL还是较优于红黑树。 (3)应用 1、Windows NT内核中广泛存在; 三、红黑树 (1)简介 一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍。它是一种弱平衡二叉树(由于是若平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数变少,所以对于搜索、插入、删除操作多的情况下,我们就用红黑树。 (2)性质 1、每个节点非红即黑; 2、根节点是黑的; 3、每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 4、如果一个节点是红的,那么它的两儿子都是黑的; 5、对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点; 6、每条路径都包含相同的黑节点; (3)应用 1、广泛用于C++的STL中,Map和Set都是用红黑树实现的; 2、著名的Linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间; 3、IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查; 4、Nginx中用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器; 5、Java中TreeMap的实现; 四、B/B+树 说了上述的三种树:二叉查找树、AVL和红黑树,似乎我们还没有摸到MySQL为什么要使用B+树作为索引的实现,不要急,接下来我们就先探讨一下什么是B树。 (1)简介 我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的操作,磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树进行优化,提高磁盘读取时定位的效率。 为什么B类树可以进行优化呢?我们可以根据B类树的特点,构造一个多阶的B类树,然后在尽量多的在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。 总的来说,B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B/B+树的高度远远小于红黑树的高度(在下面B/B+树的性能分析中会提到)。B/B+树上操作的时间通常由存取磁盘的时间和CPU计算时间这两部分构成,而CPU的速度非常快,所以B树的操作效率取决于访问磁盘的次数,关键字总数相同的情况下B树的高度越小,磁盘I/O所花的时间越少。 注意B-树就是B树,-只是一个符号。 (2)B树的性质 1、定义任意非叶子结点最多只有M个儿子,且M>2; 2、根结点的儿子数为[2, M]; 3、除根结点以外的非叶子结点的儿子数为[M/2, M]; 4、每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字) 5、非叶子结点的关键字个数=指向儿子的指针个数-1; 6、非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1]; 7、非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树; 8、所有叶子结点位于同一层; 这里只是一个简单的B树,在实际中B树节点中关键字很多的,上面的图中比如35节点,35代表一个key(索引),而小黑块代表的是这个key所指向的内容在内存中实际的存储位置,是一个指针。 五、B+树 (1)简介 B+树是应文件系统所需而产生的一种B树的变形树(文件的目录一级一级索引,只有最底层的叶子节点(文件)保存数据)非叶子节点只保存索引,不保存实际的数据,数据都保存在叶子节点中,这不就是文件系统文件的查找吗? 我们就举个文件查找的例子:有3个文件夹a、b、c, a包含b,b包含c,一个文件yang.c,a、b、c就是索引(存储在非叶子节点), a、b、c只是要找到的yang.c的key,而实际的数据yang.c存储在叶子节点上。 所有的非叶子节点都可以看成索引部分! (2)B+树的性质(下面提到的都是和B树不相同的性质) 1、非叶子节点的子树指针与关键字个数相同; 2、非叶子节点的子树指针p[i],指向关键字值属于[k[i],k[i+1]]的子树.(B树是开区间,也就是说B树不允许关键字重复,B+树允许重复); 3、为所有叶子节点增加一个链指针; 4、所有关键字都在叶子节点出现(稠密索引). (且链表中的关键字恰好是有序的); 5、非叶子节点相当于是叶子节点的索引(稀疏索引),叶子节点相当于是存储(关键字)数据的数据层; 6、更适合于文件系统; 非叶子节点(比如5,28,65)只是一个key(索引),实际的数据存在叶子节点上(5,8,9)才是真正的数据或指向真实数据的指针。 (3)应用 1、B和B+树主要用在文件系统以及数据库做索引,比如MySQL; 六、B/B+树性能分析 n个节点的平衡二叉树的高度为H(即logn),而n个节点的B/B+树的高度为logt((n+1)/2)+1;   若要作为内存中的查找表,B树却不一定比平衡二叉树好,尤其当m较大时更是如此。因为查找操作CPU的时间在B-树上是O(mlogtn)=O(lgn(m/lgt)),而m/lgt>1;所以m较大时O(mlogtn)比平衡二叉树的操作时间大得多。因此在内存中使用B树必须取较小的m。(通常取最小值m=3,此时B-树中每个内部结点可以有2或3个孩子,这种3阶的B-树称为2-3树)。 七、为什么说B+树比B树更适合数据库索引? 1、 B+树的磁盘读写代价更低:B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。 2、B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。 3、由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。 PS:我在知乎上看到有人是这样说的,我感觉说的也挺有道理的: 他们认为数据库索引采用B+树的主要原因是:B树在提高了IO性能的同时并没有解决元素遍历的我效率低下的问题,正是为了解决这个问题,B+树应用而生。B+树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。 ———————————————— 版权声明:本文为CSDN博主「徐刘根」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u010870518/java/article/details/79450295

AA大大官 2020-03-31 14:54:01 0 浏览量 回答数 0

回答

使用流程 云渲染管理系统(Render Manager 简称渲管)是一个开源的 web 应用,可以帮助用户轻松搭建阿里云上的私有渲染系统,直接调用海量计算资源,一键管控集群规模,在加速渲染任务的同时省去自建集群的烦恼。 渲管首页渲管建立在阿里云 BatchCompute 、OSS 和 ECS 的三个云产品基础之上的。详细介绍请参考官网,在使用渲管前,请确保已开通此三产品。 BatchCompute 是阿里云上的批量计算服务,可以帮助用户进行大规模并行计算。 OSS 是阿里云上的对象存储服务,可以存储海量数据。 ECS 是阿里云上的云服务器,极易运维和操作,可以方便的制作系统镜像。 渲管与这三个云产品的关系如下图rm_c 使用流程 A) 制作计算节点镜像 根据所要使用的区域,创建 ECS 按量云服务器,在云服务器中安装所需的渲染软件;保存为自定义镜像,并将镜像共享给账号1190847048572539,详见计算节点 镜像制作 章节。 B) 上传数据到OSS 将渲染所需要的数据上传到对应区域的OSS,并保持上传前的目录结构。 C) 启动渲管 在 ECS 控制台创建实例(短期使用,选择按量即可),镜像选择镜像市场中的rendermanager(也可以使用渲管安装包进行部署,详见 操作手册 部署章节)。 D) 配置渲管 登录渲管页面 https://ip/rm/login, 配置完基本信息后(AccessKeys 和 OSS bucket),在镜像管理页中添加上面制作的计算节点镜像 ID,并对该计算节点镜像配置渲染命令行。 E) 创建项目 在渲管的项目管理页面创建项目,指定 OSS 的数据映射规则(也称 OSS 挂载,在计算节点启动的时候,OSS 上的数据会被挂载到节点的本地路径),选择计算节点镜像 ID,OSS 的输出路径(用于保存渲染结果),计算节点中的临时输出路径。 F) 集群的创建和管理 在集群管理页面可以按需创建集群,指定计算节点使用的镜像 ID,节点类型和节点数量等信息。 G) 提交渲染作业 在项目页里提交渲染作业,要指定目的集群、渲染的帧范围以及节点数量等信息。提交完作业后,可实时查看渲染日志以及节点 CPU 使用率等信息。 BatchCompute 提供了测试用的计算节点镜像(windows server 2008,ID:m-wz9du0xaa1pag4ylwzsu),它预装了 blender 渲染软件。使用 blender 制作一个小场景的 演示视频 已上传 OSS(测试时,需下载并上传到您的 OSS bucket)。 实际生产时,请根据需求制作合适的计算节点镜像。 准备工作 注册阿里云账号并开通 OSS、ECS 和 BatchCompute 服务。 创建AccessKey。账号信息->AccessKeys->创建 Access Key,记录 Access Key 信息。p0 渲染示例 A) 创建 OSS bucket阿里云官网->管理控制台->对象存储 OSS->创建 bucket(例如,名字为 renderbucket),地域选择深圳(华南1),读写权限为私有。p1p2p3p4 获取blender场景并上传到您的 OSS bucket 在浏览器输入 http://openrm.oss-cn-qingdao.aliyuncs.com/blender/monkey/cube.blend 。 下载示例场景文件(BatchCompute 提供的测试场景),在 OSS 控制台创建目录结构blender/monkey,然后在该目录下上传文件,文件路径为oss://renderbucket/blender/monkey/cube.blend。 启动rendermanager A) 阿里云官网->管理控制台->云服务器 ECS->创建实例 选择按量付费,然后在镜像市场应用开发分类中搜索 rendermanager 镜像,使用 rendermanager 镜像并按下图配置购买,可适当提高带宽。 使用按量付费要求用户账户至少有 100 块金额,对于地域没有要求,看 ECS 实际售卖库存情况而定。 p8p9p001p10 B) 购买后,点击进入管理控制台,在实例列表中可看到刚才启动的云主机(创建会有延迟,请刷新几次)。p11p12 登入渲管页面 在本地浏览器输入 https://ecs_instance_ip/rm/login,ecs_instance_ip 为 ECS 实例的公网 IP(由于使用了 https,请在浏览器页面授权信任)。初始账号密码为: rm_admin rm_admin@123 生产系统,请一定更改账号和密码。 配置渲管 A) 登录后,点击右上角的配置可进入配置页面,填入 SECURITY_ID,SECURITY_KEY, OSS_BUCEKET 三个字段的值,SECURITY_ID 和 SECURITY_KEY 即上面准备工作中获取的 AccessKey 信息。p14 B) 设置 OSS_HOST 为 oss-cn-shenzhen.aliyuncs.com;REGION 的选择主要和计算节点的镜像归属有关,必须和计算节点镜像归属 REGION 保持一致;本例采用的官方计算节点镜像(该镜像部署在深圳 REGION)所以此处设置在深圳 REGION 。 p003 C) 设置 BATCHCOMPUTE_REGION 为 cn-shenzhen;设置深圳 REGION 原因同上。 p004 D) 点击保存。 添加计算节点镜像 镜像管理->添加计算节点镜像,ECS 镜像 ID:m-wz9du0xaa1pag4ylwzsu(BatchCompute 提供的公用计算节点镜像,实际生产,需要用户制作所需要的计算节点镜像,具体制作流程请参考 操作手册)。p15p16 配置渲染软件信息 A) 镜像管理->软件配置。p17 B) 添加软件。p18 C) 选择 blender 模板并确定,执行 render_cmd 渲染命令。p19 创建项目 A) 项目管理->新建项目。p20B) 填入需要映射的 OSS 路径数量(本例只映射一个OSS路径),并点击确认。p21C) 填入项目名称: blender_test。D) 镜像选择上面创建的镜像。E) OSS 映射中的选择/输入路径为 /renderbucket/blender/。F) OSS 映射的目的地为盘符 G: (本例中使用的镜像系统为 Windows2008 server)。G) OSS 输出目录填写为 /renderbucket/rm_test/output/。H) 虚拟机中的输出目录填写为 C:\render_output\,该路径用于渲染节点中临时存放渲染结果,并且该目录里的渲染结果会被传输到 OSS 上输出目录里。I) 确定提交。p22 提交渲染任务 A) 项目管理->提交渲染。p23 B) 选择场景所在的 OSS 路径前缀。p24 C) 选择项目根目录, 直到场景文件cube.blend,选中 monkey 文件夹;可以看到页面下部出现场景选择,勾选场景,选择渲染软件,填入渲染起止帧 1~5,并点击提交渲染按钮。p25 D) 选择渲染中的任务,可查看刚才提交的作业。p26 查看渲染日志 A) 点击任务名称并点击节点列表。p27 B) 点击想查看的节点,可以看到渲染器和渲管 worker 的各种日志、标准输出以及标准出错信息(计算节点运行起来后才能看到日志信息)。p28p29p30 查看渲染结果 A) 等待作业结束后,在已结束的任务中可以可以看到任务状态为 Finished。p31 B) 点击任务名称,可以查看 OSS 上的输出路径。p32 C) 在 OSS 控制台上查看对应输出路径,获取地址后点击获取 URL 并复制。p33 D) 在浏览器粘贴 URL 可以直接查看图片。p34 E) 恭喜您已跑通云上的 Blender 渲染测试。 渲管系统结构 A) 渲管与各云产品的详细关系 渲管与各云产品的依赖如下图所示。rm_c B) 渲管系统内部结构 p0渲管系统由如下 3 部分组成: render manager: 基于 flask 框架开发web 应用,主要负责和用户进行人机交互,接收用户请求。 render master:后台背景进程,根据人机交互的结果进行作业提交以调度。 本地数据库:主要存放用户提交的渲管请求,待渲管任务结束后自动删除该信息。 2. 渲管的部署 在阿里云云市场有已安装了渲管的 ECS 镜像免费售卖,在启动 ECS 实例时,将镜像指定为镜像市场中的 rendermanager,启动即可使用。 A) 获取渲管镜像 官方渲管镜像:RenderManager 镜像,创建 ECS 实例时,选择镜像市场,直接搜索以上关键字即可获取。自定义渲管镜像:基础镜像建议采用 Ubuntu 14.04 64 位,按照以下步骤安装渲管系统。 安装 flask sudo apt-get install python-flask -y 安装 uwsgi sudo apt-get install uwsgi uwsgi-plugin-python -y 安装 nginx sudo apt-get install nginx –y 修改 nginx 配置,在 http 模块里添加新的 server server { listen 1314; #listen port server_name localchost; location / { include uwsgi_params; uwsgi_pass 0.0.0.0:8818;#this must be same app_config.xml } } vi /etc/nginx/nginx.conf 启动 nginx 或重启 nginx 获取最新版渲管 wget http://openrm.oss-cn-qingdao.aliyuncs.com/render_manager_release/latest/rm.tar.gz 解压 tar –xf rm.tar.gz x.x.x 为版本号 cd rm-x.x.x 指定安装目录部署 python deploy.py /root/rm_install/ 启动 cd /root/rm_install/rm_install_s && python rm_cmd.py start 登陆渲管 http://installed_machine_ip:1314/rm/login 初始账号: rm_admin 密码: rm_admin@123 若监听在公网,建议采用https B) 开通 ECS 实例 请指定某 ECS 实例部署渲管系统,配置参数,请参考创建 Linux 实例 公网 IP 地址选择分配。 镜像市场: RenderManager 或者自定义镜像 设置密码 3. 渲管系统升级 p43页面右上角的版本信息中可以查看是否有可升级的新版本,第一次使用渲管前,建议升级到最新版本后再使用渲管(每次只能升级到下一版本,所以升级后请查看是否已是最新版本)。 渲管系统配置 p44配置页面里有渲管系统的各种系统设置。第一次使用渲管时,必须设置SECURITY_ID,SECURITY_KEY,OSS_BUCKET 三个值,不然渲管无法使用。 SECURITY_ID 和 SECURITY_KEY 即阿里云账号的 AccessKeys 信息,可以在阿里云官网控制台创建。 OSS_BUCKET 可以在 OSS 的控制台创建,用于存储渲管自身的 worker 包已经渲染数据。 渲管默认使用青岛(华北1)区域,如果使用其他区域的 BatchCompute,请修改配置中的OSS_HOST(OSS_BUCKET 必须与 OSS_HOST 属于同一个region)与 BATCHCOMPUTE_REGION,每个 REGION 的 OSS_HOST 也可以工单咨询获取。 区域的选择和计算节点的镜像区域保持一致,若计算节点镜像在深圳区域,则渲管的区域信息也必须是深圳,同时 OSS BUCKET 也必须是该 REGION 下的 BUCKET;若使用批量计算官方提供的计算节点镜像则需要选择深圳 REGION。p45 其他配置项,请参考页面上的说明。 OSS数据上传 提交渲染作业前,一定要将渲染用到的数据上传 OSS,在计算节点启动后再上传的数据将不能在计算节点中访问到。 由于 OSS 页面控制台上传数据有大小限制,所以上传数据建议使用 OSS 的 命令行工具(类 linux系统)、windows 客户端或者 MAC 客户端 。 参考 更多 OSS工具 。 计算节点镜像制作 渲染客户如希望定制计算节点镜像,请参考:自定义镜像。 计算节点镜像管理 A) 添加计算节点镜像 在镜像管理页面,可以添加计算节点镜像 ID。add_image B) 给计算节点镜像配置渲染软件信息 在添加完计算节点镜像 ID 后,在镜像信息页面可以点击添加软件并配置软件信息。image_config 在配置软件信息时,需要填入渲染软件的名称,渲染文件的后缀(用于识别渲染文件)以及执行代码。 执行代码(要求 python 语法)会在渲管 worker 中执行,render_cmd 变量即渲染时的命令行,命令行应根据实际安装的渲染软件来填写,比如渲染软件的路径,以及一些参数。渲管中的模板只是个示例,实际使用需要微调。 render_cmd 渲管已经预定义了一些变量和函数,在执行代码中可以调用这些变量和函数,例如$CPU在执行期会被替换成实际的cpu核数,$START_FRAME在执行期会被替换成起始帧号。 如果想增加自定义参数,可以选择添加参数,添加的自定义参数会需要在提交作业时填入。关于所有的可用变量可在软件配置页面点击查看。 $OUTPUT_LOCAL_DIR这个变量即创建项目时配置的节点内临时输出路径,渲染的输出结果应该放在该路径下(大部分渲染器都支持在命令行中指定输出路径),在渲染结束后该目录下的数据会被传输到 OSS。 项目管理 A) 项目创建 创建项目时需要指定 OSS 数据映射,计算节点镜像,虚拟机内的临时输出路径,OSS 输出路径。 i. 计算节点镜像 创建项目时选择的计算节点镜像(需要先在镜像管理页面添加计算节点镜像)是提交 AutoCluster 作业时使用的镜像,如果提交作业时指定了集群(在集群管理页面可以创建)则作业直接跑在所指定的集群中。 ii. OSS数据映射 OSS 数据映射(或者称 OSS 数据挂载),可以将 OSS 上的数据映射到计算节点的本地路径(windows 是盘符),一个作业中的所有计算节点可以共享访问到相同的数据。OSS 数据挂载有如下功能或限制: 映射的目的路径必须根据计算节点镜像实际的操作系统类型进行填写,否则会导致挂载失败,windows 只能映射到盘符(例 G:),linux 必须是绝对路径。 可共享读取访问 OSS 上的数据。 不支持修改 OSS 上已存在的文件和文件夹名称。 选择 WriteSupport 后,支持本地(挂载路径下)文件和文件夹的创建,以及新建文件的修改。 挂载的本地路径里的改动只是本计算节点可见,不会同步到 OSS。 在 Windows 系统中,在挂载时刻已存在的文件夹中创建的文件或文件夹将不支持删除操作,linux 系统可以。 选择 LockSupport 后,将可以使用文件锁功能(只影响 windows)。 OSS 数据挂载会有分布式cache(集群内),所以在大规模并发读取数据时性能较好(能达到 10MB~30MB,200 台并发,读取 20G 数据)。 OSS 路径必须以’/’结尾。 iii. OSS 输出目录与临时本地输出目录 渲染作业结束时,计算节点中的临时输出目录中的数据将会被传输到 OSS 输出目录中。临时输出路径格式必须与节点的操作系统类型对应,不然会出错。 B) 提交渲染任务 p41选择目的集群和场景所在的 OSS 路径前缀后进入提交的详细页面,选中场景文件的上一级目录,可以被提交渲染的场景文件则会被列出,勾选想要渲染的文件,选择配置的渲染软件和起止帧,即可提交渲染作业。 可指定节点数量,如果指定集群,并发数量上限是集群的节点数上限。填入的起止帧会均匀的分布在各个计算节点被渲染。p42 任务结束后可以在OSS上查看输出结果,如果开启自动下载(配置页面设置),渲管会在任务结束后将OSS上的输出结果下载到渲管部署的机器上。 C) 渲染日志 在节点列表页面,点击节点可以查看各种日志,渲管 worker 日志里都是渲管系统 worker 的日志,里面可以查看该计算节点中运行的实际渲染命令行。 渲染器标准输出和渲染器标准输出里的日志,就是渲染软件的输出日志。 p47 调试 新启动的渲管需要进行配置,并进行调试然后再提交大规模的渲染任务。 配置完,应该先提交1帧测试任务,查看错误日志(渲管 worker 日志和渲染器标准输出)调整渲染软件配置(主要是修改渲染命令行),走通全流程并确认结果没有问题后才进行正式生产渲染。 当作业失败的时候可以在作业信息中查看失败原因项。p46 建议创建一个集群然后将作业提交到该集群进行调试(AutoCluster 的作业需要启停计算节点,比较费时)。 集群管理 在集群管理页面可以创建自定义集群,需要选择所需的计算节点镜像 ID,节点的实例类型(BatchCompute 的不同区域可能支持的实例类型和磁盘类型不同,详细可以提工单咨询)。 磁盘类型和磁盘大小(根据实际制作的计算节点镜像的磁盘大小选择,选择过小会导致无法启动计算节点)。创建好的集群可以动态调整节点数量,甚至调整数量到 0。p48

1934890530796658 2020-03-28 20:45:20 0 浏览量 回答数 0

回答

批量增加计算节点。 描述 可以批量增加 1-99 个计算节点,在增加计算节点前,您可以: 调用 ListRegions 查询可用地域列表 调用 DescribeCluster 查询集群信息 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:AddNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Count Integer 是 - 添加的计算节点数量,取值范围:1-99。 ComputeSpotStrategy String 否 - 计算节点竞价策略,取值NoSpot、SpotWithPriceLimit 或 SpotAsPriceGo。 ComputeSpotPriceLimit String 否 - 设置实例的每小时最高价格,取值是浮点数,取值范围是当前的价格区间。 ImageOwnerAlias String 否 system 镜像类型,system、self、others 或 marketplace ImageId String 否 - 镜像 Id, 如果 ImageType 是system, 就只根据 OsTag 来决定基础镜像 ID; 如果是self、others 或 marketplace, ImageId 就是必填的。 InstanceType String 否 - 扩容的实例规格,如果没有配置,就使用上次扩容或者创建集群时的计算节点实例规格。 EcsChargeType String 否 PostPaid 集群使用ECS实例的付费类型,PostPaid:按量付费,PrePaid:包年包月。若选择包年包月类型,默认开启自动续费,节点释放后将关闭自动续费。 Period Integer 否 - 购买资源的时长,单位为:月。当参数 EcsChargeType 取值为 PrePaid 时才生效且为必选值。 PeriodUnit String 否 - 购买资源的时长。可选值 Week/Month。 AutoRenew Boolean 否 false true:自动续费;false:不自动续费。 AutoRenewPeriod Integer 否 1 每次自动续费的时长,当参数 AutoRenew 取值 True 时生效。 CreateMode String 否 manual 节点是如何创建的,manual 手动扩容, autoscale 自动扩容 返回参数 公共返回参数 注: 由于AddNodes是异步操作,请求成功就会立即返回,不会等待实例创建,所以没有返回InstanceId,可以通过ListNodes查询节点列表来获取InstanceId 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=AddNodes&RegionId=cn-hangzhou&ClusterId=<集群ID>&Count=1&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368", "InstanceIds": { "InstanceId": [] } } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 批量删除计算节点。 描述 批量删除集群中的计算节点,请您确认已经导出节点上所有作业数据后再进行操作。在删除计算节点前,您可以: 调用 ListRegions 查询可用地域列表 调用 DescribeCluster 查询指定集群信息 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:DeleteNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Instance.n.Id String 是 - 第 n 个(n 从 1 开始编号,可以有多条)要移除的节点实例 ID。 ReleaseInstance Boolean 否 true 是否释放由 E-HPC 创建的实例 返回参数 公共参数,了解更多请参阅 公共参数。 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=DeleteNodes&RegionId=cn-hangzhou&ClusterId=<集群ID>&Instance.1.Id=<实例ID>&Instance.2.Id=<实例ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368" } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 查询集群中节点列表。 描述 查询用户集群中的节点列表,接口会返回所有节点信息。 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:ListNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Role String 否 - 节点角色,可选项包括 Manager:管控节点,Login:跳板机,Compute:计算节点。 HostName String 否 - 节点名称,支持模糊查询, 支持 MySQL 的正则表达式。 OnlyDetached Boolean 否 false 是否仅查询不由 E-HPC 管理的节点信息。如果为true, 则仅返回不由 E-HPC 释放的节点(比如包月节点或者非 E-HPC 创建的节点)。 PageNumber Integer 否 1 显示的页码,起始值为 1。 PageSize Integer 否 10 每页显示的条数,1-50。 返回参数 除公共返回参数外返回如下结果: 名称 类型 描述 Nodes Array 节点信息数组。 TotalCount Integer 列表条目总数。 PageNumber Integer 当前页码。 PageSize Integer 本页条数。 其中,NodeInfo 结构包含以下字段: 名称 类型 描述 Id String 节点实例 ID。 RegionId String 地域 ID。 Status String 节点状态。 CreateByEhpc Boolean 是否由 E-HPC 创建,目前都是。 Role String 节点类别,Scheduler:主调度器,SchedulerBackup:备用调度器,Account:主域服务器,AccountBackup:备用域服务器,Login:跳板机,Compute:计算节点。调度器和域服务器都属于管控节点(Manager)。 Roles Array 否 TotalResources Struct 资源总量。 UsedResources Struct 计算节点资源使用量,其他类型节点返回值为空。 AddTime Date 加入集群时间。 SpotStrategy String 后付费实例的竞价策略。 LockReason String 节点被锁定类型,默认返回为空字符串。 ExpiredTime Date 包月节点到期时间。如果节点是按量节点,则此项为空。 Expired Boolean 包月节点是否到期。如果节点是按量节点,则为false。 ImageOwnerAlias String 镜像类型,system、self、others 或 marketplace。 ImageId String 镜像 ID。 Location String 节点所在位置,是本地节点 OnPremise 还是公共云上节点 PublicCloud 。 CreateMode String 节点是如何创建的,manual 手动扩容, autoscale 自动扩容 其中,计算节点资源 ResourceType 结构包含以下字段: 名称 类型 描述 Cpu Integer CPU资源总量,单位:核。 Memory Integer 内存资源总量,单位:GB。 Gpu Integer GPU资源总量,单位:卡。 节点状态 Status 的可能取值: 取值 描述 uninit 未初始化 init 初始化中 ready 空闲 running 运行中 exception 异常 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=ListNodes&RegionId=cn-shanghai&ClusterId=<集群ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 1 1 1 i-uf68t1zu3jkhs8wyxhil cn-shanghai running 2018-05-28T02:59:44.000Z false NoSpot system centos_7_02_64_20G_alibase_20170818.vhd public_cloud Compute 2 4096 0 0 0 0 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368" "TotalCount": 1, "PageNumber": 1, "PageSize": 1, "Nodes": { "NodeInfo" : [ { "Id": "i-uf68t1zu3jkhs8wyxhil", "RegionId": "cn-shanghai", "Status": "running", "AddTime": "2018-05-28T02:59:44.000Z", "Expired": false, "SpotStrategy": "NoSpot", "LockReason": "", "ImageOwnerAlias": "system", "ImageId": "centos_7_02_64_20G_alibase_20170818.vhd", "Location": "public_cloud", "TotalResources": { "Cpu": 2, "Memory": 4096, "Gpu": 0 }, "UsedResources": { "Cpu": 0, "Memory": 0, "Gpu": 0 } } ] } } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 描述 不分页查询用户指定集群中的节点列表,接口会返回查询到的所有节点信息。 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:ListNodesNoPaging。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Role String 否 - 节点角色,可选项包括 Manager:管控节点,Login:跳板机,Compute:计算节点。 HostName String 否 - 节点名称,支持模糊查询, 支持MySQL的正则表达式。 OnlyDetached Boolean 否 false 是否仅查询不由 E-HPC 管理的节点信息。如果为true, 则仅返回不由 E-HPC 释放的节点(比如包月节点或者非 E-HPC 创建的节点)。 返回参数 除公共返回参数外返回如下结果: 名称 类型 描述 Nodes Array 节点信息数组。 其中,NodeInfo 结构包含以下字段: 名称 类型 描述 Id String 节点实例 ID。 RegionId String 地域 ID。 Status String 节点状态。 CreateByEhpc Boolean 是否由 E-HPC 创建,目前都是。 Role String 节点类别,Scheduler:主调度器,SchedulerBackup:备用调度器,Account:主域服务器,AccountBackup:备用域服务器,Login:跳板机,Compute:计算节点。调度器和域服务器都属于管控节点(Manager)。 Roles Array 节点角色类型数组 TotalResources Struct 资源总量。 UsedResources Struct 计算节点资源使用量,其他类型节点返回值为空。 AddTime Date 加入集群时间。 SpotStrategy String 后付费实例的竞价策略。 LockReason String 节点被锁定类型,默认返回为空字符串。 ExpiredTime Date 包月节点到期时间。如果节点是按量节点,则此项为空。 Expired Boolean 包月节点是否到期。如果节点是按量节点,则为false。 ImageOwnerAlias String 镜像类型,system、self、others 或 marketplace。 ImageId String 镜像 ID。 Location String 节点所在位置,是本地节点 OnPremise 还是公共云上节点 PublicCloud。 其中,计算节点资源 ResourceType 结构包含以下字段: 名称 类型 描述 Cpu Integer CPU资源总量,单位:核。 Memory Integer 内存资源总量,单位:GB。 Gpu Integer GPU资源总量,单位:卡。 节点状态 Status 的可能取值: 取值 描述 uninit 未初始化 init 初始化中 ready 空闲 running 运行中 exception 异常 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=ListNodesNoPaging&RegionId=cn-shanghai&ClusterId=<集群ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 i-uf68t1zu3jkhs8wyxhil cn-shanghai running 2018-05-28T02:59:44.000Z false NoSpot system centos_7_02_64_20G_alibase_20170818.vhd public_cloud Compute 2 4096 0 0 0 0 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368", "Nodes": { "NodeInfo" : [ { "Id": "i-uf68t1zu3jkhs8wyxhil", "RegionId": "cn-shanghai", "Status": "running", "AddTime": "2018-05-28T02:59:44.000Z", "Expired": false, "SpotStrategy": "NoSpot", "LockReason": "", "ImageOwnerAlias": "system", "ImageId": "centos_7_02_64_20G_alibase_20170818.vhd", "Location": "public_cloud", "TotalResources": { "Cpu": 2, "Memory": 4096, "Gpu": 0 }, "UsedResources": { "Cpu": 0, "Memory": 0, "Gpu": 0 } } ] } } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 批量重置计算节点。 描述 批量重置集群中的计算节点,在重置计算节点前,您可以: 调用 ListRegions 查询可用地域列表 调用 DescribeCluster 查询指定集群信息 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:ResetNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Instance.n.Id String 是 - 第 n 个(n 从 1 开始编号,可以有多条)要重置的节点实例 ID。 返回参数 公共参数,了解更多请参阅 公共参数。 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=ResetNodes&RegionId=cn-hangzhou&ClusterId=<集群ID>&Instance.1.Id=<实例ID>&Instance.2.Id=<实例ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368" } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 启动集群中节点列表。 描述 在停止集群中节点实例(StopNodes)后,可以批量启动集群中节点实例。 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:StartNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Instance.n.Id String 是 - 第 n 个(n 从 1 开始编号,可以有多条)要移除的节点实例 ID。 Role String 否 Compute 节点角色,可选项包括 Manager:管控节点,Login:跳板机,Compute:计算节点。 返回参数 公共参数,了解更多请参阅 公共参数。 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=StartNodes&RegionId=cn-hangzhou&ClusterId=<集群ID>&Instance.1.Id=<实例ID>&Instance.2.Id=<实例ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368" } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 停止集群中节点列表。 描述 批量停止集群中节点实例,在停止节点实例后,可以使用 StartNodes 接口来重新启动节点实例。 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:StopNodes。 RegionId String 是 - 地域 ID。 ClusterId String 是 - 集群 ID。 Instance.n.Id String 是 - 第 n 个(n 从 1 开始编号,可以有多条)要移除的节点实例 ID。 Role String 否 Compute 节点角色,可选项包括 Manager:管控节点,Login:跳板机,Compute:计算节点。 返回参数 公共参数,了解更多请参阅 公共参数。 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=StopNodes&RegionId=cn-hangzhou&ClusterId=<集群ID>&Instance.1.Id=<实例ID>&Instance.2.Id=<实例ID>&<公共请求参数> 返回示例 XML格式 04F0F334-1335-436C-A1D7-6C044FE73368 JSON格式 { "RequestId": "04F0F334-1335-436C-A1D7-6C044FE73368" } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 按队列查询节点信息。 描述 按队列分组查询用户账户下单个集群的节点信息。 请求参数 名称 类型 是否必需 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:ListNodesByQueue。 ClusterId String 是 - 集群ID。 RegionId String 是 - 地域 ID。 QueueName String 是 - 队列名。 PageNumber int 否 1 显示的页码,起始值为 1。 PageSize int 否 10 每页显示的条数,1-50。 返回参数 除公共返回参数外返回如下结果: 名称 类型 描述 Nodes Array 节点信息数组。 TotalCount Integer 列表条目总数。 PageNumber Integer 当前页码。 PageSize Integer 本页条数。 其中,NodeInfo 结构包含以下字段: 名称 类型 描述 AddTime Date 加入集群时间。 CreateMode String 节点是如何创建的,manual 手动扩容, autoscale 自动扩容 HostName String 主机名称。 Id String 节点实例 ID。 ImageId String 镜像 ID。 ImageOwnerAlias String 镜像类型,system、self、others 或 marketplace。 InstanceInfo String 实例详细信息。 IpInfo String IP详细信息。其中包含:PrivateIpAddress和PublicIpAddress两种。 Location String 节点所在位置,是本地节点 OnPremise 还是公共云上节点 PublicCloud 。 LockReason String 节点被锁定类型,默认返回为空字符串。 SpotStrategy String 后付费实例的竞价策略。 Status String 节点状态。 TotalResources Struct 资源总量。 UsedResources Struct 计算节点资源使用量,其他类型节点返回值为空。 VSwitchId String 虚拟交换机ID。 VpcId String 专有网络ID。 ZoneId String 实例可用区ID。 其中,计算节点资源 ResourceType 结构包含以下字段: 名称 类型 描述 Cpu Integer CPU资源总量,单位:核。 Memory Integer 内存资源总量,单位:GB。 Gpu Integer GPU资源总量,单位:卡。 节点状态 Status 的可能取值: 取值 描述 Uninit 未初始化 Init 初始化中 Ready 空闲 Running 运行中 Exception 异常 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=ListNodesByQueue&RegionId=cn-hangzhou&ClusterId=<集群ID>&QueueName=workq&<公共请求参数> 返回示例 XML格式 1 3 50 5457B047-AC0A-4C75-B212-59759E38810F m-bpcccccccccccccccekw4cd 170.6.1.208 2 16384 m-bpcccccccccccccccccccc2ekw4cd cn-hangzhou-g true adb22432-ccccccccccccccccccccc219f784bfc7 2 16384 true sg-bp1ecccccccccoi6dtz linux CentOS 7.2 64位 vpc compute0 2019-04-22T11:53Z none cn-hangzhou false 2099-12-31T15:59Z ecs.r5 i-bpccccccccc9v788g 00:16:3e:11:8e:dd 172.16.1.208 eni-bp1ccccccccccccccueuoggzn5 0 PayByTraffic NoSpot Not-applicable 0 172.16.1.208 vsw-bp16ccccccccced144r vpc-bp1ccccccccq4txlicvt 0 2019-04-22T14:29Z ehpc-hz-5ccccc28c_compute0 CentOS 7.2 64 bit ecs.r5.large Running false PostPaid 0 public_cloud cn-hangzhou-g self vsw-bpccccccz6ted144r compute0 NoSpot manual vpc-bcccccccccubaq4txlicvt 0 0 running i-bp1ccccccv6e9v788g 2019-04-22T11:53:01.000Z JSON格式 { "PageNumber": 1, "TotalCount": 3, "PageSize": 50, "RequestId": "5457B047-AC0A-4C75-B212-59759E38810F", "Nodes": { "NodeInfo": [ { "ImageId": "m-bpcccccccccccccccekw4cd", "IpInfo": { "PrivateIpAddress": { "IpAddress": [ "100.16.1.208" ] }, "PublicIpAddress": { "IpAddress": [ "" ] } }, "TotalResources": { "Cpu": 2, "Memory": 16384 }, "InstanceInfo": { "ImageId": "m-bpcccccccccccccccccccc2ekw4cd", "VlanId": "", "EipAddress": { "IpAddress": "", "AllocationId": "", "InternetChargeType": "" }, "ZoneId": "cn-hangzhou-g", "IoOptimized": true, "SerialNumber": "adb22432-ccccccccccccccccccccc219f784bfc7", "Cpu": 2, "Memory": 16384, "DeviceAvailable": true, "SecurityGroupIds": { "SecurityGroupId": [ "sg-bp1ecccccccccoi6dtz" ] }, "SaleCycle": "", "AutoReleaseTime": "", "ResourceGroupId": "", "OSType": "linux", "OSName": "CentOS 7.2 64位", "InstanceNetworkType": "vpc", "HostName": "compute0", "CreationTime": "2019-04-22T11:53Z", "EcsCapacityReservationAttr": { "CapacityReservationPreference": "none", "CapacityReservationId": "" }, "RegionId": "cn-hangzhou", "DeletionProtection": false, "OperationLocks": { "LockReason": [] }, "ExpiredTime": "2099-12-31T15:59Z", "InnerIpAddress": { "IpAddress": [] }, "InstanceTypeFamily": "ecs.r5", "InstanceId": "i-bpccccccccc9v788g", "NetworkInterfaces": { "NetworkInterface": [ { "MacAddress": "00:16:3e:11:8e:dd", "PrimaryIpAddress": "172.16.1.208", "NetworkInterfaceId": "eni-bp1ccccccccccccccueuoggzn5" } ] }, "InternetMaxBandwidthIn": 0, "CreditSpecification": "", "InternetChargeType": "PayByTraffic", "SpotStrategy": "NoSpot", "StoppedMode": "Not-applicable", "InternetMaxBandwidthOut": 0, "VpcAttributes": { "NatIpAddress": "", "PrivateIpAddress": { "IpAddress": [ "172.16.1.208" ] }, "VSwitchId": "vsw-bp16ccccccccced144r", "VpcId": "vpc-bp1ccccccccq4txlicvt" }, "SpotPriceLimit": 0, "StartTime": "2019-04-22T14:29Z", "InstanceName": "ehpc-hz-5ccccc28c_compute0", "Description": "", "OSNameEn": "CentOS 7.2 64 bit", "PublicIpAddress": { "IpAddress": [] }, "InstanceType": "ecs.r5.large", "Status": "Running", "Recyclable": false, "ClusterId": "", "GPUSpec": "", "InstanceChargeType": "PostPaid", "GPUAmount": 0, "DedicatedHostAttribute": { "DedicatedHostId": "", "DedicatedHostName": "" }, "DeploymentSetId": "" }, "Location": "public_cloud", "ZoneId": "cn-hangzhou-g", "ImageOwnerAlias": "self", "VSwitchId": "vsw-bpccccccz6ted144r", "HostName": "compute0", "SpotStrategy": "NoSpot", "CreateMode": "manual", "VpcId": "vpc-bcccccccccubaq4txlicvt", "UsedResources": { "Cpu": 0, "Memory": 0 }, "Status": "running", "Id": "i-bp1ccccccv6e9v788g", "LockReason": "", "AddTime": "2019-04-22T11:53:01.000Z" }, ] } } 错误码 查询 E-HPC 接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。 更新队列配置信息。 描述 为集群中的队列更新资源组和计算节点实例的信息。 请求参数 字段 类型 是否必须 默认值 描述 Action String 是 - 操作接口名,系统规定参数,取值:UpdateQueueConfig ClusterId String 是 - 集群ID RegionId String 是 - 地域ID QueueName String 是 - 任务队列名 ResourceGroupId String 是 - 资源组ID ComputeInstanceType String 否 - 计算节点实例类型 返回参数 返回公共返回参数。 示例 请求示例 https://ehpc.cn-hangzhou.aliyuncs.com/?Action=UpdateQueueConfig&RegionId=cn-hangzhou&ClusterId=<集群ID>&QueueName=workq&ResourceGroupId=<资源组ID>&<公共请求参数> 返回示例 XML格式 5198C3E8-85F5-4280-8547-687C1710FE08 JSON格式 { "requestId": "5198C3E8-85F5-4280-8547-687C1710FE08", } 错误码 查询E-HPC接口错误码请访问 错误码。更多错误码,请访问 API 错误中心。

1934890530796658 2020-03-23 18:25:01 0 浏览量 回答数 0

回答

演示如何在kubernetes集群,部署virtual-kubelet,为集群增加虚拟节点,以下简称:VK节点;使kubenetes集群通过VK节点接入ECI平台,在ECI平台上创建Pod。 kubernetes集群分类: 自建kuberenetes集群: 可以是基于阿里云ECS搭建的kubenetes集群。 可以是基于其他云平台搭建的kubenetes集群。 可以是基于机房搭建的kubenetes集群。 可以是基于台式机或笔记本搭建的kubernetes集群。 阿里云容器服务kubernetes集群: 专有版 Kubernetes(Dedicated Kubernetes)。 托管版 Kubernetes(Managed Kubernetes)。 Serverless Kubernetes。 下面我们,针对不同的kubernetes集群,介绍如何部署virtual-kubeket;由于阿里云Serverless Kubernetes,默认部署virtual-kubelet,是由系统管理员统一管理,本文不涉及阿里云Serverless Kubernetes集群部署virtual-kubelet。 前提条件 您需要开通阿里云弹性容器实例 ECI 服务,登录弹性容器实例控制台开通服务。 kubernetes集群上创建的Pod具有访问外网能力,因为virtual-kubelet是Pod形式部署,需要访问阿里云公网ECI服务。 部署virtual-kubelet 容器服务kubernetes集群 通过安装ack-virtual-node插件,部署vitual-kubelet。 执行部署 登录容器服务管理控制台。 在Kubernetes 菜单下,单击左侧导航栏中的市场 > 应用目录,在右侧选中ack-virtual-node。 在应用目录>ack-virtual-node页面,单击参数,配置虚拟节点参数。 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 您可以在集群基本信息,基本信息区域中,获取集群ID的值 ECI_REGION 地域名称 您可以在集群基本信息,基本信息区域中,获取地域的值 ECI_VPC 集群的VPC 您可以在集群基本信息的集群资源区域中,获取虚拟专有网络 VPC的值 ECI_VSWITCH 虚拟交换机 您可以在节点列表单击某个节点,在实例详情页签的配置信息区域中,获取虚拟交换机的值 ECI_SECURITY_GROUP 安全组ID 您可以在节点列表单击某个节点,在本实例安全组页签的安全组列表区域中,获取安全组ID的值 配置完成后,在右侧的创建页面,选择对应的集群,可以看到命名空间已设定为kube-system,发布名称已设定为ack-virtual-node,单击创建。 验证 检查节点列表 安装完成后,您可以通过集群 > 节点,在节点列表页面可以看到添加了一个节点virtual-kubelet。 您可以通过 kubectl 命令,查看节点列表信息。 $ kubectl get node NAME STATUS ROLES AGE VERSION cn-beijing.192.168.0.238 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.239 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.240 Ready 66d v1.14.6-aliyun. virtual-kubelet Ready agent 19d v1.11.2 创建Pod到VK节点 当集群中存在虚拟节点时,您可以把Pod调度到虚拟节点上,Virtual Kubelet将会创建出相应的ECI Pod。 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,选择集群和命名空间,单击右上角的使用模板创建。 选择样例模板或自定义,然后单击创建,您可以使用如下 yaml 示例模板创建Deployment: apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: Always nodeName: virtual-node-eci-0 #virtual node name 在应用 > 无状态中,当出现如下界面时,表示 Deployment 创建成功。 在应用>容器组中,会出现如下界面时,表示 Pod 部署完成 自建kubernetes集群 采用yaml的方式部署virtual-kubelet。 准备工作 部署virtual-kubelet准备工作,需要通过阿里云获取信息: 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 用户自定义一个唯一标示,作为集群ID ECI_REGION 地域名称 登录弹性容器实例控制台,获取Region信息,例如:华北2,对应RegionID cn-beijing ECI_VPC 集群的VPC 登录专有网络,根据已选Region,获取合适VPC ID ECI_VSWITCH 虚拟交换机 登录专有网络>交换机,根据已选VpcID,获取合适交换机ID ECI_SECURITY_GROUP 安全组 登录专有网络,根据已选VpcID,点击进入专有网络详情>网络资源>安全组,获取合适安全组ID YAML文件 $ cat deployment-vk.yaml apiVersion: v1 kind: ServiceAccount metadata: name: virtual-node-sa namespace: kube-system apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: virtual-node-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: virtual-node-sa namespace: kube-system apiVersion: apps/v1beta2 kind: Deployment metadata: name: virtual-node-controller namespace: kube-system labels: app: virtual-node-controller spec: replicas: 1 selector: matchLabels: app: virtual-node-controller template: metadata: labels: app: virtual-node-controller spec: serviceAccount: virtual-node-sa containers: - name: alicloud-virtual-kubelet image: registry.cn-hangzhou.aliyuncs.com/acs/virtual-nodes-eci:v1.0.0.1-aliyun imagePullPolicy: Always args: ["--provider", "alibabacloud"] env: - name: KUBELET_PORT value: "10250" - name: VKUBELET_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: VKUBELET_TAINT_KEY value: "virtual-kubelet.io/provider" - name: VKUBELET_TAINT_VALUE value: "alibabacloud" - name: VKUBELET_TAINT_EFFECT value: "NoSchedule" - name: ECI_REGION value: ${aliyun_region_name} - name: ECI_VPC value: ${aliyun_vpc_id} - name: ECI_VSWITCH value: ${aliyun_vswitch_id} - name: ECI_SECURITY_GROUP value: ${aliyun_sg_id} - name: ECI_ACCESS_KEY value: ${aliyun_access_key} - name: ECI_SECRET_KEY value: ${aliyun_secret_key} - name: ALIYUN_CLUSTERID value: ${custom_define_cluster_id} 根据之前准备的信息,替换yaml文件中的: aliyun_region_name aliyun_vpc_id aliyun_vswitch_id aliyun_sg_id aliyun_access_key aliyun_secret_key 最后,需要给你的集群设置集群ID,替换custom_define_cluster_id。 执行部署 部署前,集群Node节点信息 [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 部署 [root@k8s-master01 ~]# kubectl apply -f deployment-vk.yaml serviceaccount/virtual-node-sa created clusterrolebinding.rbac.authorization.k8s.io/virtual-node-role-binding created deployment.apps/virtual-node-controller created 查看部署情况 [root@k8s-master01 ~]# kubectl get deploy/virtual-node-controller -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE virtual-node-controller 1/1 1 1 161m 获取集群Node列表 [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 virtual-kubelet Ready agent 82m v1.11.2 172.30.176.3 验证 指定节点创建pod。 $ cat test-pod.yaml apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: centos image: centos:latest args: - /bin/sh - -c - date; sleep 6000h nodeName: virtual-kubelet 创建Pod [root@k8s-master01 ~]# kubectl create -f test-pod.yaml pod/test-pod created 检查Pod创建情况。 [root@k8s-master01 ~]# kubectl get pod/test-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-pod 1/1 Running 0 95s 192.168.6.165 virtual-kubelet virtual-kubelet会为运行在VK节点的Pod添加Annotation [root@k8s-master01 ~]# kubectl get pod -o yaml test-pod apiVersion: v1 kind: Pod metadata: annotations: ProviderCreate: done k8s.aliyun.com/eci-instance-id: eci-2zeaak7c7i6xb5uqnw4m 通过ECI控制台查看。

1934890530796658 2020-03-20 17:41:55 0 浏览量 回答数 0

问题

云服务器 ECS Linux 磁盘空间常见问题处理方法有哪些

boxti 2019-12-01 22:05:04 1363 浏览量 回答数 0

问题

【春招必备】初级程序员必备Linux面试题

黄一刀 2020-03-12 19:15:24 7685 浏览量 回答数 3

回答

概述 当客户端访问目标服务器出现ping丢包或ping不通时,可以通过tracert或mtr等工具进行链路测试来判断问题根源。本文介绍如何通过工具进行链路测试和分析。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 本文分别介绍如下链路测试方法。 链路测试工具 测试结果的简要分析 常见的链路异常场景 链路测试步骤 测试完成后的解决方法 链路测试工具 操作系统类型不同,链路测试所使用的工具也有所不同。简要介绍如下。 Linux系统 此处简单介绍两个链路测试工具。 工具一:mtr命令 mtr(My traceroute)几乎是所有Linux发行版本预装的网络测试工具。其将ping和traceroute的功能合并,所以功能更强大。mtr默认发送ICMP数据包进行链路探测。您也可以通过“-u”参数来指定使用UDP数据包进行探测。相对于traceroute只会做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。 用法说明 mtr [-BfhvrwctglxspQomniuT46] [--help] [--version] [--report] [--report-wide] [--report-cycles=COUNT] [--curses] [--gtk] [--csv|-C] [--raw] [--xml] [--split] [--mpls] [--no-dns] [--show-ips] [--address interface] [--filename=FILE|-F] [--ipinfo=item_no|-y item_no] [--aslookup|-z] [--psize=bytes/-s bytes] [--order fields] [--report-wide|-w] [--inet] [--inet6] [--max-ttl=NUM] [--first-ttl=NUM] [--bitpattern=NUM] [--tos=NUM] [--udp] [--tcp] [--port=PORT] [--timeout=SECONDS] [--interval=SECONDS] HOSTNAME 常见可选参数说明 --report:以报告模式显示输出。 --split:将每次追踪的结果分别列出来,而非统计整个结果。 --psize:指定ping数据包的大小。 --no-dns:不对IP地址做域名反解析。 --address:主机有多个IP地址时,设置发送数据包的IP地址。 -4:只使用IPv4协议。 -6:只使用IPv6协议。 另外,也可以在mtr运行过程中,输入类似如下的字母来快速切换模式。 ?或h:显示帮助菜单。 d:切换显示模式。 n:启用或禁用DNS域名解析。 u:切换使用ICMP或UDP数据包进行探测。 命令输出示例 返回结果说明 默认配置下,返回结果中各数据列的说明如下。 第一列(Host):节点IP地址和域名。按 n 键可切换显示。 第二列(Loss%):节点丢包率。 第三列(Snt):每秒发送数据包数。默认值是10,可以通过“-c”参数指定。 第四列(Last):最近一次的探测延迟。 第五、六、七列(Avg、Best、Worst):分别是探测延迟的平均值、最小值和最大值。 第八列(StDev):标准偏差。越大说明相应节点越不稳定。 工具二:traceroute命令 traceroute也是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。traceroute先发送小的具有最大存活时间值(Max_TTL)的UDP探测数据包,然后侦听从网关开始的整个链路上的ICMP TIME_EXCEEDED响应。探测从TTL=1开始,TTL值逐步增加,直至接收到ICMP PORT_UNREACHABLE消息。ICMP PORT_UNREACHABLE消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大TTL值。traceroute默认发送UDP数据包进行链路探测。可以通过“-I”参数来指定使用ICMP数据包进行探测。 用法说明 traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ] 常见可选参数说明 -d:使用Socket层级的排错功能。 -f:设置第一个检测数据包的存活数值TTL的大小。 -F:设置不要分段标识。 -g:设置来源路由网关,最多可设置8个。 -i:主机有多个网卡时,使用指定的网卡发送数据包。 -I:使用ICMP数据包替代UDP数据包进行探测。 -m:设置检测数据包的最大存活数值TTL的大小。 -n:直接使用IP地址而非主机名称(禁用DNS反查)。 -p:设置UDP传输协议的通信端口。 -r:忽略普通的Routing Table,直接将数据包发送到目标主机上。 -s:设置本地主机发送数据包的IP地址。 -t:设置检测数据包的TOS数值。 -v:详细显示指令的执行过程。 -w:设置等待远端主机回包时间。 -x:开启或关闭数据包的正确性检验。 命令输出示例 Windows系统 此处简单介绍两个链路测试工具。 工具一:WinMTR(建议优先使用) WinMTR是mtr工具在Windows环境下的图形化实现,但进行了功能简化,只支持部分mtr的参数。WinMTR默认发送ICMP数据包进行探测,无法切换。和mtr一样,相比tracert,WinMTR能避免节点波动对测试结果的影响,所以测试结果更正确。所以在WinMTR可用的情况下,建议优先使用WinMTR进行链路测试。 用法说明 WinMTR无需安装,直接解压运行即可。操作方法非常简单,说明如下。 如下图所示,运行程序后,在 Host 字段输入目标服务器域名或IP,注意不要包含空格。 单击 Start 开始测试。开始测试后,相应按钮变成了 Stop。 运行一段时间后,单击 Stop 停止测试。 其它选项说明如下。 Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。 Copy HTML to clipboard:将测试结果以HTML格式复制到粘贴板。 Export TEXT:将测试结果以文本格式导出到指定文件。 Export HTML:将测试结果以HTML格式导出到指定文件。 Options:可选参数,包括的可选参数如下。 Interval(sec):每次探测的间隔(过期)时间。默认为1秒。 ping size(bytes):ping探测所使用的数据包大小,默认为64字节。 Max hosts in LRU list:LRU列表支持的最大主机数,默认值为128。 Resolve names:通过反查IP地址,以域名显示相关节点。 返回结果说明 默认配置下,返回结果中各数据列的说明如下。 第一列(Hostname):节点的IP或域名。 第二列(Nr):节点编号。 第三列(Loss%):节点丢包率。 第四列(Sent):已发送的数据包数量。 第五列(Recv):已成功接收的数据包数量。 第六、七、八、九列(Best 、Avg、Worst、Last):分别是到相应节点延迟的最小值、平均值、最大值和最后一次值。 工具二:tracert命令行工具 tracert(Trace Route)是Windows自带的网络诊断命令行程序,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。 tracert通过向目标地址发送 ICMP 数据包来确定到目标地址的路由。在这些数据包中,tracert使用了不同的IP“生存期”,即TTL值。由于要求沿途的路由器在转发数据包前必须至少将TTL减少1,因此TTL实际上相当于一个跃点计数器(hop counter)。当某个数据包的TTL达到0时,相应节点就会向源计算机发送一个ICMP超时的消息。 tracert第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP超时消息中包含了相应节点的信息。 用法说明 tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name 常见可选参数说明 -d:不要将地址解析为主机名(禁用DNS反解)。 -h:maximum_hops,指定搜索目标地址时的最大跃点数。 -j: host-list,指定沿主机列表的松散源路由。 -w:timeout,等待每个回复的超时时间(以毫秒为单位)。 -R:跟踪往返行程路径(仅适用于IPv6)。 -S:srcaddr,要使用的源地址(仅适用于IPv6)。 -4:强制使用IPv4。 -6:强制使用IPv6。 target_host:目标主机域名或IP地址。 命令输出示例 C:> tracert -d 223.5.5.5 通过最多 30 个跃点跟踪到 223.5.5.5 的路由 1 请求超时。 2 9 ms 3 ms 12 ms 192.168.X.X 3 4 ms 9 ms 2 ms X.X.X.X 4 9 ms 2 ms 1 ms XX.XX.XX.XX 5 11 ms 211.XX.X.XX 6 3 ms 2 ms 2 ms 2XX.XX.1XX.XX 7 2 ms 2 ms 1 ms 42.XX.2XX.1XX 8 32 ms 4 ms 3 ms 42.XX.2XX.2XX 9 请求超时。 10 3 ms 2 ms 2 ms 223.5.5.5 跟踪完成。 测试结果的简要分析 由于mtr(WinMTR)有更高的准确性,本文以其测试结果为例,参考如下要点进行分析。此处分析时以如下示例图为基础。 要点一:网络区域 正常情况下,从客户端到目标服务器的整个链路中会包含如下区域。 客户端本地网络,即本地局域网和本地网络提供商网络。如上图中的区域A。如果该区域出现异常,并且是客户端本地网络中的节点出现异常,则需要对本地网络进行相应的排查分析。如果是本地网络提供商网络出现异常,则需要向当地运营商反馈问题。 运营商骨干网络。如上图中的区域B。如果该区域出现异常,可以根据异常节点的IP查询其所属的运营商,直接向对应运营商进行反馈,或者通过阿里云技术支持,向运营商进行反馈。 目标服务器本地网络,即目标服务器所属提供商的网络。如上图中的区域C。如果该区域出现异常,需要向目标服务器所属的网络运营商反馈问题。 要点二:链路负载均衡 如上图中的区域D。如果中间链路某些部分启用了链路负载均衡,则mtr只会对首尾节点进行编号和探测统计。中间节点只会显示相应的IP或域名信息。 要点三:结合Avg(平均值)和StDev(标准偏差)综合判断 由于链路抖动或其它因素的影响,节点的Best和Worst值可能相差很大。Avg统计了自链路测试以来所有探测的平均值,所以能更好的反应出相应节点的网络质量。而StDev越高,则说明数据包在相应节点的延时值越不相同,即越离散。所以标准偏差值可用于协助判断Avg是否真实反应了相应节点的网络质量。例如,如果标准偏差很大,说明数据包的延迟是不确定的。可能某些数据包延迟很小,例如25ms,而另一些延迟却很大,例如350ms,但最终得到的平均延迟反而可能是正常的。所以,此时Avg并不能很好的反应出实际的网络质量情况。 综上,建议的分析标准如下。 如果StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。 如果StDev不高,则通过Avg来判断相应节点是否存在异常。 注:上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则StDev同样为25ms,反而认为是不高的偏差。 要点四:Loss%(丢包率)的判断 任一节点的Loss%(丢包率)如果不为零,则说明这一跳网络可能存在问题。导致相应节点丢包的原因通常有如下两种。 运营商基于安全或性能需求,限制了节点的ICMP发送速率,导致丢包。 节点确实存在异常,导致丢包。 结合异常节点及其后续节点的丢包情况,并参考如下内容,判定丢包原因。 如果随后节点均没有丢包,则通常表示异常节点丢包是由于运营商策略限制所致。可以忽略相关丢包。如上图中的第2跳所示。 如果随后节点也出现丢包,则通常说明异常节点确实存在网络异常,导致丢包。如上图中的第5跳所示。 另外,上述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,如果异常节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳的丢包率为准。如上图所示,在第 5、6、7跳均出现了丢包。所以,最终丢包情况,以第7跳的40%作为参考。 要点五:关于延迟 关于延迟,有如下两种场景。 场景一:延迟跳变 如果在某一跳之后延迟明显陡增,则通常判断该节点存在网络异常。如上图所示,从第5跳之后的后续节点延迟明显陡增,则推断是第5跳节点出现了网络异常。不过,高延迟并不一定完全意味着相应节点存在异常。如上图所示,第5跳之后,虽然后续节点延迟明显陡增,但测试数据最终仍然正常到达了目的主机。所以,延迟大也有可能是在数据回包链路中引发的。所以,需要结合反向链路测试一并分析。 场景二:ICMP限速导致延迟增加 ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如上图所示,第3跳有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。 常见的链路异常场景 常见的链路异常场景及测试报告如下。 场景一:目标主机网络配置不当 示例数据如下。 [root@mycentos6 ~]# mtr —no-dns www.google.com My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016 Keys: Help Display mode Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. ??? 3. 1XX.X.X.X 0.0% 10 521.3 90.1 2.7 521.3 211.3 4. 11X.X.X.X 0.0% 10 2.9 4.7 1.6 10.6 3.9 5. 2X.X.X.X 80.0% 10 3.0 3.0 3.0 3.0 0.0 6. 2X.XX.XX.XX 0.0% 10 1.7 7.2 1.6 34.9 13.6 7. 1XX.1XX.XX.X 0.0% 10 5.2 5.2 5.1 5.2 0.0 8. 2XX.XX.XX.XX 0.0% 10 5.3 5.2 5.1 5.3 0.1 9. 173.194.200.105 100.0% 10 0.0 0.0 0.0 0.0 0.0 在该示例中,数据包在目标地址出现了100%的丢包。从数据上看是数据包没有到达,其实很有可能是目标服务器相关安全策略(比如防火墙、iptables 等)禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。 场景二:ICMP限速 示例数据如下。 [root@mycentos6 ~]# mtr --no-dns www.google.com My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016 Keys: Help Display mode Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 63.247.X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.X.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 72.14.233.56 60.0% 10 27.2 25.3 23.1 26.4 2.9 6. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.2 7. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3 8. gw-in-f147.1e100.net 0.0% 10 39.6 40.5 39.5 46.7 2.2 在该示例中,在第5跳出现了明显的丢包,但后续节点均未见异常。所以推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,所以,分析的时候可以忽略。 场景三:环路 示例数据如下。 [root@mycentos6 ~]# mtr —no-dns www.google.com My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016 Keys: Help Display mode Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0 9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 在该示例中,数据包在第5跳之后出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。所以,该场景需要联系相应节点归属运营商处理。 场景四:链路中断 示例数据如下。 [root@mycentos6 ~]# mtr —no-dns www.google.com My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016 Keys: Help Display mode Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 在该示例中,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。 链路测试步骤 通常情况下,链路测试步骤如下图所示。 相关步骤的详情说明如下。 步骤一:获取本地网络对应的公网IP 在客户端本地网络内访问淘宝IP地址库,获取本地网络对应的公网IP地址。 步骤二:正向链路测试(ping和mtr) 从客户端向目标服务器做如下测试。 从客户端向目标服务器域名或IP做持续的ping测试,建议至少ping 100个数据包,记录测试结果。 根据客户端操作系统的不同,使用WinMTR或mtr,设置测试目的地址为目标服务器域名或IP,然后进行链路测试,记录测试结果。 步骤三:反向链路测试(ping和mtr) 进入目标服务器系统内部做如下测试。 从目标服务器向步骤一获取的客户端IP做持续的ping测试,建议至少ping 100个数据包,记录测试结果。 根据目标服务器操作系统的不同,使用WinMTR或mtr,设置测试目的地址为客户端的IP地址,然后进行链路测试,记录测试结果。 步骤四:测试结果分析 参阅测试结果的简要分析,对测试结果进行分析。确认异常节点后,访问如下链接或其他可以查询IP归属地的网站,获取该异常节点的归属运营商信息。如果是客户端本地网络相关节点出现异常,则需要对本地网络进行相应排查分析。如果是运营商相关节点出现异常,则需要向运营商反馈问题。查询结果类似如下。 测试完成后的解决方法 当出现ping丢包或ping不通时,首先请参考云服务器ECS网络故障诊断,排查是否为网络故障。 如果确认是因系统中病毒导致使用ping命令测试ECS实例的IP地址间歇性丢包,则可参考使用ping命令测试ECS实例的IP地址间歇性丢包进行处理。 如果是因删除ECS实例的默认安全组规则导致无法ping通ECS实例,可参考删除ECS实例的默认安全组规则导致无法ping通ECS实例进行处理。 如果在Linux系统内核没有禁PING的情况下,是因系统内部防火墙策略设置导致ECS服务器PING不通。可参考Linux系统的ECS中没有禁PING却PING不通的解决方法。

1934890530796658 2020-03-25 23:17:54 0 浏览量 回答数 0

回答

SCC(超级计算集群)简介 SCC概述 超级计算集群(Super Computing Cluster,SCC)使用高速RDMA网络互联的CPU以及GPU等异构加速设备,面向高性能计算、人工智能/机器学习、科学/工程计算、数据分析、音视频处理等应用,提供极致计算性能和并行效率的计算集群服务。 SCC实例类型 类型 CPU Memory 网络 存储 适用场景 ecs.scch5.16xlarge 64核 Skylake Xeon Gold 6149 3.1GHz 192GB 50 Gbps RDMA 高效云盘(容量可选) + SSD云盘(容量可选) CPU主频高,单核计算能力强,适用于多数计算密集型应用场景 ecs.sccg5.24xlarge 96核 Skylake Xeon Platinum 8163 2.5GHz 384GB 50 Gbps RDMA 高效云盘(容量可选) + SSD云盘(容量可选) CPU核数多,内存容量大,适用于内存需求较高、扩展性好的科学计算场景以及高并发的批处理场景 使用SCC实例创建E-HPC集群 创建过程 目前配备有SCC实例的可用区主要有:华东1可用区H、华东2可用区B、华北1可用区C、华北3可用区A。考虑到库存的变化,用户在创建集群之前可以通过ECS管理控制台查看SCC实例在不同可用区的分布情况。 从E-HPC管理控制台进入集群创建页面,在计算节点下划栏中勾选SCC实例。 勾选SCC注意:上图中SCC实例的CPU核数是按照vCPU数目来显示的,而实际交付的SCC实例为超线程关闭(HT off)状态,即scch5.16xlarge和sccg5.24xlarge的CPU核数分别为32物理核和48物理核。 后续创建过程请参考E-HPC集群创建与配置 硬件信息 相比于普通ECS实例,SCC实例的核心硬件升级之一在于配备了50Gbps的RoCE(RDMA over Converged Ethernet)网络,故网络信息与普通ECS实例相比有明显差异。 网络硬件信息 相比于普通ECS实例,SCC实例同时拥有10Gbps VPC网络和50Gbps RoCE网络的网口,因此在会ECS管理控制台上会同时显示两个IP地址。 SCC IP 正常的SCC实例会显示如下网口信息,其中bond0为RoCE网口,eth0为VPC网口。 SCC网口信息 网络连通性验证 同一个E-HPC集群下的SCC实例间的VPC网络IP和RoCE网络IP均可以相互ping通 同一个E-HPC集群下的SCC实例间可以通过VPC网络IP和RoCE网络IP进行ssh登陆 RoCE网络性能测试 测试RoCE网络的峰值带宽与延迟 带宽测试样例 ##读带宽测试 ib_read_bw -a -q 20 --report_gbits ##服务端compute0执行 ib_read_bw -a -q 20 --report_gbits compute0 ##用户端compute1执行 ##写带宽测试 ib_write_bw -a -q 20 --report_gbits ##服务端compute0执行 ib_write_bw -a -q 20 --report_gbits compute0 ##用户端compute1执行 延迟测试样例 ##读延迟测试 ib_read_lat -a ##服务端compute0执行 ib_read_lat -F -a compute0 ##用户端compute1执行 ##写延迟测试 ib_write_lat -a ##服务端compute0执行 ib_write_lat -F -a compute0 ##用户端compute1执行 监测RoCE网络的实际带宽利用情况 在SCC实例root用户下执行rdma_monitor -s实时获取RoCE网络信息 rdma_monitor 使用E-HPC性能监控与分析引擎集谛来监测各SCC实例RoCE网络带宽随时间的变化情况。 集谛监测RoCE 在SCC集群上编译和运行MPI程序 由于SCC实例同时支持50Gbps RoCE网络和10Gbps VPC网络,用户在执行跨节点MPI程序时可能会遇到节点间数据流量默认走VPC网口的情况,这里我们推荐用户在SCC集群上使用IntelMPI来编译和运行跨节点MPI程序。 编译跨节点MPI程序 安装IntelMPI E-HPC集成了IntelMPI 2018版本,用户只需在E-HPC控制台集群创建或软件管理功能界面中勾选IntelMPI 2018进行安装即可。 intelmpi 配置MPI环境变量 方法一:使用E-HPC集成的Module管理工具 $ module avail --------------------------------- /opt/ehpcmodulefiles -------------------------------- intel-mpi/2018 $ module load intel-mpi/2018 $ which mpicc /opt/intel/impi/2018.3.222/bin64/mpicc 方法二:执行IntelMPI自带的环境变量配置脚本 $ source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64 $ which mpicc /opt/intel/impi/2018.3.222/bin64/mpicc 设置MPI编译参数 完成MPI环境变量配置后,需要在软件Makefile或预编译脚本中指定MPI编译器的相对/绝对路径,然后执行编译过程。 -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx 运行跨节点MPI程序 对于在E-HPC软件环境中采用IntelMPI编译的软件,提交任务时无需额外指定网口参数,便可以直接通过RoCE网络进行跨节点数据通信。 #!/bin/sh #PBS -j oe #PBS -l select=<节点数>:ncpus=<每节点核数>:mpiprocs=<每个节点进程数> module load intel-mpi/2018 mpirun <软件执行命令> 对于在用户本地环境编译的软件或预编译的商用软件,可以在提交MPI任务时指定RoCE网卡信息来避免可能出现的数据流量不走RoCE网络或网卡设备not found等问题。 #!/bin/sh #PBS -j oe #PBS -l select=<节点数>:ncpus=<每节点核数>:mpiprocs=<每个节点进程数> export I_MPI_FABRICS=shm:dapl module load intel-mpi/2018 mpirun -genv I_MPI_DAPL_PROVIDER ofa-v2-mlx5_bond_0 <软件执行命令> 用户可以使用集谛性能监测功能对SCC实例的CPU利用率、访存带宽、RoCE网络带宽等性能数据进行实时监测。 SCC性能

1934890530796658 2020-03-24 09:49:57 0 浏览量 回答数 0

回答

本文介绍 P2P 加速功能的基本概念、配置方法、使用方法以及故障排查。 什么是 P2P 加速 在镜像拉取流程中,所有镜像的数据流量都从服务器中统一拉取。当几十台 ECS 同时拉取镜像时,我们提供的服务器可以提供顺畅的拉取能力。但当您的集群达到几百台甚至几千台的规模时,服务器的带宽限制会制约您分发镜像的时间。 镜像服务企业版提供了 P2P 加速的能力,可以在大规模容器集群批量下载镜像的场景中,提升容器镜像分发能力,享受极速镜像拉取速度,减少应用部署时间。 说明 当集群规模达到 300 节点以上时,使用效果会更佳。 推荐使用多可用区 vswitch 打散集群 ECS 节点。 推荐使用本地 SSD 或者可分配内存较大的 ECS 实例。 当集群规模较小或可分配内存不足时,可能不会起到加速的效果。 配置 P2P 加速插件 当前 P2P 加速插件可以支持 Kubernetes、多可用区 Kubernetes 集群、Kubernetes 托管版,暂不支持 Serverless Kubernetes。 以下流程需要在 Linux/Mac 环境下运行,依赖于 kubectl 的方式连接到 Kubernetes 集群。如果您可以在命令行中执行kubectl get pod,并看到返回结果,则说明当前环境可以正常安装插件。 推荐您通过 SSH 登录到集群内任意节点进行操作,如果是 Worker 节点,请先参考通过 kubectl 连接 Kubernetes 集群 ,完成环境中 kubectl 配置。 建议通过配置 dockerd 的 max-concurrent-downloads 字段至适当数值以提升镜像拉取效率,默认值为 3 层,可以提升至 5 至 20 层。详细信息请参考Docker官网文档。 具体的安装脚本因实例而异,请登录镜像服务企业版控制台,P2P 加速一页中进行查看。 使用 P2P 方式拉取镜像 您需要通过带有 distributed 字样的域名拉取镜像,您可以在 P2P 加速一页中 通过《安装脚本安装P2P加速》章节中进行查看,域名例如hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002 。 默认情况下,该 P2P 域名会带有 65002 端口,当您希望使用 443 端口访问时,您可以在安装 P2P 加速的时候指定export PORT="443"来指定想要的端口。请注意,该端口默认会在所有节点上被默认占用。 在拉取镜像之前,您需要登录该镜像仓库,例如docker login hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002。拉取镜像时,您可以通过 docker pull 或者 kubernetes 集群启动应用的方式。例如您希望拉取 foo 命名空间下 bar 的镜像仓库,您可以使用docker pull hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002/foo/bar。 通过 P2P 方式拉取镜像时,镜像层数据会在后台预先下载完毕,再传输给 Docker Engine。因此镜像拉取的前半段时间,进度条会保持静止状态,后半段时间,进度条会瞬间达到100%。 性能指标 300 节点 ecs.i2.xlarge 4C32G 本地 SSD ECS,并发拉取 4 层每层 512 MB 的镜像时,对比非 P2P 加速模式下减少 80% 的数据拉取时间。 故障排查 运行以下命令可以列出当前 P2P 加速插件的所有 Pod: kubectl get pod -n cr-dfagent -o wide 如果 Pod 数量与 Worker 节点数量不一致: 检查未调度 Pod 节点上是否有 taints 影响 DaemonSet 的调度。 尝试重新安装 P2P 加速插件。 如果部分 Pod 出现 CrashLoopBackOff 异常状态时,可以通过 kubectl logs 命令查看失败的 Pod 的日志。 kubectl -n cr-dfagent logs -f POD_NAME df-agent kubectl -n cr-dfagent logs -f POD_NAME df-nginx 如果无法解决,请提交工单处理。

1934890530796658 2020-03-25 12:31:13 0 浏览量 回答数 0

回答

关于内核的要求是这样的,centos > 3.18 ubuntu > 3.13所以 ubuntu 14.04 和 centos+升级内核 都是可以的因为在centos的默认的3.10的内核对docker的overlay存储驱动支持存在一些问题,到3.18的内核overlay存储才比较稳定,ECS不让升级内核是因为担心内核可能不兼容,而容器服务使用的内核经过了我们的兼容性测试,你可以通过这些方法使用: 添加节点的时候选择自动添加的方式,这个会自动替换数据盘到我们做的系统,就无需关心升级内核 通过脚本升级elrepo 4.4的内核,这个内核经过了我们的兼容性测试,脚本如下: yum update -yrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum install -y linux-firmwareyum install -y perlwget http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/elrepo-kernel-lt/kernel-lt-4.4.6-1.el7.elrepo.x86_64.rpmwget http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/elrepo-kernel-lt/kernel-lt-devel-4.4.6-1.el7.elrepo.x86_64.rpmwget http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/elrepo-kernel-lt/kernel-lt-headers-4.4.6-1.el7.elrepo.x86_64.rpm rpm -i kernel-lt-4.4.6-1.el7.elrepo.x86_64.rpmyum remove kernel-{firmware,headers,devel} -yrpm -i kernel-lt-headers-4.4.6-1.el7.elrepo.x86_64.rpmrpm -i kernel-lt-devel-4.4.6-1.el7.elrepo.x86_64.rpmrm -f kernel-lt-headers-4.4.6-1.el7.elrepo.x86_64.rpm kernel-lt-devel-4.4.6-1.el7.elrepo.x86_64.rpm kernel-lt-4.4.6-1.el7.elrepo.x86_64.rpm echo "exclude=kernel*" >> /etc/yum.confmkinitrd -f --allow-missing --with=xen-blkfront --preload=xen-blkfront --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console /boot/initramfs-4.4.6-1.el7.elrepo.x86_64.img 4.4.6-1.el7.elrepo.x86_64grub2-set-default 'CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)' 或者使用最新的Centos 7.3,最新的Centos 7.3合并了一些overlay的bugfix:在添加节点的时候指定 --override-kernel-check参数就可以添加

acs-test 2019-12-01 23:34:39 0 浏览量 回答数 0

回答

Linux下如何进行FTP设置  ECSLinux服务器如何配置网站以及绑定域名  Ubuntu安装vncserver实现图形化访问  阿里云Docker镜像库  ECSlinux中添加ftp用户,并设置相应的权限  CentOS6.5安装vncserver实现图形化访问  LinuxSCP命令复制传输文件的用法  Mysql,phpmyadmin密码忘了怎么  Linux下l2tp客户端xl2tpd的安装配置  使用SFTP方式传输文件  ECSLinux系统盘网站数据更换至数据盘  WDCP的报错处理  Linux中PHP如何安装curl扩展方法  修改Linux服务器的ssh端口  ECSLinux配置vnc文档  运维分享--阿里云linux系统mysql密码修改脚本  20步打造最安全的NginxWeb服务器  SSH配置存在问题,导致登录和传输数据很慢  ECSLinux下如何查看定位当前正在运行的Nginx的配置文件  ECS服务器CentOS系统如何开放端口  查看Linux下默认的DNS  FTP主动被动模式配置混乱导致无法登录  linux环境配置phpmyadmin  ECSLinux系统下VSFTP配置的FTP上传文件报错“553Couldnotcreatefile”  ECSLinuxMysql启动提示Toomanyarguments(firstextrais'start')  运维分享--阿里云linux系统ssh远程连接检查脚本  ECSLinux系统授权mysql外网访问  ECSLinux服务器nginx禁止空主机头配置  ECSLinux服务器通过FTP无法查看到.htaccess文件  ECSLinux服务器下Mysql自动备份脚本的使用方法  ECS-linux授权mysql外网访问  用date命令修改Linux系统的时间为什么无效  运维分享--阿里云linux系统web日志分析脚本  ECSLinux服务器messagebus默认关闭导致安装桌面环境后无法正常使用  ECSNginx+php中php-fpm参数配置  运维分享--阿里云linux系统mysql连接检查脚本  iptables的conntrack表满了导致访问网站很慢  运维分享--阿里云linux系统带宽监测脚本  如何调整目录文件的拥有者和拥有组  yum操作报错处理  ECSLinux配置vsftpd限制FTP账户访问其它目录  vsftp报错:500OOPS:vsftpd:cannotlocateuserspecifiedin'ftp_username':ftp  Linux主机系统目录误操作权限修改为777修复方法  ECSNginx中https的配置说明  运维分享--阿里云linux系统负载状态检查脚本  ECSLinux服务器AMH云主机面板启动、关闭操作  ECSLinux服务器关闭磁盘自检  ECSLinux配置key认证登录后因为相关文件权限错误导致连接失败-Connectionclosedbyforeignhost  ECSLinux系统服务器解决ssh反向代理监听ip错误问题  ECSLinux设置定时任务crontab  ECSGentoo系统中mirrorselect获取内容失败提示Nameorservicenotknown  ECSLinux系统服务器ping域名返回Unknownhost报错  IIS、Nginx或Apache访问日志存在182.92.12.0/24段访问记录  Nginx日志的解释  ECSLinux系统wget下载文件  ECSLinux服务器内部无法解析域名  ECS路由表错误导致无法ping通  ECSLinux主机修改主机名  wordpress插件oss4wpurl无法访问  ECSLinux查看隐藏文件  Linux系统服务器解决vsftp服务使用root登录失败  ECSLinuxPPTP客户端登陆后获取地址错误  Linux系统服务器解决内外双网卡均显示内网IP地址问题  ECSLinux系统NetworkManager导致网络异常  外部PingECSLinux丢包严重  ECSLinux检查Nginx配置文件  ECSLinux系统判断当前运行的Apache所使用的配置文件  Apache访问日志的说明  ECSLinux.htacess文件上传无法显示  linux服务器内无法访问其他站点的检查处理方法  ECSmysql无法启动报错Can'tcreate/writetofile'/tmp/ibfguTtC  ECSLiunx系统服务器执行ls查询命令提示bash:ls:commandnotfound  Linux为何执行命令会执行历史命令  ECSLinux系统如何检查系统上一次重启的时间  ECSLinux下MySQL排查基本步骤  Linux系统如何查看mysql版本号  MySQL中查看慢SQL的日志文件方法  phpMyAdmin修改配置可以上传大文件  openSUSE下开机自动运行脚本命令的方法  给Linux系统添加一个回收站  ECSLinux分区异常无法挂载  ECSLinux上安装Cloudfs启动失败提示找不到库文件libunwind.so.8  ECSLinux清理/tmp目录下的文件原理  Liunx系统服务器通过prefork模块限制apache进程数量  ECSCentOS6.5系统下Apache配置https服务  Noinputfilespecified的解决方法  Apache、Nginx支持跨域访问  Apache环境下配置404错误页方法  ECSLinux通过修改Apache配置301重定向的方法  ECSLinux主机无法互访处理  ECSlinux服务器启用了TRACEMethod.怎么关闭  Apache运行参考的调整优化  ECSApache如何关闭目录访问  ECS服务器隐藏apache版本信息  ECSLinux判断HTTP端口监听状态的方法  ECSLinuxApache限制客户端访问网站的速度  负载均衡+ECS站点虚拟子目录的设置案例  ECS网站访问504错误分析  为何Ubuntu开启UFW后,VPC下的SNAT转发就失效了  ECSDebian自定义镜像启动无法SSH  ECSLinux云服务器如何确认文件系统只读?  ECSLinux创建文件报错Read-onlyfilesystem  恢复ext4文件系统中使用rm命令误删除的文件  ECSLinux删除乱码文件的方法  net.ipv4.tcp_fin_timeout修改导致的TCP链接异常排查  ECSLinux执行sh脚本提示Nosuchfileordirectory  /var/log/message日志报错  通过sshtunnel连接内网ECS和RDS  CentOS7中MySQL服务启动失败的解决思路  ECSLinux系统启动提示“Giverootpasswordformaintenance”  结束云盾客户端进程后如何启用  Ubuntu服务器中配置AWStats  CentOS6非root用户使用sftp服务  ssh避免客户端长久未操作导致连接中断  删除binglog导致mysql无法启动  ECSLinux服务器修改SSH端口号不生效的检查方法  ftp传输失败问题解决方法  ECSLinux下使用extundelete恢复被误删的文件  ECSLinux基于nginx环境通过.htaccess配置rewrite伪静态示例  ECSLinux系统利用openssl生成强密码  ECSCentOS6配置PPTPVPN  Last命令关于reboot记录的含义  Ubuntu修改运行级别的总结  ECSCentOS6系统PPTPVPN脚本  ECSLinux系统如何配置gentoo的源  ECSCentOS系统配置VPN客户端  多域名跳转——不同域名指向不同子目录  Centos配置PPTPVPN后无法打开网页  mysql不能远程连接  ECSLinux系统修改文件或目录权限方法  ECSWDCP破解mysql以及wdcp后台管理密码  ECSLinux系统如何设置SSH白名单  EcsLinux系统一键安装web环境下tomcat添加站点方法  Centos7安装vnc  Setuptools软件包版本太老导致ECSLinux安装AliyunCLI出错  Apache配置二级域名  ECSlinux重启丢失分区表  Linux系统服务器安装使用sar工具获取系统运行状态方式  ECSUbuntu开启sftp连接  linux系统mysql跳过密码登陆操作登陆设置  mysql报错LostconnectiontoMySQLserverat'readinginitialcommunicationpacket'  Ubuntuapt-get安装提errorprocessingpackageinstall-info(--configure)  Nodejs的版本升级和使用  Nodejs连接RDSMySQL数据库  ECS公共镜像Ubuntu,Centos的内核版本查看方法  ECSLinux服务器修改时区  Apache禁止未经许可的域名访问ECS上的网站  ECSLinux如何隐藏文件和文件夹  ECSmysql.sock丢失问题解决方法  ECSLinux云服务器centos将系统时区从UTC时间改为CST  ECSLinux云服务器权限问题说明  ECSLinux系统盘数据转移方法  Linux下忘记mysql的root密码  ECSMySQL编译安装支持innodb引擎  ECSLinuxNAT哈希表满导致服务器丢包  ECSLinux服务器重启后mount出错的解决方法  Centos6.5添加IPv6支持  ECSubuntu系统修改DNS/etc/resolv.conf无法保存  ECSLinux如何增加虚拟内存swap  ECSLinuxtraceroute使用方法  ECSLinux系统磁盘再次挂载报错没有有效的分区表  如何删除yum的缓存信息  ECSLinux服务器yum的查询功能  centos6怎么使用RPMForge软件源仓库  ECSLinux服务器Nginxrewrite示例  ECSLinuxCentOS6ssh连上就断掉并报错“fatal:mm_request_send:write:Brokenpipe”  mysql上传报错#1064-YouhaveanerrorinyourSQLsyntax  EcsLinux中rpm安装文件命令常用选项  ECSLinux系统kjournald进程占用io资源高的解决方法  ECSLinux如果通过i节点删除无法删除的文件  ECSLinux基于zabbix搭建企业级监控平台  ECSLinux系统yum卸载重装  ECSCentOS6.5OpenVPN配置  ECSLinux使用SFTP登陆时报错:Receivedunexpectedend-of-filefromSFTPserver  ECSLinux如何增加数据盘iNode数量  ECSLinux查看目录没有颜色  ECSLinux系统tmp目录的安全设置  ECSLinux下shm设备的安全设定  ECSCentOS多线程下载工具Axel使用说明  ECSLinuxcurl使用证书访问HTTPS站点  Linux系统中vsftp用户无法登陆的相关说明  Nginx配置文件中rewrite指令标志位的说明与使用  ECSLinux中ss命令显示连接状态的使用说明  ECSLinux系统没有程序运行通过top观察发现cpu很空闲  Linux下的文件权限检查和修改  ECSLinux云服务器利用chatter命令锁定系统重要文件  ECSCentos7安装OpenVPN  ECS上搭建反向代理通过内网访问OSS服务  ECSLinux下的script命令记录用户操作行为  Ubuntu下使用slay命令结束某个用户的所有进程  Nginx配置文件中root与alias指令的区别  Nginx配置文件中rewrite指令的使用  ECSLinux如何修改PATH变量  Centos安装桌面后在远程终端管理里面无法使用键盘和鼠标  ECSLinux下Apache忽略网站URL的大小写的方法  ECSLinux服务器利用Nethogs监控每个进程的网络使用情况  ECSapt-get安装软件或更新时提示apt-get的Segmentationfaultsts  ubuntu开机出现memtest86,重启也无法取消的原因  Linux下History命令显示操作时间,用户和登录IP  ECSLinux服务器使用htop监控负载 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:16:20 0 浏览量 回答数 0

回答

问题描述 在Linux系统的云服务器ECS实例内创建文件时,出现类似如下空间不足的提示。 No space left on device … 问题原因 导致该问题的可能原因如下所示。 磁盘分区空间使用率达到百分之百。 磁盘分区inode使用率达到百分之百。 存在僵尸文件。 注:已删除文件因句柄被占用未释放,导致相应空间未释放的文件。 挂载点覆盖。 注:在原有文件系统的相应目录下已经存在大量文件。挂载新磁盘后,导致使用df命令能统计到相关空间使用,而使用su命令统计不到。 解决方案 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 要解决该问题,请根据不同的问题原因,通过如下方式进行处理。 分区容量满 inode容量满 修改inode数量 僵尸文件分析删除 挂载点覆盖 分区容量满的处理 登录服务器,使用df -h命令查看磁盘使用率,其中的 Mounted on 指挂载的目录。 进入根目录,执行如下指令,逐级查看哪个目录占用磁盘空间较大,进入该目录,直到找到最精确的的文件或目录。du -sh *系统显示类似如下。 du -sh * 系统显示类似如下。 最后,结合业务情况等判断对相关文件或目录进行删除,或者购买更大的数据盘分担处理。 inode容量满的处理 通过如下操作,解决inode容量满的问题。 查询inode使用情况 Linux的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,则需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。 执行df -i命令,可以查询inode的使用情况。 如果inode使用率达到或者接近100%,可以通过如下两种方式进行处理。 清除inode占用高的文件或者目录。 修改inode数量。 清除inode占用高的文件或者目录 如果不方便格式化磁盘以增加inode数量,可以参考如下步骤,清理inode占用量高的文件或者目录。 登录服务器,执行如下命令,分析根目录下的每个二级目录下有多少个文件。 for i in /*; do echo $i; find $i | wc -l; done 系统显示类似如下。 然后,逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。 修改inode数量 如果不允许清理磁盘中的文件,或者清理后inode使用率仍然较高,则需要通过如下步骤,增加inode节点数量。 注:inode的调整需要重新格式化磁盘,请确保数据已经得到有效备份后,再进行以下操作。 执行如下命令,卸载系统文件。 umount /home 执行如下命令,重新建立文件系统,指定inode节点数。 mkfs.ext3 /dev/xvdb -N 1638400 注:本文指定inode节点数1638400,现场实际环境请以实际为准。 执行如下命令,修改fstab文件。 vim /etc/fstab 执行如下命令,查看修改后的inode节点数。 dumpe2fs -h /dev/xvdb | grep node 系统显示类似如下。 僵尸文件分析与删除 如果磁盘和inode都没有问题,则需要查看是否存在未被清除句柄的僵尸文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间。如果这些文件过多,会占用很大的磁盘空间。参考以下步骤查看并删除僵尸文件。 远程登录服务器。 执行如下命令,安装lsof。 yum install lsof -y 执行如下命令,查看僵尸文件占用情况。 lsof |grep delete | more 系统显示类似如下。 如果这些文件过多,会占用很大的磁盘空间。可以通过如下方法来释放句柄,以清除僵尸文件。 重启服务器,验证效果。重启服务器,系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。 根据lsof命令列出的pid进程号,使用kill命令正常停止或结束占用这些文件的服务进程。 注:如果服务器正在运行业务,可能会影响到业务,请慎重操作。 挂载点覆盖 先取消磁盘挂载,再检查原挂载目录下的空间占用情况。

1934890530796658 2020-03-26 09:27:40 0 浏览量 回答数 0

回答

问题描述 在Linux系统的云服务器ECS实例内创建文件时,出现类似如下空间不足的提示。 No space left on device … 问题原因 导致该问题的可能原因如下所示。 磁盘分区空间使用率达到百分之百。 磁盘分区inode使用率达到百分之百。 存在僵尸文件。 注:已删除文件因句柄被占用未释放,导致相应空间未释放的文件。 挂载点覆盖。 注:在原有文件系统的相应目录下已经存在大量文件。挂载新磁盘后,导致使用df命令能统计到相关空间使用,而使用su命令统计不到。 解决方案 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 要解决该问题,请根据不同的问题原因,通过如下方式进行处理。 分区容量满 inode容量满 修改inode数量 僵尸文件分析删除 挂载点覆盖 分区容量满的处理 登录服务器,使用df -h命令查看磁盘使用率,其中的 Mounted on 指挂载的目录。 进入根目录,执行如下指令,逐级查看哪个目录占用磁盘空间较大,进入该目录,直到找到最精确的的文件或目录。du -sh *系统显示类似如下。 du -sh * 系统显示类似如下。 最后,结合业务情况等判断对相关文件或目录进行删除,或者购买更大的数据盘分担处理。 inode容量满的处理 通过如下操作,解决inode容量满的问题。 查询inode使用情况 Linux的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,则需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。 执行df -i命令,可以查询inode的使用情况。 如果inode使用率达到或者接近100%,可以通过如下两种方式进行处理。 清除inode占用高的文件或者目录。 修改inode数量。 清除inode占用高的文件或者目录 如果不方便格式化磁盘以增加inode数量,可以参考如下步骤,清理inode占用量高的文件或者目录。 登录服务器,执行如下命令,分析根目录下的每个二级目录下有多少个文件。 for i in /*; do echo $i; find $i | wc -l; done 系统显示类似如下。 然后,逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。 修改inode数量 如果不允许清理磁盘中的文件,或者清理后inode使用率仍然较高,则需要通过如下步骤,增加inode节点数量。 注:inode的调整需要重新格式化磁盘,请确保数据已经得到有效备份后,再进行以下操作。 执行如下命令,卸载系统文件。 umount /home 执行如下命令,重新建立文件系统,指定inode节点数。 mkfs.ext3 /dev/xvdb -N 1638400 注:本文指定inode节点数1638400,现场实际环境请以实际为准。 执行如下命令,修改fstab文件。 vim /etc/fstab 执行如下命令,查看修改后的inode节点数。 dumpe2fs -h /dev/xvdb | grep node 系统显示类似如下。 僵尸文件分析与删除 如果磁盘和inode都没有问题,则需要查看是否存在未被清除句柄的僵尸文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间。如果这些文件过多,会占用很大的磁盘空间。参考以下步骤查看并删除僵尸文件。 远程登录服务器。 执行如下命令,安装lsof。 yum install lsof -y 执行如下命令,查看僵尸文件占用情况。 lsof |grep delete | more 系统显示类似如下。 如果这些文件过多,会占用很大的磁盘空间。可以通过如下方法来释放句柄,以清除僵尸文件。 重启服务器,验证效果。重启服务器,系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。 根据lsof命令列出的pid进程号,使用kill命令正常停止或结束占用这些文件的服务进程。 注:如果服务器正在运行业务,可能会影响到业务,请慎重操作。 挂载点覆盖 先取消磁盘挂载,再检查原挂载目录下的空间占用情况。

1934890530796658 2020-03-26 09:28:02 0 浏览量 回答数 0

回答

134题 其实就是水平扩容了,Zookeeper在这方面不太好。两种方式:全部重启:关闭所有Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。逐个重启:这是比较常用的方式。 133题 集群最低3(2N+1)台,保证奇数,主要是为了选举算法。一个由 3 台机器构成的 ZooKeeper 集群,能够在挂掉 1 台机器后依然正常工作,而对于一个由 5 台服务器构成的 ZooKeeper 集群,能够对 2 台机器挂掉的情况进行容灾。注意,如果是一个由6台服务器构成的 ZooKeeper 集群,同样只能够挂掉 2 台机器,因为如果挂掉 3 台,剩下的机器就无法实现过半了。 132题 基于“过半”设计原则,ZooKeeper 在运行期间,集群中至少有过半的机器保存了最新的数据。因此,只要集群中超过半数的机器还能够正常工作,整个集群就能够对外提供服务。 131题 不是。官方声明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,这太消耗性能了。一般是客户端执行getData(“/节点A”,true),如果节点A发生了变更或删除,客户端会得到它的watch事件,但是在之后节点A又发生了变更,而客户端又没有设置watch事件,就不再给客户端发送。在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。 130题 数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master 选举,分布式锁,分布式队列 129题 客户端 SendThread 线程接收事件通知, 交由 EventThread 线程回调 Watcher。客户端的 Watcher 机制同样是一次性的, 一旦被触发后, 该 Watcher 就失效了。 128题 1、服务端接收 Watcher 并存储; 2、Watcher 触发; 2.1 封装 WatchedEvent; 2.2 查询 Watcher; 2.3 没找到;说明没有客户端在该数据节点上注册过 Watcher; 2.4 找到;提取并从 WatchTable 和 Watch2Paths 中删除对应 Watcher; 3、调用 process 方法来触发 Watcher。 127题 1.调用 getData()/getChildren()/exist()三个 API,传入 Watcher 对象 2.标记请求 request,封装 Watcher 到 WatchRegistration 3.封装成 Packet 对象,发服务端发送 request 4.收到服务端响应后,将 Watcher 注册到 ZKWatcherManager 中进行管理 5.请求返回,完成注册。 126题 Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。工作机制:(1)客户端注册 watcher(2)服务端处理 watcher(3)客户端回调 watcher 125题 服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。 LOOKING:寻 找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。 FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。 LEADING:领导者状态。表明当前服务器角色是 Leader。 OBSERVING:观察者状态。表明当前服务器角色是 Observer。 124题 Zookeeper 有三种部署模式:单机部署:一台集群上运行;集群部署:多台集群运行;伪集群部署:一台集群启动多个 Zookeeper 实例运行。 123题 Paxos算法是分布式选举算法,Zookeeper使用的 ZAB协议(Zookeeper原子广播),二者有相同的地方,比如都有一个Leader,用来协调N个Follower的运行;Leader要等待超半数的Follower做出正确反馈之后才进行提案;二者都有一个值来代表Leader的周期。不同的地方在于:ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。Paxos算法、ZAB协议要想讲清楚可不是一时半会的事儿,自1990年莱斯利·兰伯特提出Paxos算法以来,因为晦涩难懂并没有受到重视。后续几年,兰伯特通过好几篇论文对其进行更进一步地解释,也直到06年谷歌发表了三篇论文,选择Paxos作为chubby cell的一致性算法,Paxos才真正流行起来。对于普通开发者来说,尤其是学习使用Zookeeper的开发者明确一点就好:分布式Zookeeper选举Leader服务器的算法与Paxos有很深的关系。 122题 ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议(paxos算法的一种实现)。ZAB协议包括两种基本的模式:崩溃恢复和消息广播。当整个zookeeper集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中Follower服务器开始与新的Leader服务器进行数据同步,当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。 121题 Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;如果是一个Leader宕机,Zookeeper会选举出新的Leader。ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以,3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5),2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)。 120题 选完Leader以后,zk就进入状态同步过程。1、Leader等待server连接;2、Follower连接leader,将最大的zxid发送给leader;3、Leader根据follower的zxid确定同步点;4、完成同步后通知follower 已经成为uptodate状态;5、Follower收到uptodate消息后,又可以重新接受client的请求进行服务了。 119题 在zookeeper集群中也是一样,每个节点都会投票,如果某个节点获得超过半数以上的节点的投票,则该节点就是leader节点了。zookeeper中有三种选举算法,分别是LeaderElection,FastLeaderElection,AuthLeaderElection, FastLeaderElection此算法和LeaderElection不同的是它不会像后者那样在每轮投票中要搜集到所有结果后才统计投票结果,而是不断的统计结果,一旦没有新的影响leader结果的notification出现就返回投票结果。这样的效率更高。 118题 zk的负载均衡是可以调控,nginx只是能调权重,其他需要可控的都需要自己写插件;但是nginx的吞吐量比zk大很多,应该说按业务选择用哪种方式。 117题 Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。 116题 有临时节点和永久节点,分再细一点有临时有序/无序节点,有永久有序/无序节点。当创建临时节点的程序结束后,临时节点会自动消失,临时节点上的数据也会一起消失。 115题 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,这就是主节点存在的意义。 114题 ZooKeeper 实现分布式事务,类似于两阶段提交,总共分为以下 4 步:客户端先给 ZooKeeper 节点发送写请求;ZooKeeper 节点将写请求转发给 Leader 节点,Leader 广播给集群要求投票,等待确认;Leader 收到确认,统计投票,票数过半则提交事务;事务提交成功后,ZooKeeper 节点告知客户端。 113题 ZooKeeper 实现分布式锁的步骤如下:客户端连接 ZooKeeper,并在 /lock 下创建临时的且有序的子节点,第一个客户端对应的子节点为 /lock/lock-10000000001,第二个为 /lock/lock-10000000002,以此类推。客户端获取 /lock 下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子节点,如果是则认为获得锁,否则监听刚好在自己之前一位的子节点删除消息,获得子节点变更通知后重复此步骤直至获得锁;执行业务代码;完成业务流程后,删除对应的子节点释放锁。 112题 ZooKeeper 特性如下:顺序一致性(Sequential Consistency):来自相同客户端提交的事务,ZooKeeper 将严格按照其提交顺序依次执行;原子性(Atomicity):于 ZooKeeper 集群中提交事务,事务将“全部完成”或“全部未完成”,不存在“部分完成”;单一系统镜像(Single System Image):客户端连接到 ZooKeeper 集群的任意节点,其获得的数据视图都是相同的;可靠性(Reliability):事务一旦完成,其产生的状态变化将永久保留,直到其他事务进行覆盖;实时性(Timeliness):事务一旦完成,客户端将于限定的时间段内,获得最新的数据。 111题 ZooKeeper 通常有三种搭建模式:单机模式:zoo.cfg 中只配置一个 server.id 就是单机模式了,此模式一般用在测试环境,如果当前主机宕机,那么所有依赖于当前 ZooKeeper 服务工作的其他服务器都不能进行正常工作;伪分布式模式:在一台机器启动不同端口的 ZooKeeper,配置到 zoo.cfg 中,和单机模式相同,此模式一般用在测试环境;分布式模式:多台机器各自配置 zoo.cfg 文件,将各自互相加入服务器列表,上面搭建的集群就是这种完全分布式。 110题 ZooKeeper 主要提供以下功能:分布式服务注册与订阅:在分布式环境中,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。而消费者就须要在这些对等的服务器中选择一个来执行相关的业务逻辑,比较典型的服务注册与订阅,如 Dubbo。分布式配置中心:发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 节点上,供订阅者获取数据,实现配置信息的集中式管理和动态更新。命名服务:在分布式系统中,通过命名服务客户端应用能够根据指定名字来获取资源、服务地址和提供者等信息。分布式锁:这个主要得益于 ZooKeeper 为我们保证了数据的强一致性。 109题 Dubbo是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而 Spring Cloud诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spirng、Spirng Boot的优势之上,两个框架在开始目标就不一致,Dubbo 定位服务治理、Spirng Cloud 是一个生态。 108题 Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。 107题 Dubbo超时时间设置有两种方式: 服务提供者端设置超时时间,在Dubbo的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。 服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消费方超时,服务端线程不会定制,会产生警告。 106题 Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权重。截面碰撞率高,调用次数越多,分布越均匀; RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请求累积的问题; LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收更少的请求; ConstantHash LoadBalance: 一致性Hash策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动; 缺省时为Random随机调用。 105题 Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心。 注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存。 Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。 Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer。 104题 Provider:暴露服务的服务提供方。 Consumer:调用远程服务的服务消费方。 Registry:服务注册与发现的注册中心。 Monitor:统计服务的调用次调和调用时间的监控中心。 Container:服务运行容器。 103题 主要就是如下3个核心功能: Remoting:网络通信框架,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。 Cluster:服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 Registry:服务注册,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 102题 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 101题 垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段。水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。 100题 垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。水平分库是把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上。 99题 QPS:每秒查询数。TPS:每秒处理事务数。Uptime:服务器已经运行的时间,单位秒。Questions:已经发送给数据库查询数。Com_select:查询次数,实际操作数据库的。Com_insert:插入次数。Com_delete:删除次数。Com_update:更新次数。Com_commit:事务次数。Com_rollback:回滚次数。 98题 如果需要跨主机进行JOIN,跨应用进行JOIN,或者数据库不能获得较好的执行计划,都可以自己通过程序来实现JOIN。 例如:SELECT a.,b. FROM a,b WHERE a.col1=b.col1 AND a.col2> 10 ORDER BY a.col2; 可以利用程序实现,先SELECT * FROM a WHERE a.col2>10 ORDER BY a.col2;–(1) 利用(1)的结果集,做循环,SELECT * FROM b WHERE b.col1=a.col1; 这样可以避免排序,可以在程序里控制执行的速度,有效降低数据库压力,也可以实现跨主机的JOIN。 97题 搭建复制的必备条件:复制的机器之间网络通畅,Master打开了binlog。 搭建复制步骤:建立用户并设置权限,修改配置文件,查看master状态,配置slave,启动从服务,查看slave状态,主从测试。 96题 Heartbeat方案:利用Heartbeat管理VIP,利用crm管理MySQL,MySQL进行双M复制。(Linux系统下没有分库的标准方案)。 LVS+Keepalived方案:利用Keepalived管理LVS和VIP,LVS分发请求到MySQL,MySQL进行双M复制。(Linux系统下无分库无事务的方案)。 Cobar方案:利用Cobar进行HA和分库,应用程序请求Cobar,Cobar转发请求道数据库。(有分库的标准方案,Unix下唯一方案)。 95题 聚集(clustered)索引,也叫聚簇索引,数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。但是,覆盖索引可以模拟多个聚集索引。存储引擎负责实现索引,因此不是所有的存储索引都支持聚集索引。当前,SolidDB和InnoDB是唯一支持聚集索引的存储引擎。 优点:可以把相关数据保存在一起。数据访问快。 缺点:聚集能最大限度地提升I/O密集负载的性能。聚集能最大限度地提升I/O密集负载的性能。建立在聚集索引上的表在插入新行,或者在行的主键被更新,该行必须被移动的时候会进行分页。聚集表可会比全表扫描慢,尤其在表存储得比较稀疏或因为分页而没有顺序存储的时候。第二(非聚集)索引可能会比预想的大,因为它们的叶子节点包含了被引用行的主键列。 94题 以下原因是导致mysql 表毁坏的常见原因: 服务器突然断电导致数据文件损坏; 强制关机,没有先关闭mysql 服务; mysqld 进程在写表时被杀掉; 使用myisamchk 的同时,mysqld 也在操作表; 磁盘故障;服务器死机;mysql 本身的bug 。 93题 1.定位慢查询 首先先打开慢查询日志设置慢查询时间; 2.分析慢查询(使用explain工具分析sql语句); 3.优化慢查询 。

游客ih62co2qqq5ww 2020-06-15 13:55:41 0 浏览量 回答数 0

回答

排查 Linux 实例异常 CPU 使用率 100% 使用 ECS 实例的过程中,您可能碰到 CPU 使用率异常,CPU使用率高达 100% 的情况。而且无法通过 top、htop 等命令查询到消耗 CPU 资源的具体进程。本文介绍了三个重点关注的 CPU 使用率异常的排查要素,根据查询异常时间节点和连接进而确定原因。 查看 ECS 实例监控数据 登录   ECS管理控制台。 找到异常实例,并单击实例名称。在 实例详情页面的 CPU   监控信息中查询实例 CPU 监控数据。 说明:查看监控数据时,关注以下 2 点。 查看 CPU 使用率变成 100% 的起始点。 查看 CPU 使用率突然为 100%,而且一直没有下降的时间点。 检查系统命令修改记录 远程连接并登录到 Linux 实例。 执行以下命令查看系统命令最近是否被修改过。 stat /usr/bin/top stat /bin/ps 查看系统命令的更改时间,是否和 CPU 使用率出现 100% 的时间点吻合。 执行   rpm  验证是否修改过系统命令。正常情况下,您应该查看不到修改信息。 rpm -Vf /bin/ps rpm -Vf /usr/bin/top 查看实例的对外连接 执行命令 iftop -i eth1 -n -P 查看当前实例是否连接到异常域名,如示例中的 crypto-pool.fr。 后续操作 经过排查,当实例的 CPU 使用率异常到 100% 时,均符合以上三个特征,基本可以判断您的实例已经中毒,您需要: 尽快备份实例的数据。参阅文档 创建快照。 重装系统,并参阅文档 云服务器 ECS 被肉鸡了怎么办?巩固系统。 如问题还未解决,请提交工单联系阿里云。

51干警网 2019-12-02 00:35:22 0 浏览量 回答数 0

问题

Docker Swarm入门教程

ghostcloud 2019-12-01 21:38:17 11625 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板