• [视频] 【云视厅】第6期 安全组—云服务器的守卫者
    云上一分钟,上云更轻松。当您使用华为云弹性云服务器搭建了一个应用,想让别人访问时,发现…..咦?怎么访问不了呢?回忆一下,是不是购买弹性云服务器进行网络配置时,安全组直接是默认配置了? 那么问题来了安全组是什么呢?怎么配置呢?猛戳以下视频一起学习如何配置安全组~   点击“了解更多”,学习更多安全组知识。加关注,不迷路!下期见~
  • [经验交流] 分享一个常用的网络故障排查工具
    常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。安装方法1.Windows系统可以直接在https://cdn.ipip.net/17mon/besttrace.exe下载BestTrace工具并安装。也可以在https://github.com/oott123/WinMTR/releases GitHub上下载MTR专用工具,该工具为免安装,下载后可以直接使用。2.Linux可以直接运行命令进行安装。# Debian/Ubuntu 系统apt install mtr# RedHat/CentOS 系统yum install mtr3.Apple客户端可以在App store搜索Best NetTools下载安装4.Android客户端:可以在Google Play上下载TracePing,但是由于国内Google Play无法访问,笔者自行下载下来,可以直接访问 https://dwz.cn/KCdNPH4c 下载TracePing。使用MTR使用非常简单,查看本机到 qq.com 的路由以及连接情况直接运行如下命令:mtr qq.com具体输出的参数含义为:第一列是IP地址丢包率:Loss已发送的包数:Snt最后一个包的延时:Last平均延时:Avg最低延时:Best最差延时:Wrst方差(稳定性):StDev参数说明-r or --report使用 mtr -r qq.com 来打印报告,如果不使用 -r or --report 参数 mtr 会不断动态运行。使用 report 选项, mtr 会向 qq.com 主机发送 10 个 ICMP 包,然后直接输出结果。通常情况下 mtr 需要几秒钟时间来输出报告。mtr 报告由一系列跳数组成,每一跳意味着数据包通过节点或者路由器来达到目的主机。一般情况下 mtr 前几跳都是本地 ISP,后几跳属于服务商比如 腾讯数据中心,中间跳数则是中间节点,如果发现前几跳异常,需要联系本地 ISP 服务提供上,相反如果后几跳出现问题,则需要联系服务提供商,中间几跳出现问题,则需要联系运营商进行处理默认使用 -r 参数来生成报告,只会发送10个数据包,如果想要自定义数据包数量,可以使用 -c 参数-s or --packetsize使用 -s 来指定ping数据包的大小mtr -s 100 qq.com100 bytes 数据包会用来发送,测试,如果设置为负数,则每一次发送的数据包的大小都会是一个随机数。-c指定发送数量mtr -c 100 qq.com-n不进行主机解释使用 -n 选项来让 mtr 只输出 IP,而不对主机 host name 进行解释mtr -n qq.comMTR结果分析当我们分析 MTR 报告时候,最好找出每一跳的任何问题。除了可以查看两个服务器之间的路径之外,MTR 在它的七列数据中提供了很多有价值的数据统计报告。Loss% 列展示了数据包在每一跳的丢失率。Snt 列记录的多少个数据包被送出。使用 –report 参数默认会送出10个数据包。如果使用 –report-cycles=[number-of-packets] 选项,MTR 就会按照 [number-of-packets] 指定的数量发出 ICMP 数据包。Last, Avg, Best 和 Wrst 列都标识数据包往返的时间,使用的是毫秒( ms )单位表示。Last 表示最后一个数据包所用的时间, Avg 表示评价时间, Best 和 Wrst 表示最小和最大时间。在大多数情况下,平均时间( Avg)列需要我们特别注意。最后一列 StDev 提供了数据包在每个主机的标准偏差。如果标准偏差越高,说明数据包在这个节点的延时越不相同。标准偏差会让您了解到平均延时是否是真的延时时间的中心点,或者测量数据受到某些问题的干扰。例如,如果标准偏差很大,说明数据包的延迟是不确定的。一些数据包延迟很小(例如:25ms),另一些数据包延迟很大(例如:350ms)。当10个数据包全部发出后,得到的平均延迟可能是正常的,但是平均延迟是不能很好的反应实际情况的。如果标准偏差很高,使用最好和最坏的延迟来确定平均延迟是一个较好的方案。在大多数情况下,您可以把 MTR 的输出分成三大块。根据配置,第二或第三跳一般都是您的本地 ISP,倒数第二或第三跳一般为您目的主机的ISP。中间的节点是数据包经过的路由器。当分析 MTR 的输出时,您需要注意两点:loss 和 latency。网络丢包如果在任何一跳上看到 loss 的百分比,这就说明这一跳上可能有问题了。当然,很多服务提供商人为限制 ICMP 发送的速率,这也会导致此问题。那么如何才能指定是人为的限制 ICMP 传输 还是确定有丢包的现象?此时需要查看下一跳。如果下一跳没有丢包现象,说明上一条是人为限制的。如下示例:人为限制MTR丢包在此例中,第4跳发生了丢包现象,但是接下来几条都没任何丢包现象,说明第二跳的丢包是人为限制的。如果在接下来的几条中都有丢包,那就可能是第二跳有问题了。请记住,ICMP 包的速率限制和丢失可能会同时发生。MTR丢包截图 从上面的图中,您可以看从第13跳和第17跳都有 10% 的丢包率,从接下来的几跳都有丢包现象,但是最后15,16跳都是100%的丢包率,我们可以猜测到100%的丢包率除了网络糟糕的原因之前还有人为限制 ICMP。 所以,当我们看到不同的丢包率时,通常要以最后几跳为准。还有很多时候问题是在数据包返回途中发生的。数据包可以成功的到达目的主机,但是返回过程中遇到“困难”了。所以,当问题发生后,我们通常需要收集 反方向的 MTR 报告。此外,互联网设施的维护或短暂的网络拥挤可能会带来短暂的丢包率,当出现短暂的10%丢包率时候,不必担心,应用层的程序会弥补这点损失。 网络延迟 除了可以通过MTR报告查看丢包率,我们也还可以看到本地到目的之间的时延。因为是不通的位置,延迟通常会随着条数的增加而增加。所以,延迟通常取决于节点之间的物理距离和线路质量。MTR查看网络延迟 从上面的MTR报告截图中,我们可以看到从第11跳到12跳的延迟猛增,直接导致了后面的延迟也很大,一般有可能是11跳到12跳属于不通地域, 物理距离导致时延猛增,也有可能是第12条的路由器配置不当,或者是线路拥塞。需要具体问题进行具体的分析。然而,高延迟并不一定意味着 当前路由器有问题。延迟很大的原因也有可能是在返回过程中引发的。从这份报告的截图看不到返回的路径,返回的路径可能是完全不同的线路, 所以一般需要进行双向MTR测试。根据MTR结果解决网络问题MTR 报告显示的路由问题大都是暂时性的。很多问题在24小时内都被解决了。大多数情况下,如果您发现了路由问题,ISP 提供商已经监视到并且正在解决中了。当您经历网络问题后,可以选择提醒您的 ISP 提供商。当联系您的提供商时,需要发送一下 MTR 报告和相关的数据。没有有用的数据,提供商是没有办法去解决问题的。然而大多数情况下,路由问题是比较少见的。比较常见的是因为物理距离太长,或者上网高峰,导致网络变的很慢。尤其是跨越大西洋和太平洋的时候,网络有时候会变的很慢。这种情况下,建议就近接入客户的节点。
  • [问题求助] 【Atlas200DK产品】【VPC功能】VPC颜色空间转换失败
    根据 https://support.huaweicloud.com/asdevg-c-A200dk_3000_c75/atlasapi_07_0141.html:BGR888转NV12是被VPC所支持的。函数:void BGR2NV12(const uint8_t *pdata, int h, int w){   void *dvpp_input_mem = nullptr;   void *dvpp_output_mem = nullptr;   int input_size = h*w*3;   int output_size = input_size/2;   acldvppPicDesc *inputD = acldvppCreatePicDesc();   acldvppPicDesc *outputD = acldvppCreatePicDesc();   CHECK_ACL(acldvppMalloc(&dvpp_input_mem, input_size));   CHECK_ACL(acldvppMalloc(&dvpp_output_mem, output_size));   CHECK_ACL(acldvppSetPicDescData(inputD, dvpp_input_mem));   CHECK_ACL(acldvppSetPicDescFormat(inputD, PIXEL_FORMAT_BGR_888));   CHECK_ACL(acldvppSetPicDescWidth(inputD, w));   CHECK_ACL(acldvppSetPicDescHeight(inputD, h));   CHECK_ACL(acldvppSetPicDescWidthStride(inputD, w));   CHECK_ACL(acldvppSetPicDescHeightStride(inputD, h));   CHECK_ACL(acldvppSetPicDescSize(inputD, input_size));   CHECK_ACL(acldvppSetPicDescData(outputD, dvpp_output_mem));   CHECK_ACL(acldvppSetPicDescFormat(outputD, PIXEL_FORMAT_YUV_SEMIPLANAR_420));   CHECK_ACL(acldvppSetPicDescWidth(outputD, w));   CHECK_ACL(acldvppSetPicDescHeight(outputD, h));   CHECK_ACL(acldvppSetPicDescWidthStride(outputD, w));   CHECK_ACL(acldvppSetPicDescHeightStride(outputD, h));   CHECK_ACL(acldvppSetPicDescSize(outputD, output_size));   memcpy(dvpp_input_mem, pdata, input_size);   CHECK_ACL(acldvppVpcResizeAsync(channel_desc, inputD, outputD, resize_config, stream));   CHECK_ACL(aclrtSynchronizeStream(stream));   CHECK_ACL(acldvppFree(dvpp_input_mem));   CHECK_ACL(acldvppFree(dvpp_output_mem));   CHECK_ACL(acldvppDestroyPicDesc(inputD));   CHECK_ACL(acldvppDestroyPicDesc(outputD));   return ACL_ERROR_NONE; }运行报错:[ERROR] RUNTIME(23079)kernel task happen error, receive aicpu failed msg, aicpu error code=0x5. [ERROR] RUNTIME(23079)aicpu kernel execute failed, device_id=0, stream_id=10, task_id=15, fault so_name=libdvpp_kernels.so, fault kernel_name=DvppResize想确认下这种颜色空间转换确实是被支持的吧?
  • [Atlas300] vpc做resize操作时,会报出不在dvpp 4G空间内
    您好,请问一下我的数据从device侧,经过host,再到device侧,就会报如下的问题:dvpp做yuv数据压缩,数据直接device-》host侧时没问题的,在host侧加了一个engine只做转发,数据流从device-》host-》device-》host,就会爆出下面的问题;[ERROR] DVPP(9119,graph_110):2020-10-21-11:32:00.446.494 [API] [CheckInputParamter:662] [T50] bareDataAddr(0xaaaaeeb69330) is not in DVPP 4G space, please check alloc buffer interface.
  • [Atlas500] 【Atlas500】【InferOfflineVideo】Vpc malloc device failed!ret=500000
    【功能模块】请教调试过程遇到的问题,如标题,运行InferOfflineVideo程序时,大概处理1500多帧后,程序报错【vpcManager.cpp VpcStart:244】Vpc malloc device failed!ret=500000应该是vpc处理过程,申请空间失败。请问这种问题如何进行追踪排查呢?需要观察哪个日志的哪些关键字?感谢指点。
  • [技术干货] 使用华为云VPC搭建Keepalived+Nginx高可用WEB负载均衡
     问题描述:本文档介绍如何使用华为云VPC在CentOS6.8系统环境实现 Keepalived+Nginx高可用WEB负载均衡环境搭建。 1、物料准备步骤产品数量规格用途备注1虚拟私有云(VPC)1192.168.0.0/16所有产品须在同一区域(这里我们使用华东-上海二)组网vpc-HA子网(subnet)1192.168.0.0/24HA内网subnet-HA2弹性云服务器(ECS)21核1GB CentOS   7.4 64bit环境搭建购买时指定子网IP子网IP(subnetIP)2ecs-HA1:192.168.0.10/24ecs-HA2:192.168.0.20/24HA内网IP(RIP)3弹性IP(EIP)1bandweidth-HA(当前是1M带宽)公网访问绑定VIP虚拟IP(VIP)1192.168.0.100/24HA浮动IPEIP、ecs-HA1、ecs-HA2本文档中的操作为实验环境,所有资源均为“按需付费”,如果您自己在生产环境中使用,建议使用包年/包月模式。为确保各资源组件可连通性,一定确保所有资源均在“华东-上海二”购买,实际生产环境按业务实际需要选择区域。1.1、购买虚拟私有云(VPC)并指定子网(1)、虚拟私有云vpc-HA和子网subnet-HA登录华为云官网,按照网站导航——产品à网络à 虚拟私有云 VPC找到虚拟私有云(VPC)产品。点击“立即使用”购买虚拟私有云 VPC进入“申请虚拟私有云”页面。(2)、购买完成的虚拟私有云(vpc-HA)和子网(subnet-HA)信息如下图所示1.2 、 购买弹性云服务器(ECS)登录华为云官网,按照网站导航——产品à计算à弹性云服务器 ECS找到弹性云服务器 (ECS)产品。点击“立即购买”进入“购买弹性云服务器”页面进入购买页面后,购买过程中注意指定“物料准备”中指定的如下相关信息:(1)、ecs-HA1:(2)、 ecs-HA2: (3)、 购买完成的两台弹性云服务器配置信息我们这里是实验环境,所有一切从简,并未选购数据盘,实际生产环境使用时请按业务需求选购数据盘,并切实考虑HA两个节点之间业务数据一致性(同步)问题。1.3、购买弹性公网IP(EIP)登录华为云官网,按照网站导航——产品à网络à 弹性公网IP(Elastic IP),找到弹性公网IP(Elastic IP)购买页。我们本次购买到的弹性公网IP为XXXXXXXXXXX1.4、申请虚拟IP地址登录华为云官网,按照网站导航——控制台→服务列表→网络→虚拟私有云→vpc-HA→子网→subnet-HA→虚拟IP→申请虚拟IP地址。2 、 操作步骤2.1、 配置弹性云服务器环境配置弹性云服务器环境需要使用互联网安装相关软件包,所以我们在配置弹性云服务器环境的过程中会临时使用弹性公网IPXXXXXXXXXX。(1)、ecs-HA1:A.  绑定弹性公网IP XXXXXXXXXXXX到ecs-HA1。      登录华为云官网,按照网站导航——控制台à服务列表à计算à弹性云服务器,找到ecs-HA1。B.  通过ssh连接ecs-HA1安装nginx、keepalived 软件包及相关依赖包。 # yum install nginx   keepalived -y C.  编辑nginx配置文件。 # vim   /etc/nginx/nginx.conf user root;worker_processes 1;#error_log   logs/error.log;#error_log   logs/error.log notice;#error_log   logs/error.log info;#pid logs/nginx.pid;events {worker_connections   1024;}http {include mime.types;default_type   application/octet-stream;#log_format main   '$remote_addr - $remote_user [$time_local] "$request" '# '$status   $body_bytes_sent "$http_referer" '#   '"$http_user_agent" "$http_x_forwarded_for"';#access_log   logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log   logs/host.access.log main;location / {root html;index index.html   index.htm;}#error_page 404   /404.html;# redirect server error   pages to the static page /50x.htmlerror_page 500 502 503   504 /50x.html;location = /50x.html {root html;}}} D.   编辑index.html文件内容以演示访问效果 # vim   /usr/share/nginx/html/index.html <html><head><title>ECS-HA</title></head><body><h1>Welcome   to <strong>ECS-HA1</strong></body></html> E.  设置nginx服务开机自启动并启动服务 # systemctl   enable nginx# systemctl   start nginx.serviceF.  Nginx单节点访问测试。G.  编辑keepalived配置文件。 # vim   /etc/keepalived/keepalived.conf ! Configuration File for   keepalivedglobal_defs {router_id master-node}vrrp_script   chk_http_port {script   "/etc/keepalived/chk_nginx.sh"interval 2weight -5fall 2rise 1}vrrp_instance VI_1 {state MASTERinterface eth0mcast_src_ip   192.168.0.10virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.0.100}track_script {chk_http_port}} H.  编辑nginx监控脚本。 # vim   /etc/keepalived/chk_nginx.sh #!/bin/bashcounter=$(ps -C nginx   --no-heading|wc -l)if [ "${counter}"   = "0" ]; thensystemctl start   nginx.servicesleep 2counter=$(ps -C nginx   --no-heading|wc -l)if [   "${counter}" = "0" ]; thensystemctl stop   keepalived.servicefifi  chmod +x   /etc/keepalived/chk_nginx.sh I.  设置keepalived服务开机自启动并启动服务 # systemctl enable   keepalived# systemctl start   keepalived.service (2)、 ecs-HA2:先将弹性公网IP XXXXXXXX从ecs-HA1解绑定。 A.   绑定弹性公网IP xxxxxxxx到ecs-HA2。登录华为云官网,按照网站导航——控制台à服务列表à计算à弹性云服务器,找到ecs-HA2。 B.  通过ssh连接ecs-HA1安装nginx、keepalived 软件包及相关依赖包。 # yum install nginx keepalived   -y C.   编辑nginx配置文件(也可以从ecs-HA1上复制一份)。 #   vim /etc/nginx/nginx.conf user root;worker_processes 1;#error_log   logs/error.log;#error_log   logs/error.log notice;#error_log   logs/error.log info;#pid logs/nginx.pid;events {worker_connections   1024;}http {include mime.types;default_type   application/octet-stream;#log_format main   '$remote_addr - $remote_user [$time_local] "$request" '# '$status   $body_bytes_sent "$http_referer" '#   '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log   main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log   logs/host.access.log main;location / {root html;index index.html   index.htm;}#error_page 404   /404.html;# redirect server error   pages to the static page /50x.htmlerror_page 500 502 503   504 /50x.html;location = /50x.html {root html;}}} D.   编辑index.html文件内容以演示访问效果 # vim   /usr/share/nginx/html/index.html <html><head><title>ECS-HA</title></head><body><h1>Welcome   to <strong>ECS-HA2</strong></body></html>  E.   设置nginx服务开机自启动并启动服务 # systemctl   enable nginx# systemctl   start nginx.service F.   Nginx单节点访问测试。 G.   编辑keepalived配置文件。 #   vim /etc/keepalived/keepalived.conf ! Configuration File   for keepalivedglobal_defs {router_id master-node}vrrp_script   chk_http_port {script   "/etc/keepalived/chk_nginx.sh"interval 2weight -5fall 2rise 1}vrrp_instance VI_1 {state BACKUPinterface eth0mcast_src_ip   192.168.0.20virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.0.100}track_script {chk_http_port}} H.   编辑nginx监控脚本并添加执行权限(也可以从ecs-HA1上复制一份) # vim   /etc/keepalived/chk_nginx.sh #!/bin/bashcounter=$(ps -C nginx   --no-heading|wc -l)if [   "${counter}" = "0" ]; thensystemctl start   nginx.servicesleep 2counter=$(ps -C nginx   --no-heading|wc -l)if [   "${counter}" = "0" ]; thensystemctl stop   keepalived.servicefifi  chmod +x   /etc/keepalived/chk_nginx.sh  设置keepalived服务开机自启动并启动服务 # systemctl enable   keepalived# systemctl start   keepalived 2.2 、绑定虚拟IP。先将弹性公网IP xxxxxxxx从ecs-HA2解绑定。登录华为云官网,按照网站导航——控制台à服务列表à网络à虚拟私有云àvpc-HAà子网àsubnet-HAà虚拟IP。 (1)、绑定虚拟IP到弹性云服务器ecs-HA1。 (2)、 绑定虚拟IP到弹性云服务器ecs-HA2。 (3)、 绑定虚拟IP到弹性公网IP xxxxxxx。 3 、结果验证分别重启ecs-HA1和ecs-HA2,通过华为云官网用户控制台远程登录到ecs-HA1上按以下操作进行验证。3.1、查看虚IP是否有绑定到ecs-HA1的eth0网卡上 # ip addr show  3.2 、通过浏览器访问弹性公网IP看是否可以访问到ecs-HA1节点上的WEB测试页。3.3、手动停止主服务器(ecs-HA1)上的keepalived服务,然后查看从服务器(ecs-HA2)是否有接管VIP;通过浏览器访问弹性公网IP看是否可以访问到ecs-HA2节点上的WEB测试页。 # systemctl stop   keepalived.service 通过以上验证信息可以看出我们的高可用WEB负载均衡功能正常。
  • 【VPN锦囊 】基于OpenVPN+CC实现跨Region访问VPC资源
    作者 : 华为云CC服务团队1      网络拓扑结构拓扑结构如图                                              1.1      组网规划北京4 VPC:同VPC内两个子网网段192.168.0.0/24、192.168.30.0/24OpenVPN主机:属于北京四VPC,双网卡配置、其中一个网卡绑定EIPSSL Server:OpenVPN提供服务,下发DHCP 10.8.0.0/16,通过入云接入服务香港VPC:客户员工希望跨Region访问的VPC,VPC子网10.0.0.0/241.2      实现目标个人PC可通过OpenVPN客户端连接Server端通过建立的SSLVPN练练可访问Server所在VPC资源;可通过CC访问云上其它Region的VPC资源2      Server端部署2.1      基础环境建设按照图示拓扑,在北京四创建VPC,指定相应子网,创建ECS。推荐ECS规格4vCPUs | 8GB以上,选择两块网卡分别隶属于不同的子网,主网关绑定EIP。完成CC服务创建,按照子网规划添加网络实例和路由,完成基础配置后开始部署OpenVPN Server,部署前请在安全组规则中放通所需协议端口。2.2      安装Server端通过yum install安装最新版本的server和密钥软件,本实例按照软件版本分别为openvpn-2.4.9-1.el8.x86_64与easy-rsa-3.0.7-1.el8.noarch。yum 安装命令如下:yum -y install openvpnyum -y install easy-rsa2.3      配置证书密钥cp -r /usr/share/easy-rsa/3.0.7 /etc/openvpn/server/easy-rsacd /etc/openvpn/server/easy-rsa./easyrsa init-pki     #初始化pki目录./easyrsa build-ca nopass           #创建CA证书./easyrsa build-server-full server nopass     #生成服务器端秘钥./easyrsa build-client-full client1 nopass    #生成客户端密钥./easyrsa build-client-full client2 nopass    #可选,创建第二个客户端证书./easyrsa gen-dh             #生成Diffie-Hellman文件openvpn --genkey --secret ta.key  #HMAC防火墙,防止DDOS攻击2.4      创建目录与配置文件创建日志存放目录mkdir -p /var/log/openvpn/创建用户管理目录mkdir -p /etc/openvpn/server/user配置权限chown openvpn:openvpn /var/log/openvpn在/etc/openvpn/server目录下使用vi service.conf创建配置文件,并添加配置信息如下################################################## This file is for the server side              ## of a many-clients <-> one-server              ## OpenVPN configuration.                        ##                                               ## Comments are preceded with '#' or ';'         ##################################################port 2238proto udpdev tunuser rootgroup rootca /etc/openvpn/server/easy-rsa/pki/ca.crtcert /etc/openvpn/server/easy-rsa/pki/issued/server.crtkey /etc/openvpn/server/easy-rsa/pki/private/server.keydh /etc/openvpn/server/easy-rsa/pki/dh.pemtls-auth /etc/openvpn/server/easy-rsa/ta.key 0 auth-user-pass-verify /etc/openvpn/server/user/checkpsw.sh via-envscript-security 3verify-client-certusername-as-common-name client-to-clientduplicate-cnserver 10.8.0.0 255.255.0.0 push "route 192.168.30.0 255.255.255.0"push "redirect-gateway def1"  “慎用”push "dhcp-option DNS 8.8.8.8"push "dhcp-option DNS 8.8.4.4" compress lzoauth SHA512cipher AES-256-CBC;ncp-ciphers "AES-256-GCM:AES-128-GCM" keepalive 10 120  max-clients 100persist-keypersist-tunverb 3log /var/log/openvpn/server.loglog-append /var/log/openvpn/server.logstatus /var/log/openvpn/status.log2.5      设置环境变量注意!这里创建完配置文件后,需要做个配置文件的软连接,因为当前版本的 openvpn systemd 启动文件中读取的是.service.conf配置。cd /etc/openvpn/server/ln -sf server.conf .service.confCentos默认没有使能MD5,Centos 7移除了Openssl的MD5支持,openssl仍然默认以md5作为散列算法并且可以正确识别md5散列算法export OPENSSL_ENABLE_MD5_VERIFY=1export NSS_HASH_ALG_SUPPORT=+MD52.6      创建用户密码文件格式是用户、密码以空格分割即可tee /etc/openvpn/server/user/psw-file << EOFmytest mytestpassEOFchmod 660 /etc/openvpn/server/user/psw-filechown root:root /etc/openvpn/server/user/psw-file 不校验密码检查脚本vi /etc/openvpn/server/user/checkpsw.sh#!/bin/bashexitchmod o+x /etc/openvpn/server/user/checkpsw.sh2.7      启动server及调试查看service名rpm -ql openvpn | grep service/usr/lib/systemd/system/openvpn-client@.service/usr/lib/systemd/system/openvpn-server@.service启动systemctl start openvpn-server@.service.service echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf  #开启路由转发能力/sur/sbin/sysctl –p  #验证开启功能检查服务状态systemctl status openvpn-server@.service.service查看服务日志vim /var/log/openvpn/server.log2.8      选择模式[主推]代理模式:在openvpn server虚拟机中,配置iptables规则,需要进行源地址转换策略添加。openvpn server虚拟机网卡不用关闭源目的地址检查透传模式:设置VPC路由,找到openvpn-server-vpc 路由表,添加vpc路由openvpn server:需要关闭openvpn server 网卡的源目的地址检测。2.9      Server端策略路由配置策略路由表/etc/iproute2/rt_tables配置策略路由/etc/rc.local查看策略路由source /etc/rc.local 查看结果2.10   CC配置更新:北京4 云连接实例,增加10.8.0.0/16 为openvpn tunnel网络路由3      Client端部署3.1      Linux client配置执行yum  -y install openvpn,软件包版本openvpn-2.4.9-1.el8.x86_64,依赖包:pkcs11-helper-1.22-7.el8.x86_64。将server端 /etc/openvpn/server目录及子目录下的ca.crt、client1.crt、client1.key、ta.key文件下载到client虚拟机 /etc/openvpn/目录,122.112.*.*为client 虚拟机公网地址/etc/openvpn/client.ovpn 可以自己写一个,也可以参考下面内容 client     #客户端标识dev tun      proto udp   auth-user-passremote 121.36.*.* 2**8  server端EIP地址及端口resolv-retry infinitenobindpersist-keypersist-tunca ca.crtcert client1.crtkey client1.keyremote-cert-tls server;ns-cert-type servercomp-lzoauth SHA512cipher AES-256-CBCtls-auth ta.key 1verb 3执行启动openvpn client端的命令,如下:openvpn --daemon --config /etc/openvpn/client.ovpn  --log-append /var/log/openvpn.log  在上述文件夹中写一个passwd.txt,第一行输入用户名,第二行输入密码。修改client.ovpn中auth-user-pass –> auth-user-pass passwd.txt 回显日志信息 /var/log/openvpn.log 查看路由信息:Linux client 虚拟机DNS 解析地址需要修改3.2      Windows client配置上传软件包:openvpn-install-2.4.9-I601-Win10将软件包安装后,找到其文件位置:将模板文件C:\Program Files\OpenVPN\sample-config\sample.ovpn 复制到C:\Program Files\OpenVPN\config,重命名为client.ovpn 进行修改文件内容,  配置文件内容:和linux client客户端配置文件内容一致完成虚拟网卡命名:控制面板 -> 所有控制面板项-> 网络连接,将新添加的虚拟网卡,命名为tap2配置DNS地址解析及结果验证:在主网卡上进行,以及需要重启虚拟机,打开客户端软件,进行连接,成功标志查看路由信息:会把默认流量通过出接口重定向公网出口,默认路由分为0.0.0.0/1和128.0.0.0/1两个段,本端隧道地址:10.8.0.14,对端隧道地址:10.8.0.13<测试没什么作用,不影响。4      附件-配置参数说明4.1      Server配置参数解释/etc/openvpn/server/server.conf文件client-to-client如果允许openvpn客户端之间通信需要配置这个选项,如果不允许openvpn客户端之间互相通信可以注释掉这个配置选项。duplicate-cn允许一个openvpn客户端账号同时多个系统/电脑登陆。类似于一个qq账号同时手机和电脑登陆。只不过这个功能更厉害,是多个电脑同时登陆。 如果想一个客户端只允许同时在线一个客户端,可以注释掉这个配置max-clients 100定义最大客户端并发连接数量keepalive 10 120openvpn server 10秒尝试连接一次客户端,检查客户端是否存活。如果OpenVPN server连续120秒没有收到客户端回复则认为客户端掉线。 ifconfig-pool-persist ipp.txtopenvpn客户端登陆的账号和分配的IP记录在这个文件中。这样客户端再次登陆时可以使用相同的IP地址。ipp.txt文件默认10分钟回写一次,如果想要两秒回写,那么在后面加个2:ifconfig-pool-persist ipp.txt 2ipp.txt记录格式:CN用户名,子网网络地址。这个子网网络地址一般都是30位地址。例如:10.8.0.4,这个网络地址的第一个IP是10.8.0.5,这是这个子网段的dhcp,然后下一个才是客户端的IP,也就是10.8.0.6 comp-lzo数据传输之前使用lzo压缩数据,这样节约链路带宽,但是会加大服务器的CPU开销。persist-key通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。persist-tun通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的。否则网络连接,会先linkdown然后再linkup。proto udpopenvpn客户端和服务器数据传输使用udp协议。使用什么协议根据具体应用结合分析。一般语音会使用udp,如果使用tcp会因为 丢包重传而出现杂音现象。在多机房数据备份时建议使用tcp协议,不建议使用udp,因为udp协议没有重传机制。port 2238openvpn客户端连接openvpn server时的openvpn server的服务端口。类似ssh的22端口。默认是:1194,建议修改成10000以上的自定义端口。dev tun定义openvpn运行时使用哪一种模式,openvpn有两种运行模式一种是tap模式,一种是tun模式。 tap模式也就是桥接模式,通过软件在系统中模拟出一个tap设备,该设备是一个二层设备,同时支持链路层协议。 tun模式也就是路由模式,通过软件在系统中模拟出一个tun路由,tun是ip层的点对点协议。 一般网络电话等语音通信因为运营商屏蔽而使用openvpn时会使用tap,如果日常使用基本区别不大。verb 3日志冗余级别。 ca /etc/openvpn/keys/ca.crtcert /etc/openvpn/keys/server.crtkey /etc/openvpn/keys/server.key # This file should be kept secretdh /etc/openvpn/keys/dh1024.pemca定义ca证书文件路径,cert定义服务器证书路径,key定义服务器端key文件,dh定义哈夫曼散列值文件。这些文件可以用相对路径或绝对路径定义。auth SHA512认证算法cipher AES-256-CBC加密算法server 10.8.0.0 255.255.255.0定义openvpn链接后客户端和服务器通信使用的局域网IP的地址池范围。可以自定义。push “redirect-gateway def1”使客户端改变默认路由指向push “route 192.168.10.0 255.255.255.0”向客户端推送的路由信息,假如客户端的IP地址为10.8.0.2,要访问192.168.10.0网段的话,使用这条命令就可以了。tls-auth /etc/openvpn/keys/ta.key 0开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。user nobodygroup nogroup定义openvpn运行时使用的用户及用户组log-append openvpn.log记录日志,每次重新启动openvpn后追加原有的log信息。mute 20重复日志记录限额log /var/log/openvpn/server.loglog-append /var/log/openvpn/server.logstatus /var/log/openvpn/status.log4.2      Client 配置参数解释client定义这是一个client,配置从server端pull拉取过来,如IP地址,路由信息之类,Server使用push指令推送过来。dev tun定义openvpn运行的模式,这个地方需要严格和Server端保持一致。proto tcp定义openvpn使用的协议,这个地方需要严格和Server端保持一致。remote 121.36.88.201 2238设置Server的IP地址和端口,这个地方需要严格和Server端保持一致。 如果有多台机器做负载均衡,可以多次出现remote关键字。可以使用域名remote-random随机选择一个Server连接,否则按照顺序从上到下依次连接。该选项默认不启用。resolv-retry infinite始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。nobind定义在本机不邦定任何端口监听incoming数据。persist-keypersist-tunca ca.crt定义CA证书的文件名,用于验证Server CA证书合法性,该文件一定要与服务器端ca.crt是同一个文件。cert client1.crt定义客户端的证书文件。key client1.key定义客户端的密钥文件。ns-cert-type serverServer使用build-key-server脚本生成的,在x509 v3扩展中加入了ns-cert-type选项。防止client使用他们的keys + DNS hack欺骗vpn client连接他们假冒的VPN Server,因为他们的CA里没有这个扩展。comp-lzo启用允许数据压缩,这个地方需要严格和Server端保持一致。auth SHA512认证算法cipher AES-256-CBC加密算法tls-auth ta.key 1开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。verb 3设置日志记录冗长级别。
  • [技术干货] 企业出海利器-云连接
    企业出海经常会面临网络不稳定、延时高的问题,直接影响用户的访问和出海业务的发展。这是因为当前网络主要是通过光纤传输,传播路径长,物理传输速度有限,用户跨境访问服务器不可免的存在高延时,影响访问。华为云网络服务可以提供一种新的选择——云连接CC。通过云连接,企业可以基于合规跨境实现业务应用在全球的分布式部署,支持海外终端用户就近高效访问企业应用前端,该服务使用简单灵活,性能优异。云连接产品优势:全网互联,简单灵活、性能优异、全球合规维度云连接VPC对等连接公网EIP组网能力支持多Region   VPC互通支持云下单点接入访问多Region VPCRegion内VPC点到点互通,不支持跨Region VPC互通或多VPC互通云下基于云专线单点接入访问所在Region VPC,无法访问其他Region VPC跨Region间VPC点到点互通,不支持Region内VPC互通或多VPC互通组网性能基于专用MPLS网络承载,高性能高可靠,安全性高基于DCN网络承载,高性能高可靠,安全性高基于Internet承载,性能及可靠性无法保证,安全性需要基于IPSec保证跨云能力支持跨华为云及伙伴云互通不支持跨云互通支持跨华为云及伙伴云互通合规跨境具备合规跨境资格不具备跨境能力不具备合规跨境资格 典型场景:跨国企业协同办公场景:海外办公点接入国内云上/数据中心应用或者海外有分布式系统部署的企业。传统方案:各子公司建立一个小型数据中心的节点分别管理;各子公司之间如涉及跨境还需要进行备案,遵从法律要求。痛点:因为使用时间过长而逐渐跟不上使用需求,需要更新设备、增配运维人员等。但这样不仅意味着人力成本大大增加,数据中心设备升级的难度也很大。如上图:ERP系统云上部署环境,要求海内外分支机构云上VPC部署的应用可高效访问主VPC部署的应用系统(本图以ERP系统为例)使用云连接CC的优势:1.   基于华为云全球区域,出海灵活扩展业务,通过云连接快速实现互联,组建支持企业海外多VPC业务部署的云上网络2.   简单灵活:只需三步,分钟级让海外多VPC上的业务快速互通,且支持混合云架构3.   全球合规:提供全球一站式合规的网络能力,支持用户专注自身业务创新 数据备份或同步场景:国内外跨地域开发部署及数据传输备份等业务(例如OBS,VBS,CSBS,软件仓库,数据库备份等),需要不同站点间高速通道和稳定的数据传输。痛点:1.   不同地区间网络资源获取慢,专线资源耗时长,费用高;2.   各国对企业数据跨境合规的要求日趋严格,跨境专线申请困难、审批周期长。3.   Internet长程连接时延大,丢包率高。方案:各地区业务可以通过配置云连接,实现对其他地区业务应用的数据同步和备份。使用云连接CC的优势:1.   只需三步,分钟级让海外多VPC上的业务快速互通2.   带宽弹性灵活3.   全球合规:提供全球一站式合规的网络能力,支持用户专注自身业务创新4.   华为全球网络基础设施能力,提供低时延、高质量体验 企业在混合云架构下跨Region网络互通结合近年国内出现的大范围自然灾害,以同城双中心加异地灾备中心的 “两地三中心”的灾备模式也随之出现,这一方案兼具高可用性和灾难备份的能力。场景:中大型企业基于公有云多Region部署两地三中心架构,应用本地双活并进行异地云上灾备痛点:1.   预算有限:自建数据中心实现两地三中心的成本太高;2.   缺乏经验:没有两地三中心灾备实施经验。优势:在华为云上可以通过云连接连通云生产、灾备两个Region,搭配ELB,RDS,OBS等云服务实现“两地三中心”架构,保证业务的高可靠性。 互联网(视频/游戏加速)场景场景:出海企业在国内部署业务,同时也需要给海外用户提供业务。痛点:海外客户访问在国内部署的应用,时延长,丢包率升高。方案:企业在海外使用云资源用于业务贴近End-User部署。优势:通过使用云连接,用户接入就近Region VPC,通过云连接跨Region跨境访问总部服务器,网络全球延时缩短到158ms,丢包率大大降低。优化前端Internet用户访问部署在后端Region的业务的端到端访问体验。
  • [教程] 【微服务实战】资源一直扣费怎么办!!!朋友,如何彻底删除资源,这个秘笈一定要看!
    常常有童鞋做完任务领了奖励就挥一挥衣袖不带走一片云彩但是!!创建的资源没有删,它它它就一直在扣费啊,心痛!所以小助手在这出个删除【ELB+集群+VPC】的教程,避免大家有不必要的损失。删除资源秘笈一、首先删除我们创建的环境(这个免费)二、其次删除ELB负载均衡器(这个正在扣钱)先删除监听器:listener-test01和listener-HTTP然后返回负载均衡器页面删除ELB,记得一定要勾选【释放该负载均衡绑定的弹性公网IP,不然要再去删一遍弹性IP,切记】三、然后删除k8s集群(这个扣钱最多)注意:如果是购买的包年包月,则无需操作,包租期类型的资源到期之后会自动释放先在基础设施下找到K8S集群,单击要删除集群的“更多”下的删除集群然后勾选图上内容,输入“DELETE”确认删除即可四、再然后删除弹性IP(扣钱ing)先在左上角服务下找到虚拟私有云VPC,并进入控制台然后在弹性公网IP和带宽下找到弹性公网IP,如果操作需要解绑,那就先解绑再删除,如果不需要解绑,就直接点更多里面的删除即可。五、最后删除VPC(这个免费)先在基础设施下找到虚拟私有云(VPC),单击要VPC的名称找到子网并删除,才能删除VPC注意,出现如下提示,是因为集群还没完全删除,需要【休息休息一下】,等待集群删除完成就可以啦!集群删除成功后,单击操作中的删除,子网也可以删除了最后在虚拟私有云页面删除VPC即可好啦,本次的保姆级删除资源教程就到这里,还有啥问题可以直接社区发帖求助哦,小助手不会的,大神来帮忙!
  • [教程] 【微服务实战第一期】创建VPC、CCE集群和ELB
    资源创建之创建VPC、CCE集群和ELB创建虚拟私有云以及子网                                步骤 1      登录控制台,选择“虚拟私有云”。                                步骤 2      单击“创建虚拟私有云”。                                步骤 3      在“创建虚拟私有云”页面,根据界面提示配置虚拟私有云参数。                                表1-1 创建虚拟私有云参数配置                                                                其它使用默认配置,单击“立即创建”。                                ----结束                                至此您已经快速创建一个虚拟私有云。快速创建Kubernetes混合集群                                步骤 1      登录控制台,在左侧导航栏中单击“基础设施 > K8S集群(CCE)”,单击“创建Kubernetes集群”,单击 “创建混合集群”,进入购买混合集群页面。                                步骤 2      在购买混合集群页面的“服务选型”步骤中配置集群参数:                                表1-2 创建集群参数配置                                          其它使用默认配置,单击“下一步:创建节点”进入“创建节点”步骤。                                步骤 1      在“创建节点”步骤中,配置如下参数:                                l   计费模式:跟随集群的计费方式。                                l   可用区:选择“可用区1”。                                l   节点名称:cluster-test01-node01。                                l   节点规格选择“2核8GB”,如下图:                                       l   其它使用默认配置                                步骤 2      单击“下一步:安装插件”,使用默认配置。                                步骤 3      单击“下一步:配置确认”,勾选“使用说明”的“我已知晓上述限制”。                                步骤 4      确认规格和费用后,单击“去支付”。           勾选领取的代金券并完成订单即可。                                集群创建预计需要6-10分钟,您可以单击“返回集群管理”进行其他操作或单击“查看集群事件列表”后查看集群详情。                                ----结束                                至此,您已经快速创建一个Kubernetes集群。快速购买弹性IP并绑定集群                                步骤 1      登录控制台,在左侧导航栏中单击“弹性公网IP和带宽 > 弹性公网IP”,单击“购买弹性公网IP”,选择 “共享负载均衡”,进入购买弹性负载均衡页面。                                步骤 2      在购买弹性IP页面中配置如下参数:                                步骤 3      单击“立即购买”,确认参数并提交。                                步骤 4      在绑定弹性公网IP:在“弹性公网IP”界面待绑定弹性公网IP地址所在行,单击“绑定”。选择实例。单击“确定”。                                ----结束                                至此,您已经快速创建一个弹性公网IP并绑定实例。快速创建ELB负载均衡器                                步骤 1      登录控制台,在左侧导航栏中单击“弹性负载均衡 > 负载均衡器”,单击“购买弹性负载均衡”,选择 “共享负载均衡”,进入购买弹性负载均衡页面。                                步骤 2      在购买弹性负载均衡页面中配置参数:                                表1-1 购买弹性负载均衡参数配置                                                                其它使用默认配置,单击“立即购买”。                                 步骤 3      负载均衡创建完成后,需要配置监听器。在左侧导航栏中单击“弹性负载均衡 > 负载均衡器”                                步骤 4      在刚才创建的负载均衡的“监听器(前端协议/端口)”一列点击“点我开始配置”。                                步骤 5      在“监听器”页签单击添加监听器,配置如下:                                l   前端协议/端口: TCP/31543                                l   名称:server_group-test01。                                l   其它使用默认配置                                步骤 7      单击“完成”,ELB配置成功。                                ----结束                                至此,您已经快速创建一个ELB负载均衡器。                                
  • [Atlas300] VPC接口输入输出限制
    参照你们DVPP接口文档以及sample,对VPC接口输入输出的图片的尺寸限制有点不明白宽和高的对齐方式分别是什么?宽和高最大和最小分别是多少?(下图中“约束条件”标红部分针对的是输入还是输出?还是指的是输入和输出?适用的是所有VPC功能,还是特定功能的约束?)参照Sample工程下的DecodeVideo和DecodeImage,为什么DecodeVideo 里执行DvppCtl时设置输出ROI的宽高对齐是128 * 16(DVPP_STRIDE_WIDTH * DVPP_STRIDE_HEIGHT) ,而DecodeImage里DvppCtl接口设置输出ROI的宽高对齐是16*2 (DVPP_STRIDE_16 * DVPP_STRIDE_2)参照Sample工程下的DecodeVideo,VdecCtl 接口解码出来的视频是 宽128对齐,高16对齐吗?根据文档介绍VPC输入宽高对其情况如下图,这个应该是输入的对齐方式,输出对齐方式是什么样的?
  • [技术干货] 学习网络规划设计 助力企业轻松上云
    学习网络规划设计 助力企业轻松上云       如今,企业上云已成为热门话题,云可以驱动流程创新和业务创新,成为企业新的利润增长点,被看成是企业实现数字化转型的必经之路。华为云网络服务可以为企业用户的云服务器、云容器、云数据库等资源构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。如何更好地运用云上网络,保证其安全性、可控性?云上网络规划成为重中之重。学习华为云微认证《企业上云网络规划设计》,你将提升对华为云网络规划设计能力,为企业上云助一臂之力!华为云网络服务小讲堂在使用传统数据中心时,需要管理复杂的网络装置,包括服务器机架、路由器、防火墙设备等,但是在云上可以更快地自定义服务并调节其规模,以应对不同用户的需求。在学习云上网络规划之前,我们先来了解一下华为云上部分网络服务。       VPC:虚拟私有云 是用户在华为云上申请的隔离的、私密的虚拟网络环境。       EIP:弹性公网IP 提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。       VPN:虚拟专用网络 用于在远端用户和虚拟私有云之间建立一条安全加密的公网通信隧道,当您作为远端用户需要访问VPC的业务资源时,您可以通过VPN连通VPC。       NAT网关:能够为虚拟私有云内的弹性云服务器提供网络地址转换服务,使多个弹性云服务器可以共享使用弹性IP访问Internet。       DNS:云解析服务 提供高可用,高扩展的权威DNS服务和DNS管理服务,把人们常用的域名或应用资源转换成用于计算机连接的IP地址,从而将最终用户路由到相应的应用资源上。对等连接:两个VPC之间的网络连接。终端节点:VPC终端节点能够将VPC私密地连接到终端节点服务,使VPC中的云资源无需弹性公网IP就能够访问终端节点服务。       了解了这么多云上网络服务知识,接下来我们如何规划设计云上网络呢?做完下面的实验,你就可以掌握云上网络规划设计啦!实验六步走 推开企业网络设计的大门       下面这张图就模拟了企业实际环境,我们用一个实验就能搭建好这看似复杂的一张架构图。       1、搭建本地数据中心 也就是图上的广州区域。2、配置VPN连接 实现本地数据中心跟云上环境(上海区域)互联互通。3、创建NAT网关 使得Public Subnet下面的资源能够通过SNAT规则访问互联网。而位于Private Subnet的资源则限制访问互联网。4、部署云上环境WEB业务 为图上的上海区域配置DNS内网解析并添加关于RDS内网IP地址的A记录,使得WEB业务能够通过域名访问数据库。5、配置VPC对等连接 因业务环境变化,需要在云上环境(上海区域)再次新增一个VPC,并通过VPC对等连接配置两个VPC能够互相通信。6、配置VPC终端节点内网访问OBS 如果你希望自己的本地数据中心通过VPN或者云专线以内网方式访问OBS服务,可以通过创建终端节点连接终端节点服务实现。通过上述实践,你就能快速了解华为云网络服务,提升企业业务上云后服务的安全性、可控性。想不想轻松掌握,来开启《企业云上网络规划设计》学习之旅吧,小白也能变大咖哦。       如果您是对云网络感兴趣的人员,计划上云的企业运维人员、架构师和社会大众,那么就来学习《企业云上网络规划设计》,来提升对华为云网络规划设计能力吧,点击链接,详细了解一下吧!  
  • [技术干货] 云连接CC实现跨区域多VPC与线下IDC Server互联实践
    【背景】当前在华为云华南、华东、香港region均部署了业务,同时在华南region通过云专线与线下IDC打通,线下IDC有需要提供服务的IDC Server,想实现各region间正常互通以及各region与华南IDC Server数据的交互。【拓扑分析】【前提条件】确保安全组/网络ACL/安全设备等已放通对应端口、地址、网段【操作步骤】一、创建各region的实例(VPC)1)登录控制台,创建对应region的VPC2)全部创建完成后如下3)按照拓扑规划,为各VPC内添加对应的ECS(共计4台)以及线下IDC通过云专线接入的服务器一台(10.32.0.32)4)在加入云连接之前,对各region内VPC的ECS(且ECS未购买EIP)进行连通性测试,均不可达二、将这些region的VPC通过云连接打通1)进入控制台,创建云连接2)云连接创建好后,需要加载网络实例,将各实例打通(此处的实例指的是VPC)3)将实例加载到云连接参数说明:区域:您将要添加的实例所在的区域(region)VPC:您将要添加的实例名(当同一region有多个实例时,需要添加多次)VPC CIDRs:您将要添加的实例对应的子网信息(可全选也可选择部分子网,部分有安全要求的子网可以不添加,这样起到了安全保护的作用)4)继续加载,直到所有的实例添加完成,此时也可以看到添加好后生成的路由信息5)购买带宽包,分配域间带宽分配完成后,云连接创建完成。三、结果验证1)通过登录香港的ECS,进行同region不同vpc测试,不同region不同vpc测试,以及各regionECS到华南IDC Server测试,发现已全部可达,后续业务可正常交互。【结果验证截图中,直接ping了各服务的域名,提前做了解析,更方便识别】
  • 【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播
    最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能帮实习生解决恋爱问题)的“前辈”。前面几期故事记录了我的高光时刻,有兴趣可以点击前文查看(https://bbs.huaweicloud.com/forum/forum-1104-1.html)。 公司的短视频项目上线之后一直不温不火,老板挺着急,运营部提出要在6月底组织一次千人直播带货活动,邀请1千个主播同时在短视频平台上开直播,拉用户和流量。 千人同时在线直播,短视频平台的目标访问量在百万级以上,需要技术部门保证高并发流量下服务器的稳定。这个好办,华为云弹性云服务器是可以随时扩容的,经过部门研究,我们给出的技术方案是临时创建100台云虚拟机来支撑这次活动。 这个任务又光荣地落到了我的身上,谁让我是公司公认的云服务器专家呢…可离直播活动落地只有一个星期的时间了,还要留出时间进行压测。“通过API可以批量处理弹性云服务器,但我现在一个个接口封装也来不及啊!而且根据我的经验,还得提前做好随时扩容的准备,能够支持比预估目标更高的流量,得赶紧想想除了API还有什么可以用……”我心里有点着急了。 习惯性地打开华为云官网,在首页发呆了1分钟,一道灵光闪过:操作简单,可以快速控制批量资源,这可不就是SDK的特性吗!说来就来,我很快就有了思路:先快速创建100台按需计费的弹性云服务器作为直播支撑,在直播完成后,再对这些弹性云服务器进行释放。 打开API Explorer(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read )快速浏览,确认我需要用到的接口是CreatePostPaidServers 、 ListServerDetails 和DeleteServers。 万万没想到,这个设计还真起到了救急的作用! 直播开始前1个小时,运营部门突然反馈,这次活动的推广效果大大超出预期,峰值流量可能是预期目标的10倍!这将给网站访问带来很大的压力,老大给我打电话问我有没有办法处理。 这当然难不住我了,因为提前准备了技术方案,在直播过程中随着访问量的变化,随时批量调整服务器的配置,完美保障了直播的进行,最后在10倍于目标值的访问量下,依然没有出现任何卡顿/延迟的情况。 活动结束后,我又开始了疯狂输出,将SDK的配置方法写在了文档里: 一、前置条件:获取必填参数 1.     华为云SDK的认证方式为AK/SK认证,可以在华为云控制台”我的凭证-访问密钥”页面上创建和查看AK/SK。更多信息请查看访问密钥(https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html)。 2.     准备接口的必填参数PS:在华为云控制台-镜像服务IMS中可快速获取公共镜像相应的ID服务器配置详情:l   区域:华北-北京一 - cn-north-1l   可用区:可用区1 - cn-north-1al   规格:通用计算增强型 - c3.large.2l   镜像:Windows Server 2019数据中心版 64 位简体中文 - fb48d5c7-8718-489a-9273-d3e0e09c84d7l   服务器名:任意指定 - 如 "live-stream”l   系统盘类型:普通 IO 磁盘 – "SATA"l   虚拟私有云 ID(VPC ID):可获取当前账号在北京一区域中默认的 VPC ID,若没有默认 VPC 则新建l   网卡信息:可获取当前账号在北京一区域中默认 PC / 新建 VPC 下的子网 IDl   允许重名:当批量创建弹性云服务器时,云服务器名称是否允许重名,当count大于1的时候该参数生效 - false 二、实战演练PS:指南:https://github.com/huaweicloud/huaweicloud-sdk-java-v3/blob/master/README_CN.md 1.     新建maven项目,导入SDK的maven依赖<!-- add dependencies in pom.xml --><dependency>    <groupId>com.huaweicloud.sdk</groupId>    <artifactId>huaweicloud-sdk-core</artifactId>    <version>[3.0.1-beta, 3.1.0-beta)</version></dependency><dependency>    <groupId>com.huaweicloud.sdk</groupId>    <artifactId>huaweicloud-sdk-ecs</artifactId>    <version>[3.0.1-beta, 3.1.0-beta)</version></dependency>2.     批量创建弹性云服务器Demoimport com.huaweicloud.sdk.core.auth.BasicCredentials;import com.huaweicloud.sdk.core.http.HttpConfig;import com.huaweicloud.sdk.ecs.v2.EcsClient;import com.huaweicloud.sdk.ecs.v2.model.*; import java.util.LinkedList;import java.util.List; public class TestCreateEcs {    public static void main(String[] args) {        String ak = "{your ak string}";        String sk = "{your sk string}";        String projectId = "{your project id}";        String endpoint = "https://ecs.cn-north-1.myhuaweicloud.com";         HttpConfig config = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true);         BasicCredentials credentials = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);         EcsClient ecsClient = EcsClient.newBuilder().withCredential(credentials).withEndpoint(endpoint).withHttpConfig(config).build();         // 确认创建虚拟机的必填参数        String az = "cn-north-1a";        String flavorRef = "s3.medium.2";        String imageRef = "fb48d5c7-8718-489a-9273-d3e0e09c84d7";        String name = "live-stream";        String vpcId = "{you vpc id}";        // 网卡信息        PostPaidServerNic nic = new PostPaidServerNic().withSubnetId("{your subnet id}");        List<PostPaidServerNic> list = new LinkedList<>();        list.add(nic);        // 系统盘信息        PostPaidServerRootVolume root = new PostPaidServerRootVolume().withVolumetype(PostPaidServerRootVolume.VolumetypeEnum.SATA);         PostPaidServer servers = new PostPaidServer().withAvailabilityZone(az)                .withFlavorRef(flavorRef)                .withImageRef(imageRef)                .withName(name)                .withNics(list)                .withRootVolume(root)                .withVpcid(vpcId)                .withCount(100)                .withIsAutoRename(false);         CreatePostPaidServersRequestBody body = new CreatePostPaidServersRequestBody().withServer(servers);        CreatePostPaidServersRequest request = new CreatePostPaidServersRequest().withBody(body);        CreatePostPaidServersResponse response = ecsClient.createPostPaidServers(request);         System.out.println(response.toString());    }}3.     批量删除弹性云服务器Demo// Step1: 查询当前以"live-stream"为开头的虚拟机列表ListServersDetailsRequest listServersDetailsRequest = new ListServersDetailsRequest().withName("live-stream");ListServersDetailsResponse listServersDetailsResponse =    ecsClient.listServersDetails(listServersDetailsRequest); // Step2: 构造删除请求中的ServerId列表List<ServerDetail> serversList = listServersDetailsResponse.getServers();List<ServerId> serverIdList = new ArrayList<>();for(ServerDetail server : serversList) {    ServerId id = new ServerId().withId(server.getId());    serverIdList.add(id);} // Step3: 传入serverId列表,删除虚拟机DeleteServersRequestBody deleteServersRequestBody = new DeleteServersRequestBody().withServers(serverIdList);DeleteServersRequest deleteServersRequest = new DeleteServersRequest().withBody(deleteServersRequestBody);DeleteServersResponse deleteServersResponse = ecsClient.deleteServers(deleteServersRequest);活动取得了非常好的成绩,实现了短视频平台流量和用户增长的目标,但是这次老板居然没有表扬我,我还有些纳闷:难道老板已经习惯了我的优秀?过了几天,HR小姐姐递过来一张表让我签字,表上写着:“调薪申请表,调薪幅度30%”,老板已经签好了名字。 目前API Explorer平台(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read)已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《API Explorer新功能上线:支持一键分享调用参数,从此定位接口问题只要一键转发就行了,现在试用还有码豆拿哦》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l   报名地址l   奖项设置API入门学习赛·探险寻宝之旅l   报名地址l   奖项设置
  • [技术干货] 【DevCloud · 敏捷智库】两种你必须了解的常见敏捷估算方法
    作者:黄药师(黄隽)背景在某开发团队辅导的回顾会议上,团队成员对于优化估计具体方法上达成了一致意见。询问是否有什么具体的估计方法来做估算。问题分析回顾意见上大家对本次Sprint的效果做回顾,其中80%的成员对于本次Sprint的估算效果不满意,最终团队希望在下一个Sprint中,估算活动能有所改善。经了解,团队目前的估算方法很简单,基本上是架构师和团队中有丰富开发经验的成员一言堂。估算的速度也很快。对于有些有疑问的需求,开发成员也是保持沉默,草草认领了任务。团队迫切希望学习新的估算方法来优化目前的估算活动,因此分享几个具体的估算方法给团队实践,让他们自己选择适合、喜欢的估算方法是解决问题的关键。解决措施上篇《如何估算第三篇:利用故事点做估算》了解了什么是故事点后,我们来学习下具体的故事点估算的实践,感受一下估算。这里介绍最常用的两种估算方法:一个是计划扑克估算,另一个是敏捷估算2.0。下表内容展示了这两种估算方法在什么情形下选择。估算方法选择理由计划扑克估算ü  使不同技术水平和工作速度的人在估算结果上保持一致。ü  激发对工作项细节的思考,让所有假设都显露出来,充分了解工作项。ü  需要估算的用户故事量不是非常大(例如,500个就非常大,采用此方法会非常耗时)。敏捷估算2.0ü  通常耗费的时间会缩短。ü  需要估算的用户故事非常多。计划扑克估算在敏捷开发中,最典型的使用故事点做估算的方法是计划扑克(Planning Poker)。计划扑克由James Grenning在2002年首次提出。计划扑克集合了专家意见(Expert Opinion),类比(Analogy)以及分解(Disaggregation)这三种常用的估算方法,使团队通过一个愉快的过程快速而准确的得出估算结果。计划扑克的参与者是团队的所有成员。典型的敏捷团队规模推荐为7±2人,如规模比较大可以考虑拆分成为多个小团队各自独立进行估算。Product Owner也需要参加,但不参与估算。计划扑克开始时,每个参与估算的组员都会得到一副计划扑克,每一张牌上写有一个Fibonacci数字 (典型的计划扑克由12张牌组成:?,0, ½,1, 2, 3, 5, 8, 13, 20, 40, 100,∞,其中?代表信息不够无法估算,∞代表该用户故事太大)。开始对一个用户故事进行估算时,首先由Product Owner介绍这个用户故事的描述。过程中Product Owner回答组员任何关于该用户故事的问题。展开讨论时主持人(通常由Scrum Master担任)应注意控制时间与细节程度,只要团队觉得对用户故事信息已经了解到可以估算了,就应当中止讨论开始估算。所有问题都被澄清后,每一个组员从 扑克中挑选他/她觉得可以表达这个用户故事大小的一张牌,但是不亮牌,也不让别的组员知道自己的分数。所有人都准备好后,主持人发口令让所有人同时亮牌,并保证每个人的估算值都可以被其他人清楚的看到。经常会出现不同组员亮出的分值差距很大的现象。当出现有很多不同分值的时候,出分最高的人和出分最低的人需要向整个团队解释出分的依据。(主持人需要注意控制会议氛围,避免出现意见不一导致的攻击性言论。)所有的讨论应集中于出分者的想法是否值得团队其他成员进行更深入的思考。随后全组可以针对这些想法进行几分钟的自由讨论。讨论之后,团队进行下一轮的全组估算。一般来说,很多用户故事在进行第二轮估算的时候就能得到一个全组统一的分值,但是如果不能达到全组意见一致,那么就重复的进行下一轮直到得到统一结论。敏捷估算2.0(Agile Estimating 2.0)计划扑克是Scrum团队应用最广泛的敏捷估算方法,但是有时候计划扑克玩起来耗费比较多的时间,尤其是在十人左右的团队中。Ken Schwaber在他的书《Agile Project Management with Scrum》中指出,在进行迭代规划时,迭代计划环节应该控制为一个4小时的固定时间,但是从战术的角度看,如果一个会议持续4小时,大部分的参会者会有精疲力竭的感觉,并且很难保持持久的注意力。为了解决这个问题,Brad Swanson 和 Björn Jensen在上海Scrum Gathering (2010/4/19)上介绍了Agile Estimating 2.0技术。这个新的估算技术同样基于的专家意见,类比和分解,同样适用Fibonacci数列,但是它可以显著地缩短会议时间。它的估算过程大致分为主要四步,如下图所示:第一步:由Product Owner向团队介绍每一个用户故事,确保所有需求相关的问题都在做估算前得到解决。第二步:整个团队一起参与这个游戏。只有一个简单的游戏规则:一次仅由一个人将一个用户故事卡放在白板的合适位置上:规模小的故事在左,大的在右,一样大的竖向排成一列。整个团队轮流移动故事卡,直到整个团队都认同白板上的故事卡的排序为止。  第三步:团队将故事点(Story Point)分配给每个用户故事(列)。最简单的做法是使用投票来决定每个用户故事分配到哪一个Fibonacci数字。最后一步:使用不同颜色来区分影响估算大小的不同方面,并且重新考虑是否需要修改估算值。例如,我们使用红色来表示那些无法被自动化测试脚本覆盖的用户故事,因此那些用户故事需要一个更大的数字来容纳手工回归测试的代价。在国内一些企业多次实践Agile Estimating 2.0之后,反馈的结果还是令人兴奋。据称,团队对于估算的准确性更有信心了,并且只耗费原先的1/2时间。通过以上介绍,相信了解了如何使用用户故事来分析了解需求。在学习了估算的核心概念及故事点后,对于估算方法的实践也有了更深的体会。不论是计划扑克估算还是敏捷估算2.0都只是估算的一种实践,不是固定的唯一方法。只要理解估算的意义和核心概念,选择适合的方法就是没有问题的。另外补充一下,这里讲的估算偏重于用故事点估算,如果团队成员一致达成共识,用工时或理想人天效果更好,便可以尝试,给予团队试错的机会,说不定也有意想不到的收获。完成了估算后,我们需要对估算的内容进行管理。华为云DevCloud在用户故事或者Task中均有一个记录估算结果的属性,比如预计工时。所有工作项估算结果记录以后就可以以列表的方式进行查看。可以按处理人排序,查看每个成员认领的任务是否饱和。开发团队完成的工作内容可以时时更新实际数据,这样每轮迭代也可以就估算准确度进行统计和分析。看看估算结果和实际结果的差别,以便可以后续做估算调整和改善。参考附录Kenneth S. Rubin. Scrum精髓[M].北京:清华大学出版社。Mark C. Layton. 敏捷项目管理[M].北京:人民邮电出版社。估算系列文章【DevCloud · 敏捷智库】估算第一篇:利用用户故事了解需求【DevCloud · 敏捷智库】估算第二篇:利用核心概念解决估算常见问题【DevCloud · 敏捷智库】估算第三篇:利用故事点做估算
总条数:98 到第
上滑加载中