我正在寻找对我的基础架构执行定期滚动升级的最佳方法。
通常,这涉及在每台主机上执行此操作,一次一个:
sudo yum update -y && sudo reboot
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了可扩展性的限制。
我只想在我的每个角色中一次重新启动一个节点,这样,比如说,我不会同时关闭所有负载均衡器或数据库集群成员。
理想情况下,我想做类似的事情:
for role in $(< roles_list.txt) ; do
mco package update_all_and_reboot \
--batch 1 --batch-sleep 90 \
-C $role -F environment=test
done
Run Code Online (Sandbox Code Playgroud)
但是,这似乎并不存在。我不确定使用“shell”代理是否是最好的方法?
mco shell run 'yum update -y && reboot' \
--batch 1 --batch-sleep 90
Run Code Online (Sandbox Code Playgroud)
不过,我是否只是为这项工作寻找了错误的工具?有没有更好的方法来管理这些滚动重启,但我可以以某种方式与我的 Puppet 分配的角色联系起来,这样我就可以放心,我不会一下子删除任何重要的东西,但我仍然可以做一些并行更新和重启?
我通过将 SSH 限制为特定 IP 来锁定许多远程服务器。同样,我们的内部客户管理工具也被 IP 锁定。在办公室工作时这很好,但如果我在不同的位置(可能在公共 wifi 上)或在我的 iPhone 上,IP 将会改变。
设置远程访问以便允许从任何位置访问但仍保持安全性的最佳方法是什么?
我的答案是设置一个 VPN 来隧道通过所有连接,并且只允许 VPN IP 访问。如果这是要走的路,我不希望 VPN 位于办公室,而是希望远程管理它。是否有任何 VPN 即服务提供商?
我想避免将一些丢失的文件(给出 404)记录到 Apache2 错误日志中。
我想在我的插件的 Eclipse 更新站点上执行此操作。问题是 Eclipse P2 代码试图访问其元数据文件,如 content.xml、content.jar、digest.zip 和其他一些文件,这些文件在我的站点上不可用。当 P2 发现这一点时,它最终会访问我提供的 site.xml。总而言之,一切正常……但我有很多行,例如:
[Mon Jul 06 21:46:46 2009] [error] [client 195.91.79.90] File does not exist: ...htdocs/stable/content.jar
Run Code Online (Sandbox Code Playgroud)
在我的 error.log 文件中,这对我帮助不大。
我想到的一个解决方案是让 Apache 通过 grep(通过管道日志记录)进行日志记录,但我正在寻找更好的解决方案。
我正在考虑使用SetEnvIf 指令标记这些请求,并跳过标记请求的错误日志,但 ErrorLog 指令不支持。
还有其他想法吗?
我正在测试 Openstack,我想知道如何了解实例(虚拟机)内的资源利用率。
Openstack 在我的测试环境中使用 kvm、qemu 和 libvirt。有没有办法在不登录机器的情况下获取这些统计信息(CPU、内存、交换、网络流量)?我想从管理程序或通过 libvirt 收集这些数据。
有什么建议?
我们在三台机器上运行一个 mongodb 副本集。三台机器都有大约 16GB 但只有 255MB Swap。Swappiness 保留其默认值 60。机器运行 CentOS 6.4。数据库比 16GB 大得多,但这对我们来说没问题。真正的工作集要小得多。
我们面临的问题是主要消耗会耗尽所有可用内存,而不是被 OOM 杀死。我知道这就是 mongodb 管理内存的方式。
服务器被 OOM 杀死后,必须手动重新启动它。
有什么办法可以防止 mongodb 被 OOM 杀死?调整swappiness?增加交换空间?我认为这些设置只会增加 mongod 被杀之前的宽限期。
元/主.yml
dependencies:
- { role: 030.sensu-install }
Run Code Online (Sandbox Code Playgroud)
结果是:
[DEPRECATION WARNING]: The comma separated role spec format, use the
yaml/explicit format instead..
This feature will be removed in a future release.
Deprecation warnings can be disabled by setting deprecation_warnings=False in
ansible.cfg.
Run Code Online (Sandbox Code Playgroud)
什么时候 sudo ansible-galaxy install -r requirements/development.yml发出。
解决问题的尝试
什么时候
dependencies:
- role: 030.sensu-install
version: 0.1.0
Run Code Online (Sandbox Code Playgroud)
已定义,语法检查成功,但弃用警告仍然存在。
什么时候
dependencies:
- src: 030.sensu-install
version: 0.1.0
Run Code Online (Sandbox Code Playgroud)
已定义,sudo ansible-galaxy install -r requirements/development.yml运行时弃用警告已解决,但ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} --syntax-check导致:
ERROR! role definitions must contain a …Run Code Online (Sandbox Code Playgroud) 我有一个现有的 LAN,其中的 DHCP 服务器已经分配了 IP 地址。
由于各种原因,我无法更换该服务器,因此它仍然需要提供 IP 地址。
我一直在代理模式下尝试使用 Dnsmasq 来提供 PXE 启动文件名。现在我可以使用 Dnsmasq 链式加载 iPXE,但我发现 Dnsmasq 的问题是在代理模式下它不会向下发送 DHCP 选项。所以我似乎无法发送选项 17 来启动 iSCSI SAN。
我在某处读到它在源代码中未启用。哦,好吧,所以我想也许我应该尝试 ISC DHCPD(Ubuntu 的默认版本 4),但我找不到任何用作代理的配置示例。
我试图找出 OpenStack 中阻力最小的路径,从 Live CD 到可用于部署新来宾实例的磁盘映像。
如果您从 Live CD 启动 OpenStack 实例,您可以将操作系统安装到“临时”磁盘(在这种情况下,将是/dev/vda)...
...那太好了,但是无法从该磁盘创建映像;该image-create命令将尝试(但失败)对 live CD 本身进行快照(因为这是启动卷)。
您可以创建并附加一个新卷(使用volume-create和volume-attach),然后在其上安装操作系统,但似乎没有任何方法可以将此卷转换为 Glance 托管的映像以供其他实例使用。
作为管理员,我显然可以登录到存储主机并直接从卷块设备创建新的概览图像,但这不是任何通过 API 或 Web GUI 进行交互的人都可以使用的途径。
还有其他选择吗?
在尝试使用 OpenStack调试网络问题时,我遇到了最奇怪的事情。我正在虚拟机之间进行 ping 测试。如果我在运行 nova-network 的节点上的网桥接口上执行了“tcpdump”,ICMP 请求数据包才会到达目标主机,该节点会转发数据包。如果我停止在该接口上执行 tcpdump,则不再看到请求到达主机。
一般来说,如何/为什么在 Linux 网桥接口上执行 tcpdump 会影响数据包是否被转发?