服务器管理员

系统和网络管理员的问答

2
授予EC2 IAM角色对S3存储桶的读取权限
我有一个AWS Elastic Beanstalk Rails应用程序,正在通过配置脚本进行配置,以从S3存储桶中提取一些文件。启动应用程序时,我在日志中始终收到以下错误(出于安全性考虑,存储桶名称已更改): Failed to retrieve https://s3.amazonaws.com/my.bucket/bootstrap.sh: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message> 配置文件: packages: yum: git: [] files: /opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstrap.sh: mode: "00755" owner: root group: root source: https://s3.amazonaws.com/my.bucket/bootstrap.sh 设置了具有aws-elasticbeanstalk-ec2-roleIAM角色作为实例角色的Elastic Beanstalk环境。该角色具有以下策略: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::my.bucket/*" } …

3
为什么内存受限的LXC容器中的应用程序将大文件写入磁盘会被OOM杀死?
EDIT2:此问题在3.8.0-25-通用#37-Ubuntu SMP下似乎也存在 编辑:我修改了原始标题为“为什么用dd写入文件会触发Linux内存不足管理器”的问题?为了更好地反映出我对以下所述的一般问题感到担忧: 我遇到一个麻烦的情况,当我写一个大小超过内存限制(设置为300MB)的文件时,OOM杀手正在我的LXC容器中强行杀死进程。当我在实际上只有512 MB RAM的Xen虚拟机(EC2 t1.micro)上运行应用程序时,不会发生此问题,因此在尊重容器内存限制的情况下文件缓冲似乎存在一些问题。 作为一个简单的示例,我可以演示dd写入的大文件将如何引起问题。同样,此问题困扰着所有应用程序。我正在寻找解决应用程序缓存过大的一般问题。我了解如何使“ dd”工作。 场景: 我有一个LXC容器,其中memory.limit_in_bytes设置为300 MB。 我尝试将dd添加到约500 MB的文件,如下所示: dd if=/dev/zero of=test2 bs=100k count=5010 大约20%的时间,Linux OOM管理器由该命令触发,并且进程被杀死。不用说,这是非常意想不到的行为。dd旨在模拟容器中运行的程序编写的实际“有用”文件。 详细信息:虽然文件缓存变大(260 MB),但rss和文件映射似乎仍然很低。这是一个在写入过程中memory.stat可能看起来像的示例: cache 278667264 rss 20971520 mapped_file 24576 pgpgin 138147 pgpgout 64993 swap 0 pgfault 55054 pgmajfault 2 inactive_anon 10637312 active_anon 10342400 inactive_file 278339584 active_file 319488 unevictable 0 hierarchical_memory_limit …
10 linux  ubuntu  lxc  oom  cgroup 

2
人偶代理证书验证失败
我已经设置了Puppet Master / Agent,并且已经成功在Master上签署了代理的证书。但是,当我运行时,出现如下puppet agent --test错误: Warning: Unable to fetch my node definition, but the agent run will continue: Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com] Info: Retrieving plugin Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 …

2
使厨师食谱版本受到控制的最佳策略
我正在寻找有关厨师食谱版本管理的想法。我知道您将特定版本固定在环境中,但是我不确定该怎么做。 我们使用图书馆管理员来将3rd party社区书籍安装到cookbooks文件夹中。我们从不碰那些书,而只是不时更新到最新版本。 我们还提供了针对特定地点的自定义菜谱,其中包括社区菜谱(include_recipe)。 从理论上讲,我们可以指定自定义书籍所依赖的社区书籍的特定版本,然后在环境配置中设置我们的食谱版本,但是问题在于,这些社区书籍可能依赖其他一些没有指定版本的书籍。这种深层嵌套的依赖性可能会持续下去。 因此,没有保证,当您将食谱上传到Chef服务器时,它不会中断生产,因为从属食谱也可能会发生变化。 我目前看到的唯一解决方案是指定我们在环境配置中使用的每个食谱版本,包括社区和自定义版本。但是然后我必须仔细阅读每本食谱,并找出那些版本。 我们还会不时地进行图书管理员检查更新,我想这可能会变得很难跟踪已更改的版本,并且不要忘记及时更新环境中的版本。 请分享您的经验和最佳做法。我相信这对其他人将非常有用。

