首页 > 其他分享 >REDIES集群脚本

REDIES集群脚本

时间:2023-04-25 15:22:26浏览次数:35  
标签:脚本 opt grep get REDIES redis add 集群 usr

REDIES集群脚本

    转至元数据结尾   转至元数据起始  

一、dockerfile 及其中的脚本

1.创建集群的cluster.sh

#/bin/bash
cat /mnt/redishosts|awk '{print $1}'|grep -v 127.0.0.1 > ips
cat ips
sed -i 's/$/:6379/g' ips
echo yes|/usr/local/redis/src/redis-trib.rb create --replicas 1 `cat ips`

 

2.supervisord配置文件supervisord.conf
[supervisord]
nodaemon=true

[program:rsyslog]
command=/usr/sbin/rsyslogd -n

[program:redis]
command=/usr/local/bin/redis-server /etc/redis.conf

[program:shell]
command=/usr/bin/cluster.sh

3、redis的dockerfile 

FROM 192.168.0.45:5000/basenojdk
MAINTAINER lstar [email protected]
ADD redis-3.2.8.tar.gz .
ADD redis-3.3.3.gem ./
RUN groupadd -r redis && useradd -r -g redis redis
RUN apt-get update&& apt-get install -y gcc make tcl rsyslog && \
mv redis-3.2.8 /usr/local/redis && \
cd /usr/local/redis && make && make install && \
mkdir /var/log/redis && mkdir /etc/redis && gem install -l redis-3.3.3.gem && \
cp /usr/local/redis/src/redis-trib.rb /usr/bin && \
rm -rf /var/cache/apt/archives/*
COPY *.conf /etc/
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 6379
VOLUME [/etc/redis]
ADD cluster.sh /usr/bin/cluster.sh
ENTRYPOINT ["/usr/bin/supervisord"]

 

二、初始化redis集群的脚本redis-init.sh

#!/bin/bash
kubectl create -f /repo/kube-conf/redis-rc.yaml
i=`kubectl get po -o wide|grep redis|awk '{print $1}'`
for a in $i;do
i2="kubectl exec -it $a redis-cli<<EOF cluster nodes; exit; exit;EOF"
echo $i2|bash|tee init-redis
if [ `cat init-redis|wc -l` -ge 6 ];then
exit
fi
done
echo 'Please wait, init cluster for redis........'
sleep 60
kubectl get po -o wide|grep redis|awk '{print $6,$1}'|sort -k2 > redishosts
kubectl get po -o wide|grep redis|awk '{print $1,$6}'|sort -k2 > /opt/redis.ck
kubectl cp redishosts $a:/mnt/redishosts
kubectl exec $a bash /usr/bin/cluster.sh

三、pod重启自动添加节点的脚本redis-check.sh

添加redis-check.sh到crontab中

echo '*/5 * * * *   bash /home/jiang/redis-check.sh'  >> /var/spool/cron/crontabs/root

如果已添加不用重复添加

#/bin/bash
set -e
i=`kubectl get po -o wide|grep redis|grep -v "none"|wc -l`
if [ $i -lt 6 ];then
echo "please check redis pods running"
exit
fi


#the file /opt/redis.ck is exist or not
if [ ! -f /opt/redis.ck ];then
kubectl get po -o wide|grep redis|awk '{print $1,$6}'|sort -k2 > /opt/redis.ck
exit
fi
#the file /opt/redis.ck is empty or not
i=`cat /opt/redis.ck|wc -l`
if [ ! -n $i ];then
kubectl get po -o wide|grep redis|awk '{print $1,$6}'|sort -k2 > /opt/redis.ck
exit
fi

#get the new ip
#a1="kubectl exec -it redis-vsh60 redis-cli<<EOF cluster nodes; exit; exit;EOF"
#echo $a1|bash|tee /tmp/ccredis
#cat /tmp/ccredis|awk '{print $2}'
kubectl get po -o wide|grep redis|awk '{print $1,$6}'|sort -k2 > /opt/redis.newck

#get different ip
n="`diff /opt/redis.newck /opt/redis.ck|grep "^<"|awk '{print $3}'`"
if [ "$n"="" ];then

#get shutdown ips
#get enable ip for redis cluster
m1="`diff /opt/redis.newck /opt/redis.ck|grep "^>"|awk '{print $3}'`"
echo $m1|sed 's? ?|?g' > b.txt
m2=`cat /opt/redis.ck|grep -E -v "cat b.txt"|awk 'NR==1{print $1}'`

#get redis master ip
m3="kubectl exec -it $m2 redis-cli<<EOF cluster nodes; exit; exit;EOF"
echo $m3|bash|tee /tmp/ccredis
mnum=`cat /tmp/ccredis|grep master|grep -v fail|grep -v handshake|wc -l`
mip=`cat /tmp/ccredis|grep master|grep -v fail|grep -v handshake|awk 'NR==1{print $2}'|cut -d ":" -f1`
mpodname=`cat /opt/redis.ck|grep $mip|awk '{print $1}'`

