最简单的集群控制脚本

实现功能

1.通过脚本,可一次性让集群服务器同时执行一条命令,并返回结果

2.通过脚本,可一次性发送文件或到所有集群服务器


环境:

跳板机:172.16.10.115

服务器1:172.16.20.100

服务器2:172.16.20.200


免密部署:

172.16.10.115

# echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config

生成密钥

# ssh-keygen -t rsa

一路回车,生成免密登录的公钥和私钥

将公钥导入到目标服务器

#ssh-copy-id -i /root/.ssh/id_rsa.pub  root@172.16.20.100

#ssh-copy-id -i /root/.ssh/id_rsa.pub  root@172.16.20.200

输入密码,导入公钥成功后,ssh连接测试,确保跳板机与目标服务器可以免密登录


执行命令脚本

#cat docmd.sh

#!/bin/bash
IP1=172.16.20.100
IP2=172.16.20.200
...

for i in $IP1 $IP2;
do
if [ "$#" -ne "1" ]
    then
        echo "please input the cmd,like: ./cmd \"ps aux |grep php\""
        exit 1;
    else
        echo -e "############################################\033[33;1m${i}\033[0m#################################################"
        ssh $i $1
        if [ "$?" -eq "0" ]; then
            echo -e "\033[32;1mcmplete!!!\033[0m"
        else
            echo -e "\033[31;1mPlease check the command\033[0m"
        fi
fi
done




传输文件脚本

#cat scpfile.sh

#!/bin/bash
IP1=172.16.20.100
IP2=172.16.20.200

for i in $IP1 $IP2;
do
if [ ! -n "$1" ] || [ "$#" -gt "2" ]; then
        echo "please input the cmd,like: ./scp /root/1.txt /tmp/2.txt"
        exit 1;
    
elif [ -n "$1" ] && [ -n "$2" ]; then
        echo -e "############################################\033[33;1m${i}\033[0m#################################################"
        rsync -avr $1 root@${i}:${2}
        if [ "$?" -eq "0" ]
            then
                echo -e "\033[32;1msuccess: ${i}:${1} --> ${i}:${2}\033[0m"
            else
                echo -e "\033[31;1mfailed: ${i}:${1} --> ${i}:${2}\033[0m"
            fi


else
        echo -e "############################################\033[33;1m$IP1\033[0m#################################################"
        rsync -avr $1 root@${i}:${1}
        if [ "$?" -eq "0" ]
            then
                echo -e "\033[32;1msuccess: ${i}:${1} --> ${i}:${1}\033[0m"
            else
                echo -e "\033[31;1mfailed: ${i}:${1} --> ${i}:${1}\033[0m"
            fi
fi
done








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这里是一个一键部署 Redis 集群脚本的示例。首先,请确保您已经安装了 Redis 和 Ruby,并且已经准备好了所有要部署的节点的主机名或 IP 地址: ```bash #!/usr/bin/env ruby # 首先,定义要部署的 Redis 节点的主机名或 IP 地址 redis_nodes = ["node1", "node2", "node3"] # 安装 Redis 集群所需的 gem system "gem install redis" # 引入所需的库 require 'redis' # 连接到第一个节点 redis = Redis.new(host: redis_nodes[0]) # 创建 Redis 集群 redis.cluster("meet", *redis_nodes) # 检查集群状态 puts redis.cluster("info") ``` 使用这个脚本时,只需执行 `ruby deploy_redis_cluster.rb` 即可在所有指定的节点上部署 Redis 集群。 注意:这只是一个示例脚本,在实际生产环境中可能需要根据实际情况进行调整。此外,请确保在执行脚本时具有执行命令的权限。 ### 回答2: 一键部署Redis集群脚本可以借助开源工具Redis-trib来实现。以下是一个简单脚本,可以实现一键部署Redis集群。 #!/bin/bash #定义Redis集群的IP和端口号 IP_LIST=("192.168.1.1" "192.168.1.2" "192.168.1.3") PORT_LIST=("7000" "7001" "7002" "7003" "7004" "7005") #创建Redis集群目录 mkdir -p /opt/redis-cluster #下载、编译和安装Redis wget http://download.redis.io/releases/redis-5.0.7.tar.gz tar -zxvf redis-5.0.7.tar.gz cd redis-5.0.7/ make && make install #配置Redis集群 cd utils/create-cluster/ ./create-cluster start for ((i=0;i<3;i++)) do ./redis-trib.rb create --replicas 1 ${IP_LIST[i]}:${PORT_LIST[i]} ${IP_LIST[i+3]}:${PORT_LIST[i+3]} done #启动Redis集群 ./create-cluster start echo "Redis集群部署完成。" 上述脚本首先定义了Redis集群的IP地址和端口号。然后,脚本创建了Redis集群的目录,并下载、编译和安装Redis。接下来,脚本调用Redis-trib工具的create-cluster命令,根据定义的IP地址和端口号创建Redis集群。 在循环中,通过调用redis-trib.rb create --replicas命令,为每个主节点指定一个从节点,并将其添加到Redis集群中。 最后,脚本调用create-cluster start命令启动Redis集群,并打印出部署完成的消息。 使用上述脚本,只需运行shell脚本就能一键部署Redis集群,简化了手动配置的步骤。 ### 回答3: 一键部署Redis集群脚本如下: #!/bin/bash # 定义Redis集群的主机IP地址 redis_node1="127.0.0.1" redis_node2="127.0.0.2" redis_node3="127.0.0.3" # 定义Redis集群的端口号 redis_port=6379 # 创建Redis集群的配置文件 echo "port $redis_port" > redis_cluster.conf echo "cluster-enabled yes" >> redis_cluster.conf echo "cluster-config-file nodes.conf" >> redis_cluster.conf echo "cluster-node-timeout 5000" >> redis_cluster.conf echo "cluster-slave-validity-factor 10" >> redis_cluster.conf # 将Redis集群配置文件拷贝到所有节点主机上 scp redis_cluster.conf $redis_node1:/etc/redis/redis.conf scp redis_cluster.conf $redis_node2:/etc/redis/redis.conf scp redis_cluster.conf $redis_node3:/etc/redis/redis.conf # 启动Redis集群的节点 ssh $redis_node1 "redis-server /etc/redis/redis.conf" ssh $redis_node2 "redis-server /etc/redis/redis.conf" ssh $redis_node3 "redis-server /etc/redis/redis.conf" # 在其中一个节点上创建Redis集群 ssh $redis_node1 "redis-cli --cluster create $redis_node1:$redis_port $redis_node2:$redis_port $redis_node3:$redis_port --cluster-replicas 0" echo "Redis集群部署成功!" 以上脚本的步骤分为以下几个部分: 1. 定义Redis集群的主机IP地址和端口号。 2. 创建Redis集群的配置文件,并添加配置项。 3. 将配置文件拷贝到所有节点主机上。 4. 启动所有节点的Redis服务。 5. 在其中一个节点上使用redis-cli命令创建Redis集群。 6. 输出部署成功的提示信息。 这个脚本可以简化Redis集群的部署过程,只需要配置好主机IP地址和端口号即可一键部署Redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值