运维利器-ClusterShell
前言
和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的更多相关文章
- 运维利器-ClusterShell集群管理操作记录
		
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
 - 运维利器-ClusterShell集群管理
		
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
 - 运维利器:钉钉机器人脚本告警(Linux Python 篇)
		
写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...
 - 如何高效地远程部署?自动化运维利器 Fabric 教程
		
关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本 ...
 - 运维利器万能的 strace
		
strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. ...
 - 运维利器:钉钉机器人脚本告警(Linux Shell 篇)
		
写在前面的话 目前换了几家公司,且最近几家都是以钉钉作为公司 OA 聊天工具,总的来说还是很不错的.最近去了新公司,由于公司以前没有运维,所以监控,做自动化等方面都没有实施,恰逢这个机会把最近做的关于 ...
 - Redis运维利器 -- RedisManager
		
Redis作为一个基于内存的可持久化的日志型.Key-Value数据库,以其出色的性能表现以及高可用性在许多公司有着举足轻重的地位.伴随着业务量的增长,redis集群的规模不可避免的需要扩大,此时re ...
 - 自动化运维利器Ansible要点汇总
		
由于大部分互联网公司服务器环境复杂,线上线下环境.测试正式环境.分区环境.客户项目环境等造成每个应用都要重新部署,而且服务器数量少则几十台,多则千台,若手工一台台部署效率低下,且容易出错,不利后期运维 ...
 - linux集群运维工具:clustershell和pssh
		
由于需要安装hadoop集群,有10台机器需要安装,一开始打算用SCP复制,后来觉得不可接受(实际现场可能数倍的机器集群,就是10台也不想干).后来在网上找了,发现了clustershell和pssh ...
 
随机推荐
- RPA-UiPath视频教程1
			
UiPath下载.安装.激活.第一个案例Helloworld!.参数类型.变量的介绍和使用 https://www.bilibili.com/video/av92816532 RPA直播公开课2020 ...
 - flex大法:一网打尽所有常见布局
			
flex全称Flexible Box模型,顾名思义就是灵活的盒子,不过一般都叫弹性盒子,所有PC端及手机端现代浏览器都支持,所以不用担心它的兼容性,有了这玩意,妈妈再也不用担心我们的布局. 先简单介绍 ...
 - Linux开放指定端口命令(CentOS)
			
1.开启防火墙 systemctl start firewalld 2.开放指定端口 ##linux打开防火墙3389端口 firewall-cmd --zone=public --add-port= ...
 - ERROR: manifest for elasticsearch:latest not found: manifest unknown: manife
			
当我们用docker下载 elasticsearch 的时候出现如下错误: 这里错误的原因是没有发现最新版,需要我们指定版本. docker pull elasticsearch:7.12.0 那我们 ...
 - 以脚本形式运行python库
			
技术背景 当我们尝试运行python的帮助文档时,会看到如下这样的一个说明: $ python3 -h usage: python3 [option] ... [-c cmd | -m mod | f ...
 - 史上最全学习率调整策略lr_scheduler
			
学习率是深度学习训练中至关重要的参数,很多时候一个合适的学习率才能发挥出模型的较大潜力.所以学习率调整策略同样至关重要,这篇博客介绍一下Pytorch中常见的学习率调整方法. import torch ...
 - elementplus轮播图初始空白
			
问题表现 初始轮播图出现大块空白,在规定的时间间隔后才会正常轮播出下一章图片 问题解决 动态数据添加图片,初次渲染dom因为数据还没有请求回来,所以会出现这样的bug,需要添加v-fi="l ...
 - SSH隧道代理
			
应用场景: A机器可以通过SSH连接到B机器,然后A想用B的身份访问B所在的资源(主要用于浏览器访问) 命令: A机器通过ssh与B建立连接,并暴露3128端口:ssh -N -D 127.0.0.1 ...
 - Java之struts2框架学习
			
Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...
 - 超小体积单键/1路1感应通道触摸触控检测IC-VKD233HS DFN6 2*2mm,常用于TWS蓝牙耳机入耳检测、运动手环等小体积单键触摸产品
			
产品品牌:永嘉微电/VINKA 产品型号:VKD233HS 封装形式:DFN6 产品年份:新年份 概述: VKD233HS DFN6具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作.该芯片具 ...