#add new node to exist redis cluster
for a in $n;do
if [ $mnum -lt 3 ];then
echo "/usr/local/redis/src/redis-trib.rb add-node $a:6379 $mip:6379" > /tmp/add.sh
chmod +x /tmp/add.sh
kubectl cp /tmp/add.sh $mpodname:/bin/add.sh
kubectl exec $mpodname bash /bin/add.sh
sleep 15
else
echo "/usr/local/redis/src/redis-trib.rb add-node --slave $a:6379 $mip:6379" > /tmp/add.sh
chmod +x /tmp/add.sh
kubectl cp /tmp/add.sh $mpodname:/bin/add.sh
kubectl exec $mpodname bash /bin/add.sh
sleep 15
fi
rm -f /tmp/add.sh
done

rm -f b.txt
#change the new file to base file
mv /opt/redis.newck /opt/redis.ck
fi

 

四、删除错误的集群主机

 

待测试

标签:脚本,opt,grep,get,REDIES,redis,add,集群,usr
From: https://www.cnblogs.com/hanwei666/p/17352713.html

相关文章

  • StarRocks 3.0 集群安装手册
    本文介绍如何以二进制安装包方式手动部署最新版 StarRocks 3.0集群。什么是 StarRocksStarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,就可以用 St......
  • [问题记录]k8s集群中coredns解析失败
    目录[问题记录]k8s集群中coredns解析失败故障现象问题排查问题解析举例说明:解决方案修改ndots参数参考文档[问题记录]k8s集群中coredns解析失败故障现象在k8s集群,使用coredns提供集群内部dns服务但是在使用过程中,偶现解析公网域名失败的情况,应用内日志记录显示UnknownHost问......
  • 2023最新Adobe illustrator (Ai)插件脚本合集
    今天给大家分享的是最新款脚本合辑—-2023Illustrator最新插件,用过的都说好,百款功能任你用,支持win和mac,支持最新版本的Illustrator,一键安装永久使用。安装方式简单容易操作,切附带教学视频,以及插件实用教学,内置GIF,视频教学方法。熟悉Illustrator有一定时间了,经常要设计一些图片或......
  • 用自己指定的模板创建ahk脚本
    在windows右键弹出菜单的新建菜单中加入“AutoHotkey脚本” 1.首先写好模板文件,随便保存在一个地方,比如我是“X:\AutoHotkey\AutoHotkey\SHELLNEW\Template.ahk”;2.打开注册表(regedit),找到[HKEY_CLASSES_ROOT]->[.ahk](没有的话,自己新建项.ahk);3.在[.ahk]下新建项[ShellN......
  • win环境基于docker搭建zookeeper伪集群
    创建路径:D:\Docker\zk-cluster在此路径下创建配置文件:docker-compose.ymlversion:'2'networks:zk-net:name:zk-netservices:zoo1:image:zookeeperrestart:alwayscontainer_name:zoo1ports:-"21......
  • OSD自然OUT之后无法再加入集群-v1-20210308_124828
    OSD自然OUT之后无法再加入集群企业云平台产品中心共享知识库Exportedon03/08/2021TableofContents问题描述4问题原因5解决方法6验证步骤6相关下载链接:OSD自然OUT之后无法再加入集群.pdf1--------这是一条华丽的分割线--------1https://iwiki.woa.com/dow......
  • linux批量处理脚本
    1.批量Killps-ef|grepjava|grep-vgrep|awk'{print$2}'|xargskill-92.统计进程数ps-ef|grepjava|grep-vgrep|awk'{print$2}'|wc3.批量打开防火墙端口1#!/bin/sh2ports=$13echo"$ports"4IFS=''5rea......
  • 手动部署OceanBase集群
     1.准备工作准备工作参考:https://www.cnblogs.com/haha029/p/17336622.html中的“准备工作”初始化基础环境:创建admin用户、配置ssh互信、修改内核、修改会话变量、配置防火墙、配置时钟同步。2.部署OceanBase集群2.1安装oceanbase-ce软件包[admin]#sudorpm-ivhoce......
  • K8s 集群 etcd节点故障解决方案
    1环境说明k8s版本:v1.20etcd节点(192.168.0.12)故障: 报错详情: 4月2422:47:13k8s-node2etcd[9543]:{"level":"warn","ts":"2023-04-24T22:47:13.571+0800","caller":"etcdserver/server.go:2065","msg":......
  • SQL: PL/SQL打印用户表脚本文本
    PLSQL打印用户表脚本文本环境:ORACLE19C createorreplacepackageCUX_util_pkg2is--Author:SAM--Created:2022/8/2110:20:39--Purpose:LONG_TO_CHAR--更新:2023/4/24,增加识别临时表----将ORACLELONG类型转为字符串类型FUNCTIONLON......