我将Lightsail图像导出到EC2 g2。2XL和g2。8XL,它工作正常,但在g3上尝试了同样的功能。如果是大型实例,则无法从外部访问。我使用另一个Lightsail映像作为主主机,使用EC2实例作为计算服务器。当我记录
on("error",callback)
它说,http请求的输出
{ Error: connect ECONNREFUSED ::ffff:x.y.z.w:80
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '::ffff:x.y.z.w',
port: 80 }
我试图解决的问题:
-
禁用任何ApacheTomcat:它说已经禁用(我猜是从图像导出)
-
预路由从80到1024(Nodejs应用程序监听)
-
在尝试发出任何http请求之前,等待EC2实例的状态变为2/2已检查(通过javascript使用aws sdk)。
-
附加一个安全组,该组允许1024和80个端口,并在入站和出站规则上设置为任意位置(不是生产,只是测试)。
-
SSH连接工作,我可以从SSH通道安装应用程序,然后为了自动化,我获取它的“映像”并终止实例,主服务器从该映像创建新实例。(没问题)。物理上没有问题,但有东西阻止了HTTP请求。
我执行以下步骤将Nodejs服务移动到应用程序:
-
在Nodejs中开发一些模块
-
拍快照
-
将快照导出到ec2(等待完成)
-
打开ec2控制台,选择导出的AMI
-
单击启动(选择g2实例、安全组、生成密钥、使用ssh登录)
-
安装必要的软件(使用g2、p2……实例的资源)
-
获取完整安装环境的新映像(通过分离ssh来确保这样做不会丢失数据)
-
在AWS SDK(Javascript)中使用其AMI代码创建一个新实例,等待其运行,等待其两种状态都被检查,运行应用程序。
-
g2镜像创建g2实例,g3镜像创建g3实例。
但只适用于g2实例。
我还需要尝试什么?为什么这在g2实例上可以正常工作,但在g3实例上却不行?
-
Ubuntu18.04(最初是普通的Ubuntu18.04,但现在仍然叫亚马逊Ubuntu18.04?)
-
Nodejs 8(在1024端口上运行)
---Lightsail主机使用expressjs处理传入请求,使用http处理传出请求。EC2实例也是如此。
如果这有帮助:
-
EC2实例可以对Lightsail实例进行http请求。
-
Lightsail instance可以通过快递获得。我在听。
-
Lightsail向EC2发出的第一个http请求导致上述错误输出。(g3实例)
-
在lightsail+g2实例上,http请求和expressjs监听都可以在两台服务器上工作。
-
EC2实例是共享的,而不是专用的。
-
对于请求,我使用HTTP的POST并给它json对象。
也许http请求+expressjs监听设计也错了?