【Linux 运维】三招搞定集群管理!自定义脚本实现一劳永逸

在大数据集群或多节点服务器管理中,经常需要重复执行跨节点操作,例如:

逐个节点查看 Java 进程(jps

手动同步文件到所有节点

逐台执行相同命令

三个本文将分享三个自定义 Shell 脚本,帮助你一键搞定集群管理,提升运维效率!

一、集群 JPS 查看脚本:jps-cluster.sh

功能

在主节点(如 node01)执行一个命令,直接查看所有集群节点的 Java 进程状态,无需逐个登录节点。

创建步骤

创建脚本文件

vi /usr/local/bin/jps-cluster.sh
  1. 脚本内容

    #!/bin/bash
    # 定义集群节点列表(根据实际集群修改)
    nodes=("node01" "node02" "node03")
    
    for node in "${nodes[@]}"; do
        echo "============ ${node} ============"
        # 通过SSH执行jps命令,-q参数隐藏端口信息
        ssh $node "jps -q | xargs -I {} echo {} \$(ls /proc/{} | grep cmdline | xargs -I {} cat {} | cut -d' ' -f1)"
    done
    
  2. 赋予执行权限

    chmod +x /usr/local/bin/jps-cluster.sh
    
  3. 使用示例

    jps-cluster.sh
    
     

    输出效果

    ============ node01 ============
    12345 com.example.App
    67890 org.apache.hadoop.dfs.NameNode
    ============ node02 ============
    23456 com.example.Worker
    78901 org.apache.hadoop.dfs.DataNode
    

二、文件同步分发脚本:xsync.sh

功能

通过一个命令将文件 / 文件夹同步到所有集群节点,基于rsync实现高效增量传输,避免手动逐个节点拷贝。

前提条件

所有节点已安装rsync

yum install -y rsync  # CentOS/RHEL系

创建步骤

  1. 创建脚本文件

    touch /usr/local/bin/xsync.sh && chmod +x $_
    
  2. 脚本内容

    #!/bin/bash
    # 获取输入参数,至少1个参数
    pcount=$#
    if [ $pcount -lt 1 ]; then
        echo "Usage: $0 <file_or_dir> [file_or_dir...]"
        exit 1
    fi
    
    # 集群节点列表(根据实际修改)
    nodes=("node02" "node03")
    
    for file in "$@"; do
        if [ ! -e $file ]; then
            echo "Error: $file does not exist!"
            continue
        fi
        # 获取文件绝对路径
        abs_path=$(realpath $file)
        # 获取文件名/目录名
        name=$(basename $abs_path)
        # 获取父目录
        parent_dir=$(dirname $abs_path)
    
        for node in "${nodes[@]}"; do
            echo "Syncing $abs_path to $node..."
            # 递归创建目录(如果不存在)
            ssh $node "mkdir -p $parent_dir"
            # 增量同步(-a:归档模式,-v:详细输出)
            rsync -av --delete $abs_path $node:$parent_dir
            echo "Done."
        done
    done
    
  3. 使用示例

    • 同步单个文件:
      xsync.sh /etc/hosts
      
    • 同步整个目录:
      xsync.sh /opt/apps/hadoop/
      

三、跨节点命令执行脚本:xcall.sh

功能

所有集群节点上同时执行相同命令,例如安装软件、更新配置等,避免逐台登录操作。

创建步骤

  1. 创建脚本文件

    vi /usr/local/bin/xcall.sh
    
  2. 脚本内容

    #!/bin/bash
    # 集群节点列表(根据实际修改)
    nodes=("node01" "node02" "node03")
    
    # 检查是否有命令参数
    if [ $# -eq 0 ]; then
        echo "Usage: $0 <command>"
        exit 1
    fi
    
    for node in "${nodes[@]}"; do
        echo "============ ${node} ============"
        # 通过SSH执行命令,保留终端交互(-t参数可选)
        ssh -t $node "$@"
    done
    
  3. 使用示例

    • 批量安装软件:
      xcall.sh yum install -y ntpdate
      
    • 批量执行命令(需注意路径问题):
      # 若jps不在环境变量中,需使用全路径或创建软链接
      xcall.sh /opt/jdk/bin/jps  
      # 或先创建软链接:
      xcall.sh ln -s /opt/jdk/bin/jps /usr/local/bin/jps  
      xcall.sh jps
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值