2
无法在ubuntu软件包上安装postgres
我正在使用Ruby和Postgres设置VPS。在我的本地机器上,我安装了postgresql 9.2.3(客户端和服务器),因此想在我的VPS上安装它。按照此博客文章的说明http://hendrelouw73.wordpress.com/2012/11/14/how-to-install-postgresql-9-1-on-ubuntu-12-10-linux/在ubuntu上安装postgres (唯一的区别是我尝试安装9.2.3。他安装了9.1),我做了以下工作 sudo apt-get install postgresql-9.2.3 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package postgresql-9.2.3 E: Couldn't find any package by regex 'postgresql-9.2.3' 但是,如您所见,它找不到包postgresql-9.2.3。但是,我已经在本地计算机上安装了该软件包(我使用Homebrew在Mac上安装了该软件包)。 您能帮助我了解我在做什么错吗? 更新我还尝试安装它,最后没有显示“ 3”,就像您在下面看到的那样,但是您无法看到它的工作。 sudo apt-get install postgresql-9.2 Reading package lists... Done Building dependency tree Reading state information... …

2
安装scipy后无响应的Apache + mod_wsgi
我目前正在使用Apache 2.2.15和mod_wsgi 3.2运行Centos 6.4服务器。该服务器托管了一个基于django的站点(django 1.5.1,python 2.6.6)。一切运行良好,直到我通过pip安装了scipy 0.12.0。现在,当我尝试加载django应用程序时,服务器没有响应,并且看来子httpd进程已生成挂起。浏览我的日志(/ var / logs / httpd / error_log,vhost error.log和系统日志)不会产生任何错误。 如果我通过django manage.py shell加载模型等,一切正常,这使我相信这是一个mod_wsgi问题。 关于如何开始对此进行故障排除的任何想法?

2
使用并行运行脚本而无需输入
我正在尝试与GNU并行运行脚本的许多实例,但是脚本不带参数。 如果我只是执行“ parallel foo.sh”,则会得到以下信息: parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
10 linux  gnu 

1
有没有办法从ESXi中查看HP ProLiant服务器IML日志?
我正在调查运行VMware ESXi 5.1 的HP ProLiant DL360 G7服务器上的系统故障。 虽然我大力倡导为ESXi安装HP特定的管理代理程序或使用自定义的.ISO映像,但我从没注意到我在其他平台上使用的一些命令行实用程序会丢失: # esxcli software vib list| grep -i hewlett char-hpcru 5.0.3.09-1OEM.500.0.0.434156 Hewlett-Packard PartnerSupported 2013-01-24 char-hpilo 500.9.0.0.9-1OEM.500.0.0.434156 Hewlett-Packard PartnerSupported 2013-01-24 hp-ams 500.9.2.0-11.434156 Hewlett-Packard PartnerSupported 2013-01-24 hp-smx-provider 500.03.01.10.2-434156 Hewlett-Packard VMwareAccepted 2013-01-24 hpacucli 9.20-9.0 Hewlett-Packard PartnerSupported 2013-01-24 hpbootcfg 01-01.02 Hewlett-Packard PartnerSupported 2013-01-24 hponcfg 04-00.10 Hewlett-Packard PartnerSupported …



2
非点通配符(* -foo.example.com)是否用于绑定?
似乎没有办法告诉bind那*-foo.example.com应该下定决心如。10.1.2.3,而*-bar.example.com解决10.2.3.4。有什么解决方法吗?可以一些名字例如。解决与外部程序?还是我应该bind改为。PowerDNS? 我试图避免购买另一个SSL通配符证书。(如果使用通配符证书,例如*.example.com,则不允许在*零件中使用点。) 在区域文件中指定全部*-foo或*-bar名称不是一种选择,因为我需要能够即时创建两种类型的地址。

