部署跳板机的好处有:
- 基于安全性考虑,只有跳板机开放了公网 IP SSH-key 登录,其他业务机器默认只允许内网登录,公网 IP 地址不对外开放。
- 方便自动化运维部署,跳板机上面做了免密码登录,可以直接通过 SSH 命令操作他业务机器
- 权限控制管理,跳板机上面部署了几套 key ,分别对应不同的权限分配用户,公司的同事按照不同的职能获得相应的私钥登录跳板机,分配的相应权限也是不一样的
部署跳板机应该注意的事项:
网络质量要好,因为跳板机要求是质量很好的 BGP 机房(这个时候需要走公网连接) 要特别注意安全的问题,适当控制主机登陆还是有好处的,可以通过 iptables控制允许登陆的 IP 地址
如果是 AWS 云主机数据中心,可以考虑在每个数据中心部署一个跳板机(因为AWS 每个数据中心都是独立的,只能通过公网连接 跳板机与机房其他机房通过内网 SSH 连接,不需要走公网,这样设计的好处是可以减少因为公网链路质量不
好而引发的各种链接问题)
轻量级自动化运维工具 pssh 介绍
随着集群环境的规模越来越大 网站需要管理和维护的机器也越来越多,例如管理达到8000台机器。
pssh 是一个由 python 编写,可以在多台服务器上执行命令的工具,同时支持拷贝文件,在同类工具中较为出色
pssh命令下载地址
https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/pssh-2.3.1-5.el7.noarch.rpm
安装
[root@master new]# yum install -y pssh-2.3.1-5.el7.noarch.rpm
[root@master ~]# pssh --help
参数 | 介绍 |
---|---|
-H | 此参数后面跟一个远程主机或IP地址,格式为[user@host[:port]], 例如ec2@192.168.1.11。 |
-h | 此参数后面跟一个远程主机列表文件。 |
-l | 远程机器的用户名。 |
-p | 指定pssh最大并行进程数。 |
-o | 输出内容重定向到一个文件。 |
-e | 执行错误重定向到一个文件。 |
-t | 设置命令执行的超时时间。 |
-A | 提示输人密码并且把密码传递给ssh。 |
-O | 设置ssh参数的具体配置,参照ssh _config配置文件。 |
-x | 传递多个SSH命令,多个命令用空格分开。 |
-X | 同-x,但是一次只能传递一个命令,比如不规则的SSH端口,例如-X -p’12233’。 |
-i | 显示标准输出和标准错误在每台host执行完毕后的结果。 |
-P | 执行时输出执行信息。 |
安装完成以后有以下几个命令:
命令 | 介绍 |
---|---|
pssh | 在多个主机上并行地运行命令。 |
pscp | 把文件并行地复制到多个主机上。 |
prsyne | 通过rsync协议把文件高效地并行复制到多个主机上。 |
pslurp | 把文件并行地从多个远程主机复制到中心主机上。 |
pnuke | 并行地在多个远程主机上杀死进程。 |
注意“pssh最多可以生成 32 个进程,并行地连接各个节点。如过远程命令在60秒内没有
完成,连接就会终止 如果命令需要更多的处理时间,可以使用-t设置更长的到期。( parallel-scp 和parallel-rsyne 没有默认的到期时间,但是可以用-t 指定到期时间 。)
pssh使用
hosts.list文件内容如下所示:
[root@master pssh]# vim hosts.list
192.168.122.5
192.168.122.6
1)查看客户端机器的系统负载,执行命令如下所示:
[root@master pssh]# pssh -h hosts.list -l root -P "uptime"
命令结果如下所示;
192.168.122.5: 22:04:51 up 1 day, 18:13, 0 users, load average: 0.00, 0.01, 0.05
[1] 22:04:51 [SUCCESS] 192.168.122.5
192.168.122.6: 20:50:56 up 64 days, 1:34, 1 user, load average: 0.00, 0.01, 0.05
[2] 22:04:51 [SUCCESS] 192.168.122.6
2)在各个客户端机器上面执行安装vim的命令,命令如下所示;
[root@master pssh]# pssh -h hosts.list -l root -P "yum install -y vim" -t 600
192.168.122.5: Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-
: manager
192.168.122.5:
This system is not registered with an entitlement server. You can use subscription-manager to register.
192.168.122.5: Loading mirror speeds from cached hostfile
192.168.122.6: Loaded plugins: fastestmirror
192.168.122.5: Package 2:vim-enhanced-7.4.629-6.el7.x86_64 already installed and latest version
No package 600 available.
192.168.122.6: Determining fastest mirrors
192.168.122.6: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
[1] 22:06:42 [FAILURE] 192.168.122.6 Exited with error code 1
192.168.122.5: Nothing to do
[2] 22:06:42 [SUCCESS] 192.168.122.5
3)复杂文件到远程机器的指定目录,命令如下所示:
[root@master pssh]# pscp.pssh -h hosts.list -l root -r ~/tools/awk.a /tmp/
[1] 22:08:23 [SUCCESS] 192.168.122.5
[2] 22:08:23 [SUCCESS] 192.168.122.6
使用感受
在实际工作中我们会发现,其实pssh还是有很多缺点的,如下所示:
-
如果主机机器多的话,整个显示结果其实是无序的,我们没有办法获取其结果反馈。
-
复杂些的角色分类支持得不是很好。
-
没有提供API, 不方便二次开发。.
所以这个时候我们需要找功能更为强大的自动化运维工具,这里我们推荐大家使用