• [问题求助] 【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 · 敏捷智库】估算第三篇:利用故事点做估算
  • [技术干货] 低代码开发平台发展趋势:低代码——炒作还是趋势?
    在《人月神话》的开篇提到焦油坑,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。他们挣扎的越是猛烈,焦油纠缠的越紧,没有任何猛兽足够壮烈或具有足够的技巧,能够挣扎束缚,他们最后都沉到了坑底。大型软件系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统,不过,其中只有非常少数的项目满足了目标、时间进度和预算要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在焦油坑中。‍(人月神话中的焦油坑)软件开发时间(月)的增加,人员数量(人)的增加,软件开发成果与工作量投入(人*月)一定就会同比增加吗?显然不是,因为人员之间的沟通,分工协作,业务的灵活多变,软件工程师技能差异,新技术如5G、人工智能、大数据、AI、物联网等技术复杂度的增加,太多不确定性因素将导致软件开发成果与工作量(人*月)的投入不成线性增长。这些不确定因素越少,软件开发成果与工作量(人*月)的投入就会接近线性增长,不确定因素如何减少呢?在国外,1999年,前甲骨文最副总裁Marc Benioff创立Salesforce,提出“软件终结”口号,面向开发者研发了force.com应用开发平台,基于此快速开发CRM软件系统,开启了低代码应用开发的航程。Mendix低代码领域开发平台成立于2001年,2018年8月被西门子用6亿欧元收购。OutSystems低代码开发平台成立于2002年,2018年6月被KKR和高盛公司联手以3.6亿美元收购。另外,科技巨头们也都纷纷推出自己的低代码开发平台产品,微软在2015年发布的PowerApps、Google 2018年开始测试的App Maker等都是低代码产品。在国内,低代码开发平台在近几年也如雨后春笋般快速的发展起来,宜创科技、奥哲、轻流、简道云、APICloud如今都汇入了低代码赛道,巨头科技企业华为,阿里也都纷纷推出了自己的低代码开发平台:华为的AppCube,阿里的宜搭。高盛私人投资公司董事总经理 Christian Resch 表示:“我们认为低代码开发领域具有非常显著的市场潜力,大多数全球企业正在将其业务数字化,他们正在尽可能利用软件简化运营、建立新的分销渠道、改善客户体验,以及创造新的产品和服务。”根据Forrester的报告,去年该领域的规模估计为 38 亿美元,预计到 2021 年将增长到 152 亿美元。这些低代码平台的崛起,为什么会被投资者看好,被开发者青睐呢?(点击链接参与讨论>>)“低代码”顾名思义就是开发者写很少代码,通过低代码平台提供的界面、逻辑、对象等可视化编排工具来完成大量开发工作,降低文章开篇提到的软件开发中的不确定性因子,从而大幅度的提升开发效率,让企业能够降低开发成本和价格,降低技术和人员门槛,快速创新应用,实现快速试错,敏捷迭代。低代码平台主要面向如下两类人员提供快速开发应用的能力:1、业务人员,通过提供大量的界面模板、业务模板、流程模板和对象模型,业务人员根据实际业务需要通过积木式组装的方式,就可以快速拼装应用系统,从而实现了应用快速创新。2、软件开发工程师,通过页面编排工具和流程编排的能力,开发者可在平台上组件化、微服务化已有的大量服务,再编写少量代码就可以实现自己想要的应用管理系统。以华为低代码开发平台AppCube为例,其为开发者提供了大量的页面组件、流程编排工具BPM、模型编排工具、基线应用模板、AI服务、视频服务、GIS服务、城市信息模型BIM服务、IOT服务等上千种开放接口,开发者利用这些编排工具,调用已有的大量服务,通过编写少量代码就可以实现自己想要的应用管理系统。除了上述的能力外,低代码平台大多数是以SaaS(Software As A Service)方式向开发人员提供服务,开发人员只申请一个开发者账号,就能使用低代码平台提供的线上开发环境,沙箱测试环境,商用部署环境。开发人员开发完毕后在线编译和打包,通过低代码平台提供的自动流水线,可以将软件包从开发环境部署到测试环境和商业环境。开发人员Anywhere,Anytime就可以开发自己的应用,测试自己的应用,发布自己的应用,所见即所得。但是也要看到,做低代码不是直接去造房子,而是做一套能反复造各类房子的引擎和系统,对平台技术的要求很高,国外的低代码玩家都经历了多年的发展,才走出先平后陡的增长曲线。而在国内,我们还有一段路要走,随着技术的不断发展提升以及各行业数字化转型对软件诉求的增强,低代码开发平台凭借其降低开发工作门槛,缓解成本、人才诉求等优势,减少软件开发的不确定性,使开发工作量的投入与软件有效开发结果向线性靠拢,大幅提升软件开发效率,必定也会走上蓬勃发展之路。那么到底当前各低代码开发平台发展的现状,各厂家的优势在哪里,我们下次再盘。作者:董鑫武
  • [技术干货] 华为云关系型数据库RDS有哪些优势?
    华为云关系型数据库RDS具有低成本、高性能、高安全性、高可靠性的优势。下面我来给大家详细解释一番……低成本即开即用您可以通过华为云官网实时生成目标实例,华为云关系型数据库服务配合弹性云服务器一起使用,通过内网连接华为云关系型数据库可以有效地降低应用响应时间、节省公网流量费用。弹性扩容可以根据您的业务情况弹性伸缩所需的资源,按需开支,量身定做。配合云监控(Cloud Eye)监测数据库压力和数据存储量的变化,您可以灵活调整实例规格。完全兼容您无需再次学习,华为云关系型数据库各引擎的操作方法与原生数据库引擎的完全相同。华为云关系型数据库还兼容现有的程序和工具。使用数据复制服务(Data Replication Service,简称DRS),可用极低成本将数据迁移到华为云关系型数据库,享受华为云数据库为您带来的超值服务。运维便捷RDS的日常维护和管理,包括但不限于软硬件故障处理、数据库补丁更新等工作,保障华为云关系型数据库运转正常。提供专业数据库管理平台,重启、重置密码、参数修改、查看错误日志和慢查询日志、恢复数据等一键式功能。提供CPU利用率、IOPS、连接数、磁盘空间等实例信息实时监控及报警,让您随时随地了解实例动态。高性能性能优化华为云多年的数据库研发、搭建和维护经验,结合数据库云化改造技术,大幅优化传统数据库,为您打造更高可用、更高可靠、更高安全、更高性能、即开即用、便捷运维、弹性伸缩的华为云数据库服务。优质的硬件基础华为云关系型数据库使用的是华为经过多年的研究、创新和开发,通过多重考验的服务器硬件,为用户带来稳定的、高性能数据库服务。SQL优化方案华为云关系型数据库提供慢SQL检测,用户可以根据华为云关系型数据库服务提出的优化建议进行代码优化。高端硬件投入关系型数据库使用的所有服务器硬件都经过多方评测,保证在性能和稳定性上都遥遥领先。高速访问关系型数据库可以配合同一地域的弹性云服务器一起使用,通过内网通信,缩短应用响应时间,同时节省公网流量费用。高安全性网络隔离通过虚拟私有云(Virtual Private Cloud,简称VPC)和网络安全组实现网络隔离。虚拟私有云允许租户通过配置虚拟私有云入站IP范围,来控制连接数据库的IP地址段。华为云关系型数据库实例运行在租户独立的虚拟私有云内,可提升华为云关系型数据库实例的安全性。您可以综合运用子网和安全组的配置,来完成华为云关系型数据库实例的隔离。访问控制通过主/子帐号和安全组实现访问控制。创建华为云关系型数据库实例时,华为云关系型数据库服务会为租户同步创建一个数据库主帐户,根据需要创建数据库实例和数据库子帐户,将数据库对象赋予数据库子帐户,从而达到权限分离的目的。可以通过虚拟私有云对华为云关系型数据库实例所在的安全组入站、出站规则进行限制,从而控制可以连接数据库的网络范围。传输加密通过TLS加密、SSL加密实现传输加密。使用从服务控制台上下载的CA根证书,并在连接数据库时提供该证书,对数据库服务端进行认证并达到加密传输的目的。存储加密通过静态加密、表空间加密对数据进行加密。华为云关系型数据库服务支持对存储到数据库中的数据加密后存储,加密密钥由数据加密服务的KMS进行管理。数据删除删除华为云关系型数据库实例时,存储在数据库实例中的数据都会被删除,任何人都无法查看及恢复数据。安全删除不仅包括数据库实例所挂载的磁盘,也包括备份数据的存储空间(通常为廉价的对象存储系统)。防DDoS攻击当用户使用外网连接和访问华为云关系型数据库实例时,可能会遭受DDoS攻击。当华为云关系型数据库安全体系认为用户实例正在遭受DDoS攻击时,会首先启动流量清洗的功能,如果流量清洗无法抵御攻击或者攻击达到黑洞阈值时,将会进行黑洞处理,保证华为云关系型数据库整体服务的可用性。安全防护华为云关系型数据库处于多层防火墙的保护之下,可以有力地抗击各种恶意攻击,保证数据安全,防御DDoS攻击、防SQL注入等。建议用户通过内网访问华为云关系型数据库实例,可使华为云关系型数据库实例免受DDoS攻击风险。高可靠性双机热备华为云关系型数据库服务采用热备架构,故障秒级自动切换。数据备份每天自动备份数据,上传到对象存储服务(Object Storage Service,简称OBS)。备份文件保留732天,支持一键式恢复。用户可以设置自动备份的周期,还可以根据自身业务特点随时发起备份,选择备份周期、修改备份策略。数据恢复支持按备份集和指定时间点的恢复。在大多数场景下,用户可以将732天内任意一个时间点的数据恢复到华为云关系型数据库新实例或已有实例上,数据验证无误后即可将数据迁回华为云关系型数据库主实例,完成数据回溯。