Articles of 亚马逊 EC2

主pipe不启动:不能chdir … EACCES

我正在build立一个ec2服务器,用ngnix和gunicorn来运行一个django项目。 服务器正在运行Amazon Linux。 当我从命令行运行启动gunicorn命令,它启动服务器,但是当我尝试从pipe理员运行它,我得到以下错误: supervisor: couldn't chdir to /home/ec2-user/virtualenvs/wakeup-site/django-site: EACCES supervisor: child process was not spawned 当我以sudo身份运行supervisor或者以我自己的用户身份运行时会发生这种情况 目录权限:/ home / ec2-user / virtualenvs / wakeup-site / django-site drwxrwxrwx 15 ec2-user ec2-user 4096 Mar 6 08:21 django-site 相关的Supervisor.conf文件: [program:wakeup] command=./start_gunicorn.bash directory="/home/ec2-user/virtualenvs/wakeup-site/django-site" user=ec2-user autostart=true autorestart=true stdout_logfile=/home/ec2-user/virtualenvs/wakeup-site/django-site/logs/supervisorconf.log stderr_logfile=/home/ec2-user/virtualenvs/wakeup-site/django-site/logs/gunicorn_stderr.log start_gunicorn.bash: #!/bin/bash # Starts the Gunicorn server set -e # […]

禁用EC2实例的公共互联网连接

我在AWS EC2上有一个OpenVPN AC服务器。 我使用这个VPN访问我的AWS VPC(虚拟私有云),在那里我有一台服务器,我只需要通过这个通道访问。 一切正常,我的客户端连接到服务器,并通过VPN获取所有的通信。 我的问题是,我不希望任何我的EC2实例访问互联网。 除了我的VPC中的可用服务之外,他们不能访问任何网页或networking服务。

日志突然停止在Apache / 2.4.18(Ubuntu 16.4.2)AWS EC2上

我正在将Python打印语句logging到/var/log/apache2/error.log,但在过去的几天里,我发现了什么时候我没有任何logging。 Web请求正在正常处理。 sudo apachectl restart将恢复日志loggingfunction。 在前面的日志(error.log.1,其中包含正确的日志logging)的末尾有这样的通知: [5月24日星期三18:27:04.070726 2017] [mpm_event:通知] [pid 1903:tid 139769062209408] AH00494:收到SIGHUP。 试图重新启动 我明白这个通知可能与日志轮换有关。 我目前有52个较旧的日志,但我有足够的磁盘空间(我使用了7.74GB的63.7%)。 奇怪的是,当我第一次使用apachectl graceful-stop时就开始发生这种情况。 每次发生的时候,日志都会被轮转,但是那时没有什么新东西进入日志,直到我手动重启apache。

EC2窗口实例的“系统日志”在哪里?

AWS文档说:“对于Windows实例,实例控制台输出显示最后三个系统事件日志错误。 所以这显然是错误的。 当我从Web控制台的一个EC2实例运行“获取系统日志”时,我看到了 2017/05/23 21:43:15Z: EC2ConfigMonitorState: 0 2017/05/23 21:43:15Z: Windows sysprep configuration complete. 2017/05/23 21:43:16Z: AMI Origin Version: 2016.12.14 2017/05/23 21:43:16Z: AMI Origin Name: Windows_Server-2012-R2_RTM-English-64Bit-Base 2017/05/23 21:43:16Z: OS: Microsoft Windows NT 6.3.9600 2017/05/23 21:43:16Z: OsVersion: 6.3 2017/05/23 21:43:16Z: OsProductName: Windows Server 2012 R2 Standard 2017/05/23 21:43:16Z: Language: en-US 2017/05/23 21:43:16Z: TimeZone: Coordinated Universal Time 2017/05/23 […]

ELB健康检查仅针对HTTPS失败

我目前在我的Ubuntu单实例上运行ELB(应用程序types),它被设置为侦听HTTP和HTTPS。 HTTP目标组运行状况检查没问题,但HTTPS目标组运行状况检查不是。 不幸的是,工具提示没有提供太多的帮助,只是给我回复了“健康检查失败”的消息。 所以当我尝试通过HTTPS协议上的域访问我的网站时,它返回了一个502错误的网关错误。 但是,访问HTTP协议的网站工作正常。 目前,该域名正指向我的ELB。 到目前为止,我已经尝试了以下,但还没有解决这个问题。 1)我确保了ELB的安全组,并且我的Ubuntu实例接受来自HTTP和HTTPS的入站stream量以及所有可用端口的出站stream量。 2)我已经向ELB HTTPS侦听器添加了ACM证书,并将其转发给位于HTTPS协议上的目标组。 3)在apache2 conf文件中添加了一个虚拟主机443条目,类似于端口80。 有没有办法让我debugging为什么HTTPS目标组运行状况检查失败? 或者我在这里错过了一些东西。

MongoDB以100次/秒的速度停顿,但是基准testing则表示54000次写入/秒

