• 关于

    add命令详细介绍

    的搜索结果

问题

MaxCompute快速入门:编写MapReduce

本文将为您介绍安装好 MaxCompute 客户端后,如何快速运行 MapReduce WordCount 示例程序。如果您使用 Maven,可以从 Maven 库 中搜索 odps-sdk-mapred 获取...
行者武松 2019-12-01 22:01:41 1185 浏览量 回答数 0

回答

概述 本文主要介绍在不同操作系统中检查TCP 80端口是否正常工作的方法。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 如果实例无法对外提供HTTP服务,可以按以下思路检查Web服务相关的接口(默认为TCP 80)是否正常工作。 在ECS管理控制台,确认安全组已经放行该端口。 远程连接ECS实例,确认服务已经开启。 确认端口正常被监听。如没有,请修改监听地址。 确认实例防火墙已经放行服务。 若仍无法解决,请提交工单咨询。 本文分别介绍在以下不同操作系统中检查TCP 80端口是否正常工作的方法。 Windows Server 2012 Windows Server 2008 CentOS 7.3 Ubuntu 16.04 以下是在Windows Server 2012系统中检查TCP 80端口是否正常工作的方法。 Windows Server 2012 注:在Windows 2012系统的Windows实例中安装IIS服务为例。 登录ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则。 网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级 VPC 网络 不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 10.0.0.0/8 1 经典网络 公网 参考远程连接 Windows 实例,登录Windows实例。 以下是查看IIS服务是否已经开启的操作步骤。 在 服务器管理器 窗口,单击 工具 > Internet Information Services (IIS) 管理器。如果找不到这个选项,则说明没有成功安装IIS服务,需要重新安装IIS服务。 Windows2012_确认已安装IIS服务 在 Internet Information Services (IIS) 管理器 窗口中确认以下信息。 在 连接 导航栏里,右键单击实例ID,如果 启动 处于灰色状态,表示IIS服务已经开启。 单击 网站,在右边列表页查看您安装的网站的状态。如果网站 状态 为 已停止,则单击网站,在右侧 操作 栏的 管理站点 部分,单击 启动,启动网站。 Windows2012_确认站点已启动 以下是查看端口在实例中是否正常被监听的操作步骤。 启动 命令提示符。 执行如下命令。 netstat -ano | findstr :80 如果返回TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。 以下是查看实例里防火墙是否已经放行Web服务的操作步骤。 单击 控制面板 > 系统与安全 > Windows 防火墙。 根据防火墙状态,执行不同操作。 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单咨询。 如果防火墙处于开启状态,则执行以下操作。 单击 高级设置。 在弹出窗口的左侧导航栏中,单击 入站规则。 选择 万维网服务 (HTTP 流入量),如果处于禁用状态,在 操作 栏里,单击 启用规则。 Windows2012_防火墙里启用HTTP入站规则 完成上述检查,如果仍不能访问实例,请提交工单咨询。 以下是在Windows Server 2008系统中检查TCP 80端口是否正常工作的方法。 Windows Server 2008 注:以在Windows 2008系统的Windows实例中安装IIS服务为例。 登录ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则。 网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级 VPC 网络 不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 10.0.0.0/8 1 经典网络 公网 参考远程连接 Windows 实例,登录Windows实例。 以下是查看IIS服务是否已经开启的操作步骤。 在 服务器管理器 窗口,选择 角色 > Web 服务器。如果找不到这个选项,则说明没有成功安装IIS服务。 在 Web 服务器 窗口,确认 系统服务 部分显示为 全部正在运行。如果不是这个状态,请启动所有服务。 Windows2008_确认已安装IIS服务 以下是查看端口在实例中是否正常被监听的操作步骤。 启动 命令提示符。 执行如下命令。 netstat -ano | findstr :80 如果返回TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。 以下是查看实例里防火墙是否已经放行Web服务的操作步骤。 单击 控制面板 > 系统与安全 > 检查防火墙状态。 根据防火墙状态,执行不同操作。 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单咨询。 如果防火墙处于开启状态,则执行以下操作。 单击 高级设置。 在弹出窗口的左侧导航栏中,单击 入站规则。 选择 万维网服务 (HTTP 流入量),如果处于禁用状态,在 操作 栏里,单击 启用规则。 Windows2008_防火墙里启用HTTP入站规则 完成上述检查,如果仍不能访问实例,请提交工单咨询。 以下是在CentOS 7.3系统中检查TCP 80端口是否正常工作的方法。 CentOS 7.3 注:以在CentOS 7.3系统的Linux实例中安装Nginx服务为例。 登录ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则。 网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级 VPC 网络 不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 10.0.0.0/8 1 经典网络 公网 参考远程连接 Linux实例,登录Linux实例。 执行如下运行命令。 systemctl status nginx 如果系统返回类似如下,则说明Nginx已经启动。如果未开启,则执行systemctl start nginx命令。 CentOS7.3_nginx已启动 执行如下命令,查看端口在实例中是否正常被监听。 netstat -an | grep 80 如果返回tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。 CentOS 7之后的版本默认安装Firewalld。如果已经启用firewalld.service,则需要放行 TCP 80 端口。执行如下命令。若返回结果为success,则表示已经放行TCP 80端口。 firewall-cmd --add-port=80/tcp --permanent 使用CentOS 7之前的版本并开启默认防火墙iptables时,应注意iptables默认不拦截访问,如果配置了iptables规则,需要执行以下步骤。 查看规则列表:执行命令 iptables --line -vnL。根据返回结果执行不同操作。 如果设置了默认拦截,添加规则放行TCP 80端口。执行命令iptables -A INPUT -p tcp --dport 80 -j ACCEPT。 如果设置了DROP TCP 80端口,替换规则放行 80 端口。执行命令iptables -R INPUT [80端口对应的规则编号] -p tcp --dport 80 -j ACCEPT。 保存上述规则,执行命令 service iptables save。 完成上述检查,如果仍不能访问实例,请提交工单咨询。 以下是在Ubuntu 16.04系统中检查TCP 80端口是否正常工作的方法。 Ubuntu 16.04 注:以在Ubuntu 16.04系统的Linux实例中安装Apache2 Web服务器为例。 登录ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则。 网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级 VPC 网络 不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 10.0.0.0/8 1 经典网络 公网 参考远程连接 Linux实例,登录Linux实例。 查看Apache2 Web服务器是否已经开启。执行命令service apache2 status。如果返回以下结果,说明 Apache2 Web服务器已经启动。如果未开启,执行命令 service apache2 start。 Ubuntu 16.04_Apache2 Web 服务器正常工作 执行如下命令,查看端口在实例中是否正常被监听。 netstat -an | grep 80 如果返回tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。 如果您已经启用UFW(Ubuntu 预装防火墙),需要放行TCP 80端口或HTTP服务。执行命令ufw allow 80/tcp或ufw allow http。返回结果为Rule added 表示已经放行TCP 80端口或HTTP服务。 注:如果实例中已经安装Firewalld并且已经启用firewalld.service,若需要放行 TCP 80 端口,执行命令firewall-cmd --add-port=80/tcp --permanent。返回结果为success即表示已经放行TCP 80端口。 完成上述检查,如果仍不能访问实例,请提交工单咨询。
1934890530796658 2020-03-25 23:19:54 0 浏览量 回答数 0

问题

归档存储的命令行工具

归档存储 提供了便于用户日常操作的命令行工具 oascmd.py,该文档将通过一些简单的操作帮助用户快速熟悉 归档存储 的使用 环境要求 oascmd.py 需要 Python 2.7.x 版本支持,目前...
云栖大讲堂 2019-12-01 21:07:22 1445 浏览量 回答数 0

万券齐发助力企业上云,爆款产品低至2.2折起!

限量神券最高减1000,抢完即止!云服务器ECS新用户首购低至0.95折!

问题

Git 改变了分布式 Web 开发规则:报错

版本控制系统是大部分开发项目的核心组件,无论是开发应用程序、网站还是操作系统。大部分项目都涉及多个开发人员,往往位于不同的位置。分布式版本控制系统并不是新事物,但是 Git 版本控制系统为开发人员之...
kun坤 2020-06-08 11:09:24 3 浏览量 回答数 1

回答

在Linux服务器之间建立信任关系,是很多线上服务系统的基础性工作,这样能便于程序在多台服务器之间自动传输数据,或者方便用户不输入密码就可以在不同的主机间完成登录或者各种操作。 网上关于建立Linux信任关系(ssh trust)的中文文章有一些,但是写得都不太详细,这里汇总了方方面面的资料,把多机信任关系建立方法说说清楚(文/陈运文) 一 建立信任关系的基本操作 基本场景是想从一台Server服务器直接登录另一台,或者将Server服务器的数据不需密码验证直接拷贝至Client服务器,以下我们简称Server服务器为S(待发送的数据文件在这台服务器上),Client服务为C,信任关系的最简单操作方法如下: 1 在S服务器上,进入当前用户根目录下的隐藏目录 .ssh,命令如下: cd ~/.ssh (注:目录名前的点好”.”表示该文件夹是一个特殊的隐藏文件夹,ls命令下默认是看不到的,通过 ls –a 命令观察到) 2 生成S服务器的私钥和公钥: ssh-keygen -t rsa (注:rsa是一种加密算法的名称,此处也可以使用dsa,关于rsa和dsa算法的介绍可见本文后半章节) ssh-keygen生成密钥用于信任关系生成 -此时会显示Generating public/private key pair. 并提示生成的公钥私钥文件的存放路径和文件名,默认是放在 /home/username/.ssh/id_rsa 这样的文件里的,通常不用改,回车就可以 然后Enter passphrase(empty for no passphrase): 通常直接回车,默认不需要口令 Enter same passphrase again: 也直接回车 然后会显式密钥fingerprint生成好的提示,并给出一个RSA加密协议的方框图形。此时在.ssh目录下ls,就可以看到生成好的私钥文件id_rsa和公钥文件id_rsa.pub了 以下是各种补充说明: 注1:如果此时提示 id_rsaalready exists,Overwrite(y/n) 则说明之前已经有人建好了密钥,此时选择n 忽略本次操作就行,可以直接用之前生成好的文件;当然选y覆盖一下也无妨 注2:公钥用于加密,它是向所有人公开的(pub是公开的单词public的缩写);私钥用于解密,只有密文的接收者持有。 3 在Server服务器上加载私钥文件 仍然在.ssh目录下,执行命令: ssh-add id_rsa 系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了 下面有几个异常情况处理: –如果系统提示:could not open a connection to your authentication agent 则需要执行一下命令: ssh-agent bash 然后再执行上述的ssh-add id_rsa命令 –如果系统提示id_rsa: No such file or directory 这是系统无法找到私钥文件id_rsa,需要看看当前路径是不是不在.ssh目录,或者私钥文件改了名字,例如如果建立的时候改成 aa_rsa,则这边命令中也需要相应改一下 -如果系统提示 command not found,那肯定是你命令敲错字符了J -提示Agent admitted failure to sign using the key,私钥没有加载成功,重试ssh-add -注意id_rsa/id_rsa.pub文件不要删除,存放在.ssh目录下 4 把公钥拷贝至Client服务器上 很简单,例如 scp id_rsa.pub user@10.11.xx.xx:~ 5 ssh登录到Client服务器上,然后在Client服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,没有的话可以建立,没有关系) cat id_rsa.pub >> ~/.ssh/authorized_keys 以下是各种补充说明,遇到问题时可以参考: 注1:这里不推荐用文件覆盖的方式,有些教程直接scp id_rsa.pub 到Client服务器的authorized_keys文件,会导致之前建的其他信任关系的数据被破坏,追加到末尾是更稳妥的方式; 注2: cat 完以后,Client服务器上刚才拷贝过来的id_rsa.pub文件就不需要了,可以删除或移动到其它地方) 注3:ssh-keygen 命令通过-b参数可以指定生成的密钥文件的长度,如果不指定则默认为1024,如果ssh-keygen –b 4096(最长4096),则加密程度提高,但是生成和验证时间会增加。对一般的应用来说,默认长度已经足够胜任了。如果是rsa加密方式,那么最短长度为768 byte 注4:authorized_keys文件的权限问题。如果按上述步骤建立关系后,仍然要验证密码,并且没有其他报错,那么需要检查一下authorized_keys文件的权限,需要作下修改: chmod g-w authorized_keys OK,现在试试在Server端拷贝一个文件到Client服务器,应该无需交互直接就传过去了。 但是此时从Client传数据到Server服务器,仍然是需要密码验证的。如果需要两台服务器间能直接互传数据,则反过来按上述步骤操作一下就可以了 二 删除服务器间信任关系的方法 如果想取消两台服务器之间的信任关系,直接删除公钥或私钥是没有用的,需要在Client服务器上,打开 ~/.ssh/ authorized_keys 文件,找到对应的服务器的公钥字段并删除 每个段落的开头是ssh-rsa字样,段尾是Server服务器的帐号和ip(如下图红框),需要细心的找一下后删除整段 密钥文件内容和删除Linux服务器间信任关系的方法 三 各种可能遇到的情况和处理方法 –提示 port 22: Connection refused 可能的原因:没有正确安装最新的openssh-server,安装方法如下 sudo apt-get install openssh-server 不支持apt安装的,可以手工下载: wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz –关于目录和文件的权限设置 .ssh目录的权限必须是700,同时本机的私钥的权限必须设置成600: chmod 600 id_rsa 否则ssh服务器会拒绝登录 四 关于RSA和DSA加密算法 在ssh-keygen命令中,-t参数后指定的是加密算法,可以选择rsa或者dsa RSA 取名自算法的三位提出者Ron Rivest, Adi Shamir, and Leonard Adleman的姓名首字母,作为一种非对称加密算法,RSA的安全性基于及其困难的大整数分解(两个素数的乘积的还原问题)。关于RSA算法原理的文章很多,感兴趣的朋友可以找来读一读。 DSA = Digital Signature Algorithm,基于有限域离散对数难题,是Schnorr和ElGamal签名算法的变种,一般用于数字签名和认证,被美国标准局(NIST)采纳为数字签名标准DSS(Digital Signature Standard),based on discrete logarithms computation. DES = Digital Encryption Standard. Obsolete standard. RSA算法好在网络容易实现密钥管理,便进行数字签名,算法复杂,加/解速度慢,采用非对称加密。在实际用于信任关系建立中,这两种方法的差异很微小,可以挑选其一使用。 五 关于SSH协议的介绍 SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议。SSH的主要目的是用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密。防止由于网络监听而出现的密码泄漏,对系统构成威胁。 ssh协议目前有SSH1和SSH2,SSH2协议兼容SSH1。目前实现SSH1和SSH2协议的主要软件有OpenSSH和SSH Communications Security Corporation 公司的SSH Communications 软件。前者是OpenBSD组织开发的一款免费的SSH软件,后者是商业软件,因此在linux、FreeBSD、OpenBSD、NetBSD等免费类UNIX系统种,通畅都使用OpenSSH作为SSH协议的实现软件。因此,本文重点介绍一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陆公钥/私钥的格式是不同的,如果想用SSH Communications产生的私钥/公钥对来登入到使用OpenSSH的linux系统需要对公钥/私钥进行格式转换。 第一次登陆后,ssh就会把登陆的ssh指纹存放在用户home目录的.ssh目录的know_hosts文件中,如果远程系统重装过系统,ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆。请注意.ssh目录是开头是”.”的隐藏目录,需要ls –a参数才能看到。而且这个目录的权限必须是700,并且用户的home目录也不能给其他用户写权限,否则ssh服务器会拒绝登陆。如果发生不能登陆的问题,请察看服务器上的日志文件/var/log/secure。通常能很快找到不能登陆的原因。 六 关于ssh_config和sshd_config文件配置的说明 /etc/ssh/ssh_config: Host * 选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no “ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no “ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 RhostsAuthentication no “RhostsAuthentication”设置是否使用基于rhosts的安全验证。 RhostsRSAAuthentication no “RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。 RSAAuthentication yes “RSAAuthentication”设置是否使用RSA算法进行安全验证。 PasswordAuthentication yes “PasswordAuthentication”设置是否使用口令验证。 FallBackToRsh no “FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。 UseRsh no “UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no “BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes “CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 StrictHostKeyChecking no “StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity “IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。 Port 22 “Port”设置连接到远程主机的端口。 Cipher blowfish “Cipher”设置加密用的密码。 EscapeChar ~ “EscapeChar”设置escape字符。 /etc/ssh/sshd_config: Port 22 “Port”设置sshd监听的端口号。 ListenAddress 192.168.1.1 “ListenAddress”设置sshd服务器绑定的IP地址。 HostKey /etc/ssh/ssh_host_key “HostKey”设置包含计算机私人密匙的文件。 ServerKeyBits 1024 “ServerKeyBits”定义服务器密匙的位数。 LoginGraceTime 600 “LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 KeyRegenerationInterval 3600 “KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。 PermitRootLogin no “PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。 IgnoreRhosts yes “IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。 IgnoreUserKnownHosts yes “IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts” StrictModes yes “StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 X11Forwarding no “X11Forwarding”设置是否允许X11转发。 PrintMotd yes “PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。 SyslogFacility AUTH “SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。 LogLevel INFO “LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。 RhostsAuthentication no “RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。 RhostsRSAAuthentication no “RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。 RSAAuthentication yes “RSAAuthentication”设置是否允许只有RSA安全验证。 PasswordAuthentication yes “PasswordAuthentication”设置是否允许口令验证。 PermitEmptyPasswords no “PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。 AllowUsers admin “AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。
boxti 2019-12-02 01:27:05 0 浏览量 回答数 0

回答

概述 本文介绍了如何测试ECS实例的网络性能。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 关于如何进行网络性能测试的具体内容如下。 准备环境 需要准备如下设备。 注:所有ECS实例必须在同一个安全组内。 1台测试机:被压力测试网络PPS的ECS实例,可作为Netperf或iperf3测试中的client端或server端。具体规格如下。 注:假设测试机IP地址为:172.0.0.1。 镜像:centos_7_2_64_40G_base_20170222.vhd 规格:ecs.se1.14xlarge 数量:1 虚拟机名称:i-test-vm(以现场实际情况进行命名) 8台陪练机:主体为ECS实例,作为Netperf测试或iperf3测试中的client端或server端,与测试机之间建立控制连接,传递测试配置相关的信息,以及测试结果。具体规格如下。 注:假设8台陪练机的IP地址为:172.0.0.2 − 172.0.0.9。 镜像:centos_7_2_64_40G_base_20170222.vhd 规格:ecs.se1.14xlarge 数量:8 虚拟机名称:i-partnerVm-{1-8} 安装Netperf 按以下步骤在测试机和陪练机上安装Netperf。 执行如下命令,下载Netperf。 wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz 依次执行如下命令,安装Netperf。 tar -zxvf netperf-2.5.0.tar.gz cd netperf-netperf-2.5.0 ./configure && make && make install && cd .. 执行netperf -h和netserver -h命令,确认安装成功。 安装iperf3 按以下步骤在测试机和陪练机上安装iperf3工具。 依次执行如下命令,下载iperf3。 yum install git -y git clone https://github.com/esnet/iperf 依次执行如下命令,安装iperf3。 cd iperf ./configure && make && make install && cd .. cd src ADD_PATH="$(pwd)" PATH="${APP_PATH}:${PATH}" export PATH 执行iperf3 -h命令,确认安装成功。 开启多队列功能 在测试机内部依次执行如下命令,开启多队列功能。 注:以开启eth0网卡为例。 ethtool -L eth0 combined 4 echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus 使用Netperf工具测试网络性能 Netperf工具参数介绍和测试相关内容如下。 Netperf安装完成后会生成2个工具:netserver和netperf。以下为2个工具的主要参数。 工具名称 工具说明 主要参数 参数说明 netserver 接收端工具(server 端) -p 端口号 netperf 发送端工具(client 端) -H 指定 ECS 实例的 IP 地址。 -p 指定 ECS 实例的端口。 -l 指定运行时间。 -t 指定发包协议类型:TCP_STREAM 或 UDP_STREAM。建议使用 UDP_STREAM。 -m 指定数据包大小。 测试 PPS 时,该值为 1。 测试 BPS(bit per second)时,该值为 1400。 以下是测试收方向的具体步骤。 依次执行如下命令,在测试机内启动netserver进程。 netserver -p 11256 netserver -p 11257 netserver -p 11258 netserver -p 11259 netserver -p 11260 netserver -p 11261 netserver -p 11262 netserver -p 11263 注:-p为指定不同端口。 执行如下命令,在陪练机内启动netperf进程,分别指定到测试机的不同netserver端口。 netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台 netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台 netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台 netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台 netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台 netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台 netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台 netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台 如果需要测试BPS,则第二步命令应该改为如下。 netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台 netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台 netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台 netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台 netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台 netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台 netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台 netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台 以下是测试发方向的具体步骤。 执行如下命令,在所有陪练机内启动1个netserver进程。 netserver -p 11256 执行如下命令,在测试机内启动8个netperf进程,-H指定为不同 IP 地址。 netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三台 netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四台 netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五台 netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六台 netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七台 netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八台 如果需要测试BPS,则上一步命令应该改为如下。 netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第二台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第三台 netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第四台 netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第五台 netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第六台 netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第七台 netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第八台 最终发送端每个netperf进程会输出测试结果,第一条数据行为发包信息概览如下。 Socket Message Elapsed Messages Size Size Time Okay Errors Throughput bytes bytes secs # # 10^6bits/sec 124928 1 10.00 4532554 0 3.63 212992 10.00 1099999 0.88 注: 输出结果中各字段含义解释如下表所示。 字段数据 含义 124928 缓冲区大小 1 数据包大小(Byte) 10.00 测试时间(s) 4532554 数据包成功数 0 失败数 3.63 网络吞吐量(Mbit/s) 通常我们建议在server端执行sar命令来统计实际收到的包并作为实际结果,具体命令为sar -n DEV 1 320。 使用iperf3工具测试网络性能 iperf3工具参数介绍和测试相关内容如下。 以下为iperf3工具的主要参数。 工具名称 工具说明 主要参数 参数说明 iperf3 收发一体 -s 表示作为server端接收包。 -i 间隔多久输出信息流量信息,默认单位为秒。 -p 指定服务的监听端口。 -u 表示采用UDP协议发送报文,不带该参数表示采用TCP协议 -l 表示包大小,默认单位为 Byte。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。 -b 设定流量带宽,可选单位包括:k/m/g。 -t 流量的持续时间,默认单位为秒。 -A CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。 以下是测试收方向的具体步骤。 在测试机中以server模式启动iperf3进程。 iperf3 -s -i 1 -p 16001 iperf3 -s -i 1 -p 16002 iperf3 -s -i 1 -p 16003 iperf3 -s -i 1 -p 16004 iperf3 -s -i 1 -p 16005 iperf3 -s -i 1 -p 16006 iperf3 -s -i 1 -p 16007 iperf3 -s -i 1 -p 16008 在陪练机中以client模式启动iperf3进程,分别指定到测试机的不同端口。 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16002 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16003 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16004 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16005 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16006 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16007 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16008 -A 8 以下是测试发方向的具体步骤。 执行如下命令,在每个陪练机中以server模式启动1个iperf3进程。 iperf3 -s -i 1 -p 16001 在测试机中以client模式启动8个iperf3进程。 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.2 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.3 -i 1 -p 16001 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.4 -i 1 -p 16001 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.5 -i 1 -p 16001 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.6 -i 1 -p 16001 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.7 -i 1 -p 16001 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.8 -i 1 -p 16001 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.9 -i 1 -p 16001 -A 8 注:-c指定为各个陪练机的IP地址。 最终发送端每个iperf3进程会输出测试结果,第一条数据行为发包信息概览如下。 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%) [ 4] Sent 30352 datagrams 注: 输出结果中各字段含义解释如下表所示。 字段数据 含义 237 传送的总数据量 199 带宽大小 0.027 波动率 500/30352 丢包/总报文数 1.6% 丢包率 通常我们建议在server端执行sar命令来统计实际收到的包并作为实际结果,具体命令为sar -n DEV 1 320。 适用于 云服务器 ECS
1934890530796658 2020-03-26 09:52:48 0 浏览量 回答数 0

问题

云数据库Memcache版日常诊断

问题描述: 云数据库Memcache版日常诊断 解决过程: 一、连接问题 1、让用户在ecs上telnet 云Memcache的端口,排查是否是网络或者白名单问题 2、使用杜康查看详细信...
阿里云柳璃 2019-12-01 22:06:29 8107 浏览量 回答数 0

回答

本文介绍了如何在 Knative 上实现 GitHub 事件处理。 前提条件 您已经成功部署 Serving 组件、Eventing组件及add-on组件,参见部署组件。 您已经在Knative上自定义域名并完成域名配置。参见Knative 自定义域名。 创建服务 登录容器服务管理控制台。 在 Kubernetes 菜单下,选择Knative > 服务管理,进入服务管理页面。 单击右上角的创建服务。 设置集群名称、命名空间、服务名称,选择所要使用的镜像和镜像版本等配置信息。 设置服务信息 说明 本示例中,界面参数取值参考如下: 服务名称:自定义该服务的名称。本例为github-event-display。 镜像名称:您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。您还可以填写私有 registry。填写的格式为domainname/namespace/imagename:tag。本例中为registry.cn-shanghai.aliyuncs.com/knative-release/eventing-sources-event_display 。 镜像版本:您可以单击选择镜像版本选择镜像的版本。若不指定,默认为 latest。本例中为bf45b3eb1e7fc4cb63d6a5a6416cf696295484a7662e0cf9ccdf5c080542c21d。 界面其他参数详细信息请参见参数说明。 单击创建。 创建 GitHub Token 创建 Personal access token。 Personal access token用于访问 GitHub API。请参见Personal access tokens。 下面是设置一个 GitHubSource Sample token 的示例。创建github token 说明 需要开启 repo:public_repo 和 admin:repo_hook,以便通过公共仓库触发 Event 事件,并为这些公共仓库创建 webhooks 。 您可以自定义token 的名称。 通过 kubectl 连接 Kubernetes 集群。 secretToken内容可以通过下述方式生成随机字符串。 head -c 8 /dev/urandom | base64 更新githubsecret.yaml。 如果生成的是 personal_access_token_value token,则需要设置 secretToken 。示例如下: apiVersion: v1 kind: Secret metadata: name: githubsecret type: Opaque stringData: accessToken: personal_access_token_value secretToken: asdfasfdsaf 执行如下命令,创建 GitHub Token。 kubectl --namespace default apply githubsecret.yaml 创建 GitHub 事件源 您可以创建 GitHubSource 用于接收 GitHub 产生的事件。 通过 kubectl 连接 Kubernetes 集群。 创建并拷贝以下内容到github-source.yaml文件中。 apiVersion: sources.eventing.knative.dev/v1alpha1 kind: GitHubSource metadata: name: githubsourcesample spec: eventTypes: - pull_request ownerAndRepository: / accessToken: secretKeyRef: name: githubsecret key: accessToken secretToken: secretKeyRef: name: githubsecret key: secretToken sink: apiVersion: serving.knative.dev/v1alpha1 kind: Service name: github-event-display 执行以下命令,在命名空间default中创建 GitHubSource。 kubectl --namespace default apply github-source.yaml 执行结果 在 GitHub repository 中 Settings > Webhooks,查看会有一个验证成功的 Hook URL。 说明 域名需要备案,否则无法进行访问。 在 GitHub repository 中执行以下命令,创建一个 pull request,此时会产生Event事件。 kubectl --namespace default get pods kubectl --namespace default logs github-event-display-XXXX user-container 在 Knative Eventing 可以看到类似下面的事件结果。 2018/11/08 18:25:34 Message Dumper received a message: POST / HTTP/1.1 Host: github-event-display.knative-demo.svc.cluster.local Accept-Encoding: gzip Ce-Cloudeventsversion: 0.1 Ce-Eventid: a8d4cf20-e383-11e8-8069-46e3c8ad2b4d Ce-Eventtime: 2018-11-08T18:25:32.819548012Z Ce-Eventtype: dev.knative.source.github.pull_request Ce-Source: https://github.com/someuser/somerepo/pull/1 Content-Length: 21060 Content-Type: application/json User-Agent: Go-http-client/1.1 X-B3-Parentspanid: b2e514c3dbe94c03 X-B3-Sampled: 1 X-B3-Spanid: c85e346d89c8be4e X-B3-Traceid: abf6292d458fb8e7 X-Envoy-Expected-Rq-Timeout-Ms: 60000 X-Envoy-Internal: true X-Forwarded-For: 127.0.0.1, 127.0.0.1 X-Forwarded-Proto: http X-Request-Id: 8a2201af-5075-9447-b593-ec3a243aff52 {"action":"opened","number":1,"pull_request": ...}
1934890530796658 2020-03-31 20:14:10 0 浏览量 回答数 0

问题

转:阿里云安装OMV

目前国内出现了很多liunx vps,这些vps 大都有各自的收费和免费软件,功能都有点不敬人意,如果你上一个liunx 爱用命令的达人你可以不用往下看了,如果你是一个小白,那么我建议...
轻松一试 2019-12-01 22:06:28 9731 浏览量 回答数 0

回答

