脚本一键式部署redis主从与哨兵服务

本次创建是为了简化服务的部署时间,使用的都是比较基础的命令方法,易懂!

因为密钥无法连接本机,所以搭建服务,全程没有部署密钥!

vim Auto-deploy-redis.sh

注:脚本没有关闭回显,所以解压,和编译时会显示在屏幕,其他正则操作不会显示!

#!/bin/bash
#redis哨兵一键式部署脚本

#下载redis软件包:
cd /opt
yum -y install wget     #不确定是否有安装wget命令,直接安一个
yum -y install sshpass

#如果是相让下载软件快点的话,建议更换阿里源:
# for i in  11 12 13 
#do
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "yum -y install wget"
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mkdir /etc/yum.repos.d/repo_bak"
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mkdir repo_bak"
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/"
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cd /etc/yum.repos.d/ && wget http://mirrors.aliyun.com/repo/Centos-7.repo" #下载阿里源

#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "yum clean all"  #清空缓存
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "yum makecache"  #生产新的缓存

#done

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

#非交互式创建密钥(密钥目前操作有点问题,就不使用密钥了)
#ssh-keygen    -t   rsa    -f   /root/.ssh/id_rsa    -N   ''

#准备环境
for i in  11 12 13
do
#拷贝公钥到相关服务器(全程使用 sshpass工具)
#sshpass -p "123456" ssh-copy-id root@192.168.1.$i
#非交互式远程登录下载相关插件
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "yum -y install gcc make "

#拷贝下好的软件包传送过去
sshpass -p "123456" scp /opt/redis-5.0.5.tar.gz  root@192.168.1.$i:/opt
done

do
#解压&&预编译&&安装
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cd /opt/ && tar -zxvf redis-5.0.5.tar.gz -C /usr/local/"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cd /usr/local/redis-5.0.5 && make && make install"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mv /usr/local/redis-5.0.5 /usr/local/redis"
#方便命令启动,设置全局变量
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mkdir -p /opt/redis/{conf,data,log,tmp}"
#拷贝配置文件redis.conf和sentinel.conf
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cp /usr/local/redis/redis.conf  /opt/redis/conf/redis-6379.conf"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cp /usr/local/redis/sentinel.conf /opt/redis/conf/sentinel-26379.conf"
done

#配置redis主从模式

for i in 11 12 13
do

#protected-mode配置,默认是yes,需要配置bind ip或设置访问密码,
#关闭protected-mode模式,此时外部网络可以直接访问
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^protected-mode/s/yes/no/' /opt/redis/conf/redis-6379.conf"

#修改IP地址
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^bind/s/127.0.0.1/0.0.0.0/' /opt/redis/conf/redis-6379.conf"
#开启后台运行
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^daemonize/s/no/yes/' /opt/redis/conf/redis-6379.conf"

#db等相关目录位置
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^dir/s/.\//\/opt\/redis\/data\//' /opt/redis/conf/redis-6379.conf"
#开启日志形式
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^appendonly/s/no/yes/' /opt/redis/conf/redis-6379.conf"

#设置访问密码
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i  '/requirepass/s/# requirepass foobared/requirepass 123456/' /opt/redis/conf/redis-6379.conf"

#设置连接主的密码

done

#从服务器要单独修改一个地方,指定主服务器配置:我这里的主是11,从是12,13
for i in 12 13
do
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i  '/replicaof/s/# replicaof <masterip> <masterport>/replicaof 192.168.1.11 6379/' /opt/redis/conf/redis-6379.conf"
done


#部署sentinel 哨兵服务
for i in 11 12 13
do

#保护模式关闭,也可以不用去管它,因为它默认是注释的
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/# protected-mode/s/^#//' /opt/redis/conf/sentinel-26379.conf"

#后台运行
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^daemonize/s/no/yes/' /opt/redis/conf/sentinel-26379.conf"

#哨兵文件目录
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^dir/s#tmp#opt/redis/tmp/#' /opt/redis/conf/sentinel-26379.conf"

#指定日志文件路径
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/^logfile/s/\"\"/\/opt\/redis\/log\/sentinel-26379.log/' /opt/redis/conf/sentinel-26379.conf"

#指定监视主服务器
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/sentinel monitor/s/127.0.0.1/192.168.1.11/' /opt/redis/conf/sentinel-26379.conf"

#主服务器设置了密码,哨兵得在sentinel monitor 下配置asentinel auth-pass mymaster 123456
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/sentinel monitor mymaster/asentinel auth-pass mymaster 123456' /opt/redis/conf/sentinel-26379.conf"

# 如果mymaster 30秒内没有响应,则认为其主观失效 (默认即可,也可以修改)
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/down-after-milliseconds mymaster/s/30000/10000/' /opt/redis/conf/sentinel-26379.conf"

# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒 (默认即可)
#sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "sed -i '/failover-timeout mymaster/s/180000/160000/' /opt/redis/conf/sentinel-26379.conf"

done

#启动服务
for i in 11 12 13
do
#方便管理做的操作,可不做
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mkdir /opt/tar-gz && mv /opt/redis-5.0.5.tar.gz  /opt/tar-gz/"

#启动redis
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "redis-server /opt/redis/conf/redis-6379.conf"

#启动哨兵
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "redis-sentinel /opt/redis/conf/sentinel-26379.conf"

done

Sentinel操作

[root@redis-master ~] redis-cli -p 26379     //哨兵模式查看
127.0.0.1:26379> sentinel master mymaster   //输出被监控的主节点的状态信息

......

127.0.0.1:26379> sentinel slaves mymaster   //查看mymaster的从信息,可以看到有2个从节点

......

127.0.0.1:26379> sentinel sentinels mymaster    //查看其它sentinel(哨兵)信息

**到此就一键式部署完毕了!**这个shell脚本其实都是可以快速改编的,可以很快的修改成单机redis主从-哨兵服务
这个看shell脚本里的内容,需要改的地方观摩了

借阅了一些资料:
非交互式远程登录参考文章
sshpass工具远程传输,拷贝的使用方式参考文章

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值