我正在AWS EC2 m4.large实例上运行MongoDB(v3.4 Community Edition)。 我根据这个MongoDB教程安装它。 我没有修改任何MongoDBconfiguration。 我没有configuration任何副本集或碎片。 我有一个Jersey API,它使用org.mongodb.morphia(v1.3.2)Java Driver与MongoDB进行交互。 我已经使用SoapUI创build了一个负载testing,其中我调用了100个API,然后为MongoDB创build了100个写操作(每个写操作创build一个集合中的一个文档)。 我跑了24小时的testing。 最后,我看到我的networking服务器试图与Mongo服务器通信,但连接超时,主机CPU运行在100%。 我得出结论,MongoDB服务器窒息。 然后我尝试了这个基准testing ,仍然使用m4.large上的数据库。 在923.133秒内创build了50,000,000条logging,即每秒54,113条插入。 那快500多倍! 如果MongoDBperformance的如此出色,那么为什么在通过JAVA驱动程序时每秒插入100次呢? Java驱动程序很慢? 我的Java驱动程序使用错了吗? 我的EC2实例大小是否太低? 它会有助于添加复制(RAID和副本集)? 我是MongoDB主机新手,非常感谢您的帮助。 更新: 负载testingconfiguration: 客户端:SoapUI(v5.3),Web服务器:Tomcat 8,Java:v1.8,MongoDB:v3.4。 我在AWS Mumbai地区运行我所有的服务器。 我在相同的EC2实例(m4.large)上托pipeWeb Sever和MongoDB服务器,并且在Windows计算机上运行客户端(t2.micro)。 经过进一步调查,我认为瓶颈在我的代码中。 我使用Mongostat实用程序来查看mongodb的行为。 我发现,在一开始有两个连接。 一旦我开始我的负载testing,连接就跳转到102(连接数不会超过102,即使在每秒1000个请求的情况下,MongoDB也会在很长一段时间后closures它们)。 负载是每秒100个请求。 这是显示这种行为的gif。 我发现了一些类似的问题,但答案没有透露太多。 我已经考虑到了这些build议。 这里有一些样品, https://stackoverflow.com/questions/21580147/mongo-connection-leak-with-morphia https://stackoverflow.com/questions/31469656/spring-data-mongodb-not-closing-mongodb-connections Java代码: 创build连接:我使用MongoDBbuild议的应用程序使用一个连接。 实现单例模式。 public class DatabaseConnection { private static volatile MongoClient […]

在CloudFormation模板中的EC2实例交叉引用

我在这里吃了一点。 我有一个特定的应用程序(我无法修改),我需要使用CloudFormation自动在3个AWS EC2实例上部署这些应用程序,并且我需要其中的3个在引导时相互了解,或者至less在任何stream量击中他们。 简而言之,需要发生的事情是,随着机器的启动, 每个机器都需要运行一个本地命令(一个Windows Shell脚本),其中包含所有 3台机器的主机名或IP。 想象一下: c:\>node startReplication.js server1.aws.com,server2.aws.com,server3.aws.com 更难的是我不能使用静态IP或名称,我需要这是完全dynamic的每个堆栈。 我也不能使用任何非AWS本地工具,如厨师或Terraform或任何其他第三方,因为在这里指定不相干的原因。 一切都必须通过本地AWS服务完成。 我试过做这样的事情: "UserData" : { "Fn::Base64" : { "Fn::Join" : [ ",", [ { "Fn::GetAtt" : [ "server1", "PublicDnsName" ] }, { "Fn::GetAtt" : [ "server2", "PublicDnsName" ] }, { "Fn::GetAtt" : [ "server3", "PublicDnsName" ] } ] } } 为了只传递dns的名字,甚至还没有到达如何实际运行脚本/命令的地步 – […]

AWS – 完成任务后closuresECS群集的EC2

在docker工作(10分钟)我有一个小工作,我想在每天早上运行。 我想从AWS获得的是这样的: 1.启动EC2实例。 运行我的docker工作。 3.closuresEC2实例。 我到目前为止所尝试的是: – 创build了一个ECS任务。 – 使用一台机器创build一个ECS群集来运行任务。 我可以手动运行任务,它的工作原理。 ECS也允许你也有完美的计划任务。 唯一的问题是EC2实例一直在运行。 我可以将其缩小到0个实例手动,但我正在寻找一种方式自动缩小它,并扩展它,直到运行任务。 什么是最好的/最简单的方法来实现它? 干杯, Leonti

2个ELB(ALB)到1个目标群体,有可能吗?

我有以下计划:互联网< – > elb1external < – >清漆< – > elb2internal < – > targetgroupofwebnodes 但是一些/ static / * / media / *会直接从elb1external路由到target组,因此我需要elb1和elb2指向同一个目标webNode组。 当我尝试从第二个ELB上的下拉列表中select它时,亚马逊networking控制台显示该组为灰色,但是我确实看到在networking上提及该scheme是可能的。 作为解决方法,我创build了targetgroupofwebnodes2,其中包含相同的服务器,但我只需要1个,下一个任务是自动调节,所以将会有一个自动调节组而不是目标组。 我必须使用CLI或通过Web控制台的方式吗? 谢谢!

EC2无法启动,因为挂载 – 没有日志

我有一个EC2托pipe的Ubuntu 16.04服务器,无法启动。 当我查看亚马逊控制台中的日志时,我只能看到黑屏。 当我将磁盘挂载到另一台服务器时,我在fstab中有以下几项: LABEL=cloudimg-rootfs / ext4 defaults,discard 0 0 LABEL=www /home xfs defaults,noatime,nofail 0 2 我在/ var / log / syslog或其他地方找不到任何表示安装错误的条目,但这可能只是我在这个特定领域缺乏知识。 但是,当我从/ etc / fstab删除第二行服务器启动。 一旦它运行,我可以然后安装磁盘: mount /dev/xvdf1 /home 我也在fstab中试过这一行: /dev/xvdf1 /home xfs defaults,noatime,nofail 0 2 但是我得到了相同的结果。