详细信息 过期时间控制支持三个维度,优先级依次为 控制台设置 > 源站Header设置 > Cache的默认策略设置。 关于控制台设置的详细说明,请参见设置缓存过期时间。 关于源站Header设置的详细说明,请参见WebServer缓存策略设置。 Cache的默认策略是在用户既没有在控制台设置过期时间,也没有在源站设置过期时间的情况下,会执行一个默认的全局策略,既保证加速效果,又避免因为动态的文件缓存导致的问题。关于Cache的默认策略设置的详细说明,请参见CDN节点默认缓存策略。 WebServer缓存策略设置 设置IIS缓存策略详细操作,请参见如何设置IIS缓存策略。 设置Nginx缓存策略详细操作,请参见如何设置Nginx缓存策略。 设置Apache缓存策略详细操作,请参见如何设置Apache缓存策略。 如何设置IIS缓存策略 设置IIS缓存策略的操作步骤如下。 因为整体的站点只对.html、.jpg、.png、.gif、.apk等文件进行缓存,首先将整个站点设置成不缓存,具体操作如下。 打开IIS信息管理器,右键单击服务网站a.cc.com的属性,本文以a.cc.com服务网站为例。 单击 HTTP头,勾选 启用内容过期,选择 立即过期,单击 确定。 上述设置后,整个网站的内容都不会被CDN缓存,接着设置.html、.jpg、.png、.gif、.apk等文件类型的缓存策略。 不同扩展名的文件都单独放在一个特定的目录下面,且该目录没有其他扩展名的文件。针对这个扩展名所在的整个目录设置缓存的时间。具体操作如下。 打开IIS信息管理器。 展开网站a.cc.com的目录,选中需要设置缓存时间的目录,如所有jpg文件都存储在img这个目录下,右键单击该目录并选择属性,单击 HTTP头。 注:由于步骤1已经设置整个网站不缓存,所以此时HTTP头选项下的缓存设置和步骤1中的相同。 选择 此时间段后过期,设置具体的过期时间,单击 确定。 特定扩展名的文件不是统一放在唯一的目录,而是和其他扩展名文件混合放在一个目录下。以bin目录下的test.jpg为例,介绍缓存设置的操作步骤。 注:为了避免针对特定扩展名的文件进行逐个的配置,需要设置IIS支持通配符。 设置IIS支持通配符。 打开IIS信息管理器,右键单击服务网站a.cc.com的属性,选择主目录,单击 配置。 在弹出的对话框中,单击 映射,单击 插入。 在弹出的对话框中,选择C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll文件,单击 确定。 注:不勾选确认文件是否存在。 分别单击两个对话框中的 确定,完成IIS通配符的支持配置。 在bin目录下,选择test.jpg并右键单击,选择 属性。 单击 HTTP头。 选择 此时间段后过期,设置具体的过期时间,单击 确定。 设置bin目录下其他相同扩展名文件的缓存时间,此时需要修改IIS的配置文件。具体操作如下。 注:修改文件,需要在服务中关闭IIS admin Service。 用记事本程序打开IIS的配置文件,配置文件在C:\WINDOWS\system32\inetsrv\MetaBase.xml(IIS6的设置)目录下。 查找/bin/test.jpg,找到bin目录下test.jpg文件的缓存设置。 将test.jpg改为*.jpg并保存。 其他扩展名的文件缓存设置操作同上。 如何设置Nginx缓存策略 HTTP头处理模块(HTTP Headers)允许设置任意的HTTP头,您可以使用add_header和expires命令设置Nginx缓存策略。 指令 语法 默认值 使用字段 add_header add_header name value none http server location expires 注:这个指令控制是否在应答中标记一个过期时间以及如何标记。 expires [time|epoch|max|off] 说明 Time:控制Cache-Control的值,负数表示no-cache。 epoch:将Expires头设置为1 January, 1970 00:00:01 GMT。 max:将Expires头设置为31 December 2037 23:59:59 GMT,将Cache-Control最大化到10年。 off:将禁止修改头部中的Expires和Cache-Control字段。 expires off http server location 通过expires设置,示例如下。 设置PHP的文件类型过期时间,设置为1小时。 设置成功后,系统显示类似如下。 设置PHP的文件类型为no-cache,Cache服务器不缓存。 设置成功后,系统显示类似如下。 通过add_header设置,以动态的PHP文件设置为不缓存为例。 location ~ .*.php$ { if ($request_uri !~ ^/dynamicimg/) { add_header Cache-Control "no-cache"; add_header Pragma no-cache; } } 如何设置Apache缓存策略 您可以通过Apache的mod_expires和mod_headers两个模块设置Apache的缓存策略。 mod_expires模块 mod_expires模块允许通过配置文件控制HTTP的Expires和Cache-Control头内容,它的主要作用是自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要流量和增加访问速度的目的。 mod_expires是Apache众多模块中配置比较简单的一个,它一共包括三条指令。 ExpiresActive指令:打开或关闭产生Expires:和Cache-Control:头的功能。 ExpiresByType指令:指定MIME类型的文档(如text或html)的过期时间。 ExpiresDefault指令:默认所有文档的过期时间。 过期时间的写法如下。 "access plus 1 month" "access plus 4 weeks" "now plus 30 days" "modification plus 5 hours 3 minutes" A2592000 M604800 注: access、now和A这三种写法的意义相同,都是指过期时间从访问时开始计算。 modification和M的意义相同,指过期时间从被访问文件的最后修改时间开始计算。 本种写法只对静态文件起作用,对于由脚本生成的动态页面无效。配置实例如下。 ExpiresActive On(开启mod_expires功能) ExpiresDefault "access plus 6 months"(默认的过期时间是6个月) ExpiresByType image/* "access plus 10 years"(图片的文件类型缓存时间为10年) ExpiresByType text/* "access plus 10 years"(文本类型缓存时间为10年) ExpiresByType application/* "access plus 30 minutes"(application文件类型缓存30分钟) 验证结果如下,image/jpeg的缓存时间为315360000s(10年)。 如果将image/jpeg设置为不缓存,即将max-age设置为0s。 #ExpiresByType image/* "access plus 10 years" ExpiresByType image/* A0 系统显示类似如下。 mod_headers模块 # YEAR Header set Cache-Control "max-age=2592000" # WEEK Header set Cache-Control "max-age=604800″ # NEVER CACHE Header set Expires "Thu, 01 Dec 2003 16:00:00 GMT" Header set Cache-Control "no-store, no-cache, must-revalidate" Header set Pragma "no-cache" CDN节点默认缓存策略 如下为CDN节点的默认缓存策略。 提示: 因为网站开发及其相关技术人员更清楚自身网站的业务逻辑、静态和动态因素,所以建议您通过控制台根据文件类型和文件所在目录,设置缓存时间。详细说明,请参见设置缓存过期时间。 如果您已经配置了缓存策略,那么Cache的默认缓存策略不生效。 默认情况下,CDN节点将根据公式计算出默认的缓存时间。为了便于理解,此处将介绍默认缓存时间的计算公式和相关示例。 计算公式。该公式分为如下三个步骤。 注:缓存时间为t,单位为秒(s);Curtime为当前时间,Last_Modified为源站的Last-Modified响应头。 计算t1的值。 t1 = (Curtime - Last_Modified) * 0.1 将上一步计算的t1之与10进行比较,取最大值为t2。 t2 = max(10,t1) 通过上一步计算的t2值与3600进行比较,取最小值为t,则t为缓存时间。 t = min(t2,3600) 示例如下。 当对象的Last-Modified为20140801 00:00:00,当前时间Curtime为20140801 00:01:00, 则t1=(Curtime-Last_modified)*0.1=6s,t2=max(10,t1)=10s,t=min(t2,3600)=10s,那么缓存时间为10s。 当对象的Last-Modified为20140801 00:00:00,当前时间Curtime为20140802 00:00:00,则t1=(Curtime-Last_modified)*0.1=8640s,t2=max(10,t1)=8640s,t=min(t2,3600)=3600s,那么缓存时间为3600s。 当对象的Last-Modified为20140801 00:00:00,当前时间Curtime为20140801 00:10:00,则t1=(Curtime-Last_modified)*0.1=60s,t2=max(10,t1)=60s,t=min(t2,3600)=60s,那么缓存时间为60s。 如果源站没有Last-Modified响应头,但有ETag,则该对象极有可能是静态资源,将其默认缓存时间设置为dft_expires指令配置的最小值。 如果源站没有Last-Modified响应头,也没有ETag,则认为该对象为动态内容,将其默认缓存时间设置为0,每次都回源。
保持可爱mmm 2020-03-30 15:03:50 0 浏览量 回答数 0

问题

跨域中继 CRS如何创建服务接口?

添加中继服务依赖 <dependency>     <groupId>com.aliyun.angelia</groupId>     <artifactId>angelia-annotat...
猫饭先生 2019-12-01 21:15:35 1147 浏览量 回答数 0

回答

在Logstore列表页面单击诊断可以查看当前Logstore的所有日志采集报错,本文档介绍具体报错类型及对应的处理方式。 若您遇到其他问题,请提交工单处理。 错误类型 错误说明 处理方式 LOGFILE_PERMINSSION_ALARM Logtail无权限读取指定文件。 检查服务器Logtail的启动账户,建议以root方式启动。 SPLIT_LOG_FAIL_ALARM 行首正则与日志行首匹配失败,无法对日志做分行。 检查行首正则正确性,如果是单行日志可以配置为.*。 MULTI_CONFIG_MATCH_ALARM 同一个文件,只能被一个Logtail的配置收集,不支持同时被多个Logtail配置收集。 说明 Docker标准输出可以被多个Logtail配置采集。 检查一个文件是否在多个配置中被收集,并删除多余的配置。 REGEX_MATCH_ALARM 正则表达式解析模式下,日志内容和正则表达式不匹配。 复制错误内容中的日志样例重新尝试匹配,并生成新的解析正则式。 PARSE_LOG_FAIL_ALARM JSON、分隔符等解析模式下,由于日志格式不符合定义而解析失败。 请单击错误信息,查看匹配失败的详细报错。 CATEGORY_CONFIG_ALARM Logtail采集配置不合法。 常见的错误为正则表达式提取文件路径作为Topic失败,其它错误请提工单解决。 LOGTAIL_CRASH_ALARM Logtail因超过服务器资源使用上限而崩溃。 请参考配置启动参数修改CPU、内存使用上限,如有疑问请提工单。 REGISTER_INOTIFY_FAIL_ALARM Linux下注册日志监听失败,可能由于没有文件夹权限或文件夹被删除。 检查Logtail是否有权限访问该文件夹或该文件夹是否被删除。 DISCARD_DATA_ALARM 配置Logtail使用的CPU资源不够或网络发送流控。 请参考配置启动参数修改CPU使用上限或网络发送并发限制,如有疑问请提工单解决。 SEND_DATA_FAIL_ALARM 主账号未创建任何AccessKey。 Logtail客户端机器与日志服务的服务器端无法连通或者网络链路质量较差。 服务器端写入配额不足。 主账号创建AK。 检查本地配置文件/usr/local/ilogtail/ilogtail_config.json,执行curl <服务器地址>,查看是否有内容返回。 为Logstore增加Shard数目,以支持更大数据量的写入。 REGISTER_INOTIFY_FAIL_ALARM Logtail为日志目录注册的inotify watcher失败。 请检查目录是否存在以及目录权限设置。 SEND_QUOTA_EXCEED_ALARM 日志写入流量超出限制。 在控制台扩容分区。 READ_LOG_DELAY_ALARM 日志采集进度落后于日志产生进度,一般是由于配置Logtail使用的CPU资源不够或是网络发送流控导致。 请参考Logtail配置启动参数修改CPU使用上限或网络发送并发限制,如有疑问请提工单。 DROP_LOG_ALARM 日志采集进度落后于日志产生进度,且未处理的日志轮转超过20个,一般是由于配置Logtail使用的CPU资源不够或是网络发送流控导致。 请参考Logtail配置启动参数修改CPU使用上限或网络发送并发限制,如有疑问请提工单。 LOGDIR_PERMINSSION_ALARM 没有日志监控目录读取权限。 请检查日志监控目录是否存在,若存在请检查目录权限设置。 ENCODING_CONVERT_ALARM 编码转换失败。 请检查日志编码格式配置是否与日志编码格式一致。 OUTDATED_LOG_ALARM 过期的日志,日志时间落后超过12小时。可能原因: 日志解析进度落后超过12小时。 用户自定义时间字段配置错误。 日志记录程序时间输出异常。 查看是否存在READ_LOG_DELAY_ALARM。如存在按照READ_LOG_DELAY_ALARM处理方式解决,若不存在请检查时间字段配置。 检查时间字段配置。若时间字段配置正确,请检查日志记录程序时间输出是否正常。 如有疑问请提工单。 STAT_LIMIT_ALARM 日志采集配置目录中的文件数超限。 检查采集配置目录是否有较多的文件和子目录,合理设置监控的根目录和目录最大监控深度。 DROP_DATA_ALARM 进程退出时日志落盘到本地超时,此时会丢弃未落盘完毕的日志。 该报错通常为采集严重阻塞导致,请参考Logtail配置启动参数修改CPU使用上限或网络发送并发限制,如有疑问请提工单。 INPUT_COLLECT_ALARM 输入源采集异常。 请参考错误提示处理。 HTTP_LOAD_ADDRESS_ALARM http输入的address不合法。 请检查address合法性。 HTTP_COLLECT_ALARM http采集异常。 请根据错误提示排查,一般由于超时导致。 FILTER_INIT_ALARM 过滤器初始化异常。 一般由于过滤器的正则表达式非法导致,请根据提示修复。 INPUT_CANAL_ALARM MySQL binlog运行异常。 请根据错误提示排查。在配置更新时canal服务可能重启,服务重启的错误可以忽略。 CANAL_INVALID_ALARM MySQL binlog内部状态异常。 此错误一般由于运行时表的schema信息变更导致meta不一致,请确认报错期间是否在修改表的schema。其他情况请提工单。 MYSQL_INIT_ALARM MySQL初始化异常。 请参考错误提示处理。 MYSQL_CHECKPOING_ALARM MySQL checkpoint格式异常。 请确认是否修改该配置中的checkpoint相关配置,其他情况请提工单。 MYSQL_TIMEOUT_ALARM MySQL查询超时。 请确认MySQL服务器和网络是否异常。 MYSQL_PARSE_ALARM MySQL查询结果解析失败。 请确认MySQL配置的checkpoint格式是否匹配对应字段的格式。 AGGREGATOR_ADD_ALARM 向队列中添加数据失败。 这种情况是由于数据发送过快,若真实数据量很大,则无需关心。 ANCHOR_FIND_ALARM anchor插件错误、配置错误或存在不符合配置的日志。 请单击错误查看详细报错,报错根据内容分为以下几类,请根据详细报错中的信息,检查相应的配置是否存在问题。 anchor cannot find key:配置中指定了SourceKey但日志中不存在对应的字段。 anchor no start:无法从SourceKey的值中找到Start对应的内容。 anchor no stop:无法从 SourceKey 的值中找到Stop对应的内容。 ANCHOR_JSON_ALARM anchor插件错误,对已配置的Start和Stop所确定的内容执行JSON展开时发生错误。 请单击错误查看详细报错,检查所处理的内容以及相关的配置,确定是否有配置错误或不合法日志。 CANAL_RUNTIME_ALARM binlog插件运行时错误。 请单击错误查看详细报错,根据错误信息进行进一步地排查,错误一般与所连接的MySQL master相关。 CHECKPOINT_INVALID_ALARM 插件内Checkpoint解析失败。 请单击错误查看详细报错,根据其中的检查点键、检查点内容(前 1024 个字节)以及具体的错误信息进行进一步排查。 DIR_EXCEED_LIMIT_ALARM Logtail同时监听的目录数超出限制。 检查当前Logstore的采集配置以及该Logtail上应用的其他配置是否会包含较多的目录数,合理设置监控的根目录和目录最大监控深度。 DOCKER_FILE_MAPPING_ALARM 执行Logtail命令添加Docker文件映射失败。 请单击错误查看详细报错,根据其中的命令以及具体的错误信息进行进一步排查。 DOCKER_FILE_MATCH_ALARM 无法在Docker容器中查找到指定文件。 请单击错误查看详细报错,根据其中的容器信息以及查找的文件路径进行进一步排查。 DOCKER_REGEX_COMPILE_ALARM docker stdout插件错误,根据配置中的BeginLineRegex构建正则表达式失败。 请单击错误查看详细报错,检查其中的正则表达式是否正确。 DOCKER_STDOUT_INIT_ALARM docker stdout采集初始化失败。 请单击错误查看详细报错,报错根据内容分为以下几类: host...version...error:请检查配置中指定的Docker engine是否可访问。 load checkpoint error:加载检查点失败,如无影响可忽略此错误。 container...:指定容器存在非法label值,目前仅允许配置stdout和stderr。请结合详细错误进行检查。 DOCKER_STDOUT_START_ALARM Docker stdout初始化采集时,stdout文件大小超过限制。 一般由于首次采集时stdout文件已存在,可忽略。 DOCKER_STDOUT_STAT_ALARM Docker stdout无法检查到stdout文件。 一般由于容器退出时无法访问到文件,可忽略。 FILE_READER_EXCEED_ALARM Logtail同时打开的文件对象数量超过限制。 一般由于当前处于采集状态的文件数过多,请检查采集配置是否合理。 GEOIP_ALARM geoip插件错误。 请单击错误查看详细报错,报错根据内容分为以下几类: invalid ip...:获取IP地址失败,请检查配置中的 SourceKey 是否正确或是否存在不合法日志。 parse ip...:根据IP地址解析城市失败,请查看详细错误信息进行排查。 cannot find key...:无法从日志中查看到指定的SourceKey,请检查配置是否正确或是否存在不合法日志。 HTTP_INIT_ALARM http插件错误,配置中指定的ResponseStringMatch正则表达式编译错误。 请单击错误查看详细报错,检查其中的正则表达式是否正确。 HTTP_PARSE_ALARM http插件错误,获取HTTP响应失败。 请单击错误查看详细报错,根据其中的具体错误信息对配置内容或所请求的HTTP服务器进行检查。 INIT_CHECKPOINT_ALARM binlog插件错误,加载检查点失败,插件将忽略检查点并从头开始处理。 请单击错误查看详细报错,根据其中的具体错误信息来确定是否可忽略此错误。 LOAD_LOCAL_EVENT_ALARM Logtail执行了本地事件处理。 此警告一般不会出现,如果非人为操作引起此警告,才需要进行错误排查。请单击错误查看详细报错,根据其中的文件名、配置名、project、logstore等信息进行进一步地排查。 LOG_REGEX_FIND_ALARM processor_split_log_regex以及 processor_split_log_string插件错误,无法从日志中获取到配置中指定的 SplitKey。 请单击错误查看详细报错,检查是否存在配置错误的情况。 LUMBER_CONNECTION_ALARM service_lumberjack插件错误,停止插件时关闭服务器错误。 请单击错误查看详细报错,根据其中的具体错误信息进行进一步排查,此错误一般可忽略。 LUMBER_LISTEN_ALARM service_lumberjack插件错误,初始化进行监听时发生错误。 请单击错误查看详细报错,报错根据内容分为以下几类: init tls error...:请结合具体的错误信息检查 TLS 相关的配置是否正确 listen init error...:请结合具体的错误信息检查地址相关的配置是否正确。 LZ4_COMPRESS_FAIL_ALARM Logtail执行LZ4压缩发生错误。 请单击错误查看详细报错,根据其中的log lines、project、category、region等值来进行进一步排查。 MYSQL_CHECKPOINT_ALARM MySQL插件错误,检查点相关错误。 请单击错误查看详细报错,报错根据内容分为以下几类: init checkpoint error...:初始化检查点失败,请根据错误信息检查配置指定的检查点列以及所获取的值是否正确。 not matched checkpoint...:检查点信息不匹配,请根据错误信息检查是否是由于配置更新等人为原因导致的错误,如果是则可忽略。 NGINX_STATUS_COLLECT_ALARM nginx_status插件错误,获取状态发生错误。 请单击错误查看详细报错,根据其中的URL以及具体的错误信息来进行进一步排查。 NGINX_STATUS_INIT_ALARM nginx_status插件错误,初始化解析配置中指定的URL失败。 请单击错误查看详细报错,根据其中的URL检查地址是否正确配置。 OPEN_FILE_LIMIT_ALARM Logtail已打开文件数量超过限制,无法打开新的文件。 请单击错误查看详细报错,根据其中的日志文件路径、Project、Logstore等信息进行进一步排查。 OPEN_LOGFILE_FAIL_ALARM Logtail打开文件出错。 请单击错误查看详细报错,根据其中的日志文件路径、Project、Logstore等信息进行进一步排查。 PARSE_DOCKER_LINE_ALARM service_docker_stdout插件错误,解析日志失败。 请单击错误查看详细报错,报错根据内容分为以下几类: parse docker line error: empty line:日志为空。 parse json docker line error...:以JSON格式解析日志失败,请根据错误信息以及日志的前512个字节进行排查。 parse cri docker line error...:以CRI格式解析日志失败,请根据错误信息以及日志的前512个字节进行排查。 PLUGIN_ALARM 插件初始化及相关调用发生错误。 请单击错误查看详细报错,报错根据内容分为以下几类,请根据具体的错误信息进行进一步排查。 init plugin error...:初始化插件失败。 hold on error...:暂停插件运行失败。 resume error...:恢复插件运行失败。 start service error...:启动 service input类型的插件失败。 stop service error...:停止 service input类型的插件失败。 PROCESSOR_INIT_ALARM regex插件错误,编译配置中指定的Regex正则表达式失败。 请单击错误查看详细报错,检查其中的正则表达式是否正确。 PROCESS_TOO_SLOW_ALARM Logtail日志解析速度过慢。 单击错误查看详细报错,根据其中的日志数量、缓冲区大小、解析时间来确定是否正常。 如果不正常,检查Logtail所在节点是否有其他进程占用了过多的CPU资源或是存在效率较低的正则表达式等不合理的解析配置。 REDIS_PARSE_ADDRESS_ALARM redis插件错误,配置中提供的ServerUrls存在解析失败的情况。 请单击错误查看详细报错,对其中报错的URL进行检查。 REGEX_FIND_ALARM regex 插件错误,无法从日志中找到配置中SourceKey指定的字段。 请单击错误查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 REGEX_UNMATCHED_ALARM regex插件错误,匹配失败。 请单击错误查看详细报错,报错根据内容分为以下几类,请根据具体的错误信息进行进一步地排查,例如检查配置是否正确。 unmatch this log content...:日志无法匹配配置中的正则表达式 match result count less...:匹配的结果数量少于配置中指定的 Keys 数量。 SAME_CONFIG_ALARM 同一个Logstore下存在同名的配置,后发现的配置会被抛弃。 请单击错误查看详细报错,根据其中的配置路径等信息排查是否存在配置错误的情况。 SPLIT_FIND_ALARM split_char以及split_string插件错误,无法从日志中找到配置中SourceKey指定的字段。 请单击错误查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 SPLIT_LOG_ALARM processor_split_char以及processor_split_string插件错误,解析得到的字段数量与SplitKeys中指定的不相同。 请单击错误查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 STAT_FILE_ALARM 插件内通过LogFileReader对象进行文件采集时发生错误。 请单击错误查看详细报错,根据其中的文件路径、错误信息进行进一步排查。 SERVICE_SYSLOG_INIT_ALARM service_syslog插件错误,初始化失败。 请单击错误查看详细报错,检查配置中的Address是否正确。 SERVICE_SYSLOG_STREAM_ALARM service_syslog插件错误,通过TCP采集时发生错误。 请单击错误查看详细报错,报错根据内容分为以下几类,请根据详细报错中的具体错误信息进行排查。 accept error...:执行Accept时发生错误,插件将等待一段时间后重试。 setKeepAlive error...:设置 Keep Alive失败,插件将跳过此错误并继续运行。 connection i/o timeout...:通过TCP读取时超时,插件将重设超时并继续读取。 scan error...:TCP 读取错误,插件将等待一段时间后重试。 SERVICE_SYSLOG_PACKET_ALARM service_syslog插件错误,通过UDP采集时发生错误。 请单击错误查看详细报错,报错根据内容分为以下几类,请根据详细报错中的具体错误信息进行排查。 connection i/o timeout...:通过UDP读取时超时,插件将重设超时并继续读取。 read from error...:UDP读取错误,插件将等待一段时间后重试。
保持可爱mmm 2020-03-26 23:02:18 0 浏览量 回答数 0

回答

如果需要某一个库,如:jquery,可以直接运行npm install jquery脚本命令来安装这个项目所需要的依赖; 然后,在使用jquery的模块文件中,通过import $ from 'jquery'或者var $ = require('jquery')来引入。 这是常用的在webpack构建的项目中引入第三方库的方式。 注:为了更好的演示示例代码,示例是在nodemon这篇文章的基础上操作的。 但是,在不同的场景下,对webpack构建的项目有不同的需求: 项目的体积足够小(cdn) 如果是webapck的处理方式,可参考webapck——实现构建输出最小这篇文章。 使用非webapck的处理方式,如:CDN。 操作也很简单,如果使用html-webpack-plugin直接在模板文件template/index.html中引入某个cdn(如:boot CDN)上的某个第三方库(如:jquery),参考代码如下: 然后,在module.js中使用jquery即可,参考代码如下: require('./module.css'); module.exports = function() { $(document.body).append(' hello webpack') } 最后,运行npm run test,构建结束后,你会在浏览器中看到hello webpack字样,背景是红色的页面效果。 全局环境下使用第三方库(provide-plugin or imports-loader) 为了避免每次使用第三方库,都需要用import或者require()引用它们,可以将它们定义为全局的变量。 而webpack的ProvidePlugin内置的插件,可以解决这个问题。详情可参考ProvidePlugin这篇文章的介绍。 避免于cdn引用的jquery冲突,这里使用lodash。 首先,安装lodash依赖,命令如下: yarn add lodash --dev 然后,在webpack.config.js中,添加如下代码: new webpack.ProvidePlugin({ _: 'lodash' }), 其次,在module.js中添加如下代码: ... var arr = [1, 2, 3, 4, 5 ,6]; // provide-plugin $(document.body).append(' ' + _.concat(arr, '~') + '</h1'); ... 最后,运行npm run test脚本命令,构建完成后,你就可以浏览器的页面中增加了1,2,3,4,5,6,~。 如果,你想指定lodash的某个工具函数可以全局使用,如:_.concat, 首先,像下面这样修改webapck.config.js,代码如下: ... new webpack.ProvidePlugin({ // _: 'lodash', _concat: ['lodash', 'concat'] }), ... 然后,修改module.js,代码如下: ... var arr = [1, 2, 3, 4, 5 ,6]; // provide-plugin // $(document.body).append(' ' + _.concat(arr, '~') + '</h1'); $(document.body).append(' ' + _concat(arr, '~') + '</h1'); ... 如果不喜欢用插件的,也可以考虑使用import-loader,它也可以实现相同的目的。 为了避免不必要的干扰,可以使用underscore来演示。 首先,安装imports-loader依赖,命令如下: yarn add imports-loader --dev 然后,安装underscore依赖,命令如下: yarn add underscore 其次,在webapck.config.js中添加如下代码: ... module: { rules: [ { test: require.resolve('underscore'), use: 'imports-loader?_=underscore' }, ... ] }, ... 注:underscore和lodash都是用的是单例的模式开发的,它们实例化的构造函数的名字都是_,为了作区分,需要对其中一个做一下改变。imports-loader对这个标识起别名有点儿困难,而provide-plugin则没有这个问题,可以定一个个性化的别名。 修改webpack.config.js,代码如下: new webpack.ProvidePlugin({ // _: 'lodash', // _concat: ['lodash', 'concat'], __: 'lodash' }), 可以为lodash定义为__与underscore的_作区分。 然后,修改module.js,代码如下: ... // provide-plugin // $(document.body).append(' ' + _.concat(arr, '~') + '</h1'); // $(document.body).append(' ' + _concat(arr, '~') + '</h1'); $(document.body).append(' ' + __.concat(arr, '~') + '</h1'); ... 最后,保存所有的文件,可以下浏览器中看到相似的结果(保存后,nodemon自启动浏览器)。 cdn与externals 之前遇到了一些externals的问题,为什么要详细的说,是因为很多人不明白它到底用来干什么的。 场景再现: 之前,有一个项目使用了jquery,由于这个库的比较经典,它在应用的各个模块中被频繁引用。使用的方式如下: import $ from 'jquery' 或者 var $ = require('jquery') 结果是构建结束后,文件比较大。那么考虑使用cdn,如上文描述的那样。这样需要删除import或require的引用,同时删除安装的jquery依赖,但是由于项目结构比较乱,模块比较多,为了避免造成少改或者漏改的问题,会造成应用出错。该怎么办呢? 有的人说,不删除jquery依赖,那么使用cdn的目的就没有意义了。而使用external则可以解决这个问题。 可以在module.js文件中添加如下代码: ... var $ = require('jquery') ... 然后,保存文件,发现构建输出提示如下的错误: ERROR in ./module.js Module not found: Error: Can't resolve 'jquery' in 'E:\workspace\me\webpack-play\demo\example-1' @ ./module.js 3:0-23 @ ./main.js @ multi (webpack)-dev-server/client?http://localhost:8080 ./main.js 模块module.js中的jquery不能被解析。 紧接着,在webpack.config.js中添加如下代码: externals: { jquery: 'jQuery', jquery: '$' }, 其中jquery代表的是require('jquery')中的jquery,而jQuery和$代表的是jquery这个库自身提供的可是实例化的标识符。其它的库的cdn化,修改类似jquery。 但是,如果在项目一开始就决定用cdn的话,就不要在使用jquery的模块中,使用var $ = require('jquery') 或 import $ from 'jquery';,虽然这样做不会报错,但是如果出于某方面的考虑,后期可能会引入jquery依赖,那么就必须使用var $ = require('jquery') 或 import $ from 'jquery';。
游客2q7uranxketok 2021-02-20 00:58:54 0 浏览量 回答数 0

回答

创建 MySQL 数据库应用实例 先到阿里云云开发平台创建一个数据库。在选择实验室后,使用 Midway Serverless MySQL 数据库的示例来创建。点击完成之后,云开发平台会自动 创建这个项目仓库,同时把一些项目模板创建好,然后就点击开发部署。这个时候云开发平 台会打开一个纯云端的 WEB IDE,在 WEB IDE 里可以感受到和本地 IDE 几乎一样的开 发体验。它提供一个内置终端,可以在里面执行需要的命令。比如先要安装一个开发的依赖, 然后去执行本地的 Dev 环境,这样整个项目就可以在本地给运行起来了。这时在本地就可 以进行代码修改了。WEB IDE 的左边是项目的目录数据结构,第一节课已经详细的介绍过目录结构,在 此不再做赘述。这个项目里有几个函数,有渲染前端 html 界面的函数,有数据的增删改查 函数,list,update,remove 和 add,这几个分别对应我们接下来要分享的使用 MySQL 数据库的增删改查四个功能。左侧目录架构里有一个叫 config 的文件夹,在 config 文件夹里面有一个 config. default.ts,熟悉 egg.js 的同学会知道对于配置会有多套环境,这些配置会与 config. default.ts 合并,生成一份线上在运行当前环境的一个配置的对象。在配置里会配置一些, 比如今天主要介绍的连接 MySQL 数据库,在这个配置里面我们就会通过环境变量,把一 些 MySQL 的配置给加进来。 在阿里云云开发平台,当你创建好一个实例的时候,云开发平台会给你默认的提供一些 配置,比如 RDS 数据库名称、数据库的连接地址、密码、端口等信息,这些信息会在云开 发平台通过环境变量的形式,注入到系统的一个环境变量里面去。这个环境变量在外面提供的各种配置里面其实都有,我们可以把这些配置拷贝到内部的 环境变量里,比如要连接到某些服务器上自创的数据库,或者是其他平台提供的数据库的时 候,可以把数据库的连接信息配置到这。比如说数据库的 host 和 port。一般来说 Mysql 默认的连接端口是 3306 端口,当配置好了之后,我们通过 configuration.ts 文件,在上 面导入下配置,importConfig 就把配置导入到我们整个 Midway 的项目里面去了。 index 是函数代码,可以通过@Inject 把刚刚创建的数据库的实例注进来,然后通过@ Config 装饰器,把 dbConfig 的配置注进来。这样注入进来就能拿到 dbConfig,就是刚 刚一些配置的数据,然后在 onReady 里进行数据库连接。 当数据库连接完成,我们把数据库名、用户名、密码、端口和连接地址都配好后,再进 行数据库的认证连接,这样连接就完成了。如果连接不完成,连接出错了,这个页面会捕获 错误直接输出提示;如果连接成功了,系统就会把连接成功的 db 实例,注入到整个 Midway IoC 容器里面。这样就可以在其他的任何一个地方去通过@Inject 注入代码里, 最后就可以通过 this.db 达到已经连接好的数据库的实例。 熟悉 Mysql 的同学都知道普通的增删改查和执行各种 SQL 语句,比如查询是 select, 更新是 update,删除是 delete,插入新增是 insert,这些都是一些比较常见的语句,这 些都可以通过 this.db.query 去执行,然后就可以拿到对应的存在数据库里的结果。 我们再介绍一个与上文提到的写法不太一样的函数。上面提到的函数只是声明了这个函 数的函数标识,下面这个函数在里面提供了一个中间件的配置。在 Midway Serverles 框 架里面,支持提供就配置一些中间件,相当一个请求进来通过中间件进行拦截,或者说通过 中间件进行一些处理,然后再把截下来的数据进行一些返回的处理。
1358896759097293 2021-03-14 22:37:22 0 浏览量 回答数 0

问题

如何解决Github Pages访问太慢?

Github Pages为Github提供的一项静态站点托管服务,它直接从Github仓库获取静态文件进行发布,然后提供一个github.io的二级域名供用户访问,支持绑定自定义域名,...
问问小秘 2020-06-29 10:52:51 0 浏览量 回答数 1

问题

MaxCompute快速入门:导入数据

MaxCompute 提供多种数据导入导出方式,如下所示: 直接在客户端使用 Tunnel 命令。通过 Tunnel 提供的 SDK 自行编写 Java 工具。通过 Flume 及 Fluentd 插件方式导入。...
行者武松 2019-12-01 22:01:37 1490 浏览量 回答数 0

回答

file_operation是Linux内核驱动中一个非常重要的结构体,它建立了用户空间与内核空间之间的联系。file_operation结构体定义在linux内核的includelinuxfs.h文件中,定义是这样的:struct module owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); / remove by cym 20130408 support for MT660.ko / #if 0 //#ifdef CONFIG_SMM6260_MODEM #if 1// liang, Pixtree also need to use ioctl interface... int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); #endif #endif / end remove / long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, int datasync); int (*aio_fsync) (struct kiocb *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); int (*setlease)(struct file *, long, struct file_lock *); long (*fallocate)(struct file file, int mode, loff_t offset, loff_t len); / add by cym 20130408 support for MT6260 and Pixtree / #if defined(CONFIG_SMM6260_MODEM) || defined(CONFIG_USE_GPIO_AS_I2C) int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); #endif / end add */ }; 由定义可以看出,该结构体里面定义了许多的函数指针,例如我们在写驱动程序时经常会用到的open、ioctl、read、write等。同时也指明了函数指针里面的参数,这也是为什么我们在写Linux驱动程序的open等函数时,里面的参数都是固定的,不能自己额外添加。当我们在驱动程序中完成open、close等函数之后,就必须在file_operation里面进行映射,使file_operation里面的函数指针一一对应你自己编写的open、colse等方法。这样我们在用户空间中就可以通过调用close、open等函数来调用Linux内核你自己编写的驱动程序啦,不过要成功调用这些函数,你还必须include<fcntl.h>头文件,关于这部分的内容,你可以详细阅读linux的VFS,里面会有详细介绍哦。 可以参考《Linux设备驱动开发详解_宋宝华》这本书里面的 struct file _ operations { struct module owner; // 拥有该结构的模块的指针,一般为 THIS _ MODULES loff _ t(*llseek)(struct file *, loff _ t, int); // 用来修改文件当前的读写位置 ssize _ t(*read)(struct file *, char _ _ user *, size _ t, loff _ t); // 从设备中同步读取数据 ssize _ t(*aio _ read)(struct kiocb , char _ _ user *, size _ t, loff _ t); // 初始化一个异步的读取操作 ssize _ t(*write)(struct file *, const char _ _ user *, size _ t, loff _ t); // 向设备发送数据 ssize _ t(*aio _ write)(struct kiocb , const char _ _ user *, size _ t, loff _ t); // 初始化一个异步的写入操作 int(*readdir)(struct file *, void *, filldir _ t); // 仅用于读取目录,对于设备文件,该字段为 NULL unsigned int(*poll)(struct file *, struct poll _ table _ struct); // 轮询函数,判断目前是否可以进行非阻塞的读取或写入 int(*ioctl)(struct inode , struct file *, unsigned int, unsigned long); // 执行设备 I/O 控制命令 long(*unlocked _ ioctl)(struct file *, unsigned int, unsigned long); // 不使用 BLK 文件系统,将使用此种函数指针代替 ioctl long(*compat _ ioctl)(struct file *, unsigned int, unsigned long); // 在 64 位系统上,32 位的 ioctl 调用将使用此函数指针代替 int(*mmap)(struct file *, struct vm _ area _ struct); // 用于请求将设备内存映射到进程地址空间 int(*open)(struct inode , struct file); // 打开 int(*flush)(struct file*); int(*release)(struct inode , struct file); // 关闭 int(*synch)(struct file , struct dentry *, int datasync); // 刷新待处理的数据 int(*aio _ fsync)(struct kiocb *, int datasync); // 异步 fsync int(*fasync)(int, struct file *, int); // 通知设备 FASYNC 标志发生变化 int(*lock)(struct file *, int, struct file _ lock); ssize _ t(*readv)(struct file , const struct iovec *, unsigned long, loff _ t); ssize _ t(*writev)(struct file , const struct iovec *, unsigned long, loff _ t); // readv 和 writev:分散/聚集型的读写操作 ssize _ t(*sendfile)(struct file , loff _ t *, size _ t, read _ actor _ t, void); // 通常为 NULL ssize _ t(*sendpage)(struct file , struct page *, int, size _ t, loff _ t *, int); // 通常为 NULL unsigned long(*get _ unmapped _ area)(struct file *,unsigned long, unsigned long, unsigned long, unsigned long); // 在进程地址空间找到一个将底层设备中的内存段映射的位置 int(*check _ flags)(int); // 允许模块检查传递给 fcntl(F _ SETEL...)调用的标志 int(*dir _ notify)(struct file *filp, unsigned long arg); // 仅对文件系统有效,驱动程序不必实现 int(*flock)(struct file *, int, struct file _ lock); };
杨冬芳 2019-12-02 03:08:15 0 浏览量 回答数 0

回答

当您需要更新正在运行的资源栈时,可以使用更改集功能。您可以预览更改对资源栈正在运行资源造成的影响,只有在您执行更改集时,ROS才会对您的资源栈进行更改,您可以使用ROS控制台、ALIYUN CLI或ROS API来创建和管理更改集。 使用限制 更改集的使用限制如下: 一个资源栈最多同时存在20个更改集。 更改集只显示资源栈变化,不显示资源栈是否成功更新。 更改集不检查是否将超出账户限制、是否将更新不支持更新的资源、是否权限不足而无法修改资源,所有这些都将导致资源栈更新失败。如果更新失败,ROS将尝试将您的资源回滚到原始状态。 更新资源栈流程 使用更改集更新资源栈的流程如下: 通过为您待更新的资源栈提交更改来创建更改集。您可以提交修改后的资源栈模板或者修改后的输入参数值,ROS将您的资源栈与所提交更改进行对比,生成更改集。 查看更改集了解将更改资源栈设置和资源。例如,您可以查看ROS将添加、修改或删除的资源。 (可选)如果您在执行更改前,需要其他更改,则请创建其他更改集。创建多个更改集可帮助您了解和评估不同的更改对您的资源造成的影响。您还可以删除其他更改集,以免误执行不应该应用的更改集。 执行您需要应用到资源栈的更改集。 注意 在您执行更改集后,ROS将自动删除与资源栈关联的所有更改集,因为他们不再适用于更新后的资源栈。 资源栈开始更新,待更新完成后,您可以查看资源栈更新结果。 相关功能 更改集的相关功能如下表所示。 功能 说明 创建更改集 当您需要为正在运行的资源栈创建更改集时,请通过本操作修改模板或模板参数。 查看更改集 创建更改集之后,您可以查看更改记录和JSON格式的更改详细列表。 执行更改集 当您创建更改集后,只有成功执行更改集,对资源栈的更新才能生效。 删除更改集 当您不需要新建的更改集时,请及时删除,以免误执行,导致资源栈更改。 当您需要为正在运行的资源栈创建更改集时,请通过本操作修改模板或模板参数。ROS通过将资源栈与您提交的模板更改结果进行对比来生成更改集。 前提条件 请确保您已创建资源栈,操作方法请参见创建资源栈。 创建更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称对应的右侧操作栏中的创建更改集。 您也可以单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集,单击创建更改集。 在创建更改集向导的选择模板页面,根据所需选择模板,单击下一步。 创建更改集 - 选择模板 在创建更改集向导的配置模板参数页面,配置更改集名称和模板参数,单击下一步。 创建更改集 - 配置模板参数 在创建更改集向导的配置更改集页面,配置资源栈策略、失败时回滚和超时设置,单击下一步。 创建更改集 - 配置更改集 在创建更改集向导的确认页面,单击创建更改集。 如果您需要确认更新配置,则可以单击下一步,确认配置无误后,再单击确认修改,完成更新资源栈操作。创建更改集 - 确认 查看资源栈更改集。 在资源栈列表中,单击资源栈名称下的ID。 在资源栈管理页面,单击更改集。 您可以查看更改集的名称、资源状态和执行状态等。更改集 - 列表 查看更改集详情。更改集 - 详情 创建更改集 (ALIYUN CLI) 通过命令aliyun ros CreateChangeSet创建更改集。 您可以通过命令选项的形式指定新参数值或修改参数,并提交模板更改。例如,为资源栈创建名为test-change-set的更改集,更改集使用当前资源栈模板(oss://ros-templates/test-change-set.json?RegionId=cn-hangzhou),样例如下: aliyun ros CreateChangeSet --TemplateURL oss://ros-templates/test-change-set.json?RegionId=cn-hangzhou --Sta 创建更改集之后,您可以查看更改记录和JSON格式的更改详细列表。 前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 查看更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集,查看资源栈的更改集的列表。 单击目标更改集名称。 在更改集详情页面,您可以查看更改集的基本信息、更改记录、模板及JSON更改。 更改记录和JSON更改为您展示模板变更内容。如果您需要对模板执行其他更改,则请创建其他更改集。 更改集详情 查看更改集 (ALIYUN CLI) 执行命令aliyun ros ListChangeSets查看更改集所属资源栈ID。 查看更改集的资源栈ID,样例如下: aliyun ros ListChangeSets --StackId <stack_id> --RegionId <region_id> ROS返回更改集所属资源栈信息列表如下: { "TotalCount": 1, "PageSize": 10, "RequestId": "A94A31B7-EC3A-4528-90D8-FA31FA4D13BB", "PageNumber": 1, "ChangeSets": [ { "Status": "CREATE_COMPLETE", "ChangeSetId": "<change_set_id>", "ExecutionStatus": "AVAILABLE", "CreateTime": "2020-03-03T06:36:20", "ChangeSetType": "UPDATE", "RegionId": "cn-hangzhou", "ChangeSetName": "test-change-set", "StackName": "test-change-set", "StackId": "<stack_id>" } ] } 执行命令aliyun ros GetChangeSet查看更改集ID。 查看更改集ID,样例如下: aliyun ros ListChangeSets --StackId <stack_id> --RegionId <region_id> aliyun ros GetChangeSet --ChangeSetId <change_set_id> --RegionId <region_id> ROS返回更改集信息列表如下: { "ExecutionStatus": "AVAILABLE", "Parameters": [ { "ParameterValue": "<account_id>", "ParameterKey": "ALIYUN::AccountId" }, { "ParameterValue": "None", "ParameterKey": "ALIYUN::NoValue" }, { "ParameterValue": "cn-hangzhou", "ParameterKey": "ALIYUN::Region" }, { "ParameterValue": "<stack_id>", "ParameterKey": "ALIYUN::StackId" }, { "ParameterValue": "test-change-set", "ParameterKey": "ALIYUN::StackName" }, { "ParameterValue": "<tenant_id>", "ParameterKey": "ALIYUN::TenantId" }, { "ParameterValue": "1", "ParameterKey": "Count" } ], "TimeoutInMinutes": 60, "Changes": [ { "Type": "Resource", "ResourceChange": { "LogicalResourceId": "WaitConditionHandle", "Replacement": "False", "PhysicalResourceId": "WaitConditionHandle", "ResourceType": "ALIYUN::ROS::WaitConditionHandle", "Action": "Modify", "Details": [ { "Evaluation": "Static", "Target": { "Name": "Count", "RequiresRecreation": "Never", "Attribute": "Properties" }, "CausingEntity": "Count", "ChangeSource": "ParameterReference" }, { "Evaluation": "Dynamic", "Target": { "Name": "Count", "RequiresRecreation": "Never", "Attribute": "Properties" }, "ChangeSource": "DirectModification" } ], "Scope": [ "Properties" ] } } ], "ChangeSetId": "<change_set_id>", "StackId": "<stack_id>", "DisableRollback": false, "ChangeSetName": "test-change-set", "ChangeSetType": "UPDATE", "StackName": "test-change-set", "Status": "CREATE_COMPLETE", "CreateTime": "2020-03-03T06:36:20", "RegionId": "cn-hangzhou", "RequestId": "DB9B48C8-C22D-4009-A3B0-85FDF3D26D2D" } Changes属性列出对资源的更改,配置方法请参见数据结构。 当您创建更改集后,只有成功执行更改集,对资源栈的更新才能生效。 前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 背景信息 注意 您执行更改集之后,ROS将自动删除与资源栈关联的其他更改集,因为他们对于更新后的资源栈失效。如果资源栈更新失败,则您需要重新创建更改集。 如果您在有资源栈策略的资源栈上执行更改集,则ROS将在更新资源栈时强制执行策略。执行更改集时,您不能指定覆盖现有策略的临时资源栈策略。要更新受保护的资源,您必须更新资源栈策略或者使用直接更新方法。 执行更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集。 在更改集页面,单击更改集名称对应操作列的执行,ROS立即开始更新资源栈。 更改集 - 列表 (可选)单击更改集名称,在更改集管理页面,单击执行更改集,ROS立即开始更新资源栈。 更改集 - 详情 执行更改集 (ALIYUN CLI) 通过命令aliyun ros ExecuteChangeSet执行更改集。 指定您需要执行更改集的ID,样例如下: aliyun ros ExecuteChangeSet --ChangeSetId <change_set_id> --RegionId <region_id> 执行本命令之后,ROS开始更新资源栈。如果您需要查看更新资源栈的进度,请使用执行命令aliyun ros GetStack。 当您不需要新建的更改集时,请及时删除,以免误执行,导致资源栈更改。除非您删除更改集,否则ROS将保留所有更改集,直到您更新资源栈为止。 前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 删除更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集。 在更改集页面,单击更改集名称对应操作列的删除。 更改集 - 列表 (可选)单击更改集名称,在更改集管理页面,单击删除。 更改集 - 详情 删除更改集 (ALIYUN CLI) 通过命令aliyun ros DeleteChangeSet删除更改集。 指定您要删除的更改集的ID,样例如下: aliyun ros DeleteChangeSet --ChangeSetId <change_set_id> --RegionId <region_id> ROS支持通过API接口和ALIYUN CLI方式创建更改集来创建资源栈,在您执行更改集之前可对资源栈进行检查和修改。对于您新创建的资源栈,只有在执行更改集成功后,才能成为有效的资源栈。 创建资源栈(API接口) ROS支持通过API接口CreateChangeSet为新资源栈创建更改集,支持通过API接口PreviewStack预览资源栈的配置结果。 通过创建更改集方式创建的资源栈,状态处于核对中(REVIEW_IN_PROGRESS)。该状态下的资源栈,不能创建新更改集。如果您确认后发现资源栈配置不符合要求,则可以直接删除资源栈,并重新为新资源栈创建更改集。 创建资源栈(ALIYUN CLI) 通过命令aliyun ros CreateChangeSet创建资源栈。 通过创建更改集创建资源栈时,您需要指定更改集类型为CREATE,并指定资源栈名称、模板、参数和更改集名称。例如,创建资源栈test-create-change-set,更改集体test-create-change-set。 aliyun ros CreateChangeSet --ChangeSetType CREATE --TemplateURL oss://ros-templates/test-change-set.json?RegionId=c 介绍更改集Changes的数据结构。 Change 参数 类型 描述 ResourceChange ResourceChange结构体。 ROS将执行的资源和操作。 Type 字符串。 更改的实体类型。目前只支持Resource。 取值:Resource。 ResourceChange 参数 类型 描述 Action 字符串。 ROS对资源执行的操作。取值范围: Add:创建资源 Modify:修改资源 Remove:释放资源 Details ResourceChangeDetail数组。 ROS对资源修改的详情。只有当Action为Modify时,才显示该字段。 LogicalResourceId 字符串。 资源逻辑ID,即模板中定义的资源名称。 PhysicalResourceId 字符串。 资源的物理ID。当Action为Add时,由于资源未创建,无有物理ID。 Replacement 字符串。 当Action为Modify时,ROS是否将通过创建新资源并删除旧资源来替换资源。 此值取决于ResourceTargetDefinition结构中RequiresRecreation属性的值。 例如: 如果RequiresRecreation字段为Always,Evaluation字段为Static,则Replacement为True。 如果RequiresRecreation字段为Always,Evaluation字段为Dynamic,则Replacement为Conditionally。 如果RequiresRecreation有多个更改值,则Replacement值取决于影响最大的更改,Always、Conditionally、Never影响递减。 取值范围: True False Conditional ResourceType 字符串。 ROS资源类型。 Scope 字符串数组。 当Action为Modify时,触发更新的字段。取值范围: Properties Metadata DeletionPolicy ResourceChangeDetail 参数 类型 描述 ChangeSource 字符串。 触发修改的原因。取值范围: ResourceReference:引用了其他资源的物理ID,引用的资源物理ID可能发生了变化。 ParameterReference:引用的参数发生了变化。 ResourceAttribute:引用了其他资源的输出属性,引用资源的输出属性可能发生了变化。 DirectModification:直接修改了模板。 Automatic:嵌套资源栈(ALIYUN::ROS::Stack)如果未进行修改,则ROS会将其ChangeSet设置为Automatic,因为嵌套资源栈中指定的模板可能已经发生了更改。在您对父资源栈运行更新之前,ROS不会对嵌套资源栈模板进行更改。 System:虽然某些资源的输入未发生变化,但是特定的条件或内部机制也会触发更新,例如:ALIYUN::ROS::WaitConditionHandle。 CausingEntity 字符串。 ChangeSource关联的对象。对应关系如下: ResourceReference:资源名。 ParameterReference:参数名。 ResourceAttribute:资源名.参数名。 DirectModification:null。 Automatic:资源名。 System:资源名。 Evaluation 字符串。 ROS是否可以确定目标值,以及在执行更改集之前目标值是否将更改。取值范围: Static 当取值为Static时,ROS可以确定目标值及其值将改变。 Dynamic 当取值为Dynamic时,无法确定目标值。因为更新资源栈时,目标值取决于内部函数的结果,例如:Ref或Fn::GetAtt。 Target ResourceTargetDefinition结构体。 描述触发更新的字段的具体信息。 ResourceTargetDefinition 参数 类型 描述 Attribute 字符串。 指定触发更新字段。取值范围: Properties Metadata DeletionPolicy Name 字符串。 当Attribute为Properties时,表示具体的属性名,其他情况为null。 RequiresRecreation 字符串。 当Attribute为Properties时,表示对此属性的更改是否导致重新创建资源。取值范围: Never Conditionally Always
1934890530796658 2020-03-24 17:53:25 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. 安装方式选择 OceanBase是一个集群数据库,至少要三个节点。通常三个节点是要在三台机器上。有关OceanBase的介绍请参考官网 http://oceanbase.alipay.com/docs 。 官网上提供了一个安装包的下载,地址是: OceanBase安装包下载链接 。 这个安装包里的内容很多。很大一部分是OCP的安装包以及相关安装说明。详细查看 安装包组件说明 。 我们只需要里面的2个文件。 $unzip ocp-release.zip $cd ocp-release/ $tar zxvf ocp-setup.tar.gz $cd ocp_yh $ls -lrth obproxy-1.3.3-1506155.el7.x86_64.rpm oceanbase-1.4.60-1571952.el7.x86_64.rpm -rwxr-xr-x 1 admin admin 36M May 11 2018 oceanbase-1.4.60-1571952.el7.x86_64.rpm -rwxr-xr-x 1 admin admin 5.4M May 11 2018 obproxy-1.3.3-1506155.el7.x86_64.rpm 这两个文件就是我们后面安装需要的。一个是observer的安装包,一个是obproxy的安装包。 由于环境的权限限制,服务器之间不能直接打通ssh通道,并且默认也不允许开启80端口和图形化界面,导致我无法使用官网推荐的2种方式安装。于是,我就一步步从命令行下安装OceanBase集群。从这个步骤里也可以看出一些OceanBase的原理。 实际过程并不复杂,很容易掌握。 部署要求 项目 描述 机型要求 建议物理机。如果是vmware虚拟出来的虚拟机也行,只是cpu、内存和磁盘不要太低。 操作系统 推荐redhat 7.2, centos 7.2 。 7.x 应该也可以。具体问题具体分析。 内存 推荐64G以上,生产环境建议256G以上。如果只是研究功能 8G以上。比这个还小,后面使用不熟悉的话,会误以为有很多问题。 磁盘 推荐普通ssd即可,生产环境也不需要高密度ssd盘。如果只是研究功能,用sata或sas也行。就是性能会不怎么好(其他数据库同理)。 磁盘空间 内存的4倍以上。生产环境建议1T以上。 如果只是研究功能,至少也要100G以上。比这个还小,后面使用不熟悉的话,会误以为有问题。 文件系统 ext4, xfs都可以。 网卡 推荐千兆互联以上。生产环境建议万兆互联。节点间的网络延时对OB的性能会有很大影响,所有的分布式产品都如此。 CPU 至少16核以上,生产环境建议32核以上。cpu太少,没法体验OB的多租户功能。 3. OS环境准备 这里就参见官方文档 修改操作系统配置 ,挑几个重要的提一下。 ulimit用于限制shell启动进程所占用的资源。有两种方法可以修改资源限制,一种是通过启动时session级别指定,另外一种是修改/etc/security/limits.conf配置文件,全局生效。 OBServer进程涉及的几个限制包括线程最大栈空间大小(stack),最大文件句柄数(openfiles),core文件大小(core file size)。 [size=font-size: 10.5pt,10.5pt]$vi /etc/security/limits.conf添加 [size=font-size: 10.5pt,10.5pt]*  soft  nofile  655350 [size=font-size: 10.5pt,10.5pt]*  hard  nofile  655350 [size=font-size: 10.5pt,10.5pt]*  soft  stack 20480 [size=font-size: 10.5pt,10.5pt]*  hard stack 20480 [size=font-size: 10.5pt,10.5pt]* soft nproc 655360 [size=font-size: 10.5pt,10.5pt]* hard nproc 655360 [size=font-size: 10.5pt,10.5pt]*  soft  core unlimited [size=font-size: 10.5pt,10.5pt]*  hardcore unlimited 稍微提一下的是目录准备。每个节点都会写数据和日志。根据经验数据和日志盘在底层要分离。如果能在raid层面隔离是最好的。如果做不好,那就用LVM在逻辑层面做隔离(即做不同的LV) 下面是我的环境 $sudo lvs -a LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data vgob -wi-ao---- 10.97t log vgob -wi-ao---- 1.05t $cat /etc/fstab LABEL=log1 /data/log1 ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0 LABEL=data1 /data/1 xfs defaults,noatime,nodiratime,barrier=0 0 0 sysctl.conf修改 for oceanbase net.core.somaxconn = 2048 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 16777216 net.core.wmem_default = 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.ip_local_port_range = 3500 65535 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_slow_start_after_idle=0 vm.swappiness = 0 kernel.core_pattern = /data/1/core-%e-%p-%t vm.min_free_kbytes = 2097152 vm.max_map_count=655360 机器准备 IP Zone 描述 xxx.xxx.171.187 zone1 observer 节点,rootservice 所在机器之一 xxx.xxx.241.129 zone1 observer 节点 xxx.xxx.240.24 zone2 observer 节点,rootservice 所在机器之一 xxx.xxx.241.145 zone2 observer 节点 xxx.xxx.241.125 zone3 observer 节点,rootservice 所在机器之一 xxx.xxx.241.159 zone3 observer 节点 xxx.xxx..242.22 NA obproxy 机器,一台就够了,可以部署多台,也可以复用 observer节点。 zone 是对机器的划分。一个oceanbase集群的机器至少划分为三个zone。通常数据至少有三份,分布在每个zone里面。二、安装启动OBServer 安装软件包 OceanBase是一个集群,但是安装却很简单,只需要在每个节点安装一个observer的rpm包(有2个依赖包 snappy和lzo需要先安装一下),然后启动即可。 $sudo yum -y install snappy lzo $sudo rpm -ivh oceanbase-1.4.60-1571952.el7.x86_64.rpm 准备数据库目录 在启动 OBServer之前,需要准备一些数据目录。并且启动用户建议是 admin。 admin需要sudo权限。假设我要搭建的数据库集群叫 obdemo 。下面目录里会用到这个名字。 关于目录结构不多解释,待OB集群搭建成功后大家可以再去研究其目录。 su - admin mkdir -p /data/1/obdemo/ cd /data/1/obdemo/ mkdir -p etc3 sort_dir sstable mkdir -p /data/log1/obdemo/ cd /data/log1/obdemo/ mkdir -p clog etc2 ilog oob_clog slog mkdir -p /home/admin/oceanbase/store/obdemo cd /home/admin/oceanbase/store/obdemo/ ln -s /data/1/obdemo/sort_dir /home/admin/oceanbase/store/obdemo/sort_dir ln -s /data/1/obdemo/sstable /home/admin/oceanbase/store/obdemo/sstable ln -s /data/log1/obdemo/clog /home/admin/oceanbase/store/obdemo/clog ln -s /data/log1/obdemo/ilog /home/admin/oceanbase/store/obdemo/ilog ln -s /data/log1/obdemo/oob_clog /home/admin/oceanbase/store/obdemo/oob_clog ln -s /data/log1/obdemo/slog /home/admin/oceanbase/store/obdemo/slog $ls -lrth /home/admin/oceanbase/store/obdemo/ total 0 lrwxrwxrwx 1 admin admin 23 Oct 6 21:10 sort_dir -> /data/1/obdemo/sort_dir lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 sstable -> /data/1/obdemo/sstable lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 clog -> /data/log1/obdemo/clog lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 ilog -> /data/log1/obdemo/ilog lrwxrwxrwx 1 admin admin 26 Oct 6 21:10 oob_clog -> /data/log1/obdemo/oob_clog lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 slog -> /data/log1/obdemo/slog 从这个目录结构里就可以看出数据和日志是分开存储了。 启动observer 此前规划的6台机器,分属于3个zone。 启动参数 大部分相同,只是zone的名字要改一改。 $bin/observer --help bin/observer --help observer [OPTIONS] -h,--help print this help -z,--zone ZONE zone -p,--mysql_port PORT mysql port -P,--rpc_port PORT rpc port -N,--nodaemon don't run in daemon -n,--appname APPNAME application name -c,--cluster_id ID cluster id -d,--data_dir DIR OceanBase data directory -i,--devname DEV net dev interface -o,--optstr OPTSTR extra options string -r,--rs_list RS_LIST root service list -l,--log_level LOG_LEVEL server log level 所有zone1 机器的observer启动命令: cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "datafile_disk_percentage=50,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" 高亮部分都是可以改的。在没有理解之前不要修改。 -n 指定的 appname,就是集群名,后面都会用到。 -r 后面列表里的ip 就是被选为rootservice的三台机器ip。 observer的启动目录必须是 /home/admin/oceanbase 。所以cd 那个命令不要忘记了。 datafile_disk_percentage=50 这个比例可以调整,默认是90(表示90%的磁盘分区空间会被OB占用)。如果你的磁盘空间想留一点给其他应用用。就缩小这个比例。当data和log目录是共用的时候,更要调小这个比例。否则observer启动会因为clog空间不足而失败。 $ps -ef | grep observer admin 62603 1 99 Oct06 ? 2-00:59:16 /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881 -c 2018100601 -n obdemo -o config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2 admin 108165 61410 0 11:30 pts/1 00:00:00 grep --color=auto observer 所有zone2 机器的启动命令: cd /home/admin/oceanbase && bin/observer -i bond0 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" ps -ef | grep observer 所有zone3机器的启动命令 cd /home/admin/oceanbase && bin/observer -i bond0 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" ps -ef | grep observer 此时,只是在每个机器上启动了observer,还并没有形成一个OceanBase集群。后面会初始化一个OceanBase集群。 备注:上面每个observer的启动参数很长,实际上只有第一次启动的时候需要这么写。等后面初始化OceanBase集群成功后,每个observer会自动把它所有参数写到一个配置文件里。默认在 /home/admin/oceanbase/etc/observer.config.bin 里, 这个配置文件很重要,所以observer允许额外通过参数config_additional_dir 指定存储多份,类似于oracle的控制文件。 三、初始化OceanBase集群 前面在每个机器节点上都启动了一个observer,其参数独特之处是都指定了一个 rootservice list。 -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' 这里面有3个ip,是被设计为存储rootservice 的机器。 在初始化oceanbase集群之前,这三台机器里至少有两台机器的observer必须启动,并且以同样的参数启动。初次安装我们默认三台机器的observer都启动了。 清空所有数据文件(第一次不需要) pkill observer 等待几秒钟 /bin/rm /home/admin/oceanbase/log/log cd /data/log1/obdemo && /bin/rm -rf clog etc2 ilog oob_clog slog mkdir clog etc2 ilog oob_clog slog cd /data/1/obdemo && /bin/rm -rf etc3 sort_dir sstable mkdir etc3 sort_dir sstable ll ~/oceanbase/store/obdemo 这个命令是用于清空数据文件,重新执行后面步骤。第一次做的时候不需要(没有历史数据文件)。要做的时候,需要先到所有observer机器上 kill掉 observer,再跑该脚本。 登录observer 选rootservice里任意一个机器登录,登录observer $mysql -h127.1 -uroot -P2881 -p 空密码 此时进来之后,还不能执行 show database命令,因为元数据还没有构建好。 执行 bootstrap 然后在mysql命令行下执行 bootstrap mysql>alter system bootstrap ZONE 'zone1' SERVER 'xxx.xxx.171.187:2882', ZONE 'zone2' SERVER 'xxx.xxx.240.24:2882', ZONE 'zone3' SERVER 'xxx.xxx.241.125:2882'; 这个命令通常几秒钟就返回了。如果没有返回或者很久以后报错timeout了,那说明前面有observer启动参数指定不对。看看是不是zone名称不对,或者rootservicelist里的ip和port跟 -P和-p 指定的port不一致等等。 找到原因解决问题后,执行第1步清空历史数据文件,重头来过。 这一步成功后,一个 1-1-1的OceanBase集群就初始化成功了。此时退出mysql命令行,重新登录的时候就要换下面命令了。 $mysql -h127.1 -uroot@sys -P2881 oceanbase -p 空密码 MySQL [oceanbase]> show databases; +--------------------+ | Database | +--------------------+ | oceanbase | | information_schema | | mysql | | test | +--------------------+ 然而我准备了6台机器用于部署oceanbase集群,所以还需要把其他三台机器加入到 当前集群里。也就是扩容命令了。 扩容oceanbase集群 ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE=’zone_name’]; mysql> alter system add server 'xxx.xxx.241.129:2882' zone='zone1'; mysql> alter system add server 'xxx.xxx.241.145:2882' zone='zone2'; mysql> alter system add server 'xxx.xxx.241.159:2882' zone='zone3'; 注意端口号只需要指定 rpc port(2882), 以及zone不要加错。 加成功后,查看当前server列表 MySQL [oceanbase]> select zone,svr_ip,svr_port,with_rootserver ,build_version from __all_server order by zone, with_rootserver desc; +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ | zone | svr_ip | svr_port | with_rootserver | build_version | +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ | zone1 | xxx.xxx.171.187 | 2882 | 1 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone1 | xxx.xxx.241.129 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone2 | xxx.xxx.240.24 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone2 | xxx.xxx.241.145 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone3 | xxx.xxx.241.125 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone3 | xxx.xxx.241.159 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ 6 rows in set (0.00 sec) 备注:上面默认root@sys密码是空,生产环境一定要设置复杂密码。 MySQL [oceanbase]> alter user root identified by 'root';四、安装启动反向代理OBProxy 前面装好了一个 2-2-2的OceanBase集群,但是客户端要连接这个数据库集群,前面那种连接方式还不够好。因为要考虑到某个observer节点宕机问题。直连这个observer肯定不好。 此外,由于OceanBase是一个分布式数据库,数据可能分布在多个节点上,但具体在哪个机器上客户端是不知道的,所以需要一个反向代理OBProxy 来负责数据访问路由。 理论上obproxy可以安装在任何机器上。如安装在observer上,或者独立的机器上,或者应用服务器上。并且obproxy由于只做路由功能,非常轻量,无状态,支持安装多个obproxy。安装多个obproxy的时候,可以再前面再通过负载均衡机制(F5或者lvs,slb等)做一个vip,肩负起 obproxy的高可用和负载均衡作用。这样就不怕某个obproxy挂掉或者压力过大了。 安装obproxy rpm包 sudo rpm -ivh obproxy-1.3.3-1506155.el7.x86_64.rpm 目录权限改到admin用户下。 chown -R admin.admin /opt/taobao/install/obproxy 初始化obproxy用户 mysql> CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ; mysql> GRANT SELECT ON . to proxyro; proxyro是个连接observer的只读帐号,obproxy会用到这个帐号。 启动obproxy 第一次启动obproxy的时候,也需要指定一些参数。如rootservice 列表。以及指定监听端口(2883,也可以写别的任意端口,不跟已有端口冲突即可) cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.171.187:2881; xxx.xxx.240.24:2881; xxx.xxx.241.125:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false" -c obdemo 查看日志确认是否有异常。 cd /opt/taobao/install/obproxy tail -f log/obproxy.进程号.log 通过obproxy连接一下OceanBase集群 $mysql -h xxx.xxx.242.22 -uroot@sys#obdemo -P2883 -p oceanbase 或者 $mysql -h xxx.xxx.242.22 -uobdemo:sys:root -P2883 -p oceanbase 可以看出 跟连接mysql很像,区别在于 user的格式。 oceanbase的user格式是 “用户名@租户名#集群名” 或者 "集群名:租户名:用户名“ 等。五、分配租户(实例) 前面用6台机器搭建了一个2-2-2的OceanBase集群。现在某个应用需要申请一个数据库。我们并不会直接把这个OceanBase集群给到应用使用。 实际上刚初始化的OceanBase集群默认只有一个sys租户,其规格很小(cpu/memory/disk)。 MySQL [oceanbase]> select * from __all_unit_config where name='sys_unit_config'; +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ | gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num | +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ | 2018-10-06 21:05:49.881126 | 2018-10-06 21:05:49.881126 | 1 | sys_unit_config | 5 | 2.5 | 19423884214 | 16186570178 | 10000 | 5000 | 18578870894592 | 9223372036854775807 | +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ 1 row in set (0.00 sec) 这个sys租户只有 2.5-5个cpu,15-18 G内存的规格。 所以要给业务帐号单独分配一个租户。这也是OceanBase使用的正确姿势。 有关租户、资源池等概念,详情参见 OceanBase开发和运维漫谈 创建资源池规格 create resource unit unit_2c10g512g, max_cpu=2, max_memory='10G', min_memory='10G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=536870912; create resource unit unit_4c20g1024g, max_cpu=4, max_memory='20G', min_memory='20G', max_iops=20000, min_iops=5000, max_session_num=1000000, max_disk_size=1073741824; create resource unit unit_8c40g2048g, max_cpu=8, max_memory='40G', min_memory='40G', max_iops=50000, min_iops=10000, max_session_num=1000000, max_disk_size=2147483648; 查看资源规格 select * from __all_unit_config; 因为我的测试机器都是物理机,cpu和内存很大,所以我的多个规格定义的资源都比较大。大家可以根据自己情况修改。 分配资源池 create resource pool pool_demo unit = 'unit_16c50g4096g', unit_num = 1; select * from __all_resource_pool order by resource_pool_id desc ; 资源池分配后,只有创建租户并关联它才可以被使用。 创建租户 create tenant t_obdemo resource_pool_list=('pool_demo'); ---- alter tenant t_obdemo set variables ob_tcp_invited_nodes='xxx.xxx.0.0/16,127.0.0.1'; 租户名可以自定义。 注释的alter语句是设置租户连接的白名单,安全性跟高。不过只有在1.4.7版本以后才有。 新租户默认root密码为空。老规矩,首先改密码。 mysql -h xxx.xxx.242.22 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p alter user root identified by 'root'; 创建应用数据库和帐号 create database sbtest; grant all privileges on sbtest.* to sbuser@'%' identified by 'sbtest'; 连接应用数据库 mysql -h127.1 -usbuser@t_obdemo#obdemo -P2883 sbtest -A -psbtest MySQL [sbtest]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | sbtest | +--------------------+ 2 rows in set (0.02 sec) 总结 OceanBase的安装首先是在各个机器上安装并启动observer,第一次启动时指定rootservice list和相关参数。初始化OceanBase集群。成功后,就可以逐台机器 重启一下observer。关闭方式就是 pkill 或者kill。 着急的话就kill -9 。 启动方式就是 cd /home/admin/oceanbase; bin/observer 第二次启动不需要指定参数,参数都在参数文件里。初始化proxyro用户。安装obproxy软件并启动。第一次启动也要指定rootservice和相关参数。启动成功后可以重启obproxy。关闭方式就是pkill或者kill。启动方式就是 cd /opt/taobao/install/obproxy; bin/obproxy 第二次启动不需要指定参数,参数都在参数文件里。分配资源创建租户在租户里创建业务数据库和帐号。
游客2q7uranxketok 2021-02-24 11:12:22 0 浏览量 回答数 0

回答

使本文介绍使用 Jenkins 构建 SAE 应用的持续集成。 前提条件 在开始持续集成之前,需要完成下述的准备工作。 获取阿里云的 Access Key ID 和 Access Key Secret。 使用已经开通了 SAE 服务的主账号登录阿里云官网。 进入 Access Key 控制台,创建 Access Key ID 和 Access Key Secret。EDAS使用 Jenkins 创建持续集成01 在使用 Jenkins 自动部署应用之前,需要先在 SAE 控制台中创建一个可以部署的应用。 登录 SAE 控制台。 参考应用部署概述,部署应用。 在左侧导航栏中单击应用管理。找到您在上一步中创建的应用并单击进入详情页面,获取应用 ID 的字段内容。在SAE控制平台获取应用ID 使用 GitLab 托管您的代码。您可以自行搭建 Gitlab 或者使用阿里云 Code。 本文使用通过自行搭建的 GitLab 做演示,关于 Gitlab 的更多信息请参考 GitLab。 了解并使用 Jenkins。关于 Jenkins 的更多详细信息请参考 Jenkins 官网。 背景信息 使用 Jenkins 可以构建 SAE 应用的持续集成方案。该方案涉及下面的计算机语言或开发工具,阅读本文需要对下述的语言或工具有一定的理解。 工具 说明 Maven Maven 是一个项目管理和构建的自动化工具。 Jenkins Jenkins是一个可扩展的持续集成引擎。 GitLab GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。 它拥有与 GitHub 类似的功能,能够浏览源代码,管理缺陷和注释。 配置项目 参考通过 toolkit-maven-plugin 插件自动化部署应用修改项目配置,添加 toolkit-maven-plugin 及部署信息。您在修改完项目配置后,建议在本地使用 Maven 构建验证配置是否正确。 安装和配置 Jenkins 进入 Jenkins 官网下载安装 Jenkins。 在 Jenkins 控制台的菜单栏中选择系统管理 > 插件管理,安装 Git 和 GitLab 插件。 安装 GIT Client Plugin 和 GIT Plugin 插件可以帮助 Jenkins 拉取 Git 仓库中的代码。 安装 Gitlab Hook Plugin 插件可以帮助 Jenkins 在收到 Gitlab 发来的 Hook 后触发一次构建。 安装和配置 Jenkins 安装 Maven 构建工具,请参见 Maven 官网。 在 Jenkins 控制台的菜单栏中选择系统管理 > 全局工具配置,选择 Maven 版本名称并配置路径。 Jenkins 控制台设置Maven 在 Jenkins 服务器上生成 SSH RSA 密钥对,并将公匙导入 GitLab,实现 Jenkins 拉取 GitLab 代码时自动认证。 参考 GitLab 文档,在 Jenkins 服务器运行 Jenkins 软件的用户下,生成 SSH RSA 密钥对。 EDAS在 Jenkins 服务器运行 Jenkins 软件的用户下,生成 SSH RSA 密钥对 进入 GitLab 首页,在菜单栏选择Settings > Deploy Keys ,并单击 new deploy key 添加 key,导入在Jenkins服务器上创建的SSH RSA公匙。 EDAS使用Jenkins在gitlab导公钥1EDAS使用Jenkins在gitlab导公钥2 创建 Jenkins 任务。 在 Jenkins 首页左侧导航栏中单击新建,创建 Jenkins 任务,并选择构建一个自由风格的软件项目。 EDAS使用Jenkins集成之创建项目 在 源码管理 页面中选择 Git,并设置相关参数。 Repository URL:您的项目的 Git 协议地址。 Credentials:安全凭证,选择无即可(前提是运行 Jenkins 软件的用户的 SSH RSA 公匙已添加到该 Git 项目所在的 GitLab 中,否则这里会报错)。 EDAS使用Jenkins集成之源码管理 单击构建触发器页签,勾选轮询 SCM。 单击构建环境页签,勾选 Add timestamps to the Console Output(为控制台输出的信息添加时间戳)。 单击构建页签,然后单击增加构建步骤。 在调用顶层 Maven 目标区域设置 Maven 版本和目标。如果您想部署多模块工程,请参见创建多模块工程的 Jenkins 任务。 Maven Version:单击该选项后面的下拉框,选择在全局工具配置里配置的 Maven 版本名称。 Goals:填入 clean package toolkit:deploy (如有其它参数,请根据实际情况填入) EDAS使用Jekins集成之调用顶层 Maven 目标 配置 Gitlab 的 Web Hook,实现自动构建 右键单击 GitLab 工程,然后选择 Setting > Web Hooks。 在 Web Hooks 页面的在 URL 文本框中输入http://jenkins服务器地址:jenkins服务器监听端口/git/notifyCommit?url=本项目的git协议地址 例如:http://123.57.57.164:8080/git/notifyCommit?url=git@code.aliyun.com:tdy218/hello-edas.git 配置 Gitlab 的 Web Hook,实现自动构建 图中表示的 Jenkins 服务器地址为您的 Jenkins 服务器的 Web 访问地址如 http://123.57.57.164:8080。 配置完成后,单击 Test Hook,进行测试。 配置 Gitlab 的 Web Hook结果 配置正确后,提交变更到 GitLab 如果上述步骤配置正确,这次提交会触发一次 GitLab Hook。 Jenkins 在接受到这个 Hook 后会构建您的 Maven 项目,并在构建结束时调用 SAE POP API 脚本触发部署。 提交部署成功输出的日志信息(Build Number > 控制台输出)。 15:58:51 [INFO] Deploy application successfully! 15:58:51 [INFO] ------------------------------------------------------------------------ 15:58:51 [INFO] BUILD SUCCESS 15:58:51 [INFO] ------------------------------------------------------------------------ 15:58:51 [INFO] Total time: 24.330 s 15:58:51 [INFO] Finished at: 2018-12-25T15:58:51+08:00 15:58:51 [INFO] Final Memory: 23M/443M 15:58:51 [INFO] ------------------------------------------------------------------------ 15:58:51 Finished: SUCCESS 如果部署失败,可以登录 SAE 控制台 ,在左侧导航栏中单击应用管理 > 应用列表 ,在应用列表页面单击具体应用名称,进入应用详情页面。在左侧导航栏单击变更记录来查看此次部署任务的执行过程。 创建多模块工程的 Jenkins 任务 创建多模块工程的 Jenkins 任务和安装和配置 Jenkins第 5 步基本相同,只需要调整下调用顶层 Maven 目标。如果工程为多模块工程,想在 Jenkins 中部署子模块的话,那么需要在父模块中调用 mvn clean install 命令,然后在子模块中调用 mvn clean package toolkit:deploy 命令。以 Demo 工程为例,工程结构如下: sh-3.2# tree -L 1 carshop carshop ├── detail ├── itemcenter ├── itemcenter-api └── pom.xml 其中,detail、itemcenter、itemcenter-api 为子模块,现在想部署 itemcenter 模块的话,那么需要在父工程中设置一个 clean install 构建目标,然后在 itemcenter 模块中设置 clean package toolkit:deploy 构建目标。 创建多模块工程的 Jenkins 任务
1934890530796658 2020-03-27 13:10:36 0 浏览量 回答数 0

回答

生产环境中,SQL语句的执行计划经常会发生改变,导致数据库不稳定。阿里云利用Optimizer Hint和Index Hint让MySQL稳定执行计划,该方法称为Statement Outline,并提供了工具包(DBMS_OUTLN)便于您快捷使用。 前提条件 实例版本为RDS MySQL 8.0。 功能设计 Statement Outline支持官方MySQL 8.0的所有hint类型,分为如下两类: Optimizer Hint 根据作用域和hint对象,分为Global level hint、Table/Index level hint、Join order hint等。详情请参见MySQL官网。 Index Hint 根据Index Hint的类型和范围进行分类。详情请参见MySQL官网 Statement Outline表介绍 AliSQL内置了一个系统表(outline)保存hint,系统启动时会自动创建该表,无需您手动创建。这里提供表的创建语句供您参考: ​CREATE TABLE mysql.outline ( Id bigint(20) NOT NULL AUTO_INCREMENT, Schema_name varchar(64) COLLATE utf8_bin DEFAULT NULL, Digest varchar(64) COLLATE utf8_bin NOT NULL, Digest_text longtext COLLATE utf8_bin, Type enum('IGNORE INDEX','USE INDEX','FORCE INDEX','OPTIMIZER') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, Scope enum('','FOR JOIN','FOR ORDER BY','FOR GROUP BY') CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '', State enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y', Position bigint(20) NOT NULL, Hint text COLLATE utf8_bin NOT NULL, PRIMARY KEY (Id) ) /*!50100 TABLESPACE mysql */ ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0 COMMENT='Statement outline'​ 参数说明如下。 参数 说明 Id Outline ID。 Schema_name 数据库名。 Digest Digest_text进行hash计算得到的64字节的hash字符串。 Digest_text SQL语句的特征。 Type Optimizer Hint中,hint类型的取值为OPTIMIZER。 Index Hint中,hint类型的取值为USE INDEX、FORCE INDEX或IGNORE INDEX。 Scope 仅Index Hint需要提供,分为如下三类: FOR GROUP BY FOR ORDER BY FOR JOIN 空串表示所有类型的Index Hint。 State 本规则是否启用。 Position Optimizer Hint中,Position表示Query Block, 因为所有的Optimizer Hint必须作用到 Query Block上,所以,Position从1开始,hint作用在语句的第几个关键字上,Position就是几。 Index Hint中,Position表示表的位置, 也是从1开始,hint作用在第几个表上,Position就是几。 Hint Optimizer Hint中,Hint表示完整的hint字符串,例如/*+ MAX_EXECUTION_TIME(1000) */。 Index Hint中,Hint表示索引名字的列表, 例如ind_1,ind_2。 管理Statement Outline 为了便捷地管理Statement Outline,AliSQL在DBMS_OUTLN中定义了六个本地存储规则。详细说明如下: add_optimizer_outline 增加Optimizer Hint。命令如下: dbms_outln.add_optimizer_outline('<Schema_name>',' ','<query_block>',' ',' '); 说明 Digest和Query(原始SQL语句)可以任选其一。如果填写Query,DBMS_OUTLN会计算Digest和Digest_text。 示例: CALL DBMS_OUTLN.add_optimizer_outline("outline_db", '', 1, '/*+ MAX_EXECUTION_TIME(1000) /', "select * from t1 where id = 1"); add_index_outline 增加Index Hint。命令如下: dbms_outln.add_index_outline('<Schema_name>',' ', ,' ',' ',' ',' '); 说明 Digest和Query(原始SQL语句)可以任选其一。如果填写Query,DBMS_OUTLN会计算Digest和Digest_text。 示例: call dbms_outln.add_index_outline('outline_db', '', 1, 'USE INDEX', 'ind_1', '', "select * from t1 where t1.col1 =1 and t1.col2 ='xpchild'"); preview_outline 查看匹配Statement Outline的情况,可用于手动验证。命令如下: dbms_outln.preview_outline('<Schema_name>',' '); 示例: ​mysql> call dbms_outln.preview_outline('outline_db', "select * from t1 where t1.col1 =1 and t1.col2 ='xpchild'"); +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ | SCHEMA | DIGEST | BLOCK_TYPE | BLOCK_NAME | BLOCK | HINT | +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ | outline_db | b4369611be7ab2d27c85897632576a04bc08f50b928a1d735b62d0a140628c4c | TABLE | t1 | 1 | USE INDEX ( ind_1) | +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ 1 row in set (0.00 sec)​ show_outline 展示Statement Outline在内存中命中的情况。命令如下: dbms_outln.show_outline(); 示例: ​mysql> call dbms_outln.show_outline(); +------+------------+------------------------------------------------------------------+-----------+-------+------+-------------------------------------------------------+------+----------+-------------------------------------------------------------------------------------+ | ID | SCHEMA | DIGEST | TYPE | SCOPE | POS | HINT | HIT | OVERFLOW | DIGEST_TEXT | +------+------------+------------------------------------------------------------------+-----------+-------+------+-------------------------------------------------------+------+----------+-------------------------------------------------------------------------------------+ | 33 | outline_db | 36bebc61fce7e32b93926aec3fdd790dad5d895107e2d8d3848d1c60b74bcde6 | OPTIMIZER | | 1 | / + SET_VAR(foreign_key_checks=OFF) / | 1 | 0 | SELECT * FROM t1 WHERE id = ? | | 32 | outline_db | 36bebc61fce7e32b93926aec3fdd790dad5d895107e2d8d3848d1c60b74bcde6 | OPTIMIZER | | 1 | /+ MAX_EXECUTION_TIME(1000) / | 2 | 0 | SELECT * FROM t1 WHERE id = ? | | 34 | outline_db | d4dcef634a4a664518e5fb8a21c6ce9b79fccb44b773e86431eb67840975b649 | OPTIMIZER | | 1 | /+ BNL(t1,t2) / | 1 | 0 | SELECT t1 . id , t2 . id FROM t1 , t2 | | 35 | outline_db | 5a726a609b6fbfb76bb8f9d2a24af913a2b9d07f015f2ee1f6f2d12dfad72e6f | OPTIMIZER | | 2 | /+ QB_NAME(subq1) / | 2 | 0 | SELECT * FROM t1 WHERE t1 . col1 IN ( SELECT col1 FROM t2 ) | | 36 | outline_db | 5a726a609b6fbfb76bb8f9d2a24af913a2b9d07f015f2ee1f6f2d12dfad72e6f | OPTIMIZER | | 1 | /+ SEMIJOIN(@subq1 MATERIALIZATION, DUPSWEEDOUT) */ | 2 | 0 | SELECT * FROM t1 WHERE t1 . col1 IN ( SELECT col1 FROM t2 ) | | 30 | outline_db | b4369611be7ab2d27c85897632576a04bc08f50b928a1d735b62d0a140628c4c | USE INDEX | | 1 | ind_1 | 3 | 0 | SELECT * FROM t1 WHERE t1 . col1 = ? AND t1 . col2 = ? | | 31 | outline_db | 33c71541754093f78a1f2108795cfb45f8b15ec5d6bff76884f4461fb7f33419 | USE INDEX | | 2 | ind_2 | 1 | 0 | SELECT * FROM t1 , t2 WHERE t1 . col1 = t2 . col1 AND t2 . col2 = ? | +------+------------+------------------------------------------------------------------+-----------+-------+------+-------------------------------------------------------+------+----------+-------------------------------------------------------------------------------------+ 7 rows in set (0.00 sec)​ 关于HIT和OVERFLOW的说明如下。 参数 说明 HIT 此Statement Outline命中的次数。 OVERFLOW 此Statement Outline没有找到Query block或相应的表的次数。 del_outline 删除内存和表中的某一条Statement Outline。命令如下: dbms_outln.del_outline( ); 示例: ​mysql> call dbms_outln.del_outline(32); 说明 如果删除的规则不存在,系统会报相应的警告,您可以使用show warnings;查看警告内容。 ​mysql> call dbms_outln.del_outline(1000); Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> show warnings; +---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 7521 | Statement outline 1000 is not found in table | | Warning | 7521 | Statement outline 1000 is not found in cache | +---------+------+----------------------------------------------+ 2 rows in set (0.00 sec)​ flush_outline 如果您直接操作了表outline修改Statement Outline,您需要让Statement Outline重新生效。命令如下: dbms_outln.flush_outline(); 示例: mysql> update mysql.outline set Position = 1 where Id = 18; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 ​mysql> call dbms_outln.flush_outline(); Query OK, 0 rows affected (0.01 sec)​ 功能测试 验证Statement Outline是否有效果,有如下两种方法: 通过preview_outline进行预览。 mysql> call dbms_outln.preview_outline('outline_db', "select * from t1 where t1.col1 =1 and t1.col2 ='xpchild'"); +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ | SCHEMA | DIGEST | BLOCK_TYPE | BLOCK_NAME | BLOCK | HINT | +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ | outline_db | b4369611be7ab2d27c85897632576a04bc08f50b928a1d735b62d0a140628c4c | TABLE | t1 | 1 | USE INDEX (ind_1) | +------------+------------------------------------------------------------------+------------+------------+-------+---------------------+ 1 row in set (0.01 sec) 直接使用explain查看。 mysql> explain select * from t1 where t1.col1 =1 and t1.col2 ='xpchild'; +----+-------------+-------+------------+------+---------------+-------+---------+-------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+------+---------------+-------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t1 | NULL | ref | ind_1 | ind_1 | 5 | const | 1 | 100.00 | Using where | +----+-------------+-------+------------+------+---------------+-------+---------+-------+------+----------+-------------+ 1 row in set, 1 warning (0.00 sec) mysql> show warnings; +-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Note | 1003 | /* select#1 */ select outline_db.t1.id AS id,outline_db.t1.col1 AS col1,outline_db.t1.col2 AS col2 from outline_db.t1 USE INDEX (ind_1) where ((outline_db.t1.col1 = 1) and (outline_db.t1.col2 = 'xpchild')) | +-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
游客yl2rjx5yxwcam 2020-03-08 13:27:59 0 浏览量 回答数 0

回答

使用偏差检测可以识别在ROS管理之外进行配置更改的资源栈资源。您可以采取纠正措施,使资源栈资源再次与其在资源栈模板中的定义同步。例如直接更新存在偏差的资源,以便它们与其模板定义一致,或者通过模板修正功能直接修正模板。解决偏差有助于确保资源配置一致性。 即使您通过ROS管理您的资源,用户也可以在ROS之外更改这些资源。用户可以使用创建资源的底层服务直接编辑资源。例如,您可以使用ECS控制台来更新作为ROS资源栈一部分创建的服务器实例。 有些更改是偶然的,而有些更改会响应对时间敏感的操作事件。无论如何,在ROS之外进行的更改会使资源栈的更新或删除操作复杂化。使用偏差检测可以识别在ROS管理之外进行配置更改的资源栈资源。 主题 什么是偏差 偏差检测状态码 检测偏差时的注意事项 检测资源栈的偏差状态 检测资源的偏差状态 支持偏差检测的资源 检测资源栈组的偏差状态 什么是偏差 通过偏差检测,您可以检测资源栈的实际配置是否与其预期配置不同或已经存在偏差。使用ROS可以在整个资源栈或资源栈内的单个资源上检测偏差,您可以检测属性、资源是否被删除。如果某个资源的实际属性值与预期属性值不同,则认为该资源已经存在偏差。如果资源栈的一个或多个资源已经存在偏差,则认为资源栈已经存在偏差。 为了确定资源是否已经存在偏差,ROS将预期的资源属性值(如资源栈模板中所定义)指定为模板参数的值,并将预期值与这些资源属性的实际值进行比较。如果资源的一个或多个属性值被删除或修改,则认为该资源已经存在偏差。ROS将生成已经存在偏差的资源栈中每个资源的详细信息。 ROS仅在支持偏差检测的资源上检测偏差,不支持偏差检测的资源会显示NOT_CHECKED状态。详情请参考支持偏差检测的资源。 您可以在具有以下状态的资源栈上执行偏差检测:CREATE_COMPLETE、UPDATE_COMPLETE、ROLLBACK_COMPLETE 、ROLLBACK_FAILED和CHECK_COMPLETE。 当在资源栈上检测偏差时,ROS不会在任何属于该资源栈的嵌套资源栈上检测偏差。您也可以直接在嵌套资源栈上启动偏差检测操作。 注意 ROS仅通过资源栈模板或指定模板参数来确定属性值的偏差,这不包括资源属性的默认值。要使ROS跟踪资源属性以确定偏差,需要显示设置的属性值。 偏差检测状态码 以下给出了资源偏差状态的具体解释。 偏差检测操作状态:描述偏差操作的当前状态。 偏差状态。 资源栈组:根据属于资源栈组的资源栈实例的偏差状态来描述资源栈组的总体偏差状态。 资源栈实例:根据资源栈实例关联资源栈的偏差状态来描述资源栈实例的偏差状态。 资源栈:根据资源栈资源的偏差状态来描述资源栈的总体偏差状态。 资源偏差状态:描述单个资源的偏差状态。 下表列出了ROS分配给资源栈偏差检测操作的状态码。 资源偏差状态 描述 DELETED 资源与预期的模板配置不同,因为资源已被删除。 MODIFIED 资源与预期的模板配置不同。 NOT_CHECKED ROS没有检查资源是否与预期的模板配置不同。 IN_SYNC 资源的当前配置与其预期的模板配置相匹配。 下表列出了ROS分配给资源栈的偏差状态码。 偏差状态 描述 DRIFTED 资源栈:资源栈与其预期模板配置不同或已经存在偏差。如果资源栈的一个或多个资源已经存在偏差,则认为资源栈已经存在偏差。 资源栈实例:如果与资源栈实例关联的资源栈已经存在偏差,则认为该实例已经存在偏差。 资源栈组:如果一个或多个资源栈实例已经存在偏差,则认为资源栈组已经存在偏差。 NOT_CHECKED ROS尚未检查资源栈、资源栈组或资源栈实例是否与其预期模板配置不同。 IN_SYNC 偏差检测支持资源的当前配置与其预期的模板配置相匹配。 说明 不支持偏差检测的资源,其他资源栈、资源栈组或资源栈实例也具有IN_SYNC状态。 下表列出了ROS分配给资源栈资源的偏差代码。 偏差检测操作状态 描述 DETECTION_COMPLETE 已经对支持偏差检测的资源栈中的所有资源成功完成了资源栈偏差检测操作。 DETECTION_FAILED 资源栈偏差检测操作对于资源栈中的至少一个资源检测失败。 DETECTION_IN_PROGRESS 资源栈偏差检测操作目前正在进行中。 下表列出了ROS分配给与预期模板配置不同的资源属性的差异类型状态代码。 属性差异类型 描述 ADD 已将值添加到数据类型为数组或列表的资源属性。 REMOVE 属性已从当前资源配置中删除。 NOT_EQUAL 当前属性值与资源栈模板中定义的预期值不同。 检测偏差时的注意事项 为了在资源栈上成功执行偏差检测,用户必须具有以下权限: 支持在资源栈中包含的偏差检测的每个资源的读取权限。例如,如果资源栈包含ALIYUN::VPC::EIP资源,则您必须具有vpc:DescribeEipAddresses权限才能在资源栈上执行偏差检测。 如果需要对资源栈进行偏差检测,则需要具有ros:DetectStackDrift权限。 如果需要对资源进行偏差检测,则需要具有ros:DetectStackResourceDrift权限。 在某些情况下,ROS可能无法返回准确的偏差结果。您应该了解这些情况,以便正确解释您的偏差检测结果。 在某些情况下,属性数组中包含的对象将报告为偏差,而实际上它们是从负责该资源的底层服务提供给属性的默认值。 您可以在资源栈模板中指定某些资源属性。ROS无法将其与生成的资源栈资源中的属性进行比较,因此这些属性不能包括在偏差检测结果中。这些属性可分为四大类: ROS无法在资源栈模板中映射回初始资源属性值的属性值。 负责资源的服务不返回的属性值。 某些属性值被有意设计成永远不会由资源所属的服务返回。这些属性值往往包含机密信息,例如密码或其他不应泄露的敏感数据。 ROS尚未支持的资源属性。 资源的属性究竟是否支持偏差检查,可以通过GetResourceType接口查询。以查询ALIYUN::ESS::ScalingRule资源的返回值为例,最外层的SupportDriftDetection字段表明资源是否支持偏差检查。如果取值为true,表明资源支持偏差检查,此时每个属性都有SupportDriftDetection字段表明该属性是否支持偏差检查。 { "RequestId": "29C238D7-2D47-4689-966C-DAA80741E7EA", "Attributes": { "ScalingRuleAri": { "Description": "Unique identifier of a scaling rule." }, "ScalingRuleId": { "Description": "ID of a scaling rule, generated by the system and globally unique." } }, "ResourceType": "ALIYUN::ESS::ScalingRule", "Properties": { "ScalingRuleName": { "Immutable": false, "Type": "string", "Description": "Name shown for the scaling group, which is a string containing 2 to 40 English or Chinese characters. It must begin with a number, a letter (case-insensitive) or a Chinese character and can contain numbers, "_", "-" or ".". The account name in the same scaling group is unique in the same region. If this parameter value is not specified, the default value is ScalingRuleId.", "Constraints": [ { "AllowedPattern": "^[a-zA-Z0-9\u4e00-\u9fa5][-_.a-zA-Z0-9\u4e00-\u9fa5]{1,63}$" } ], "Required": false, "UpdateAllowed": true, "SupportDriftDetection": true }, "AdjustmentValue": { "Immutable": false, "Type": "integer", "Description": "Adjusted value of a scaling rule. Value range:\n- QuantityChangeInCapacity: [-500, 500]\n- PercentChangeInCapacity: [-100, 10000]\n- TotalCapacity: [0, 1000]", "Constraints": [ { "Range": { "Min": -500, "Max": 10000 } } ], "Required": false, "UpdateAllowed": true, "SupportDriftDetection": true }, "Cooldown": { "Immutable": false, "Type": "integer", "Description": "Cool-down time of a scaling rule. Value range: [0, 86,400], in seconds. The default value is empty.", "Constraints": [ { "Range": { "Min": 0, "Max": 86400 } } ], "Required": false, "UpdateAllowed": true, "SupportDriftDetection": true }, "ScalingGroupId": { "Immutable": false, "Type": "string", "Description": "ID of the scaling group of a scaling rule.", "Required": true, "UpdateAllowed": false, "SupportDriftDetection": true }, "AdjustmentType": { "Immutable": false, "Type": "string", "Description": "Adjustment mode of a scaling rule. Optional values:\n- QuantityChangeInCapacity: It is used to increase or decrease a specified number of ECS instances.\n- PercentChangeInCapacity: It is used to increase or decrease a specified proportion of ECS instances.\n- TotalCapacity: It is used to adjust the quantity of ECS instances in the current scaling group to a specified value.", "Constraints": [ { "AllowedValues": [ "QuantityChangeInCapacity", "PercentChangeInCapacity", "TotalCapacity" ] } ], "Required": true, "UpdateAllowed": true, "SupportDriftDetection": true } }, "SupportDriftDetection": true } 您可以在资源栈上执行偏差检测操作,以便确定资源栈是否已偏离其预期的模板配置,并返回有关支持偏差检测的资源栈中每个资源的偏差状态详情。 前提条件 请确保您已经创建资了源栈,操作方法请参见创建资源栈。 检测偏差(控制台) 登录ROS控制台 。 在左侧导航栏单击资源栈。 在资源栈列表中,单击资源栈名称下的ID。 在资源栈信息页,选择1>检测偏差。 说明 ROS会弹出提示窗口,说明已经为选定的资源栈启动偏差检测。 您一次只能在资源栈上运行一个偏差检测操作。 偏差检测操作可能需要几分钟,具体时间取决于资源栈中包含的资源数量,请耐心等待。即使您关闭信息窗口,ROS也会继续执行偏差检测操作。 查看偏差检测结果。 在资源栈信息页的基本信息中查看资源栈的偏差状态和上一次偏差检查时间。 在偏差检测页的资源栈偏移状态中查看资源栈的偏差状态和上一次偏差检查时间。 在偏差检测页的资源偏差状态中,单击资源名称右侧的查看偏差详细信息,查看资源物理ID、偏差状态、资源类型以及上一次偏差检查时间。 说明 如果资源栈的一个或多个资源已经存在偏差,则认为资源栈已经存在偏差。 检测偏差(ALIYUN CLI) 通过命令aliyun ros在资源栈上检测偏差。 命令 描述 DetectStackDrift 对资源栈启动偏差检测操作。 GetStackDriftDetectionStatus 监控资源栈偏差检测操作的状态。 ListStackResourceDrifts 查询资源栈偏差检测操作的详细信息。 使用DetectStackDrift可以在资源栈上检测偏差。您需要指定资源栈ID,以及用于此次偏差检测操作筛选条件的特定资源名称。 $ aliyun ros DetectStackDrift --StackId 4334b961-3bfd-419e-9a00-23a95e****** { "DriftDetectionId": "13b48934-6818-4765-8ae1-744241******", "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 由于资源栈偏差检测操作可能会长时间运行,请使用GetStackDriftDetectionStatus监控偏差操作的状态。此命令将获取DetectStackDrift返回的资源栈偏差检测ID。 在以下示例中,我们采用了如上DetectStackDrift示例返回的资源栈偏差检测ID,并将其作为参数传递给GetStackDriftDetectionStatus。此参数返回操作详细信息,显示偏差检测操作已完成。 $ aliyun ros GetStackDriftDetectionStatus --StackDriftDetectionId 13b48934-6818-4765-8ae1-744241****** { "RequestId": "52398D3A-E868-4F95-8B5E-6A2DFB778B16", "DriftDetectionTime": "2020-03-17T07:21:17", "DriftDetectionStatusReason": "Detect stack drift successfully", "DriftedStackResourceCount": 2, "DriftDetectionStatus": "DETECTION_COMPLETE", "StackDriftStatus": "DRIFTED", "DriftDetectionId": "13b48934-6818-4765-8ae1-744241******", "StackId": "4334b961-3bfd-419e-9a00-23a95e******" } 资源栈偏差检测操作完成后,使用ListStackResourceDrifts可以查看结果,包括经存在偏差的资源的实际和预期属性值。 $ aliyun ros ListStackResourceDrifts --StackId 4334b961-3bfd-419e-9a00-23a95e****** { "ResourceDrifts": [ { "ResourceDriftStatus": "MODIFIED", "LogicalResourceId": "Vpc1", "PropertyDifferences": [ { "ActualValue": "test11", "PropertyPath": "/Description", "ExpectedValue": "test1", "DifferenceType": "NOT_EQUAL" } ], "PhysicalResourceId": "vpc-m5euqfvmzygb7xq******", "ExpectedProperties": "{"CidrBlock": "192.168.0.0/16", "Description": "test1", "VpcName": "test1"}", "DriftDetectionTime": "2020-03-17T07:21:17", "ResourceType": "ALIYUN::ECS::VPC", "ActualProperties": "{"CidrBlock": "192.168.0.0/16", "Description": "test11", "VpcName": "test1"}", "StackId": "4334b961-3bfd-419e-9a00-23a95e******" }, { "ResourceDriftStatus": "DELETED", "LogicalResourceId": "Vpc2", "PhysicalResourceId": "vpc-m5exf3skxrxtvtk******", "DriftDetectionTime": "2020-03-17T07:21:17", "ResourceType": "ALIYUN::ECS::VPC", "StackId": "4334b961-3bfd-419e-9a00-23a95e******" } ], "RequestId": "8E1DE57B-6124-482B-8283-EF5562653308" } 您可以对资源栈上单个资源执行偏差检测操作,以便确定资源是否已偏离其预期的模板配置。 前提条件 请确保您已经在整个资源栈上进行了偏差检测,操作方法请参见检测资源栈的偏差状态。 检测偏差(控制台) 登录ROS控制台 。 在左侧导航栏单击资源栈。 在资源栈列表中,单击资源栈名称下的ID。 单击偏差检测。 在资源偏差状态中,单击资源名称右侧的检测资源偏差,检测单个资源的偏差状态。单资源检测 在资源偏差状态中,单击资源名称右侧的查看偏差详细信息,查看资源物理ID、偏差状态、资源类型以及上一次偏差检查时间。 检测偏差(ALIYUN CLI) 使用aliyun ros DetectStackResourceDrift在单个资源上检测偏差指定资源的逻辑ID,以及包含它的资源栈。 $ aliyun ros DetectStackResourceDrift --StackId 4334b961-3bfd-419e-9a00-23a95e****** --LogicalResourceId Vpc1 { "ResourceDriftStatus": "MODIFIED", "LogicalResourceId": "Vpc1", "PropertyDifferences": [ { "ActualValue": "test11", "PropertyPath": "/Description", "ExpectedValue": "test1", "DifferenceType": "NOT_EQUAL" } ], "RequestId": "A488767B-7440-4A74-81FD-BCF91A2EE1BB", "PhysicalResourceId": "vpc-m5euqfvmzygb7xq******", "ExpectedProperties": "{"CidrBlock": "192.168.0.0/16", "Description": "test1", "VpcName": "test1"}", "DriftDetectionTime": "2020-03-17T08:35:34", "ResourceType": "ALIYUN::ECS::VPC", "ActualProperties": "{"CidrBlock": "192.168.0.0/16", "Description": "test11", "VpcName": "test1"}", "StackId": "4334b961-3bfd-419e-9a00-23a95e******" } 本文介绍了支持偏差检测的资源类型。 说明 支持偏差检测的资源类型逐步增加中,敬请期待。 服务 资源 ECS ALIYUN::ECS::VPC ALIYUN::ECS::VSwitch ALIYUN::ECS::NatGateway ALIYUN::ECS::SecurityGroup ESS ALIYUN::ESS::ScalingRule ALIYUN::ESS::ScalingConfiguration ALIYUN::ESS::ScalingGroup ALIYUN::ESS::ScalingGroupEnable RAM ALIYUN::RAM::Role SLB ALIYUN::SLB::Listener ALIYUN::SLB::LoadBalancer ALIYUN::SLB::VServerGroup ALIYUN::SLB::BackendServerAttachment VPC ALIYUN::VPC::EIP ALIYUN::VPC::EIPAssociation 通过对资源栈组执行偏差检测,您可以确定属于该资源栈组的任何资源栈实例是否与它们的预期配置不同或已经存在偏差。 前提条件 请确保您已经创建资了源栈组,操作方法请参见创建资源栈组。 背景信息 ROS对资源栈组执行偏差检测时,会对与资源栈组中的每个资源栈实例关联的资源栈执行偏差检测。ROS将资源栈中的每个资源的当前状态与该资源的预期状态(通过资源栈的模板以及指定输入参数定义)进行比较,如果资源的当前状态不同于预期状态,则认为该资源已经存在偏差。 如果资源栈中的一个或多个资源已经存在偏差,则将资源栈本身视为已经存在偏差,并将与资源栈关联的资源栈实例也视为已经存在偏差。 如果资源栈组中的一个或多个资源栈实例已经存在偏差,则将资源栈组本身视为已经存在偏差。 偏差检测判定标准是是在ROS外部对资源栈进行的更改,直接通过ROS对资源栈进行的更改(而不是在资源栈组级别)不会被视为存在偏差。例如,假设您具有一个与资源栈组的资源栈实例关联的资源栈。如果您使用ROS更新该资源栈来使用不同模板,则不会被视为偏差,即使该资源栈现在具有与属于资源栈组的其他资源栈不同的模板。这是因为,该资源栈仍与它在ROS中的预期模板和参数配置相匹配。 在资源栈组偏差检测时,ROS会分别对资源栈组中的每个资源栈执行偏差检测,它在确定资源栈是否偏离时考虑所有覆盖的参数值。如果直接对与资源栈实例关联的资源栈执行偏差检测,则无法从资源栈组页面中查看这些偏差结果。 检测偏差(控制台) 登录ROS控制台 。 在左侧导航栏单击资源栈组。 在资源栈组列表中,单击资源栈组名称下的ID。 在详细信息页,选择1>检测偏差。资源栈组检测偏差 说明 ROS会弹出提示窗口,说明已经为选定的资源栈组启动偏差检测。 (可选)单击操作,找到偏差检测操作,单击查看偏差详细信息,可以监控偏差检测操作进度。 说明 您每次只能对给定资源栈组运行一次偏差检测操作。即使您关闭信息窗口,ROS也会继续执行偏差检测操作。 偏差检测操作可能需要几分钟,具体时间取决于资源栈组中包含的资源栈实例数量以及资源栈组中包含的资源数量。 单击实例,查看偏差检测结果。 在资源栈ID列查看与每个资源栈实例关联的资源栈ID,在偏差状态列查看该资源栈的偏差状态。如果资源栈的一个或多个资源已偏离,则认为资源栈已偏离。 要查看与特定资源栈实例关联的资源栈的偏差检测结果,您可以记录资源栈实例的阿里云账号、资源栈名称和地域,登录包含资源栈实例的阿里云账户查看偏差结果,详情请参考检测资源栈的偏差状态。 检测偏差(ALIYUN CLI) 使用aliyun ros在资源栈组上检测偏差。 命令 描述 DetectStackGroupDrift 对资源栈组启动偏差检测操作。 GetStackGroupOperation 监控资源栈组偏差检测操作的状态。 StopStackGroupOperation 停止资源栈组的偏差检查操作。 在偏差检测操作完成后,可以通过以下命令返回所需的偏差信息: 使用GetStackGroup返回有关资源栈组的详细信息,包括有关资源栈组上次完成的偏差操作的详细信息(不包括有关正在执行的偏差操作的信息)。 使用ListStackInstances返回属于资源栈组的资源栈实例列表,包括每个实例的偏差状态和上次偏差检查时间。 使用GetStackInstance返回有关特定资源栈实例的详细信息,包括其偏差状态和上次偏差检查时间。
1934890530796658 2020-03-24 18:33:48 0 浏览量 回答数 0

问题

MaxCompute快速入门:创建/查看/删除表

当您被添加到项目空间并被赋予建表等权限后,就可以操作 MaxCompute 了。由于在 MaxCompute 中的操作对象(输入、输出)都是表,所以在处理数据之前,首先要...
行者武松 2019-12-01 22:01:35 2553 浏览量 回答数 0

回答

回 3楼(莫有) 的帖子 您好, 请问您使用的系统是哪种Linux发行版呢?是CentOS 6吗? ------------------------- 回 5楼(莫有) 的帖子 您好, 好的,等我找到合适的测试机,再为您在CentOS7 系统里测试ipv6的隧道设置喔。 ------------------------- 回 5楼(莫有) 的帖子 您好, 为您写了这个CentOS 7的配置帖子,希望对您有帮助喔: https://bbs.aliyun.com/read.php?tid=285557 ------------------------- 回 10楼(非洲小犀牛) 的帖子 您好, 如果您的是Linux系统,可能需要先为系统启用ipv6的功能喔。请看这里的例子: https://bbs.aliyun.com/read/285557.html ------------------------- 回 12楼(猎马网) 的帖子 您好, 欢迎来到阿里云论坛。 IPv6测试不能通过的原因是什么呢?您在 http://ipv6-test.com/validate.php 里测试您的站点访问结果是什么呢? ------------------------- 回 14楼(猎马网) 的帖子 您好, 如本例中的,添加IPv6隧道地址的默认网关命令,应该是: netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:18:401::1 请问,您在做第5步时,是否有运行如上边类似的命令吗? ------------------------- 回 16楼(猎马网) 的帖子 您好, 您可以查看“网络连接”里对应的连接属性,估计可以直接修改的哩。 ------------------------- 回 19楼(猎马网) 的帖子 您好, 我在测试机里使用wget测试,好象正常: root@los:~/test4# wget -6 http://www.iliema.com/ converted 'http://www.iliema.com/' (ANSI_X3.4-1968) -> 'http://www.iliema.com/' (UTF-8) --2016-08-11 22:28:41--   http://www.iliema.com/ Resolving www.iliema.com (www.iliema.com)... 2001:470:1f14:b5f::2 Connecting to www.iliema.com (www.iliema.com)|2001:470:1f14:b5f::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 77636 (76K) [text/html] Saving to: 'index.html.3' ------------------------- 回 20楼(猎马网) 的帖子 您好, 应该可以如IPv4那样,多个域名指到相同的IPv6地址。 ------------------------- 回 24楼(很快) 的帖子 您好, 请问您的nginx web是安装在Windows还是Linux的系统上? ------------------------- 回 26楼(喵咪喵) 的帖子 您好, 欢迎来到阿里云论坛。 申请到IPv6的隧道地址后,还需要在系统里配置的,以让这个IPv6的地址能被外网的用户访问到喔。 ------------------------- 回 29楼(不断学习) 的帖子 您好, 请问您使用的操作系统是WIndows 2012吗? 请问您执行的netsh命令是和操作说明那里一样的吗? ------------------------- 回 31楼(喵咪喵) 的帖子 您好, 应该不影响,如果前两项检查测试通过,最后一条(IPv6-only)测试不通过,应该是可以的。 ------------------------- 回 34楼(wolfing5210) 的帖子 您好, 我在Linux系统上,能ping通您的IPv6地址: root@los:~# ping6 2001:470:35:102a::2 PING 2001:470:35:102a::2(2001:470:35:102a::2) 56 data bytes 64 bytes from 2001:470:35:102a::2: icmp_seq=1 ttl=119 time=225 ms 64 bytes from 2001:470:35:102a::2: icmp_seq=2 ttl=119 time=226 ms 如果您要测试,要具备两个条件, a. 在Windows系统里,应该是使用 ping -6 的参数 b. 发出测试的系统是启用了IPv6 ------------------------- 回 37楼(小成123456) 的帖子 您好, 抱歉延时回复。 请问您在系统里,执行 ipconfig /all 后,能看到输出信息中包含的ipv6 tunel信息吗? ------------------------- 回 39楼(呢你) 的帖子 您好, 抱歉给您带来不便。 请问苹果审核拒绝的原因是什么,是不能连接到ipv6地址吗? 请问您创建的ipv6隧道地址,测试时能从外网成功访问吗? ------------------------- 回 41楼(呢你) 的帖子 您好, 80端口测试是正常的,但好象web返回了错误。 建议您咨询一下您的 APP 程序员。 root@los:~/test# curl [2001:470:18:95c::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' J BossWeb/2.0.1.GA - Error report ------------------------- 回 44楼(nyanko桑) 的帖子 您好, 那请问您在例子中,第5步执行的命令是哪些呢? ------------------------- 回 45楼(小成123456) 的帖子 您好, 域名AAAA解析与IPv6隧道地址设置并不直接相关,如果您的IPv6隧道地址设置正确,从外网应该能ping通这个新设置的IPv6隧道地址。 ------------------------- 回 48楼(nyanko桑) 的帖子 您好, 好象命令看起来没有问题,您是从 HE 隧道地址设置网站里直接复制的,对吗? 那执行命令时,是否回显的结果是“确定”,还是有别的错误信息提示呢? ------------------------- 回 50楼(持名) 的帖子 您好, 那就奇怪了。 建议您回过头梳理一下,看看是否缺了哪个步骤或环境有哪些特殊的地方。 ------------------------- 回 52楼(nyanko桑) 的帖子 您好, 或许将原命令中的“add”(添加)改为“del”(删除)后,可以试试。  我个人猜测的。 ------------------------- 回 54楼(nyanko桑) 的帖子 您好, 好哩,到时如还没有解决问题,可通过站内信,发来临时的ECS登录信息,我为您看看喔。 ------------------------- 回 56楼(nyanko桑) 的帖子 您好, 申请到的IPv6隧道地址是不变的呀,除非您删除了。 ------------------------- 回 58楼(nyanko桑) 的帖子 您好, 好哩,祝愿您的APP能通过苹果的审核。 如还有疑问,欢迎跟帖。 ------------------------- 回 60楼(゛温ゝ先生) 的帖子 您好, 您在站内信里提到说“网络有重名”,现在系统里没成功添加ipv6地址吗? ------------------------- 回 61楼(陈cc123) 的帖子 您好, 一般AAA记录里,主机记录填写的是从HE申请到的IPv6隧道地址。 更新:应该是“记录值”里填写从he申请到的ipv6隧道地址。 ------------------------- 回 65楼(陈cc123) 的帖子 您好, 对不起,之前我的说法有错误。 按阿里云解析面板中,“主机记录”应该是您需要设置的网站访问地址,如我这里想设置 ipv6.anqun.org 的ipv6地址,“主机记录”里填写“ipv6”,而“记录值”里填写IPv6隧道地址:2001:470:18:401::2 ------------------------- 回 67楼(陈cc123) 的帖子 您好, 那请问您提交给 http://ipv6-test.com/ 测试的网址是什么呢? ------------------------- 回 69楼(陈cc123) 的帖子 您好, 页面 http://ipv6-test.com/validate.php 里提交的网址应该是一个域名网址,应该不能直接提交IPv6地址去测试的喔。 您可以在您的域名控制面板添加一条AAA记录的呀。 ------------------------- 回 72楼(陈cc123) 的帖子 您好, 能否使用如 netstat -noa | grep 80 的命令,来查看当前Web服务是否在ipv6地址监听使用呢? ------------------------- 回 74楼(陈cc123) 的帖子 您好, 图中没有显示IPv6相关的8080端口使用情况喔, 或许您可以运行 netstat -noa | grep 8080 再次确认一下。 ------------------------- 回 78楼(陈cc123) 的帖子 您好, 是的,不好意思,我忘记了您的系统是Windows,不是linux,所以不能直接用grep的命令。 现在从外网测试,您的tomcat站点是可以从ipv6地址访问了,但或许您将web从8080换到常用的80端口,方便访问。 root@los:~/test# curl [2001:470:18:ab3::2]:8080 -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 80楼(陈cc123) 的帖子 您好, 如果您提交给苹果审核就是带8080的IPv6地址,那可保持现状。 能否说一下具体您审核网址?如果按上边的测试结果来看,您的IPv6隧道地址是(曾)正常工作。 ------------------------- 回 82楼(陈cc123) 的帖子 您好, 现在从外网测试您给的网址,正常。 root@los:~/test# curl -6 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 root@los:~/test# curl 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 84楼(陈cc123) 的帖子 您好, 可能那个检测的站点,只能检测默认80端口的吧,具体到您这里,您是要写明8080端口的,所以那个测试网址可能不适用喔。 ------------------------- 回 87楼(xiaopao888) 的帖子 您好, 欢迎来到阿里云论坛。 能否请问在“命令提示符”里执行以下的命令,看输出结果有没有关于ipv6的80地址监听呢? netstat -noa | find "80" ------------------------- 回 88楼(莫尼玛) 的帖子 您好, 欢迎来到阿里云论坛。 如果您使用自己的环境来测试,需要确认您的环境是否支持ipv6使用环境喔,如您的telnet程序是否支持ipv6,您的网络是否支持ipv6。 我拿一个美国的vps来测试,也是可以成功连接到您的ipv6隧道地址: root@los:~/test# curl [2001:470:18:aa8::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Microsoft Internet Information Services 8 ------------------------- 回 91楼(xiaopao888) 的帖子 您好, 如果web没有在iPv6的网络接口上监听,请尝试调整一下web的配置文件喔,如让它在所有的可用网络接口里监听。 ------------------------- 回 93楼(莫尼玛) 的帖子 您好, 请问您在tcp 8300里提供的服务是web的吗? 如果是web服务,测试不成功喔: root@los:~# curl [2001:470:18:aa8::2:8300] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' root@los:~# ------------------------- 回 97楼(莫尼玛) 的帖子 您好, 好象用telnet测试8300 tcp 端口,不成功喔: root@los:~# telnet -6 2001:470:18:aa8::2 8300 Trying 2001:470:18:aa8::2... telnet: Unable to connect to remote host: Connection refused root@los:~# telnet -6 2001:470:18:aa8::2 80 Trying 2001:470:18:aa8::2... Connected to 2001:470:18:aa8::2. Escape character is '^]'. Connection closed by foreign host. ------------------------- 回 100楼(莫尼玛) 的帖子 您好, 如果您的socket程序默认不是在所有的端口上监听使用,是需要调整一下的喔。 或您使用 netstat -noa 的命令,查看一下都有哪些8300的端口在使用。 ------------------------- 回 102楼(莫尼玛) 的帖子 您好, 0.0.0.0 可能代表是IPv4的所有网络接口,不包括IPv6的啊。 请看这个云友以下的这个贴图,最后一行代表是IPv6的所有网络接口: ------------------------- 回 105楼(莫尼玛) 的帖子 您好, 好的,请稍等。 8310可以,8300也可以。 root@los:~# telnet -6 ht.yulesy.cn 8310 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. root@los:~# telnet -6 ht.yulesy.cn 8300 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. ------------------------- 回 109楼(涛涛~) 的帖子 您好, 如果您需要通过http访问位于两个不同服务器上的文件,或许是需要为这两个服务器都配置ipv6隧道地址喔。 ------------------------- 回 110楼(陌祥伟) 的帖子 您好, 我现在没测试机,不能具体为您查看输出结果, 您用 ipconfig 查看到的信息页面内容是怎么样的呢? ------------------------- 回 113楼(陌祥伟) 的帖子 您好, 请问您提到的“本地ping和telnet端口是通的”,是ping ipv6和telnet ipv6隧道地址都正常吗? ------------------------- 回 115楼(陌祥伟) 的帖子 您好, 我这里为您测试,也是ping6不通, 或许您需要再检查一下是否有防火墙或其它缺漏的环节没留意到: --- 2001:470:23:70d::2 ping statistics --- 65 packets transmitted, 0 received, 100% packet loss, time 64000ms ------------------------- 回 119楼(leyuwei) 的帖子 您好, 请问您的ipv6隧道地址是 2001:470:18:ecc::2 吗? 我从外网测试,返回是403的错误页: root@los:~# wget -6 http://[2001:470:18:ecc::2]:8080 converted 'http://[2001:470:18:ecc::2]:8080' (ANSI_X3.4-1968) -> 'http://[2001:470:18:ecc::2]:8080' (UTF-8) --2017-01-07 01:27:05--  http://[2001:470:18:ecc::2]:8080/ Connecting to [2001:470:18:ecc::2]:8080... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-01-07 01:27:09 ERROR 403: Forbidden. root@los:~# curl -6 'http://www.dlmunews.club:8080' <p align='center'>▒▒▒▒▒▒▒▒▒▒▒▒ַ▒▒▒▒▒޲▒ϣ▒▒▒▒▒▒ô▒▒▒▒▒▒▒▒°ɣ▒</p> <p align='center'>▒▒▒▒▒ִ▒▒▒▒ˣ▒▒▒▒▒▒޾▒Ҫ▒▒ȡһЩ▒ֶ▒▒ˣ▒</p> <br/> <p align='center'>403 FORBIDDEN</p> <p align='center'>▒▒▒▒▒▒˼▒▒▒▒▒▒▒뿴▒▒▒ҵ▒▒▒▒ӣ▒</p>root@los:~# ------------------------- 回 118楼(陌祥伟) 的帖子 您好, 我去找个Windows 2008的系统为您测试一下喔。 请等待。 ------------------------- Re:回 118楼(陌祥伟) 的帖子 您好, 我找个测试机(用的是Windows 2008 SP2 32位中文版公共镜像),重复操作了一次,好象正常哩: C:\Users\Administrator>netsh interface ipv6 show interface Idx  Met   MTU   状态          名称 ---  ---  -----  -----------  -------------------   1   50 4294967295  connected    Loopback Pseudo-Interface 1 15   10   1280  connected    IP6Tunnel 10   10   1500  connected    本地连接 22   50   1280  disconnected  本地连接* 12 23   50   1280  disconnected  本地连接* 13 11   10   1500  connected    本地连接 2 C:\Users\Administrator>ping -6 2001:470:18:401::2 正在 Ping 2001:470:18:401::2 从 2001:470:18:401::2 具有 32 字节的数据: 来自 2001:470:18:401::2 的回复: 时间<1ms 来自 2001:470:18:401::2 的回复: 时间<1ms 2001:470:18:401::2 的 Ping 统计信息:     数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 0ms,最长 = 0ms,平均 = 0ms Control-C ^C C:\Users\Administrator>ping -6 ipv6.google.com 正在 Ping ipv6.l.google.com [2404:6800:4008:800::200e] 从 2001:470:18:401::2 具 有 32 字节的数据: 来自 2404:6800:4008:800::200e 的回复: 时间=401ms 来自 2404:6800:4008:800::200e 的回复: 时间=400ms ------------------------- 回 122楼(leyuwei) 的帖子 您好, 在我使用的测试机里,能访问到您提供的网址内容喔,祝您通过APP的IPv6审核。 root@los:~/test# curl -6 'http://www.dlmunews.club:8080/dlmunews/test.html' test IPV6root@los:~/test# ------------------------- 回 125楼(陌祥伟) 的帖子 您好, 抱歉没有留意您的ECS网络类型, 弹性公网IP,看介绍说是一种NatIP,我不确定这与“经典网络”里的公网IP是否有一些使用限制情景, 建议您发工单咨询一下阿里云官方工程师: https://workorder.console.aliyun.com/ 本帖里的例子ECS是“经典网络”,并不是“专有网络”或“弹性公网IP”的使用场景喔。 ------------------------- 回 131楼(dearvitamin) 的帖子 您好, 测试得知,经典网络中的站点可以,专用网络中的站点不可以访问到喔。 root@los:~/test# curl -6 'http://www.spl258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' 斯普林游戏 root@los:~/test# curl -6 'http://www.longm258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' ------------------------- 回 133楼(vinny1024) 的帖子 您好, 欢迎来到阿里云论坛。 本例子里的Web是IIS,并不是apache喔。 请问您在apache的配置文件里,已经设置监听使得ipv6的地址和端口了吗? ------------------------- 回 136楼(raolan123) 的帖子 您好, 已有的云友反馈,不能按例子中的方法在”专有网络“中成功设置ipv6隧道地址。 ------------------------- 回 138楼(ekuns) 的帖子 您好, 欢迎来到阿里云论坛。 操作步骤,Windows 2012和Windows 2008应该是大致相同的。 请问您是否曾按帖子里的步骤,在Windows 2008里测试了呢? 如果您在Windows 2008里测试失败,我为您找个测试机来实践一下喔。 ------------------------- 回 140楼(poplanchong) 的帖子 您好, 如果是ipv6-only,可能还需要DNS解析之类支持的。 ------------------------- 回 142楼(poplanchong) 的帖子 您好, 欢迎来到阿里云论坛。 如果可以ping通ipv6的隧道地址,那么说明配置应该是成功的。 但如果您设置ipv6隧道地址目的是为了通过苹果的APP审核,还是要看苹果公司的判断结果喔。 祝您成功。 ------------------------- 回 144楼(poplanchong) 的帖子 您好, 很高兴听到您的APP已经通过苹果公司的审核。 我没有向苹果公司提交过APP审核,并没有实践的经验。所以我也不确定为什么苹果公司先后不同审核结果的原因。 您前后向苹果公司提交过几个网址用于审核? ------------------------- 回 146楼(没办法抽奖) 的帖子 您好, 我在测试机里, 可以ping通您提到的网关,但您的隧道地址ping不通喔, 是不是哪一步没有操作完整? root@los:~/test5# ping6 2001:470:1f04:a9e::2 PING 2001:470:1f04:a9e::2(2001:470:1f04:a9e::2) 56 data bytes --- 2001:470:1f04:a9e::2 ping statistics --- 41 packets transmitted, 0 received, 100% packet loss, time 39999ms root@los:~/test5# ping6 2001:470:1f04:a9e::1 PING 2001:470:1f04:a9e::1(2001:470:1f04:a9e::1) 56 data bytes 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=1 ttl=56 time=53.5 ms 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=2 ttl=56 time=53.8 ms ------------------------- 回 147楼(poplanchong) 的帖子 您好,   如此,我也不确定具体的原因了。不过,APP审核通过了,终究是件好事,是不是呢? ------------------------- 回 150楼(没办法抽奖) 的帖子 晚上好, 请问您的ECS操作系统是Windows 2012的吗? ------------------------- 回 152楼(l_zhaowei) 的帖子 您好, 请问您新购的ECS实例带宽类型是“专有网络”的吗? ------------------------- 回 153楼(l_zhaowei) 的帖子 您好, 暂时没有在“专有网络”实现IPv6隧道地址的方案喔,抱歉。 ------------------------- 回 157楼(鸿儒网络) 的帖子 您好, 看您的截图,或许需要先着重看一下,为什么“80端口不显示IPV6”, 请问您的站点绑定属性中,是否有IPv6的地址可以选择使用呢? ------------------------- 回 159楼(aeria) 的帖子 您好, 欢迎来到阿里云论坛。 请问您运行 netstat 的命令,可以查看到tomcat在ipv6的80端口上也有监听使用吗? ------------------------- 回 161楼(aeria) 的帖子 您好, 能贴一下您的tomcat配置文件 server.xml 的内容吗(监听那个环节的)? ------------------------- 回 164楼(aeria) 的帖子 您好, 或许您可以查看一下这个问答里提到的“authbind”: http://serverfault.com/questions/605684/tomcat-java-not-listening-on-ipv6 ------------------------- 回 167楼(aeria) 的帖子 您好, 那我去找个测试机,为您测试一下。 您的环境,是Windows 2012 + Tomcat 8 吗? ------------------------- 回 170楼(aeria) 的帖子 您好, 为您写了这个帖子,不知道是否对您有用: 《用ipv6隧道地址访问tomcat 站点内容》 - https://bbs.aliyun.com/read/312055.html ------------------------- 回 172楼(bingo_vc) 的帖子 您好, 欢迎来到阿里云论坛。 如果您的站点不需要域名访问,直接用ipv6隧道地址访问,应该也是可以的喔。 ------------------------- 回 174楼(clks) 的帖子 您好, 现在为您测试,可以访问得到页面喔: --2017-04-09 06:25:52--   http://www.meihaojiawodecheng.cn/ Resolving www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)... 2001:470:18:352::2, 116.62.37.108 Connecting to www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)|2001:470:18:352::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2241 (2.2K) [text/html] Saving to: 'index.html.3' ------------------------- 回 176楼(clks) 的帖子 您好, 在浏览器里,输入如 http://[2001:470:18:352::2]/ 的地址后,应该就能显示到站点内容了,有时可能需要刷新多几下。 ------------------------- 回 178楼(自由2017) 的帖子 您好, 抱歉延时回复。 请问您的ECS实例带宽类型是哪种,是“经典网络”还是“专有网络”呢? ------------------------- 回 179楼(l_zhaowei) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 182楼(l_zhaowei) 的帖子 您好, 有“经典网络”的选项,据云友们反馈,好象一些较早之前注册和使用的阿里云账户还可以在新购的ECS配置里选择“经典网络”的网络类型。 ------------------------- 回 183楼(lbmjsls) 的帖子 您好, 欢迎来到阿里云论坛。 是的,可以,您可以用一个已经有ICP备案的子域名来操作,如果您认为不会对您的业务带来负面影响的话。 ------------------------- 回 186楼(l_zhaowei) 的帖子 您好, 目前收到的反馈来看,并不是所有的阿里云账号可以选购到“经典网络”。 我并不清楚阿里云的具体购物车规则哩。 ------------------------- 回 188楼(自由2017) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 190楼(自由2017) 的帖子 您好, 已经站内信您喔。 ------------------------- 回 192楼(lbmjsls) 的帖子 您好, 都可以ping通,但返回的延时可能有些高。 root@los:~/test5# ping6 thls.qian178.com PING thls.qian178.com(lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=1 ttl=121 time=624 ms 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=622 ms --- thls.qian178.com ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 2000ms rtt min/avg/max/mdev = 622.017/623.254/624.492/1.467 ms root@los:~/test5# ping6 qian178.com PING qian178.com(lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=564 ms 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=3 ttl=121 time=563 ms ------------------------- 回 194楼(龙阁商务) 的帖子 您好, 欢迎来到阿里云论坛。 如果前两项测试通,那就可以了呀。 您是对哪里还不满意呢? ------------------------- 回 196楼(龙阁商务) 的帖子 您好, 苹果审核不限次数的吧? 期待您的审核结果喔。 ------------------------- 回 198楼(cloud_lee) 的帖子 您好, 在国外的IPv6环境中的服务器为您测试IPv6访问,是可以的喔: --2017-04-17 07:40:56--   http://www.zxwol.com/ Resolving www.zxwol.com (www.zxwol.com)... 2001:470:18:5cf::2 Connecting to www.zxwol.com (www.zxwol.com)|2001:470:18:5cf::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 135046 (132K) [text/html] Saving to: 'index.html.15' ------------------------- 回 204楼(龙阁商务) 的帖子 您好, 现在测试,可以访问喔。 --2017-04-18 03:48:45--   http://myjcb.hqzh168.com/ Resolving myjcb.hqzh168.com (myjcb.hqzh168.com)... 2001:470:a:ba4::2 Connecting to myjcb.hqzh168.com (myjcb.hqzh168.com)|2001:470:a:ba4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 34431 (34K) [text/html] Saving to: 'index.html.16' ------------------------- 回 206楼(hsy-ios) 的帖子 您好, 欢迎来到阿里云论坛。 现在看起来,您的ipv6隧道地址可以ping得通喔: PING 2001:470:18:600::2(2001:470:18:600::2) 56 data bytes 64 bytes from 2001:470:18:600::2: icmp_seq=1 ttl=121 time=557 ms 64 bytes from 2001:470:18:600::2: icmp_seq=2 ttl=121 time=567 ms 64 bytes from 2001:470:18:600::2: icmp_seq=3 ttl=121 time=574 ms ------------------------- 回 208楼(hsy-ios) 的帖子 您好, 请问是哪个ipv6地址呢? ------------------------- 回 210楼(hsy-ios) 的帖子 您好, --2017-04-20 22:41:23--  http://[2001:470:18:600::2]/ Connecting to [2001:470:18:600::2]:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://m.wnchebao.com/ [following] converted 'https://m.wnchebao.com/' (ANSI_X3.4-1968) -> 'https://m.wnchebao.com/' (UTF-8) --2017-04-20 22:41:24--   https://m.wnchebao.com/ Resolving m.wnchebao.com (m.wnchebao.com)... 2001:470:18:600::2 Connecting to m.wnchebao.com (m.wnchebao.com)|2001:470:18:600::2|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2017-04-20 22:41:27 ERROR 404: Not Found. ------------------------- 回 212楼(鸿儒网络) 的帖子 您好, 感谢您的经验分享喔。 如有更多的用户遇到类似的“延迟生效”现象,将添加相应的提示信息喔。 ------------------------- 回 214楼(北极星图图) 的帖子 您好, 如果tomcat没有在ipv6的网络地址上监听,您可以详细查看一下tomcat的配置文件喔, 这里有一个例子可以参考一下: https://bbs.aliyun.com/read/312055.html ------------------------- 回 215楼(潘飞虎) 的帖子 您好, 测试的话,您的ipv6隧道地址可以ping通,但ipv6的80连接超时,建议检查web服务的配置喔: PING 2001:470:18:6ae::2(2001:470:18:6ae::2) 56 data bytes 64 bytes from 2001:470:18:6ae::2: icmp_seq=1 ttl=121 time=564 ms 64 bytes from 2001:470:18:6ae::2: icmp_seq=2 ttl=121 time=565 ms --- 2001:470:18:6ae::2 ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 1999ms rtt min/avg/max/mdev = 564.291/565.080/565.870/1.090 ms root@los:~/test5# wget -6 http://[2001:470:18:6ae::2] converted 'http://[2001:470:18:6ae::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:6ae::2]' (UTF-8) --2017-04-26 14:02:36--  http://[2001:470:18:6ae::2]/ Connecting to [2001:470:18:6ae::2]:80... failed: Connection timed out. Retrying. ------------------------- 回 216楼(hzyt) 的帖子 您好, 欢迎来到阿里云论坛。 请问您ECS实例带宽类型是哪种呢,是“专有网络”吗? ------------------------- 回 220楼(潘飞虎) 的帖子 您好, 请问您的apache配置文件,如 httpd.conf 中,是否有监听ipv6的网络地址呢(如[::])? ------------------------- 回 221楼(永超科技) 的帖子 您好, 请问是否您多次运行了相同的netsh配置命令呢? ------------------------- 回 224楼(beijixingtu) 的帖子 您好, 现在访问您的站点,在ipv6访问中,应该是可以看到内容(或许是部分)的: ------------------------- 回 226楼(四眼鱼) 的帖子 您好, 抱歉延时回复, 请问您的ECS实例使用提“经典网络”的网络类型吗? ------------------------- 回 228楼(这是高科技) 的帖子 您好, 因为目前阿里云的“专有网络”类型的ECS实例限制,不能成功配置和使用6in4的IPv6隧道地址的。 使用外部的IPv6地址的VPS,虽然可以尝试,但也不一定能100%解决苹果APP上架的困扰。 ------------------------- 回 229楼(潘飞虎) 的帖子 您好, 可能还需要看具体的原因,苹果有没有具体说是因为什么而拒绝呢?还是因为IPv6的访问可用性吗? IPv6的DNS并不是必须的,如果您也想设置IPv6的DNS,可以参考这个帖子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 233楼(潘飞虎) 的帖子 您好, 嗯,或许您还可以具体说说,中国目前的公共互联网还没有实现IPv6,所以对于中国的APP很为难。 ------------------------- 回 234楼(beijixingtu) 的帖子 您好, 是的,如果可以,可以附上说明,目前中国的公共互联网没有实现IPv6,一般用户无法直接在IPv6的环境里完成完整测试。 ------------------------- 回 237楼(潘飞虎) 的帖子 您好, 苹果要求目前国内还没有完整布置的IPv6环境,是有些让普通人摸不着头脑。 那您现在的工作环境中,有具备测试条件吗?如Mac电脑和苹果手机。 ------------------------- 回 239楼(潘飞虎) 的帖子 您好, 文档中提到,即使是用Mac模拟ipv6的网络,但带宽的出口还是ipv4的。 或许您可以尝试建一个可访问ipv6的wifi环境试试,如网上看到有一些无线路由器或许可以“独特”地构建出来。 ------------------------- 回 240楼(xunchengweidao) 的帖子 您好, 欢迎来到阿里云论坛。 或许您当前使用的nginx没有编译对ipv6的支持喔。 ------------------------- 回 244楼(feng_li) 的帖子 您好, 欢迎来到阿里云论坛。 很乐意,为您ping6测试: PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=429 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=3 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=4 ttl=121 time=430 ms ------------------------- 回 246楼(feng_li) 的帖子 您好, 现在再次测试,还是能ping得通。 配置了ipv6的隧道地址,仅是说您的系统(服务器)可以通过隧道地址交换ipv6的数据,如能ping6通或浏览ipv6的网站。但这并不代表着您的APP一定可以支持ipv6的访问喔。建议您再对照着苹果对于APP的 IPv6 设计指导,看看是否有其它原因: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=434 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=434 ms ------------------------- 回 248楼(爱爱莫能助) 的帖子 您好, 欢迎来到阿里云论坛。 在系统里配置ipv6的命令在he的站点上有提供现成的喔。 ------------------------- 回 251楼(天下才子) 的帖子 您好, 为您查看,现在可以在浏览器里看到内容喔: ------------------------- 回 255楼(居然要昵称) 的帖子 您好, 欢迎来到阿里云论坛。 请问,如 ping ::1  会有哪些信息提示呢? ------------------------- 回 254楼(天下才子) 的帖子 您好, 请问您家里的宽带是哪家的呢,是中国电信的吗? ------------------------- 回 259楼(新飞) 的帖子 您好, 最后一项检测的对象是ipv6 dns server,这是与域名的解析DNS地址相关, 如果您需要,可能需要将域名的DNS地址更改为国外支持ipv6的。 ------------------------- 回 260楼(robin_tian) 的帖子 您好, 欢迎来到阿里云论坛, 看起来,http可以访问喔(但首页会提示404出错): converted 'http://api2.ihyoo.com' (ANSI_X3.4-1968) -> 'http://api2.ihyoo.com' (UTF-8) --2017-05-15 16:03:04--   http://api2.ihyoo.com/ Resolving api2.ihyoo.com (api2.ihyoo.com)... 2001:470:18:d6::2 Connecting to api2.ihyoo.com (api2.ihyoo.com)|2001:470:18:d6::2|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-05-15 16:03:06 ERROR 404: Not Found. ------------------------- 回 264楼(天下才子) 的帖子 您好, 如果在您的电脑上不能访问ipv6的网站,可以尝试通过这个在线网站测试一下(可能要用代理): www.ipv6proxy.net ------------------------- 回 267楼(jsrabbit) 的帖子 您好, 欢迎来到阿里云论坛。 看您的几个截图,出现了两个IPv6地址,2001:da8:20d:400::8be0:dd58 和 2001:470:18:b5::2, 如果 2001:470:18:b5::2 是正确的,现在测试是可以访问到80端口端的喔: converted 'http://[2001:470:18:b5::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:b5::2]' (UTF-8) --2017-05-17 13:50:44--  http://[2001:470:18:b5::2]/ Connecting to [2001:470:18:b5::2]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 107908 (105K) [text/html] Saving to: 'index.html' index.html                       100%[=========================================================>] 105.38K  20.0KB/s   in 5.3s ------------------------- 回 269楼(jsrabbit) 的帖子 您好, 个人觉得 IPv6 DNS Server 设置与否,影响不大。但您有空,也可以换一家支持IPv6的国外DNS商,如 dns.he.net。 ------------------------- 回 270楼(eric984) 的帖子 来自河源的朋友, 欢迎来到阿里云论坛。 如之前有云友提到,将HE提供的示例命令中,将公网IP换成私网IP,或许就可以了喔。 ------------------------- 回 273楼(通通优品) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在HE里提交的IP地址是什么呢? 一般是提交ECS实例的公网IP地址,并不是内网IP地址喔。 ------------------------- 回 275楼(通通优品) 的帖子 您好, 那能否再检查一下您的安全组规则设置呢(有没有过滤80端口)? 如果可以,或许您可以先尝试在规则里开放所有的访问,对比一下结果。 ------------------------- 回 277楼(通通优品) 的帖子 您好, 如果您多次尝试运行命令来绑定ipv6隧道地址,需要确认最后ipv6隧道地址是能从外网ping6通的喔,同时可以查看一下路由表是否正确。 ------------------------- 回 280楼(大男人主义) 的帖子 您好, 欢迎来到阿里云论坛。 祝您的APP能成功上架喔。 ------------------------- 回 282楼(仙人掌有刺) 的帖子 您好, 从现在的测试结果来看,好象您的域名AAAA解析没有生效或失败: converted 'http://m.dnanren.cn' (ANSI_X3.4-1968) -> 'http://m.dnanren.cn' (UTF-8) --2017-05-25 10:30:51--   http://m.dnanren.cn/ Resolving m.dnanren.cn (m.dnanren.cn)... failed: Name or service not known. wget: unable to resolve host address 'm.dnanren.cn' ------------------------- 回 284楼(葫芦娃警长) 的帖子 您好, 抱歉给您带来不便。 域名AAAA记录和ipv4的A记录是不互相影响的喔。 如果ping -6 外网的地址不通,那有可能是路由没配置好喔。 ------------------------- 回 287楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 现在好象我无法ping通您的ipv6隧道地址喔: PING 2001:470:1f10:124::2(2001:470:1f10:124::2) 56 data bytes --- 2001:470:1f10:124::2 ping statistics --- 13 packets transmitted, 0 received, 100% packet loss, time 11997ms ------------------------- 回 290楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 一般不需要重新申请第二个隧道地址喔。 建议您检查一下ipv6的路由情况。 ------------------------- 回 292楼(中广巨力) 的帖子 您好, 抱歉延时回复。 如果您ping -6 不通隧道地址的网关,可以检查一下ECS实例的安全组是否有限制访问: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 294楼(yan555) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在系统中执行的是哪些命令, 执行命令后,有哪些回显的信息呢? ------------------------- 回 298楼(lsfoo) 的帖子 您好, 欢迎来到阿里云论坛。 例子中是ipv6隧道地址,是需经ipv4传送的,所以,建议您在安全组里允许所有的协议和端口,对比测试一下喔。 ------------------------- 回 300楼(华邦云12138) 的帖子 您好, 提示有重名,有可能是多次执行命令后提示的。 可删除之前添加的,或第二次执行命令时,跳过这一步。 ------------------------- 回 301楼(华邦云12138) 的帖子 您好, 建议您检查实例的安全组规则, 如果可以,建议放行全部的协议和端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 305楼(华邦云12138) 的帖子 您好, 抱歉延时回复。 能否截图,看看您的安全组规则呢? ------------------------- 回 306楼(笔墨kk) 的帖子 您好, 欢迎来到阿里云论坛。 在图中看到的信息,虚拟的IPv6网络接口是“断开”状态的喔。 请问您具体执行了哪些命令呢? ------------------------- 回 310楼(笔墨kk) 的帖子 您好, 看命令的内容,是HE网站上提供的。 如果您使用的专有网络,需要注意将命令中的公网IP换成系统的内网IP喔。 ------------------------- 回 312楼(笔墨kk) 的帖子 您好, 可以先试试哩,替换一下IP后试试。 ------------------------- 回 314楼(华邦云12138) 的帖子 您好, 如广东的中国电信用户,应该也可以直接ping -6 的吧, 如现在我尝试的: 正在 Ping 2001:470:18:b07::2 具有 32 字节的数据: 请求超时。 来自 2001:470:18:b07::2 的回复: 时间=994ms 来自 2001:470:18:b07::2 的回复: 时间=996ms 来自 2001:470:18:b07::2 的回复: 时间=959ms 2001:470:18:b07::2 的 Ping 统计信息:     数据包: 已发送 = 4,已接收 = 3,丢失 = 1 (25% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 959ms,最长 = 996ms,平均 = 983ms ------------------------- 回 317楼(笔墨kk) 的帖子 您好, 创建IPv6隧道地址时,是需要提交公网IP的喔。 只不过,是在创建好隧道地址后的命令中,替换喔。 ------------------------- 回 320楼(笔墨kk) 的帖子 您好, 很高兴听到您已经在系统中成功配置了ipv6隧道地址。 ------------------------- 回 322楼(笔墨kk) 的帖子 您好, 这个需要满足一些条件的,如您家里用来ping的系统是什么呢,有没有启用ipv6?您家里的路由器是否支持ipv6? 如在我自己的电脑里能ping -6 通您的隧道地址: 正在 Ping yongchun.gosob.com [2001:470:18:cce::2] 具有 32 字节的数据: 来自 2001:470:18:cce::2 的回复: 时间=3291ms 请求超时。 来自 2001:470:18:cce::2 的回复: 时间=676ms 来自 2001:470:18:cce::2 的回复: 时间=913ms ------------------------- 回 321楼(miazhang) 的帖子 您好, 欢迎来到阿里云论坛。 现在从外网的机子测试,能ping6通您的隧道地址喔。 论坛在Chrome和Firefox里,是无法上传图片,但如UC可以。 PING 2001:470:18:b61::2(2001:470:18:b61::2) 56 data bytes 64 bytes from 2001:470:18:b61::2: icmp_seq=1 ttl=121 time=610 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=2 ttl=121 time=602 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=3 ttl=121 time=601 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=4 ttl=121 time=602 ms ------------------------- 回 326楼(笔墨kk) 的帖子 您好, 嗯,一般情况来说,能ping -6 得通ipv6隧道地址,那说明您的设置生效了喔。 如果不信,那可以重装ECS系统后,再ping -6 一下,看能否通。 ------------------------- 回 328楼(笔墨kk) 的帖子 您好, 好哩,祝您的APP上架成功喔。 ------------------------- 回 329楼(miazhang) 的帖子 您好, 请问执行以下命令,会有什么样的显示结果呢? netstat -noa | find ":80" ------------------------- 回 333楼(miazhang) 的帖子 您好, 如果这是全部的信息输出, 是喔,您的Web服务没有在ipv6的网络接口上监听使用喔。 ------------------------- 回 334楼(leodoo) 的帖子 您好, 欢迎来到阿里云论坛。 1. HE的隧道地址是6in4,好象是理解为将ipv6的数据包通过ipv4来传送。如果您的应用服务需要使用ipv6地址来通讯,是需要在ipv6的网络接口上监听 3. 从外网测试,可以访问您的站点喔: converted 'http://5656k.com' (ANSI_X3.4-1968) -> 'http://5656k.com' (UTF-8) --2017-06-15 10:24:13--   http://5656k.com/ Resolving 5656k.com (5656k.com)... 2001:470:18:cf4::2 Connecting to 5656k.com (5656k.com)|2001:470:18:cf4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.5' ------------------------- Re:回 338楼(miazhang) 的帖子 您好, 如果是 dig,应该是dig域名而不是网址吧? ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46629 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; www.xueshupa.net.              IN      AAAA ;; ANSWER SECTION: www.xueshupa.net.       600     IN      AAAA    2001:470:18:b61::2 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25716 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ; http://www.xueshupa.net.       IN      AAAA ;; Query time: 5013 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Jun 15 23:22:35 CST 2017 ;; MSG SIZE  rcvd: 52 ------------------------- 回 340楼(超级蜜蜂) 的帖子 您好, 欢迎来到阿里云论坛。 现在我测试,可以喔: --2017-06-20 21:20:37--   https://www.zgzbsc.vip/Diamond/frontgoods/index Resolving www.zgzbsc.vip (www.zgzbsc.vip)... 2001:470:18:1141::2 Connecting to www.zgzbsc.vip (www.zgzbsc.vip)|2001:470:18:1141::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index' ------------------------- 回 342楼(miazhang) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 344楼(超级蜜蜂) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 347楼(hornsun.tech) 的帖子 您好, 欢迎来到阿里云论坛。 服务器 执行 netstat -nao | find "80"时 没看到有[::]:80端 -> 请问您有没检查Web的设置,是否有监听使用ipv6的地址呢? 按照提示,安全组规则也增加了公网的入网规则 -> 请问您添加的规则是怎么样的呢? ------------------------- 回 348楼(24k壮士) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,不能ping6通您的隧道地址喔。 ING zgzzhds.com(AyinAy7-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes --- zgzzhds.com ping statistics --- 12 packets transmitted, 0 received, 100% packet loss, time 10997ms ------------------------- 回 351楼(很赞) 的帖子 您好, 欢迎来到阿里云论坛。 是的,因为SLB的服务器用户不能配置隧道地址,而ECS是在SLB后边。 ------------------------- 回 353楼(很赞) 的帖子 您好, 按苹果的指导文档来看,要求的是APP软件本身能兼容ipv6-only的网络环境,并不是要求APP服务器有ipv6的地址。 所以,重心应该是在app软件本身的设计和构建上哩。 ------------------------- 回 355楼(aaa.a) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,可以ping得通喔: PING 2001:470:35:7ee::2(2001:470:35:7ee::2) 56 data bytes 64 bytes from 2001:470:35:7ee::2: icmp_seq=1 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=2 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=3 ttl=120 time=555 ms ------------------------- 回 357楼(miazhang) 的帖子 您好, ipv6 dns server,请参考这个例子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 359楼(xl_young) 的帖子 您好, 欢迎来到阿里云论坛。 请问您的实例安全组是否允许所以协议通过呢? ------------------------- 回 361楼(xl_young) 的帖子 您好, 能否截图看看安全组规则的内容? ------------------------- 您好,欢迎来到阿里云论坛。可以ping6通,wget返回404错误信息:--2017-08-01 12:24:03--  http://api.qingyun100.com/Resolving api.qingyun100.com (api.qingyun100.com)... 2001:470:18:490::2, 139.196.40.67Connecting to api.qingyun100.com (api.qingyun100.com)|2001:470:18:490::2|:80... connected.HTTP request sent, awaiting response... 404 Not Found2017-08-01 12:24:03 ERROR 404: Not Found. ------------------------- 回 365楼(菜鸟017) 的帖子 您好, 欢迎来到阿里云论坛。 从外围的服务器来测试的话,提示403禁止访问喔: --2017-08-09 09:35:44--   http://tangxianqipai1.zai0312.com:90/ Resolving tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)... 2001:470:18:695::2 Connecting to tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)|2001:470:18:695::2|:90... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-08-09 09:35:45 ERROR 403: Forbidden. ------------------------- 回 368楼(菜鸟017) 的帖子 您好, 当时,我是使用境外的IPv6机子来为您测试的喔。 ------------------------- 回 369楼(菜鸟017) 的帖子 您好, 这个可能是测试时,所使用的DNS域名服务器不支持ipv6吧。 一般这个不太紧要的,因为国内的DNS服务器,一般没有IPv6地址的,除非您使用国外的。 ------------------------- 回 372楼(菜鸟017) 的帖子 您好, 目前的情况,可能阿里云没有为ECS配置可公众访问的IPv6地址呢。 阿里云的公共DNS服务器,目前好象也没有IPv6地址。 ------------------------- 回 374楼(菜鸟017) 的帖子 您好, 如果是在Windows 2012,删除之前存在的“ip6tunnel”虚拟接口, 或许可以试试以下这个命令: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 377楼(菜鸟017) 的帖子 您好, 很高兴听到您已经解决了问题, 有空时,请多来阿里云论坛逛逛喔。 ------------------------- 回 380楼(sheldonlin) 的帖子 您好, 欢迎来到阿里云论坛。 能否贴出您在Windows里执行的命令? ------------------------- 您好,可能需要检查web服务是否也在ipv6的网络地址里监听80端口: --2017-08-20 09:37:23--  (try: 2)   http://kambuzz.com/ Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:80... failed: Connection re fused. liujia@hk2:~/test6$ ping6 2001:470:18:8f2::2 PING 2001:470:18:8f2::2(2001:470:18:8f2::2) 56 data bytes 64 bytes from 2001:470:18:8f2::2: icmp_seq=1 ttl=127 time=311 ms 64 bytes from 2001:470:18:8f2::2: icmp_seq=2 ttl=127 time=310 ms ------------------------- 回 386楼(sheldonlin) 的帖子 您好, 是的。 好象没有80端口的监听使用情况喔。 执行以下的命令,再看看: netstat -noa | find ":80" ------------------------- 回 388楼(sheldonlin) 的帖子 您好, 您是想让您的站点能从ipv6的网络里访问到页面内容吗? 从您的命令输出结果来看,好象并没有web进程喔。 关于苹果对于ipv6-only的要求,请看这个指导文档: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1 ------------------------- 回 391楼(sheldonlin) 的帖子 您好, 那您在运行tomcat后,执行 netstat -noa | find ":8080" 后,有哪些输出结果呢? ------------------------- 回 394楼(sheldonlin) 的帖子 您好, 请尝试检查实例的安全组规则,看是否有阻止外网访问8080端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 398楼(sheldonlin) 的帖子 您好, 总结得不错。 现在测试,是可以从外网的ipv6测试机访问的: liujia@hk2:~/test6$ wget -6 kambuzz.com:8080 --2017-08-21 10:51:58--   http://kambuzz.com:8080/ Resolving kambuzz.com (kambuzz.com)... 2001:470:18:8f2::2 Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:8080... connected. HTTP request sent, awaiting response... 200 Length: unspecified [text/html] index.html: Permission denied 如果您的实例是Linux系统的,建议在后台长驻运行一个ping6的命令,如 ping6 ipv6.google.com ,以让您的ipv6隧道地址保持激活的状态,避免如20分钟后ipv6隧道地址ping6不通。 ------------------------- 回 400楼(sheldonlin) 的帖子 您好, 有时您的IPv6隧道地址ping不通, 在ping通时,可以访问到页面的内容,如: ------------------------- 回 402楼(sheldonlin) 的帖子 您好, 不确定具体的原因,但您可以尝试更换到其它的中转服务器,如美国的,看看会不会比目前的香港好些。 ------------------------- 回 405楼(sheldonlin) 的帖子 您好, ping6了几分钟后,可以ping通了。 liujia@hk2:~$ ping6 2001:470:c:67a::2 PING 2001:470:c:67a::2(2001:470:c:67a::2) 56 data bytes 64 bytes from 2001:470:c:67a::2: icmp_seq=232 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=233 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=234 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=235 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=236 ttl=123 time=315 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=237 ttl=123 time=387 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=238 ttl=123 time=387 ms --- 2001:470:c:67a::2 ping statistics --- 238 packets transmitted, 7 received, 97% packet loss, time 238848ms rtt min/avg/max/mdev = 313.431/335.021/387.851/33.233 ms ------------------------- 回 407楼(sheldonlin) 的帖子 您好, 测试的ping值差不多喔: PING 2001:470:18:94d::2(2001:470:18:94d::2) 56 data bytes 64 bytes from 2001:470:18:94d::2: icmp_seq=1 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=2 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=3 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=4 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=5 ttl=127 time=325 ms ------------------------- 回 409楼(觅约) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,访问正常喔: liujia@hk2:~/test6$ wget -6 app.miyueta.com:9088 --2017-08-28 18:25:36--   http://app.miyueta.com:9088/ Resolving app.miyueta.com (app.miyueta.com)... 2001:19f0:6001:213:5400:ff:fe77:5183 Connecting to app.miyueta.com (app.miyueta.com)|2001:19f0:6001:213:5400:ff:fe77:5183|:9088... connected. HTTP request sent, awaiting response... 200 OK Length: 52 [text/html] ------------------------- Re:回 411楼(ios——ot) 的帖子 您好, 我现在从外网为您ping6测试,可ping通,但有丢包。 liujia@hk2:~$ ping6 admin.allti.com.cn PING admin.allti.com.cn(wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=4 ttl=124 time=566 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=5 ttl=124 time=545 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=13 ttl=124 time=539 ms --- admin.allti.com.cn ping statistics --- 16 packets transmitted, 3 received, 81% packet loss, time 15087ms rtt min/avg/max/mdev = 539.496/550.382/566.125/11.400 ms ------------------------- 回 415楼(ios——ot) 的帖子 您好, 有可能。换别的中转服务器,如美国的来对比看看。 ------------------------- 回 437楼(卡乐) 的帖子 版主回复: 没看到相应的安全性评估。 个人想,是这样的:如果您的数据传送开始时,已经是加密的,如https,那隧道转发的服务器也不能读取到数据内容吧? 且,隧道转发的服务商,he.net应该是一家有信誉的公司。 再者,这里的隧道地址设置,目的是帮助APP上架,如果您的APP上架后,可停用隧道地址。 ------------------------- 回 439楼(卡乐) 的帖子 版主回复: 反方向操作哩,如在系统里禁用/删除隧道地址(如netsh int ipv6 delete interface "ip6tunnel")。 ------------------------- 回 443楼(阿凯十三郎) 的帖子 版主回复: 或许您需要检查一下ECS实例的安全组,看是放行了ipv6隧道地址服务器的访问。 目前测试来看,您的ipv6隧道地址从外网是ping6不通的。 --2018-01-25 10:41:07--   http://www.cjnmw.xyz/ Resolving www.cjnmw.xyz (www.cjnmw.xyz)... 2001:470:18:f02::2 Connecting to www.cjnmw.xyz (www.cjnmw.xyz)|2001:470:18:f02::2|:80... failed: Connection timed out. Retrying. liujia@hk2:~/test7$ ping6 2001:470:18:f02::2 PING 2001:470:18:f02::2(2001:470:18:f02::2) 56 data bytes --- 2001:470:18:f02::2 ping statistics --- 21 packets transmitted, 0 received, 100% packet loss, time 20154ms liujia@hk2:~/test7$ ping6 2001:470:18:f02::1 PING 2001:470:18:f02::1(2001:470:18:f02::1) 56 data bytes 64 bytes from 2001:470:18:f02::1: icmp_seq=1 ttl=64 time=1.41 ms 64 bytes from 2001:470:18:f02::1: icmp_seq=2 ttl=64 time=1.40 ms --- 2001:470:18:f02::1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.404/1.409/1.415/0.037 ms ------------------------- 回 448楼(阿凯十三郎) 的帖子 版主回复: 从您的ECS实例能ping通隧道地址服务器的IP,但不代表从隧道地址的服务器能ping通(访问)您的ECS实例喔。 ------------------------- 回 449楼(阿凯十三郎) 的帖子 版主回复: 是哩,看起来,外网已经能通过隧道地址访问到您的apache里了。 您调整了ECS实例的安全组规则吗? ------------------------- 回 452楼(阿凯十三郎) 的帖子 版主回复: 据网友反馈:域名本身的 ipv6 DNS Server 并不重要。 ------------------------- 回 455楼(纪念青春) 的帖子 版主回复: 请试试: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 458楼(老黄000001) 的帖子 您好, 图中信息,显示IPv6隧道地址断开状态, 请问您在之前配置隧道地址的命令中,包含的IP是ECS实例的公网IP还是内网IP? 一般来说,应该在命令中写内网IP的,即您图中的看到的172.18.132.2 ------------------------- 回 460楼(尜淇专版) 的帖子 您好, 在He.net里申请隧道地址时,请填写ECS实例的公网IP地址喔。 ------------------------- 回 462楼(潮约) 的帖子 您好, 使用VPC网络的ECS实例,在配置隧道地址时,是需要绑定内网IP,因为公网IP不是在系统里。 如果配置隧道地址时,绑定了内网IP,也无法正常使用的话,建议检查ECS实例安全组规则或Windows防火墙,如将隧道地址服务器的IPv4加到白名单中。
dongshan8 2019-12-02 02:58:13 0 浏览量 回答数 0

回答

回 3楼(莫有) 的帖子 您好, 请问您使用的系统是哪种Linux发行版呢?是CentOS 6吗? ------------------------- 回 5楼(莫有) 的帖子 您好, 好的,等我找到合适的测试机,再为您在CentOS7 系统里测试ipv6的隧道设置喔。 ------------------------- 回 5楼(莫有) 的帖子 您好, 为您写了这个CentOS 7的配置帖子,希望对您有帮助喔: https://bbs.aliyun.com/read.php?tid=285557 ------------------------- 回 10楼(非洲小犀牛) 的帖子 您好, 如果您的是Linux系统,可能需要先为系统启用ipv6的功能喔。请看这里的例子: https://bbs.aliyun.com/read/285557.html ------------------------- 回 12楼(猎马网) 的帖子 您好, 欢迎来到阿里云论坛。 IPv6测试不能通过的原因是什么呢?您在 http://ipv6-test.com/validate.php 里测试您的站点访问结果是什么呢? ------------------------- 回 14楼(猎马网) 的帖子 您好, 如本例中的,添加IPv6隧道地址的默认网关命令,应该是: netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:18:401::1 请问,您在做第5步时,是否有运行如上边类似的命令吗? ------------------------- 回 16楼(猎马网) 的帖子 您好, 您可以查看“网络连接”里对应的连接属性,估计可以直接修改的哩。 ------------------------- 回 19楼(猎马网) 的帖子 您好, 我在测试机里使用wget测试,好象正常: root@los:~/test4# wget -6 http://www.iliema.com/ converted 'http://www.iliema.com/' (ANSI_X3.4-1968) -> 'http://www.iliema.com/' (UTF-8) --2016-08-11 22:28:41--   http://www.iliema.com/ Resolving www.iliema.com (www.iliema.com)... 2001:470:1f14:b5f::2 Connecting to www.iliema.com (www.iliema.com)|2001:470:1f14:b5f::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 77636 (76K) [text/html] Saving to: 'index.html.3' ------------------------- 回 20楼(猎马网) 的帖子 您好, 应该可以如IPv4那样,多个域名指到相同的IPv6地址。 ------------------------- 回 24楼(很快) 的帖子 您好, 请问您的nginx web是安装在Windows还是Linux的系统上? ------------------------- 回 26楼(喵咪喵) 的帖子 您好, 欢迎来到阿里云论坛。 申请到IPv6的隧道地址后,还需要在系统里配置的,以让这个IPv6的地址能被外网的用户访问到喔。 ------------------------- 回 29楼(不断学习) 的帖子 您好, 请问您使用的操作系统是WIndows 2012吗? 请问您执行的netsh命令是和操作说明那里一样的吗? ------------------------- 回 31楼(喵咪喵) 的帖子 您好, 应该不影响,如果前两项检查测试通过,最后一条(IPv6-only)测试不通过,应该是可以的。 ------------------------- 回 34楼(wolfing5210) 的帖子 您好, 我在Linux系统上,能ping通您的IPv6地址: root@los:~# ping6 2001:470:35:102a::2 PING 2001:470:35:102a::2(2001:470:35:102a::2) 56 data bytes 64 bytes from 2001:470:35:102a::2: icmp_seq=1 ttl=119 time=225 ms 64 bytes from 2001:470:35:102a::2: icmp_seq=2 ttl=119 time=226 ms 如果您要测试,要具备两个条件, a. 在Windows系统里,应该是使用 ping -6 的参数 b. 发出测试的系统是启用了IPv6 ------------------------- 回 37楼(小成123456) 的帖子 您好, 抱歉延时回复。 请问您在系统里,执行 ipconfig /all 后,能看到输出信息中包含的ipv6 tunel信息吗? ------------------------- 回 39楼(呢你) 的帖子 您好, 抱歉给您带来不便。 请问苹果审核拒绝的原因是什么,是不能连接到ipv6地址吗? 请问您创建的ipv6隧道地址,测试时能从外网成功访问吗? ------------------------- 回 41楼(呢你) 的帖子 您好, 80端口测试是正常的,但好象web返回了错误。 建议您咨询一下您的 APP 程序员。 root@los:~/test# curl [2001:470:18:95c::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' J BossWeb/2.0.1.GA - Error report ------------------------- 回 44楼(nyanko桑) 的帖子 您好, 那请问您在例子中,第5步执行的命令是哪些呢? ------------------------- 回 45楼(小成123456) 的帖子 您好, 域名AAAA解析与IPv6隧道地址设置并不直接相关,如果您的IPv6隧道地址设置正确,从外网应该能ping通这个新设置的IPv6隧道地址。 ------------------------- 回 48楼(nyanko桑) 的帖子 您好, 好象命令看起来没有问题,您是从 HE 隧道地址设置网站里直接复制的,对吗? 那执行命令时,是否回显的结果是“确定”,还是有别的错误信息提示呢? ------------------------- 回 50楼(持名) 的帖子 您好, 那就奇怪了。 建议您回过头梳理一下,看看是否缺了哪个步骤或环境有哪些特殊的地方。 ------------------------- 回 52楼(nyanko桑) 的帖子 您好, 或许将原命令中的“add”(添加)改为“del”(删除)后,可以试试。  我个人猜测的。 ------------------------- 回 54楼(nyanko桑) 的帖子 您好, 好哩,到时如还没有解决问题,可通过站内信,发来临时的ECS登录信息,我为您看看喔。 ------------------------- 回 56楼(nyanko桑) 的帖子 您好, 申请到的IPv6隧道地址是不变的呀,除非您删除了。 ------------------------- 回 58楼(nyanko桑) 的帖子 您好, 好哩,祝愿您的APP能通过苹果的审核。 如还有疑问,欢迎跟帖。 ------------------------- 回 60楼(゛温ゝ先生) 的帖子 您好, 您在站内信里提到说“网络有重名”,现在系统里没成功添加ipv6地址吗? ------------------------- 回 61楼(陈cc123) 的帖子 您好, 一般AAA记录里,主机记录填写的是从HE申请到的IPv6隧道地址。 更新:应该是“记录值”里填写从he申请到的ipv6隧道地址。 ------------------------- 回 65楼(陈cc123) 的帖子 您好, 对不起,之前我的说法有错误。 按阿里云解析面板中,“主机记录”应该是您需要设置的网站访问地址,如我这里想设置 ipv6.anqun.org 的ipv6地址,“主机记录”里填写“ipv6”,而“记录值”里填写IPv6隧道地址:2001:470:18:401::2 ------------------------- 回 67楼(陈cc123) 的帖子 您好, 那请问您提交给 http://ipv6-test.com/ 测试的网址是什么呢? ------------------------- 回 69楼(陈cc123) 的帖子 您好, 页面 http://ipv6-test.com/validate.php 里提交的网址应该是一个域名网址,应该不能直接提交IPv6地址去测试的喔。 您可以在您的域名控制面板添加一条AAA记录的呀。 ------------------------- 回 72楼(陈cc123) 的帖子 您好, 能否使用如 netstat -noa | grep 80 的命令,来查看当前Web服务是否在ipv6地址监听使用呢? ------------------------- 回 74楼(陈cc123) 的帖子 您好, 图中没有显示IPv6相关的8080端口使用情况喔, 或许您可以运行 netstat -noa | grep 8080 再次确认一下。 ------------------------- 回 78楼(陈cc123) 的帖子 您好, 是的,不好意思,我忘记了您的系统是Windows,不是linux,所以不能直接用grep的命令。 现在从外网测试,您的tomcat站点是可以从ipv6地址访问了,但或许您将web从8080换到常用的80端口,方便访问。 root@los:~/test# curl [2001:470:18:ab3::2]:8080 -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 80楼(陈cc123) 的帖子 您好, 如果您提交给苹果审核就是带8080的IPv6地址,那可保持现状。 能否说一下具体您审核网址?如果按上边的测试结果来看,您的IPv6隧道地址是(曾)正常工作。 ------------------------- 回 82楼(陈cc123) 的帖子 您好, 现在从外网测试您给的网址,正常。 root@los:~/test# curl -6 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 root@los:~/test# curl 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 84楼(陈cc123) 的帖子 您好, 可能那个检测的站点,只能检测默认80端口的吧,具体到您这里,您是要写明8080端口的,所以那个测试网址可能不适用喔。 ------------------------- 回 87楼(xiaopao888) 的帖子 您好, 欢迎来到阿里云论坛。 能否请问在“命令提示符”里执行以下的命令,看输出结果有没有关于ipv6的80地址监听呢? netstat -noa | find "80" ------------------------- 回 88楼(莫尼玛) 的帖子 您好, 欢迎来到阿里云论坛。 如果您使用自己的环境来测试,需要确认您的环境是否支持ipv6使用环境喔,如您的telnet程序是否支持ipv6,您的网络是否支持ipv6。 我拿一个美国的vps来测试,也是可以成功连接到您的ipv6隧道地址: root@los:~/test# curl [2001:470:18:aa8::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Microsoft Internet Information Services 8 ------------------------- 回 91楼(xiaopao888) 的帖子 您好, 如果web没有在iPv6的网络接口上监听,请尝试调整一下web的配置文件喔,如让它在所有的可用网络接口里监听。 ------------------------- 回 93楼(莫尼玛) 的帖子 您好, 请问您在tcp 8300里提供的服务是web的吗? 如果是web服务,测试不成功喔: root@los:~# curl [2001:470:18:aa8::2:8300] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' root@los:~# ------------------------- 回 97楼(莫尼玛) 的帖子 您好, 好象用telnet测试8300 tcp 端口,不成功喔: root@los:~# telnet -6 2001:470:18:aa8::2 8300 Trying 2001:470:18:aa8::2... telnet: Unable to connect to remote host: Connection refused root@los:~# telnet -6 2001:470:18:aa8::2 80 Trying 2001:470:18:aa8::2... Connected to 2001:470:18:aa8::2. Escape character is '^]'. Connection closed by foreign host. ------------------------- 回 100楼(莫尼玛) 的帖子 您好, 如果您的socket程序默认不是在所有的端口上监听使用,是需要调整一下的喔。 或您使用 netstat -noa 的命令,查看一下都有哪些8300的端口在使用。 ------------------------- 回 102楼(莫尼玛) 的帖子 您好, 0.0.0.0 可能代表是IPv4的所有网络接口,不包括IPv6的啊。 请看这个云友以下的这个贴图,最后一行代表是IPv6的所有网络接口: ------------------------- 回 105楼(莫尼玛) 的帖子 您好, 好的,请稍等。 8310可以,8300也可以。 root@los:~# telnet -6 ht.yulesy.cn 8310 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. root@los:~# telnet -6 ht.yulesy.cn 8300 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. ------------------------- 回 109楼(涛涛~) 的帖子 您好, 如果您需要通过http访问位于两个不同服务器上的文件,或许是需要为这两个服务器都配置ipv6隧道地址喔。 ------------------------- 回 110楼(陌祥伟) 的帖子 您好, 我现在没测试机,不能具体为您查看输出结果, 您用 ipconfig 查看到的信息页面内容是怎么样的呢? ------------------------- 回 113楼(陌祥伟) 的帖子 您好, 请问您提到的“本地ping和telnet端口是通的”,是ping ipv6和telnet ipv6隧道地址都正常吗? ------------------------- 回 115楼(陌祥伟) 的帖子 您好, 我这里为您测试,也是ping6不通, 或许您需要再检查一下是否有防火墙或其它缺漏的环节没留意到: --- 2001:470:23:70d::2 ping statistics --- 65 packets transmitted, 0 received, 100% packet loss, time 64000ms ------------------------- 回 119楼(leyuwei) 的帖子 您好, 请问您的ipv6隧道地址是 2001:470:18:ecc::2 吗? 我从外网测试,返回是403的错误页: root@los:~# wget -6 http://[2001:470:18:ecc::2]:8080 converted 'http://[2001:470:18:ecc::2]:8080' (ANSI_X3.4-1968) -> 'http://[2001:470:18:ecc::2]:8080' (UTF-8) --2017-01-07 01:27:05--  http://[2001:470:18:ecc::2]:8080/ Connecting to [2001:470:18:ecc::2]:8080... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-01-07 01:27:09 ERROR 403: Forbidden. root@los:~# curl -6 'http://www.dlmunews.club:8080' <p align='center'>▒▒▒▒▒▒▒▒▒▒▒▒ַ▒▒▒▒▒޲▒ϣ▒▒▒▒▒▒ô▒▒▒▒▒▒▒▒°ɣ▒</p> <p align='center'>▒▒▒▒▒ִ▒▒▒▒ˣ▒▒▒▒▒▒޾▒Ҫ▒▒ȡһЩ▒ֶ▒▒ˣ▒</p> <br/> <p align='center'>403 FORBIDDEN</p> <p align='center'>▒▒▒▒▒▒˼▒▒▒▒▒▒▒뿴▒▒▒ҵ▒▒▒▒ӣ▒</p>root@los:~# ------------------------- 回 118楼(陌祥伟) 的帖子 您好, 我去找个Windows 2008的系统为您测试一下喔。 请等待。 ------------------------- Re:回 118楼(陌祥伟) 的帖子 您好, 我找个测试机(用的是Windows 2008 SP2 32位中文版公共镜像),重复操作了一次,好象正常哩: C:\Users\Administrator>netsh interface ipv6 show interface Idx  Met   MTU   状态          名称 ---  ---  -----  -----------  -------------------   1   50 4294967295  connected    Loopback Pseudo-Interface 1 15   10   1280  connected    IP6Tunnel 10   10   1500  connected    本地连接 22   50   1280  disconnected  本地连接* 12 23   50   1280  disconnected  本地连接* 13 11   10   1500  connected    本地连接 2 C:\Users\Administrator>ping -6 2001:470:18:401::2 正在 Ping 2001:470:18:401::2 从 2001:470:18:401::2 具有 32 字节的数据: 来自 2001:470:18:401::2 的回复: 时间<1ms 来自 2001:470:18:401::2 的回复: 时间<1ms 2001:470:18:401::2 的 Ping 统计信息:     数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 0ms,最长 = 0ms,平均 = 0ms Control-C ^C C:\Users\Administrator>ping -6 ipv6.google.com 正在 Ping ipv6.l.google.com [2404:6800:4008:800::200e] 从 2001:470:18:401::2 具 有 32 字节的数据: 来自 2404:6800:4008:800::200e 的回复: 时间=401ms 来自 2404:6800:4008:800::200e 的回复: 时间=400ms ------------------------- 回 122楼(leyuwei) 的帖子 您好, 在我使用的测试机里,能访问到您提供的网址内容喔,祝您通过APP的IPv6审核。 root@los:~/test# curl -6 'http://www.dlmunews.club:8080/dlmunews/test.html' test IPV6root@los:~/test# ------------------------- 回 125楼(陌祥伟) 的帖子 您好, 抱歉没有留意您的ECS网络类型, 弹性公网IP,看介绍说是一种NatIP,我不确定这与“经典网络”里的公网IP是否有一些使用限制情景, 建议您发工单咨询一下阿里云官方工程师: https://workorder.console.aliyun.com/ 本帖里的例子ECS是“经典网络”,并不是“专有网络”或“弹性公网IP”的使用场景喔。 ------------------------- 回 131楼(dearvitamin) 的帖子 您好, 测试得知,经典网络中的站点可以,专用网络中的站点不可以访问到喔。 root@los:~/test# curl -6 'http://www.spl258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' 斯普林游戏 root@los:~/test# curl -6 'http://www.longm258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' ------------------------- 回 133楼(vinny1024) 的帖子 您好, 欢迎来到阿里云论坛。 本例子里的Web是IIS,并不是apache喔。 请问您在apache的配置文件里,已经设置监听使得ipv6的地址和端口了吗? ------------------------- 回 136楼(raolan123) 的帖子 您好, 已有的云友反馈,不能按例子中的方法在”专有网络“中成功设置ipv6隧道地址。 ------------------------- 回 138楼(ekuns) 的帖子 您好, 欢迎来到阿里云论坛。 操作步骤,Windows 2012和Windows 2008应该是大致相同的。 请问您是否曾按帖子里的步骤,在Windows 2008里测试了呢? 如果您在Windows 2008里测试失败,我为您找个测试机来实践一下喔。 ------------------------- 回 140楼(poplanchong) 的帖子 您好, 如果是ipv6-only,可能还需要DNS解析之类支持的。 ------------------------- 回 142楼(poplanchong) 的帖子 您好, 欢迎来到阿里云论坛。 如果可以ping通ipv6的隧道地址,那么说明配置应该是成功的。 但如果您设置ipv6隧道地址目的是为了通过苹果的APP审核,还是要看苹果公司的判断结果喔。 祝您成功。 ------------------------- 回 144楼(poplanchong) 的帖子 您好, 很高兴听到您的APP已经通过苹果公司的审核。 我没有向苹果公司提交过APP审核,并没有实践的经验。所以我也不确定为什么苹果公司先后不同审核结果的原因。 您前后向苹果公司提交过几个网址用于审核? ------------------------- 回 146楼(没办法抽奖) 的帖子 您好, 我在测试机里, 可以ping通您提到的网关,但您的隧道地址ping不通喔, 是不是哪一步没有操作完整? root@los:~/test5# ping6 2001:470:1f04:a9e::2 PING 2001:470:1f04:a9e::2(2001:470:1f04:a9e::2) 56 data bytes --- 2001:470:1f04:a9e::2 ping statistics --- 41 packets transmitted, 0 received, 100% packet loss, time 39999ms root@los:~/test5# ping6 2001:470:1f04:a9e::1 PING 2001:470:1f04:a9e::1(2001:470:1f04:a9e::1) 56 data bytes 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=1 ttl=56 time=53.5 ms 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=2 ttl=56 time=53.8 ms ------------------------- 回 147楼(poplanchong) 的帖子 您好,   如此,我也不确定具体的原因了。不过,APP审核通过了,终究是件好事,是不是呢? ------------------------- 回 150楼(没办法抽奖) 的帖子 晚上好, 请问您的ECS操作系统是Windows 2012的吗? ------------------------- 回 152楼(l_zhaowei) 的帖子 您好, 请问您新购的ECS实例带宽类型是“专有网络”的吗? ------------------------- 回 153楼(l_zhaowei) 的帖子 您好, 暂时没有在“专有网络”实现IPv6隧道地址的方案喔,抱歉。 ------------------------- 回 157楼(鸿儒网络) 的帖子 您好, 看您的截图,或许需要先着重看一下,为什么“80端口不显示IPV6”, 请问您的站点绑定属性中,是否有IPv6的地址可以选择使用呢? ------------------------- 回 159楼(aeria) 的帖子 您好, 欢迎来到阿里云论坛。 请问您运行 netstat 的命令,可以查看到tomcat在ipv6的80端口上也有监听使用吗? ------------------------- 回 161楼(aeria) 的帖子 您好, 能贴一下您的tomcat配置文件 server.xml 的内容吗(监听那个环节的)? ------------------------- 回 164楼(aeria) 的帖子 您好, 或许您可以查看一下这个问答里提到的“authbind”: http://serverfault.com/questions/605684/tomcat-java-not-listening-on-ipv6 ------------------------- 回 167楼(aeria) 的帖子 您好, 那我去找个测试机,为您测试一下。 您的环境,是Windows 2012 + Tomcat 8 吗? ------------------------- 回 170楼(aeria) 的帖子 您好, 为您写了这个帖子,不知道是否对您有用: 《用ipv6隧道地址访问tomcat 站点内容》 - https://bbs.aliyun.com/read/312055.html ------------------------- 回 172楼(bingo_vc) 的帖子 您好, 欢迎来到阿里云论坛。 如果您的站点不需要域名访问,直接用ipv6隧道地址访问,应该也是可以的喔。 ------------------------- 回 174楼(clks) 的帖子 您好, 现在为您测试,可以访问得到页面喔: --2017-04-09 06:25:52--   http://www.meihaojiawodecheng.cn/ Resolving www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)... 2001:470:18:352::2, 116.62.37.108 Connecting to www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)|2001:470:18:352::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2241 (2.2K) [text/html] Saving to: 'index.html.3' ------------------------- 回 176楼(clks) 的帖子 您好, 在浏览器里,输入如 http://[2001:470:18:352::2]/ 的地址后,应该就能显示到站点内容了,有时可能需要刷新多几下。 ------------------------- 回 178楼(自由2017) 的帖子 您好, 抱歉延时回复。 请问您的ECS实例带宽类型是哪种,是“经典网络”还是“专有网络”呢? ------------------------- 回 179楼(l_zhaowei) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 182楼(l_zhaowei) 的帖子 您好, 有“经典网络”的选项,据云友们反馈,好象一些较早之前注册和使用的阿里云账户还可以在新购的ECS配置里选择“经典网络”的网络类型。 ------------------------- 回 183楼(lbmjsls) 的帖子 您好, 欢迎来到阿里云论坛。 是的,可以,您可以用一个已经有ICP备案的子域名来操作,如果您认为不会对您的业务带来负面影响的话。 ------------------------- 回 186楼(l_zhaowei) 的帖子 您好, 目前收到的反馈来看,并不是所有的阿里云账号可以选购到“经典网络”。 我并不清楚阿里云的具体购物车规则哩。 ------------------------- 回 188楼(自由2017) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 190楼(自由2017) 的帖子 您好, 已经站内信您喔。 ------------------------- 回 192楼(lbmjsls) 的帖子 您好, 都可以ping通,但返回的延时可能有些高。 root@los:~/test5# ping6 thls.qian178.com PING thls.qian178.com(lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=1 ttl=121 time=624 ms 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=622 ms --- thls.qian178.com ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 2000ms rtt min/avg/max/mdev = 622.017/623.254/624.492/1.467 ms root@los:~/test5# ping6 qian178.com PING qian178.com(lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=564 ms 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=3 ttl=121 time=563 ms ------------------------- 回 194楼(龙阁商务) 的帖子 您好, 欢迎来到阿里云论坛。 如果前两项测试通,那就可以了呀。 您是对哪里还不满意呢? ------------------------- 回 196楼(龙阁商务) 的帖子 您好, 苹果审核不限次数的吧? 期待您的审核结果喔。 ------------------------- 回 198楼(cloud_lee) 的帖子 您好, 在国外的IPv6环境中的服务器为您测试IPv6访问,是可以的喔: --2017-04-17 07:40:56--   http://www.zxwol.com/ Resolving www.zxwol.com (www.zxwol.com)... 2001:470:18:5cf::2 Connecting to www.zxwol.com (www.zxwol.com)|2001:470:18:5cf::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 135046 (132K) [text/html] Saving to: 'index.html.15' ------------------------- 回 204楼(龙阁商务) 的帖子 您好, 现在测试,可以访问喔。 --2017-04-18 03:48:45--   http://myjcb.hqzh168.com/ Resolving myjcb.hqzh168.com (myjcb.hqzh168.com)... 2001:470:a:ba4::2 Connecting to myjcb.hqzh168.com (myjcb.hqzh168.com)|2001:470:a:ba4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 34431 (34K) [text/html] Saving to: 'index.html.16' ------------------------- 回 206楼(hsy-ios) 的帖子 您好, 欢迎来到阿里云论坛。 现在看起来,您的ipv6隧道地址可以ping得通喔: PING 2001:470:18:600::2(2001:470:18:600::2) 56 data bytes 64 bytes from 2001:470:18:600::2: icmp_seq=1 ttl=121 time=557 ms 64 bytes from 2001:470:18:600::2: icmp_seq=2 ttl=121 time=567 ms 64 bytes from 2001:470:18:600::2: icmp_seq=3 ttl=121 time=574 ms ------------------------- 回 208楼(hsy-ios) 的帖子 您好, 请问是哪个ipv6地址呢? ------------------------- 回 210楼(hsy-ios) 的帖子 您好, --2017-04-20 22:41:23--  http://[2001:470:18:600::2]/ Connecting to [2001:470:18:600::2]:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://m.wnchebao.com/ [following] converted 'https://m.wnchebao.com/' (ANSI_X3.4-1968) -> 'https://m.wnchebao.com/' (UTF-8) --2017-04-20 22:41:24--   https://m.wnchebao.com/ Resolving m.wnchebao.com (m.wnchebao.com)... 2001:470:18:600::2 Connecting to m.wnchebao.com (m.wnchebao.com)|2001:470:18:600::2|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2017-04-20 22:41:27 ERROR 404: Not Found. ------------------------- 回 212楼(鸿儒网络) 的帖子 您好, 感谢您的经验分享喔。 如有更多的用户遇到类似的“延迟生效”现象,将添加相应的提示信息喔。 ------------------------- 回 214楼(北极星图图) 的帖子 您好, 如果tomcat没有在ipv6的网络地址上监听,您可以详细查看一下tomcat的配置文件喔, 这里有一个例子可以参考一下: https://bbs.aliyun.com/read/312055.html ------------------------- 回 215楼(潘飞虎) 的帖子 您好, 测试的话,您的ipv6隧道地址可以ping通,但ipv6的80连接超时,建议检查web服务的配置喔: PING 2001:470:18:6ae::2(2001:470:18:6ae::2) 56 data bytes 64 bytes from 2001:470:18:6ae::2: icmp_seq=1 ttl=121 time=564 ms 64 bytes from 2001:470:18:6ae::2: icmp_seq=2 ttl=121 time=565 ms --- 2001:470:18:6ae::2 ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 1999ms rtt min/avg/max/mdev = 564.291/565.080/565.870/1.090 ms root@los:~/test5# wget -6 http://[2001:470:18:6ae::2] converted 'http://[2001:470:18:6ae::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:6ae::2]' (UTF-8) --2017-04-26 14:02:36--  http://[2001:470:18:6ae::2]/ Connecting to [2001:470:18:6ae::2]:80... failed: Connection timed out. Retrying. ------------------------- 回 216楼(hzyt) 的帖子 您好, 欢迎来到阿里云论坛。 请问您ECS实例带宽类型是哪种呢,是“专有网络”吗? ------------------------- 回 220楼(潘飞虎) 的帖子 您好, 请问您的apache配置文件,如 httpd.conf 中,是否有监听ipv6的网络地址呢(如[::])? ------------------------- 回 221楼(永超科技) 的帖子 您好, 请问是否您多次运行了相同的netsh配置命令呢? ------------------------- 回 224楼(beijixingtu) 的帖子 您好, 现在访问您的站点,在ipv6访问中,应该是可以看到内容(或许是部分)的: ------------------------- 回 226楼(四眼鱼) 的帖子 您好, 抱歉延时回复, 请问您的ECS实例使用提“经典网络”的网络类型吗? ------------------------- 回 228楼(这是高科技) 的帖子 您好, 因为目前阿里云的“专有网络”类型的ECS实例限制,不能成功配置和使用6in4的IPv6隧道地址的。 使用外部的IPv6地址的VPS,虽然可以尝试,但也不一定能100%解决苹果APP上架的困扰。 ------------------------- 回 229楼(潘飞虎) 的帖子 您好, 可能还需要看具体的原因,苹果有没有具体说是因为什么而拒绝呢?还是因为IPv6的访问可用性吗? IPv6的DNS并不是必须的,如果您也想设置IPv6的DNS,可以参考这个帖子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 233楼(潘飞虎) 的帖子 您好, 嗯,或许您还可以具体说说,中国目前的公共互联网还没有实现IPv6,所以对于中国的APP很为难。 ------------------------- 回 234楼(beijixingtu) 的帖子 您好, 是的,如果可以,可以附上说明,目前中国的公共互联网没有实现IPv6,一般用户无法直接在IPv6的环境里完成完整测试。 ------------------------- 回 237楼(潘飞虎) 的帖子 您好, 苹果要求目前国内还没有完整布置的IPv6环境,是有些让普通人摸不着头脑。 那您现在的工作环境中,有具备测试条件吗?如Mac电脑和苹果手机。 ------------------------- 回 239楼(潘飞虎) 的帖子 您好, 文档中提到,即使是用Mac模拟ipv6的网络,但带宽的出口还是ipv4的。 或许您可以尝试建一个可访问ipv6的wifi环境试试,如网上看到有一些无线路由器或许可以“独特”地构建出来。 ------------------------- 回 240楼(xunchengweidao) 的帖子 您好, 欢迎来到阿里云论坛。 或许您当前使用的nginx没有编译对ipv6的支持喔。 ------------------------- 回 244楼(feng_li) 的帖子 您好, 欢迎来到阿里云论坛。 很乐意,为您ping6测试: PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=429 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=3 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=4 ttl=121 time=430 ms ------------------------- 回 246楼(feng_li) 的帖子 您好, 现在再次测试,还是能ping得通。 配置了ipv6的隧道地址,仅是说您的系统(服务器)可以通过隧道地址交换ipv6的数据,如能ping6通或浏览ipv6的网站。但这并不代表着您的APP一定可以支持ipv6的访问喔。建议您再对照着苹果对于APP的 IPv6 设计指导,看看是否有其它原因: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=434 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=434 ms ------------------------- 回 248楼(爱爱莫能助) 的帖子 您好, 欢迎来到阿里云论坛。 在系统里配置ipv6的命令在he的站点上有提供现成的喔。 ------------------------- 回 251楼(天下才子) 的帖子 您好, 为您查看,现在可以在浏览器里看到内容喔: ------------------------- 回 255楼(居然要昵称) 的帖子 您好, 欢迎来到阿里云论坛。 请问,如 ping ::1  会有哪些信息提示呢? ------------------------- 回 254楼(天下才子) 的帖子 您好, 请问您家里的宽带是哪家的呢,是中国电信的吗? ------------------------- 回 259楼(新飞) 的帖子 您好, 最后一项检测的对象是ipv6 dns server,这是与域名的解析DNS地址相关, 如果您需要,可能需要将域名的DNS地址更改为国外支持ipv6的。 ------------------------- 回 260楼(robin_tian) 的帖子 您好, 欢迎来到阿里云论坛, 看起来,http可以访问喔(但首页会提示404出错): converted 'http://api2.ihyoo.com' (ANSI_X3.4-1968) -> 'http://api2.ihyoo.com' (UTF-8) --2017-05-15 16:03:04--   http://api2.ihyoo.com/ Resolving api2.ihyoo.com (api2.ihyoo.com)... 2001:470:18:d6::2 Connecting to api2.ihyoo.com (api2.ihyoo.com)|2001:470:18:d6::2|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-05-15 16:03:06 ERROR 404: Not Found. ------------------------- 回 264楼(天下才子) 的帖子 您好, 如果在您的电脑上不能访问ipv6的网站,可以尝试通过这个在线网站测试一下(可能要用代理): www.ipv6proxy.net ------------------------- 回 267楼(jsrabbit) 的帖子 您好, 欢迎来到阿里云论坛。 看您的几个截图,出现了两个IPv6地址,2001:da8:20d:400::8be0:dd58 和 2001:470:18:b5::2, 如果 2001:470:18:b5::2 是正确的,现在测试是可以访问到80端口端的喔: converted 'http://[2001:470:18:b5::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:b5::2]' (UTF-8) --2017-05-17 13:50:44--  http://[2001:470:18:b5::2]/ Connecting to [2001:470:18:b5::2]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 107908 (105K) [text/html] Saving to: 'index.html' index.html                       100%[=========================================================>] 105.38K  20.0KB/s   in 5.3s ------------------------- 回 269楼(jsrabbit) 的帖子 您好, 个人觉得 IPv6 DNS Server 设置与否,影响不大。但您有空,也可以换一家支持IPv6的国外DNS商,如 dns.he.net。 ------------------------- 回 270楼(eric984) 的帖子 来自河源的朋友, 欢迎来到阿里云论坛。 如之前有云友提到,将HE提供的示例命令中,将公网IP换成私网IP,或许就可以了喔。 ------------------------- 回 273楼(通通优品) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在HE里提交的IP地址是什么呢? 一般是提交ECS实例的公网IP地址,并不是内网IP地址喔。 ------------------------- 回 275楼(通通优品) 的帖子 您好, 那能否再检查一下您的安全组规则设置呢(有没有过滤80端口)? 如果可以,或许您可以先尝试在规则里开放所有的访问,对比一下结果。 ------------------------- 回 277楼(通通优品) 的帖子 您好, 如果您多次尝试运行命令来绑定ipv6隧道地址,需要确认最后ipv6隧道地址是能从外网ping6通的喔,同时可以查看一下路由表是否正确。 ------------------------- 回 280楼(大男人主义) 的帖子 您好, 欢迎来到阿里云论坛。 祝您的APP能成功上架喔。 ------------------------- 回 282楼(仙人掌有刺) 的帖子 您好, 从现在的测试结果来看,好象您的域名AAAA解析没有生效或失败: converted 'http://m.dnanren.cn' (ANSI_X3.4-1968) -> 'http://m.dnanren.cn' (UTF-8) --2017-05-25 10:30:51--   http://m.dnanren.cn/ Resolving m.dnanren.cn (m.dnanren.cn)... failed: Name or service not known. wget: unable to resolve host address 'm.dnanren.cn' ------------------------- 回 284楼(葫芦娃警长) 的帖子 您好, 抱歉给您带来不便。 域名AAAA记录和ipv4的A记录是不互相影响的喔。 如果ping -6 外网的地址不通,那有可能是路由没配置好喔。 ------------------------- 回 287楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 现在好象我无法ping通您的ipv6隧道地址喔: PING 2001:470:1f10:124::2(2001:470:1f10:124::2) 56 data bytes --- 2001:470:1f10:124::2 ping statistics --- 13 packets transmitted, 0 received, 100% packet loss, time 11997ms ------------------------- 回 290楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 一般不需要重新申请第二个隧道地址喔。 建议您检查一下ipv6的路由情况。 ------------------------- 回 292楼(中广巨力) 的帖子 您好, 抱歉延时回复。 如果您ping -6 不通隧道地址的网关,可以检查一下ECS实例的安全组是否有限制访问: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 294楼(yan555) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在系统中执行的是哪些命令, 执行命令后,有哪些回显的信息呢? ------------------------- 回 298楼(lsfoo) 的帖子 您好, 欢迎来到阿里云论坛。 例子中是ipv6隧道地址,是需经ipv4传送的,所以,建议您在安全组里允许所有的协议和端口,对比测试一下喔。 ------------------------- 回 300楼(华邦云12138) 的帖子 您好, 提示有重名,有可能是多次执行命令后提示的。 可删除之前添加的,或第二次执行命令时,跳过这一步。 ------------------------- 回 301楼(华邦云12138) 的帖子 您好, 建议您检查实例的安全组规则, 如果可以,建议放行全部的协议和端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 305楼(华邦云12138) 的帖子 您好, 抱歉延时回复。 能否截图,看看您的安全组规则呢? ------------------------- 回 306楼(笔墨kk) 的帖子 您好, 欢迎来到阿里云论坛。 在图中看到的信息,虚拟的IPv6网络接口是“断开”状态的喔。 请问您具体执行了哪些命令呢? ------------------------- 回 310楼(笔墨kk) 的帖子 您好, 看命令的内容,是HE网站上提供的。 如果您使用的专有网络,需要注意将命令中的公网IP换成系统的内网IP喔。 ------------------------- 回 312楼(笔墨kk) 的帖子 您好, 可以先试试哩,替换一下IP后试试。 ------------------------- 回 314楼(华邦云12138) 的帖子 您好, 如广东的中国电信用户,应该也可以直接ping -6 的吧, 如现在我尝试的: 正在 Ping 2001:470:18:b07::2 具有 32 字节的数据: 请求超时。 来自 2001:470:18:b07::2 的回复: 时间=994ms 来自 2001:470:18:b07::2 的回复: 时间=996ms 来自 2001:470:18:b07::2 的回复: 时间=959ms 2001:470:18:b07::2 的 Ping 统计信息:     数据包: 已发送 = 4,已接收 = 3,丢失 = 1 (25% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 959ms,最长 = 996ms,平均 = 983ms ------------------------- 回 317楼(笔墨kk) 的帖子 您好, 创建IPv6隧道地址时,是需要提交公网IP的喔。 只不过,是在创建好隧道地址后的命令中,替换喔。 ------------------------- 回 320楼(笔墨kk) 的帖子 您好, 很高兴听到您已经在系统中成功配置了ipv6隧道地址。 ------------------------- 回 322楼(笔墨kk) 的帖子 您好, 这个需要满足一些条件的,如您家里用来ping的系统是什么呢,有没有启用ipv6?您家里的路由器是否支持ipv6? 如在我自己的电脑里能ping -6 通您的隧道地址: 正在 Ping yongchun.gosob.com [2001:470:18:cce::2] 具有 32 字节的数据: 来自 2001:470:18:cce::2 的回复: 时间=3291ms 请求超时。 来自 2001:470:18:cce::2 的回复: 时间=676ms 来自 2001:470:18:cce::2 的回复: 时间=913ms ------------------------- 回 321楼(miazhang) 的帖子 您好, 欢迎来到阿里云论坛。 现在从外网的机子测试,能ping6通您的隧道地址喔。 论坛在Chrome和Firefox里,是无法上传图片,但如UC可以。 PING 2001:470:18:b61::2(2001:470:18:b61::2) 56 data bytes 64 bytes from 2001:470:18:b61::2: icmp_seq=1 ttl=121 time=610 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=2 ttl=121 time=602 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=3 ttl=121 time=601 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=4 ttl=121 time=602 ms ------------------------- 回 326楼(笔墨kk) 的帖子 您好, 嗯,一般情况来说,能ping -6 得通ipv6隧道地址,那说明您的设置生效了喔。 如果不信,那可以重装ECS系统后,再ping -6 一下,看能否通。 ------------------------- 回 328楼(笔墨kk) 的帖子 您好, 好哩,祝您的APP上架成功喔。 ------------------------- 回 329楼(miazhang) 的帖子 您好, 请问执行以下命令,会有什么样的显示结果呢? netstat -noa | find ":80" ------------------------- 回 333楼(miazhang) 的帖子 您好, 如果这是全部的信息输出, 是喔,您的Web服务没有在ipv6的网络接口上监听使用喔。 ------------------------- 回 334楼(leodoo) 的帖子 您好, 欢迎来到阿里云论坛。 1. HE的隧道地址是6in4,好象是理解为将ipv6的数据包通过ipv4来传送。如果您的应用服务需要使用ipv6地址来通讯,是需要在ipv6的网络接口上监听 3. 从外网测试,可以访问您的站点喔: converted 'http://5656k.com' (ANSI_X3.4-1968) -> 'http://5656k.com' (UTF-8) --2017-06-15 10:24:13--   http://5656k.com/ Resolving 5656k.com (5656k.com)... 2001:470:18:cf4::2 Connecting to 5656k.com (5656k.com)|2001:470:18:cf4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.5' ------------------------- Re:回 338楼(miazhang) 的帖子 您好, 如果是 dig,应该是dig域名而不是网址吧? ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46629 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; www.xueshupa.net.              IN      AAAA ;; ANSWER SECTION: www.xueshupa.net.       600     IN      AAAA    2001:470:18:b61::2 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25716 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ; http://www.xueshupa.net.       IN      AAAA ;; Query time: 5013 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Jun 15 23:22:35 CST 2017 ;; MSG SIZE  rcvd: 52 ------------------------- 回 340楼(超级蜜蜂) 的帖子 您好, 欢迎来到阿里云论坛。 现在我测试,可以喔: --2017-06-20 21:20:37--   https://www.zgzbsc.vip/Diamond/frontgoods/index Resolving www.zgzbsc.vip (www.zgzbsc.vip)... 2001:470:18:1141::2 Connecting to www.zgzbsc.vip (www.zgzbsc.vip)|2001:470:18:1141::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index' ------------------------- 回 342楼(miazhang) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 344楼(超级蜜蜂) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 347楼(hornsun.tech) 的帖子 您好, 欢迎来到阿里云论坛。 服务器 执行 netstat -nao | find "80"时 没看到有[::]:80端 -> 请问您有没检查Web的设置,是否有监听使用ipv6的地址呢? 按照提示,安全组规则也增加了公网的入网规则 -> 请问您添加的规则是怎么样的呢? ------------------------- 回 348楼(24k壮士) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,不能ping6通您的隧道地址喔。 ING zgzzhds.com(AyinAy7-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes --- zgzzhds.com ping statistics --- 12 packets transmitted, 0 received, 100% packet loss, time 10997ms ------------------------- 回 351楼(很赞) 的帖子 您好, 欢迎来到阿里云论坛。 是的,因为SLB的服务器用户不能配置隧道地址,而ECS是在SLB后边。 ------------------------- 回 353楼(很赞) 的帖子 您好, 按苹果的指导文档来看,要求的是APP软件本身能兼容ipv6-only的网络环境,并不是要求APP服务器有ipv6的地址。 所以,重心应该是在app软件本身的设计和构建上哩。 ------------------------- 回 355楼(aaa.a) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,可以ping得通喔: PING 2001:470:35:7ee::2(2001:470:35:7ee::2) 56 data bytes 64 bytes from 2001:470:35:7ee::2: icmp_seq=1 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=2 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=3 ttl=120 time=555 ms ------------------------- 回 357楼(miazhang) 的帖子 您好, ipv6 dns server,请参考这个例子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 359楼(xl_young) 的帖子 您好, 欢迎来到阿里云论坛。 请问您的实例安全组是否允许所以协议通过呢? ------------------------- 回 361楼(xl_young) 的帖子 您好, 能否截图看看安全组规则的内容? ------------------------- 您好,欢迎来到阿里云论坛。可以ping6通,wget返回404错误信息:--2017-08-01 12:24:03--  http://api.qingyun100.com/Resolving api.qingyun100.com (api.qingyun100.com)... 2001:470:18:490::2, 139.196.40.67Connecting to api.qingyun100.com (api.qingyun100.com)|2001:470:18:490::2|:80... connected.HTTP request sent, awaiting response... 404 Not Found2017-08-01 12:24:03 ERROR 404: Not Found. ------------------------- 回 365楼(菜鸟017) 的帖子 您好, 欢迎来到阿里云论坛。 从外围的服务器来测试的话,提示403禁止访问喔: --2017-08-09 09:35:44--   http://tangxianqipai1.zai0312.com:90/ Resolving tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)... 2001:470:18:695::2 Connecting to tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)|2001:470:18:695::2|:90... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-08-09 09:35:45 ERROR 403: Forbidden. ------------------------- 回 368楼(菜鸟017) 的帖子 您好, 当时,我是使用境外的IPv6机子来为您测试的喔。 ------------------------- 回 369楼(菜鸟017) 的帖子 您好, 这个可能是测试时,所使用的DNS域名服务器不支持ipv6吧。 一般这个不太紧要的,因为国内的DNS服务器,一般没有IPv6地址的,除非您使用国外的。 ------------------------- 回 372楼(菜鸟017) 的帖子 您好, 目前的情况,可能阿里云没有为ECS配置可公众访问的IPv6地址呢。 阿里云的公共DNS服务器,目前好象也没有IPv6地址。 ------------------------- 回 374楼(菜鸟017) 的帖子 您好, 如果是在Windows 2012,删除之前存在的“ip6tunnel”虚拟接口, 或许可以试试以下这个命令: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 377楼(菜鸟017) 的帖子 您好, 很高兴听到您已经解决了问题, 有空时,请多来阿里云论坛逛逛喔。 ------------------------- 回 380楼(sheldonlin) 的帖子 您好, 欢迎来到阿里云论坛。 能否贴出您在Windows里执行的命令? ------------------------- 您好,可能需要检查web服务是否也在ipv6的网络地址里监听80端口: --2017-08-20 09:37:23--  (try: 2)   http://kambuzz.com/ Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:80... failed: Connection re fused. liujia@hk2:~/test6$ ping6 2001:470:18:8f2::2 PING 2001:470:18:8f2::2(2001:470:18:8f2::2) 56 data bytes 64 bytes from 2001:470:18:8f2::2: icmp_seq=1 ttl=127 time=311 ms 64 bytes from 2001:470:18:8f2::2: icmp_seq=2 ttl=127 time=310 ms ------------------------- 回 386楼(sheldonlin) 的帖子 您好, 是的。 好象没有80端口的监听使用情况喔。 执行以下的命令,再看看: netstat -noa | find ":80" ------------------------- 回 388楼(sheldonlin) 的帖子 您好, 您是想让您的站点能从ipv6的网络里访问到页面内容吗? 从您的命令输出结果来看,好象并没有web进程喔。 关于苹果对于ipv6-only的要求,请看这个指导文档: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1 ------------------------- 回 391楼(sheldonlin) 的帖子 您好, 那您在运行tomcat后,执行 netstat -noa | find ":8080" 后,有哪些输出结果呢? ------------------------- 回 394楼(sheldonlin) 的帖子 您好, 请尝试检查实例的安全组规则,看是否有阻止外网访问8080端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 398楼(sheldonlin) 的帖子 您好, 总结得不错。 现在测试,是可以从外网的ipv6测试机访问的: liujia@hk2:~/test6$ wget -6 kambuzz.com:8080 --2017-08-21 10:51:58--   http://kambuzz.com:8080/ Resolving kambuzz.com (kambuzz.com)... 2001:470:18:8f2::2 Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:8080... connected. HTTP request sent, awaiting response... 200 Length: unspecified [text/html] index.html: Permission denied 如果您的实例是Linux系统的,建议在后台长驻运行一个ping6的命令,如 ping6 ipv6.google.com ,以让您的ipv6隧道地址保持激活的状态,避免如20分钟后ipv6隧道地址ping6不通。 ------------------------- 回 400楼(sheldonlin) 的帖子 您好, 有时您的IPv6隧道地址ping不通, 在ping通时,可以访问到页面的内容,如: ------------------------- 回 402楼(sheldonlin) 的帖子 您好, 不确定具体的原因,但您可以尝试更换到其它的中转服务器,如美国的,看看会不会比目前的香港好些。 ------------------------- 回 405楼(sheldonlin) 的帖子 您好, ping6了几分钟后,可以ping通了。 liujia@hk2:~$ ping6 2001:470:c:67a::2 PING 2001:470:c:67a::2(2001:470:c:67a::2) 56 data bytes 64 bytes from 2001:470:c:67a::2: icmp_seq=232 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=233 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=234 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=235 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=236 ttl=123 time=315 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=237 ttl=123 time=387 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=238 ttl=123 time=387 ms --- 2001:470:c:67a::2 ping statistics --- 238 packets transmitted, 7 received, 97% packet loss, time 238848ms rtt min/avg/max/mdev = 313.431/335.021/387.851/33.233 ms ------------------------- 回 407楼(sheldonlin) 的帖子 您好, 测试的ping值差不多喔: PING 2001:470:18:94d::2(2001:470:18:94d::2) 56 data bytes 64 bytes from 2001:470:18:94d::2: icmp_seq=1 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=2 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=3 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=4 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=5 ttl=127 time=325 ms ------------------------- 回 409楼(觅约) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,访问正常喔: liujia@hk2:~/test6$ wget -6 app.miyueta.com:9088 --2017-08-28 18:25:36--   http://app.miyueta.com:9088/ Resolving app.miyueta.com (app.miyueta.com)... 2001:19f0:6001:213:5400:ff:fe77:5183 Connecting to app.miyueta.com (app.miyueta.com)|2001:19f0:6001:213:5400:ff:fe77:5183|:9088... connected. HTTP request sent, awaiting response... 200 OK Length: 52 [text/html] ------------------------- Re:回 411楼(ios——ot) 的帖子 您好, 我现在从外网为您ping6测试,可ping通,但有丢包。 liujia@hk2:~$ ping6 admin.allti.com.cn PING admin.allti.com.cn(wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=4 ttl=124 time=566 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=5 ttl=124 time=545 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=13 ttl=124 time=539 ms --- admin.allti.com.cn ping statistics --- 16 packets transmitted, 3 received, 81% packet loss, time 15087ms rtt min/avg/max/mdev = 539.496/550.382/566.125/11.400 ms ------------------------- 回 415楼(ios——ot) 的帖子 您好, 有可能。换别的中转服务器,如美国的来对比看看。 ------------------------- 回 437楼(卡乐) 的帖子 版主回复: 没看到相应的安全性评估。 个人想,是这样的:如果您的数据传送开始时,已经是加密的,如https,那隧道转发的服务器也不能读取到数据内容吧? 且,隧道转发的服务商,he.net应该是一家有信誉的公司。 再者,这里的隧道地址设置,目的是帮助APP上架,如果您的APP上架后,可停用隧道地址。 ------------------------- 回 439楼(卡乐) 的帖子 版主回复: 反方向操作哩,如在系统里禁用/删除隧道地址(如netsh int ipv6 delete interface "ip6tunnel")。 ------------------------- 回 443楼(阿凯十三郎) 的帖子 版主回复: 或许您需要检查一下ECS实例的安全组,看是放行了ipv6隧道地址服务器的访问。 目前测试来看,您的ipv6隧道地址从外网是ping6不通的。 --2018-01-25 10:41:07--   http://www.cjnmw.xyz/ Resolving www.cjnmw.xyz (www.cjnmw.xyz)... 2001:470:18:f02::2 Connecting to www.cjnmw.xyz (www.cjnmw.xyz)|2001:470:18:f02::2|:80... failed: Connection timed out. Retrying. liujia@hk2:~/test7$ ping6 2001:470:18:f02::2 PING 2001:470:18:f02::2(2001:470:18:f02::2) 56 data bytes --- 2001:470:18:f02::2 ping statistics --- 21 packets transmitted, 0 received, 100% packet loss, time 20154ms liujia@hk2:~/test7$ ping6 2001:470:18:f02::1 PING 2001:470:18:f02::1(2001:470:18:f02::1) 56 data bytes 64 bytes from 2001:470:18:f02::1: icmp_seq=1 ttl=64 time=1.41 ms 64 bytes from 2001:470:18:f02::1: icmp_seq=2 ttl=64 time=1.40 ms --- 2001:470:18:f02::1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.404/1.409/1.415/0.037 ms ------------------------- 回 448楼(阿凯十三郎) 的帖子 版主回复: 从您的ECS实例能ping通隧道地址服务器的IP,但不代表从隧道地址的服务器能ping通(访问)您的ECS实例喔。 ------------------------- 回 449楼(阿凯十三郎) 的帖子 版主回复: 是哩,看起来,外网已经能通过隧道地址访问到您的apache里了。 您调整了ECS实例的安全组规则吗? ------------------------- 回 452楼(阿凯十三郎) 的帖子 版主回复: 据网友反馈:域名本身的 ipv6 DNS Server 并不重要。 ------------------------- 回 455楼(纪念青春) 的帖子 版主回复: 请试试: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 458楼(老黄000001) 的帖子 您好, 图中信息,显示IPv6隧道地址断开状态, 请问您在之前配置隧道地址的命令中,包含的IP是ECS实例的公网IP还是内网IP? 一般来说,应该在命令中写内网IP的,即您图中的看到的172.18.132.2 ------------------------- 回 460楼(尜淇专版) 的帖子 您好, 在He.net里申请隧道地址时,请填写ECS实例的公网IP地址喔。 ------------------------- 回 462楼(潮约) 的帖子 您好, 使用VPC网络的ECS实例,在配置隧道地址时,是需要绑定内网IP,因为公网IP不是在系统里。 如果配置隧道地址时,绑定了内网IP,也无法正常使用的话,建议检查ECS实例安全组规则或Windows防火墙,如将隧道地址服务器的IPv4加到白名单中。
dongshan8 2019-12-02 02:58:04 0 浏览量 回答数 0

问题

HBase高性能随机查询之道 – HFile原理解析

在各色数据库系统百花齐放的今天,能让大家铭记的,往往是一个数据库所能带给大家的差异化能力。正如梁宁老师的产品思维课程中所讲到的,这是一个数据库系统所能带给产品使用者的”确定性”。 差异化能力通常需要...
pandacats 2019-12-20 20:57:14 0 浏览量 回答数 0

问题

使用 Spring 3 来创建 RESTful Web Services 400 请求报错 

在 Java™ 中,您可以使用以下几种方法来创建 RESTful Web Service:使用 JSR 311(311)及其参考实现 Jersey、使用 Restlet 框架和从头开始...
kun坤 2020-05-30 22:56:53 1 浏览量 回答数 1

回答

在函数计算的一些使用场景中,有时需要在函数中访问第三方服务以获取数据或触发其他工作流。第三方服务往往会通过白名单等机制进行访问控制,这也就需要我们事先将执行函数的机器 IP 加入到白名单中。 而函数计算在执行的过程中,会动态为函数分配执行机器,是无法预先获知机器外网 IP 的,也就无法事先添加白名单而造成无法通过第三方服务的访问控制。这个问题可以通过搭建代理的方式来解决,本文对此方案的步骤进行详细介绍。 具体场景及解法思路 假设用户服务 A ,使用函数计算实现,同时 A 在执行的过程中需要访问受保护的资源,该资源提供方为服务 B (如 MySQL 等),B 对来访者采用白名单方式鉴权。由于函数运行实例的不确定性及不可枚举性,无法在服务 B 事先添加白名单。 基本思想及方案是:搭建 Nginx 代理 A -> B 的访问,B 在白名单中添加代理服务器 IP,放入所有通过代理到达的请求并返回受保护资源。如考虑到代理服务器可被其他恶意访问者攻击或扫到,导致服务 B 中的数据被获取,可考虑在 proxy 或服务 B 中另行增加 Token 等校验方式。 Illustration 创建服务和编写函数 本文用函数 A 实现需要访问具有访问控制的服务,用函数 B 实现具有访问控制的第三方服务。 函数 A 使用 HTTP 触发器,接收外部用户实际请求,并在处理请求过程中访问函数 B 尝试获取受保护数据,如果获得该数据,则进行进一步处理操作,否则不进行特定操作。 函数 B 在这里同样使用 HTTP 触发器。B 利用白名单校验来访者,如果来访者通过校验则返回请求的资源,否则返回鉴权失败。 代理服务器使用 ECS 搭建,直接利用 Nginx 进行服务代理。 在服务 A 与服务 B 中创建函数 分别对 A 和 B 新建立两个服务,在左侧导航栏选择,分别进入到新建的服务中。 单击 【创建函数】,在创建函数页面: 单击 【选择全部的语言】,在下拉菜单中选择 Python2.7(本示例代码基于 Python )。 选择 【空白函数】。 选择【不创建触发器】。 创建函数并填写所在服务、函数名称、描述信息和运行环境信息。 单击【下一步】。 核对信息无误后,单击【创建】。 编写代码。 对于函数 A ,采用最简单的 HTTP 触发器方式建立,代码可直接 copy 下述内容并在控制台上提交保存。 对于函数 B ,使用了 Django 框架实现,因此可采用命令行工具 fcli 或 PythonSDK 上传代码包,也可使用 OSS 或 zip 包直接上传。 对 A 和 B 中的函数分别构建 HTTP 触发器。 在创建或搭建过程中如遇困难可参考这里的详情: HTTP 触发器示例 至此,我们的服务就搭建完成了。因为 B 中的白名单只添加了代理服务器的公网 IP,此时 A 中直接调用 B 是无法获取授权的。下面,我们具体看下各个函数的内容。 编写函数 A 函数 A 直接采用普通的HTTP触发器触发。 编写函数 函数说明: handler 为函数调用入口,主要为业务逻辑,在这里分别模拟了不经过代理调用函数 B 及经过代理调用函数 B 的调用结果。 get_data_by_url 主要封装了请求函数 B 数据的业务逻辑。 my_http_request 实现了利用代理发送 HTTP 请求的方式。 -- coding: utf-8 -- import logging import urllib, urllib2, sys import ssl import json 代理服务地址 proxy_address = 'ip:port' 函数 B 服务地址 data_service_host = 'https://{id}.{region}.fc.aliyuncs.com' data_service_path = '/service/path' def handler(environ, start_response): """ entrance """ url = data_service_host + data_service_path # 使用代理访问 proxy_result = get_data_by_url(url, proxy_address) # 不使用代理访问 normal_result = get_data_by_url(url, None) # 展示用,直接将两种情况的返回拼接后展示出来 result = { "query_with_proxy_result": proxy_result, "query_without_proxy_result": normal_result } status = '200 OK' response_headers = [('Content-type', 'text/json')] start_response(status, response_headers) return json.dumps(result) def get_data_by_url(url, proxy): """ 用户数据服务访问封装 """ result = { "success": False, "secret_data": '', "data_service_raw_data": {} } content = my_http_request(url, proxy) if content: content = json.loads(content) result["data_service_raw_data"] = content # 模拟访问后数据处理 if "authorized" in content and content["authorized"]: result["success"] = True result["secret_data"] = content["protected_data"] return result def my_http_request(url, proxy=None): """ 带proxy的网络请求 """ try: ret = None socket_fd = None request = urllib2.Request(url) request.add_header('User-Agent', 'Fake_browser/1.0') if proxy: request.set_proxy(proxy, 'http') opener = urllib2.build_opener() socket_fd = opener.open(request) ret = socket_fd.read() except Exception as e: ret = json.dumps({"info": "exception in proxy query: %s" % e}) finally: if socket_fd: socket_fd.close() return ret 编写函数 B 函数 B 我们采用 Django 搭建了一个 Web 服务,服务中使用白名单设置进行鉴权,通过后返回相应数据。代码结构如下: project/ ├── lib │ ├── Django-1.11.13.dist-info │ ├── django │ ├── pytz │ └── pytz-2018.4.dist-info ├── main.py └── src ├── init.py ├── bin │ ├── init.py │ └── manage.py ├── conf │ ├── init.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── data └── views ├── init.py └── view.py 以下章节为Django代码示例。 编写函数 函数入口: #!/usr/bin/env python coding=utf-8 import sys import os load local django sys.path.insert(0, os.path.dirname(os.path.abspath(file)) + '/lib') sys.path.append(os.path.join(os.path.dirname(os.path.abspath(file)), "src")) import django print (django.version) import views.view from conf.wsgi import application def handler(environ, start_response): import urlparse parsed_tuple = urlparse.urlparse(environ['fc.request_uri']) li = parsed_tuple.path.split('/') global base_path if not views.view.base_path: views.view.base_path = "/".join(li[0:5]) return application(environ, start_response) urls.py: from django.conf.urls import url from django.contrib import admin from views import view urlpatterns = [ url(r'^index$', view.index), url(r'^get_data$', view.get_data), ] views.py: #!/usr/bin/env python coding=utf-8 from django.http import HttpResponse from django.conf import settings import logging import json logger = logging.getLogger() base_path = "" def index(request): """ 测试入口 """ logger.info("Django request detected! url: index") white_list = settings.WHITE_LIST allowed_hostlist = ' ' for allowed_host in white_list: allowed_hostlist += allowed_host allowed_hostlist += ' ' return HttpResponse(" It works! Copyright: jianyi White list: %s" % allowed_hostlist, status=200) def get_data(request): """ 数据获取接口 """ result = { "remote_ip": '', "white_list": [], "authorized": False, "protected_data": '' } if request.META.has_key('HTTP_X_FORWARDED_FOR'): remote_ip = request.META['HTTP_X_FORWARDED_FOR'] else: remote_ip = request.META['REMOTE_ADDR'] result["remote_ip"] = remote_ip result["white_list"] = settings.WHITE_LIST if remote_ip in result["white_list"]: result["authorized"] = True result["protected_data"] = "Alibaba" return HttpResponse(json.dumps(result), status=200) settings.py:在默认的 settings.py 文件结尾增加白名单配置:白名单中添加代理服务器的公网 IP 。 User conf WHITE_LIST = [ "127.0.0.1", "xx.xx.xx.xx" ] 搭建代理步骤 在这里我们直接使用 Nginx 进行了服务的代理。Nginx 可以部署到 ECS 中,也可以部署到普通服务器上。Nginx 的编译安装可直接在网上搜索或参考这里,安装后,配置文件代理部分可简单配置如下: server{ resolver x.x.x.x; listen 8080; location / { proxy_pass http://$http_host$request_uri; } } 注意: 不能有 hostname 必须有 resolver( dns ),即上面的x.x.x.x,换成你们的 DNS 服务器 ip 即可。 $http_host 和 $request_uri 是 nginx 系统变量,不要想着替换他们,保持原样就 OK。 在实际生产环境中,我们建议搭建负载均衡集群(利用 nginx 、keepalived 等)及代理服务器集群进行代理服务,以提高系统可用性及整体性能。 查看dns方法: cat /etc/resolv.conf 上传函数 A 、B 的代码并配置好触发器,并启动代理 Nginx ,我们就可以开始进行测试了。 测试结果 更新时间:2018-10-23 16:43:33 本页目录 直连函数 B 获取数据结果 触发函数 A 本文使用上一步中创建的函数,测试结果如下。 直连函数 B 获取数据结果 直接使用浏览器触发函数 B,由于本地电脑 IP 不在 B 的白名单中,返回权限未校验: { # 未通过校验返回空白 "protected_data": "", "white_list": [ "127.0.0.1", "x.x.x.x" ], "authorized": false, # 返回的是来访者ip "remote_ip": "y.y.y.y" } 触发函数 A 通过浏览器触发函数 A ,获得 A 在处理请求过程中分别使用 Proxy 及直连方式访问函数 B 的结果: { "query_with_proxy_result": { "secret_data": "Alibaba", "success": true, "data_service_raw_data": { "remote_ip": "x.x.x.x", "white_list": [ "127.0.0.1", "x.x.x.x" ], "authorized": true, "protected_data": "Alibaba" } }, "query_without_proxy_result": { "secret_data": "", "success": false, "data_service_raw_data": { "remote_ip": "yy.yy.yy.yy", "white_list": [ "127.0.0.1", "x.x.x.x" ], "authorized": false, "protected_data": "" } } } 我们可以看到通过代理拿到了受保护的数据。 至此,已完成整体试验流程。您可以参考上述流程进行试验,并结合产品实际情况进行调整及应用。
1934890530796658 2020-03-27 18:22:41 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT