今天介绍一个超级实用的一控多的运维软件
能实现一个终端控制多台服务器,因为是基于ssh的方式,所以要推公钥到被控制端。
废话不多说,实验看效果
1.编辑本地hosts文件及推送公钥
[root@localhost clustershell]# cat /etc/hosts 192.168.182.120 web1 192.168.182.130 web2 ## 这里我就用了两台机器来演示
推公钥
ssh-keygen ##生成公钥 ssh-copy-id web1 ##推送公钥到对应主机也能用ip地址 ssh-copy-id web2
2.安装cluster软件
yum install -y clustershell
手动创建groups主机清单
cd /etc/clustershell/ touch groups ##用来调用的地址池,类似于ansible的host文件
3.编辑groups文件
[root@localhost clustershell]# cat groups all: web[1,2] ##必须配置的 db: web1 node: web2
配置好了
不用重启软件
直接操作就行了
实操演示:
先介绍一下简单用法:
clush命令:
clush -a 全部 等于 clush -g all
clush -g 指定组
clush -w 操作主机名字,多个主机之间用逗号隔开
clush -g 组名 -c --dest 文件群发 (-c等于–copy)
演示:1
clush -a hostname -I
2
clush -g db hostname -I ## -g 指定组名 ##db 组名
3
clush -w web2 hostname -I ## -w 指定主机名 ##web2 主机名
4
clush -w web1 -c groups --dest /root/ ##复制文件 注:文件夹也不用-r参数
注意一点,当ssh端口不是22端口时
由于clush是基于ssh和scp命令进行封装的一个工具,默认的ssh端口如果不是22,那么在执行clush命令的时候需要指明端口:
1)进行文件传输时, 需要加 -o -P57891 即大写P
2)进行直接访问(批量执行操作命令)时, 需要加 -o -p57891 即小写P
# clush -g virtual -o -P22222 -c /data/ntpcheck.sh --dest /data/ # clush -g virtual -o -p22222 /etc/init.d/nginx restart