我正在使用AWS codedeploy部署我的网站。 我的应用程序停止步骤如下所示: ApplicationStop: – location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh timeout: 600 runas: root 这个脚本看起来像这样: source ~/.bashrc cd /var/www/html/laravel if [ "$LARAVEL_ENV" = "production" ] then php artisan deployment:remove-self-from-loadbalancer –env=$LARAVEL_ENV fi 手动运行脚本需要一秒钟左右的时间,但部署运行时会挂起并在30秒后失败,并将Script at specified location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh failed to complete in 30 seconds抛出Script at specified location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh failed to complete in 30 seconds 。 使用的源将env设置为生产,并且我可以看到预期的效果:在部署开始后,几乎立即从负载平衡器中删除服务器。 据我所知,这个超时不应该发生,直到10分钟后。 为什么这么快发生?
TL; DR 我可以告诉AWS EC2从AMI启动一个实例,但是保留主机密钥 – 保存在AMI中的/etc/ssh中的密钥 – 而不是生成新密钥并覆盖保存在AMI中的密钥。 完整的问题: 在AWS上,我设置了一个EC2实例作为SFTP主机。 自动化系统(由客户pipe理)将定期将文件传送到那里。 这些系统将通过客户提供的公钥进行authentication。 在EC2实例前面将会有一个弹性IP。 这个IP需要永远保持不变,因为连接到我们的自动化系统依赖于这个恒定性。 在幕后,我想保留在任何时候使用不同的交换EC2实例的能力,并将现有的IP地址与新的服务器重新关联。 (这样做的一些原因是为了启动一个更强大的实例,或者将其他各种服务器整合到一个实例中)。 这种重新关联需要对提供文件的自动化系统是透明的。 但是,我希望自动化系统在我进行这样的切换时会吓坏了,因为它会检测到主机的指纹已经改变。 也许通常这是一件好事,但我相信在这种情况下,因为一个主机应该取代另一个主机,保持身份是适当的。 所以,每当我按照描述交换实例时,我需要将原始主机的公钥复制到新主机中。 实际上,我预计这会自动发生 – 如果我使用相同的AMI来启动这两个主机,但看起来EC2故意将新的公共密钥分配给新的实例,覆盖与AMI保存的任何密钥。 我的问题是什么是达到预期行为的最简单的方法。 我知道如何手动完成,将旧服务器上的密钥复制到新服务器上,并覆盖分配给新服务器的密钥。 但是,我不知道EC2是否有自动或惯用的方式来做到这一点。
我们正在AWS VPC中创build一个Windows AD实例,我们想知道为该实例分配一个静态IP是否有任何好处,而不是使用分配DHCP地址的子网的默认行为。 鉴于DHCP地址将始终与该实例在实例的整个生命周期中关联,直到它终止,我没有看到使用静态分配的直接好处。 我也想知道,如果你想克隆实例,这将如何影响你? 思考?
我已经看到了使用AMI连接2个区域成为专用networking的方法,但没有办法通过VPC或DirectConnect来实现。 目前我们有: eu-west-1(11个服务器),位于172.16.0.0/16 ap-southeast-2(当前1服务器)在172.31.0.0/16 我以为AWS已经有了一些链接地区的东西,但是昨天有很多Google,我只find了使用linux系统来路由stream量的方法。 如果这是唯一的方法,我很好,但是我认为还有一些更简单的方法吗? 问候 利亚姆
我看到这个理论上是一样的,但没有提供额外的细节,所以他们的答案是一般的,没有解决的。 我的问题是相似的,有一个悲伤的转折: 我现在有一个主RDS实例为应用程序提供服务,我想将这些数据移动到新的ENCRYPTED RDS实例。 由于所有使用EBS的备份/快照默认情况下都没有RDS可用的内置复制/从属技术,所以关键字被encryption 。 起初,我们只是简单地接受停机时间,但使用MySQLDump,导出需要4个小时,导入到encryption的数据库超过13小时。 现在我们需要一个RDS友好的解决scheme,它将允许我们保持当前的主RDS实例和encryption的RDS实例同步,直到我们决定将encryption的一个作为我们的新主服务器。 在这一点上,我们将保持老师的身份,并同步,直到我们确信一切都安全。 任何人都可以提供如何做到这一点的信息?
我在EC2实例上遇到了Apache2的小问题。 我安装LAMP,但是当我打电话给apache2我收到这个: [Thu Dec 03 22:06:56.100599 2015] [core:warn] [pid 31235] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined [Thu Dec 03 22:06:56.100721 2015] [core:warn] [pid 31235] AH00111: Config variable ${APACHE_PID_FILE} is not defined [Thu Dec 03 22:06:56.100777 2015] [core:warn] [pid 31235] AH00111: Config variable ${APACHE_RUN_USER} is not defined [Thu Dec 03 22:06:56.100824 2015] [core:warn] [pid 31235] […]
我有一个Amazon AMI 2015.09实例作为我的后端服务器的NAT服务器。 我已经在同一个盒子上configuration了OpenVPN客户端,NAT服务器能够通过VPN与所有的东西进行通话,所有的资源都可以正常使用。 但是这个NAT背后的所有后端服务器不再能够访问互联网。 一旦我拿掉了NAT服务器上的OpenVPN客户端,它后面的实例就能够再次联机。 我可以在AWS上专门查看NAT实例吗? 我不知道我可以提供什么,当我知道VPN连接function之间的客户端和服务器,所以我假设它可能是路由/ iptables规则在NAT转发不按预期。 NAT服务器确实从后面的实例看到stream量( tcpdump -n not port 22 ),但是我不太清楚它是如何处理这个stream量的。 任何有关为什么发生这种情况的build议,以及如何解决这个问题将是非常好的。 编辑:因为这是一个function的NAT服务器,在ec2实例禁用src / dst检查。 EDIT2: OpenVPN客户端输出closures: [root@ip-10-0-0-39 ~]# ip route list table all default via 10.0.0.1 dev eth0 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.39 169.254.169.254 dev eth0 broadcast 10.0.0.0 dev eth0 table local proto kernel scope […]
有一个简单的方法来确定最低的ping给予公共IP地址的AWS EC2区域? 有一个由第三方托pipe的服务器。 我只知道服务器的IP地址。 鉴于我正在寻找最好的ping到该服务器的EC2地区。 我无法从第三方服务器ping通AWS服务器。 编辑:我的意思是区域,而不是可用性区域。
我正在将我的个人网站迁移到EC2上。 我已经把网站的一部分运行起来了,但是我被卡在了电子邮件服务器上。 所有我想要做的是接收less量的电子邮件(最多100 /月),并将其转发到我的Gmail地址。 据我所知, SES是AWS推荐的电子邮件解决scheme,但它并没有设置为邮件中继 (ctrl + F“邮件中继”以查找解释这一点的注释)。 我根据这些指示设置了postfix,并且可以validationpostfix是我们并且在我的服务器的端口25上运行: # netstat -ltnp | grep 25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 15052/master 我也validation了MX DNSlogging正确地指向了我的网站使用的相同的DNSlogging(我已经validation了这个logging是可达的): # dig bleaney.ca mx … ;; ANSWER SECTION: bleaney.ca. 2975 IN MX 0 bleaney.ca. 我修改了应用于我的EC2实例的安全组,使其具有以下规则: 80 tcp 0.0.0.0/0 ✔ 22 tcp 0.0.0.0/0 ✔ 25 tcp 0.0.0.0/0 ✔ 尽pipe如此,当我将电子邮件发送到我的域名时,我的后缀日志中没有任何内容显示出来,并且没有可交付消息返回给我发送的邮件提供程序。 看起来好像还在阻塞端口25,因为这是我从端口扫描得到的所有信息: Not […]
我正在尝试在一个exim日志上做一些处理,但是我的脚本没有收到作为参数的旋转的日志文件名,而是获取了原始的日志文件名(不再存在) /var/log/exim/*log" { daily rotate 3650 delaycompress missingok notifempty nosharedscripts postrotate echo $0 $1 $2 >> /tmp/out /path/to/script $1 endscript } / tmp / out中的结果: logrotate_script /var/log/exim/main.log 我在跑 logrotate –force -v /etc/logrotate.conf 输出似乎表明它正在重命名,然后运行: renaming /var/log/exim/main.log to /var/log/exim/main.log-20160105 running postrotate script 这是在一个亚马逊Linux实例。 我已经用sharedscripts和nosharedscripts选项试了一下,没有什么区别。 我怎样才能得到旧的重命名的文件名?