前言

和ansible类似,但是更加高效

安装

yum install -y clustershell

clush命令:

clush -a 全部 等于 clush -g all

clush -g 指定组

clush -w 操作主机名字,多个主机之间用逗号隔开

clush -g 组名 -c --dest 文件群发 (-c等于--copy)\

配置groups

vim /etc/clustershell/groups
all: host1 host2

实例

[root@ops-server1 clustershell]# clush -g db uptime
ops-server2: 22:49:35 up 4 days, 14:24, 0 users, load average: 0.00, 0.01, 0.05
ops-server3: 22:49:42 up 11:13, 1 user, load average: 0.00, 0.01, 0.05
[root@ops-server1 clustershell]# clush -a uptime
ops-server2: 22:49:49 up 4 days, 14:24, 0 users, load average: 0.00, 0.01, 0.05
ops-server4: 22:49:42 up 8 days, 30 min, 0 users, load average: 0.00, 0.01, 0.05
ops-server3: 22:49:57 up 11:13, 1 user, load average: 0.00, 0.01, 0.05
[root@ops-server1 clustershell]# clush -a hostname
ops-server4: ops-server4
ops-server3: ops-server3
ops-server2: ops-server2 [root@ops-server1 clustershell]# clush -a "echo asdfsdf > /tmp/test"
[root@ops-server1 clustershell]# clush -a "cat /tmp/test"
ops-server4: asdfsdf
ops-server3: asdfsdf
ops-server2: asdfsdf [root@ops-server1 clustershell]# clush -w ops-server3 'ifconfig|grep "inet addr"|grep 192.168'
ops-server3: inet addr:192.168.1.118 Bcast:192.168.1.255 Mask:255.255.255.0
[root@ops-server1 clustershell]# clush -w ops-server3,ops-server4 'ifconfig|grep "inet addr"|grep 192.168'
ops-server4: inet addr:192.168.1.108 Bcast:192.168.1.255 Mask:255.255.255.0
ops-server3: inet addr:192.168.1.118 Bcast:192.168.1.255 Mask:255.255.255.0 [root@ops-server1 ~]# clush -a hostname
ops-server2: ops-server2
ops-server3: ops-server3
ops-server4: ops-server4
[root@ops-server1 ~]# clush -b -a hostname
---------------
ops-server2
---------------
ops-server2
---------------
ops-server3
---------------
ops-server3
---------------
ops-server4
---------------
ops-server4
[root@ops-server1 ~]# clush -a "cat /etc/issue"
ops-server2: CentOS release 6.8 (Final)
ops-server2: Kernel \r on an \m
ops-server2:
ops-server4: CentOS release 6.8 (Final)
ops-server4: Kernel \r on an \m
ops-server4:
ops-server3: CentOS release 6.8 (Final)
ops-server3: Kernel \r on an \m
ops-server3:
[root@ops-server1 ~]# clush -b -a "cat /etc/issue"
---------------
ops-server[2-4] (3)
---------------
CentOS release 6.8 (Final)
Kernel \r on an \m [root@ops-server1 ~]# clush -a -x ops-server4 hostname
ops-server3: ops-server3
ops-server2: ops-server2
[root@ops-server1 ~]# clush -a -x ops-server2,ops-server4 hostname
ops-server3: ops-server3
clush进行文件或目录分发:
--copy 表示从本地拷贝文件或目录到远程集群节点上,等于-c
--rcopy 表示从远程集群节点上拷贝文件或目录到本机上
--dest 前面表示本地要复制的文件或目录路径,后面表示远程机器的存放路径。--dest后面可以空格跟目标路径,也可以是=目标路径。 比如--dest /tmp 等同于 --dest=/tmp 本地拷贝文件到远程节点上
[root@ops-server1 ~]# cat test.file
test1
test2
123456
[root@ops-server1 ~]# clush -g db -c /root/test.file --dest /root/
[root@ops-server1 ~]# clush -g db "cat /root/test.file"
ops-server2: test1
ops-server2: test2
ops-server2: 123456
ops-server3: test1
ops-server3: test2
ops-server3: 123456 [root@ops-server1 ~]# clush -w ops-server4 --copy test.file --dest /root/
[root@ops-server1 ~]# clush -w ops-server4 "cat /root/test.file"
ops-server4: test1
ops-server4: test2
ops-server4: 123456 本地拷贝目录到远程节点上(注意,这里面拷贝目录时,不需要跟参数-r)
[root@ops-server1 ~]# mkdir /root/huanqiu
[root@ops-server1 ~]# clush -g db -c /root/huanqiu --dest /root/
[root@ops-server1 ~]# clush -g db "ls -l /root/huanqiu"
ops-server2: total 0
ops-server3: total 0 比如远程拷贝ops-server3和ops-server4节点上的/root/test到本机的/tmp目录下
[root@ops-server1 tmp]# pwd
/tmp
[root@ops-server1 tmp]# clush -w ops-server3,ops-server4 --rcopy /root/test --dest=/tmp/
[root@ops-server1 tmp]# ll
-rw-r--r--. 1 root root 9 Nov 25 02:06 test.ops-server3
-rw-r--r--. 1 root root 19 Nov 25 02:06 test.ops-server4 将所有节点的/etc/passwd文件拷贝到本机的/tmp目录下
[root@ops-server1 tmp]# clush -a --rcopy /etc/passwd --dest=/tmp
[root@ops-server1 tmp]# ll
total 16
-rw-r--r--. 1 root root 901 Nov 25 02:04 passwd.ops-server2
-rw-r--r--. 1 root root 854 Nov 25 02:04 passwd.ops-server3
-rw-r--r--. 1 root root 854 Nov 25 02:04 passwd.ops-server4
-rw-r--r--. 1 root root 9 Nov 25 02:06 test.ops-server3
-rw-r--r--. 1 root root 19 Nov 25 02:06 test.ops-server4 由此可以发现,远程拷贝文件到本机后,会在文件名的后面打上主机名的标记! 另外注意一个参数:
--user=username,这个表示使用clush命令操作时,登陆ssh时使用的用户。
比如:
ops-server1本机(root账号)管理ops-server2节点机的wangshibo账号下的操作, 首先做本机到wangshibo@ops-server2的ssh无密码登陆的信任关系
[root@ops-server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub wangshibo@ops-server2
wangshibo@ops-server2's password:
Now try logging into the machine, with "ssh 'wangshibo@ops-server2'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [root@ops-server1 ~]# ssh wangshibo@ops-server2
[wangshibo@ops-server2 ~]$ 接着就可以进行远程管控了。注意:--user参数要紧跟clush后面
[root@ops-server1 ~]# clush -w --user=wangshibo ops-server2 hostname
Usage: clush [options] command clush: error: option -w: invalid value: '--user=wangshibo'
[root@ops-server1 ~]# clush --user=wangshibo -w ops-server2 hostname
ops-server2: ops-server2 [root@ops-server1 ~]# clush --user=wangshibo -w ops-server2 "echo 123456 > test"
[root@ops-server1 ~]# clush --user=wangshibo -w ops-server2 "cat test"
ops-server2: 123456 登陆ops-server2的wangshibo用户下查看:
[wangshibo@ops-server2 ~]$ ls
test
[wangshibo@ops-server2 ~]$ cat test
123456 ===================================================================
由于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 *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************

运维利器-ClusterShell的更多相关文章

  1. 运维利器-ClusterShell集群管理操作记录

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  2. 运维利器-ClusterShell集群管理

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  3. 运维利器:钉钉机器人脚本告警(Linux Python 篇)

    写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...

  4. 如何高效地远程部署?自动化运维利器 Fabric 教程

    关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本 ...

  5. 运维利器万能的 strace

    strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. ...

  6. 运维利器:钉钉机器人脚本告警(Linux Shell 篇)

    写在前面的话 目前换了几家公司,且最近几家都是以钉钉作为公司 OA 聊天工具,总的来说还是很不错的.最近去了新公司,由于公司以前没有运维,所以监控,做自动化等方面都没有实施,恰逢这个机会把最近做的关于 ...

  7. Redis运维利器 -- RedisManager

    Redis作为一个基于内存的可持久化的日志型.Key-Value数据库,以其出色的性能表现以及高可用性在许多公司有着举足轻重的地位.伴随着业务量的增长,redis集群的规模不可避免的需要扩大,此时re ...

  8. 自动化运维利器Ansible要点汇总

    由于大部分互联网公司服务器环境复杂,线上线下环境.测试正式环境.分区环境.客户项目环境等造成每个应用都要重新部署,而且服务器数量少则几十台,多则千台,若手工一台台部署效率低下,且容易出错,不利后期运维 ...

  9. linux集群运维工具:clustershell和pssh

    由于需要安装hadoop集群,有10台机器需要安装,一开始打算用SCP复制,后来觉得不可接受(实际现场可能数倍的机器集群,就是10台也不想干).后来在网上找了,发现了clustershell和pssh ...

随机推荐

  1. PowerDesigner安装

    1.双击安装包进行安装 2.选择PRC 3.一路往下就行 4.将下图文件夹中的内容覆盖安装的内容 ----------------------------------------分割线 5.安装成功 ...

  2. 使用强大的DBPack处理分布式事务(PHP使用教程)

    主流的分布式事务的处理方案 近些年,随着微服务的广泛使用,业务对系统的分布式事务处理能力的要求越来越高. 早期的基于XA协议的二阶段提交方案,将分布式事务的处理放在数据库驱动层,实现了对业务的无侵入, ...

  3. Ubuntu14.04.6配置阿里源

    Ubuntu14.04.6配置阿里源 这两天上手 Ubuntu 系统,因为公司用的是 14.04.6 版本,所以有了一些踩坑记录. 起因是安装完系统我需要安装一个搜狗输入法,过程得安装 fcitx,需 ...

  4. vue 项目知识

    Vue使用 Vue 源码解析 Vue SSR 如何调试Vue 源码 如何学习开源框架---> 从它的第一次commit 开始看 国外的文章 大致了解写框架的过程(英文关键字) 找到关键---&g ...

  5. 腾讯云原生数据库TDSQL-C架构探索和实践

    作为云原生技术先驱,腾讯云数据库内核团队致力于不断提升产品的可用性.可靠性.性能和可扩展性,为用户提供更加极致的体验.为帮助用户了解极致体验背后的关键技术点,本期带来腾讯云数据库专家工程师王鲁俊给大家 ...

  6. Solution -「营业」「CF567D」One-Dimensional Battle Ships

    题目大意 - 翻译   Alice 和 Bob喜欢在 \(1\times n\) 的表格中玩战舰游戏.游戏开始时,Alice 有 \(k\) 艘战舰,每艘战舰长度为 \(a\),她需要把这些战舰不重叠 ...

  7. Druid 查询超时配置的探究 → DataSource 和 JdbcTemplate 的 queryTimeout 到底谁生效?

    开心一刻 昨晚跟我妈语音 妈:我年纪有点大了,想抱孩子了 我:妈,我都多大了,你还想抱我? 妈:我想抱小孩,谁乐意抱你呀! 我:刚好小区有人想找月嫂,要不我帮你联系下? 妈:你给我滚 然后她直接把语音 ...

  8. nginx的高级用法

    一.根据url中的参数来确定缓存的key set_by_lua_block $dataArg { local enc = ngx.req.get_uri_args()["enc"] ...

  9. 日期字符串转为java.sql.Date

    日期字符串转为java.sql.Date类型 问题引出:在将一个日期字符串通过sql语句,插入到数据表的日期字段(字段类型是DATE),时遇到一个问题,如何将一个日期字符串转成java.sql.Dat ...

  10. vscode 个人配置 settings.json

    {     "workbench.colorTheme": "Default Dark+",     "workbench.iconTheme&quo ...