1
如何让Cron在其他星期日每隔一个星期日运行一次?
我有一个cron作业,其运行时间为0 0 * * 0/2-即每隔一个星期日。例如,它现在才运行。但是,我希望它在其他星期日(下一个星期日)运行,而不是在这个星期日运行。另一种表达方式:我认为它在一年的偶数周日运行,但我希望它在奇数周日运行。 我在“ man 5 crontab”中看不到任何可以帮助我解决的问题,因此我想我需要退回到在0 0 * * 0处运行cronjob,然后在运行的命令中执行一些操作以检查它在哪个星期日是。有人可以帮我一些合适的命令行技巧吗? ETA:已经意识到我的0/2根本不执行我最初的想法(每个第二个星期日)。它运行在每个星期日,只要一周中的那一天可以被二整除(当然可以)。天啊 无论如何,基本要求仍然存在:在奇数周日运行命令。
10 cron  date 

2
Linux网络端口耗尽
在不深入研究内核源代码的情况下,我已经尽了最大的努力。关于该主题似乎有大量虚假信息/错误信息,所以我希望这能为我和其他人一劳永逸地回答这个问题。 严格说来IPv4,端口耗尽实际上有可能吗?让我解释: 似乎有65535个端口可以使用。0不可用。 我读过端口耗尽要求(src ip,src端口,dst ip,dst端口)元组是唯一的。 为了清楚起见,并假设我可以通过sysctl net.ipv4.ip_local_port_range设置使用100%的临时端口 这就是问题:这是如何工作的? 我可以从127.0.0.1:(x)到127.0.0.1:80有65k个连接 我可以从127.0.0.1:(x)到127.0.0.1:555有65k个连接 基本上再一次,问题是(srcip,srcport,dstip,dstport)必须是唯一的,对吗? 我无法打开从 IP“ A”到IP“ B”,端口“ N”的超过65k个连接 同样,单个IP不能在xxxx:80处打开到我的Web服务器的超过65k的连接,但是,只要它们来自不同的源IP,我就可以总体支持超过65k的连接。 最后,我对正在侦听的(传出)临时端口和传入端口有些困惑。我意识到,一旦建立了连接,连接的每一端都是对等的,并且相等,但是在此之前发生了: 例如,如果确实(srcip,srcport,dstip,dstport)元组必须是唯一的,那么如果启用,为什么会这样呢? net.ipv4.ip_local_port_range = 1024 65535 这允许使用1024-65535的临时端口,如果我有绑定在端口3306上的服务(例如,mySQL),则由于使用该端口,有时它们将无法启动。 这是否与以下事实有关:(这是我要验证的声明): (srcip,srcport,dstip,dstport)对于端口范围为1-65535的每个连接都必须是唯一的(不注意操作系统对临时端口的使用) 但是,对于要绑定的套接字,可以将其视为(srcip,srcport,*,*)。换一种说法,IP是否一定出于某种原因不能使用该端口? 我可以验证上述行为,即使用上面的确切sysctl行,由于这个原因,我将mySQL移到了一个低于1024的端口,因为它偶尔会非常随机地失败,因为假设操作系统正在使用该端口(3306)临时港口。


1
我如何使FreeNAS和pfSense使用SNMP报告更多信息?
我有两台运行FreeBSD变体的服务器:一台是pfSense路由器,一台是FreeNAS 8服务器。这两个服务器都运行SNMP,并且我正在使用第三台Cacti服务器收集和绘制其信息。 来自pfSense服务器和FreeNAS服务器的SNMP数据不包括内存使用情况,CPU使用情况或平均负载。 pfSense服务器的流量图看起来不错。FreeNAS服务器的磁盘使用情况报告看起来很漂亮。我只是没有获得有关内存使用率,CPU使用率或平均负载的任何数据。我知道这两个服务器都应该能够提供此数据,因为在pfSense和freeNAS网络管理员中,我可以查看图表。但是我更希望Cacti中具有所有图形,以便于管理。 如何获取pfSense服务器以通过SNMP提供内存使用率,CPU使用率和平均负载数据?如何获得我的FreeNAS服务器以通过SNMP提供内存使用率,CPU使用率和平均负载数据?我假设相同的过程将适用于两台服务器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.