热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

三、单redis升级redis集群+哨兵

针对假如已经是安装了redis,只是是单部署,需要把他切换成redis集群+哨兵模式,我因为偷懒,就写了个脚本来执行,各位看官,请品~你品~你细品~首先准备个升级包,放到任意路径,

针对假如已经是安装了redis,只是是单部署,需要把他切换成redis集群+哨兵模式,我因为偷懒,就写了个脚本来执行,各位看官,请品~你品~你细品~

首先准备个升级包,放到任意路径,内容如下:

 

 第一个文件不用管,第二个跟第四个,是把里面的配置改好,如何配置请参考我之前写的redis集群一,

然后是upgrade.sh脚本内容:

1 #!/bin/bash
2
3 base_path=/home/zmoon
4 redis_package_name=redis-5.0.12
5
6 #安装文件名称(安装文件位置=安装位置+安装文件名称)
7 redis_path=/redis-5.0.12
8 redis_cOnf=/etc/redis.conf
9 sentinel_cOnf=/etc/sentinel.conf
10 monitor_redis=/home/zmoon/bin
11
12
13
14 #判断redis是否安装
15 check_redis(){
16 if [ -d "$base_path$redis_path" ]; then
17 echo "redis 已安装,无需再次安装!"
18 return 1
19 else
20 return 0
21 fi
22 }
23
24 #判断etc
25 check_redis_conf(){
26 if [ -f "$base_path$redis_path$redis_conf" ]; then
27 echo "redis.conf 已存在,无需再次安装!"
28 return 1
29 else
30 return 0
31 fi
32 }
33
34 #判断etc redis.conf,sentinel.conf是否存在
35 check_sentinel_conf(){
36 if [ -f "$base_path$redis_path$sentinel_conf" ]; then
37 echo "sentinel.conf 已存在,无需再次安装!"
38 return 1
39 else
40 return 0
41 fi
42 }
43
44
45 copy_redis_conf(){
46 mkdir -p $base_path$redis_path/etc
47 cp redis.conf $base_path$redis_path/etc/redis.conf
48 return 2
49 }
50
51 copy_sentinel_conf(){
52 mkdir -p $base_path$redis_path/etc
53 cp sentinel.conf $base_path$redis_path/etc/sentinel.conf
54 return 2
55 }
56
57 copy_monitor_sh(){
58 cp install-zm-redis.sh $monitor_redis/install-zm-redis.sh
59 return 2
60 }
61
62 install_redis(){
63 echo "安装redis"
64
65 tar -zxvf $redis_package_name.tar.gz
66
67 echo "开始编译及安装。。。"
68 cd $redis_package_name
69
70 make
71 make PREFIX=$base_path$redis_path install
72
73 #切换到redis目录 新建etc文件夹
74 mkdir -p $base_path$redis_path/etc
75
76 cd ..
77
78 #把配置好的文件复制过来
79 cp redis.conf $base_path$redis_path/etc/redis.conf
80 cp sentinel.conf $base_path$redis_path/etc/sentinel.conf
81
82 return 2
83
84 }
85
86 main(){
87 echo "base_path:$base_path"
88
89 #判断当前用户是否为root用户,不是则终止部署
90 if [ `whoami` != "root" ]; then
91 echo "部署请将用户切换到root用户,安装终止"
92 exit 1
93 fi
94
95 if [ ! -d "$base_path" ]; then
96 mkdir $base_path
97 fi
98
99 #检查是否有redis进程
100 # 停止正在运行的services-应用
101 echo "检查是否有redis进程"
102 pids=`ps -ef|grep redis-server|grep -v 'grep'|awk '{print $2}'`
103 pidsentinel=`ps -ef|grep redis-sentinel|grep -v 'grep'|awk '{print $2}'`
104 pids=${pids%/*}
105 if [ -n "$pids" ];then
106 for pid in $pids
107 do
108 kill -9 $pid
109 done
110 fi
111
112 pidsentinel=${pidsentinel%/*}
113 if [ -n "$pidsentinel" ];then
114 for pid in $pidsentinel
115 do
116 kill -9 $pid
117 done
118 fi
119
120 echo "------------------------------------------------"
121 echo "Redis service stop"
122 echo "------------------------------------------------"
123
124 #安装redis
125 check_redis
126 if [ $? -eq 0 ]; then
127 install_redis
128
129 if [ $? -eq 2 ]; then
130 echo "redis 安装成功!"
131 else
132 echo "redis 安装失败,安装终止!"
133 exit 1
134 fi
135 fi
136
137 #安装redis
138 check_redis_conf
139 if [ $? -eq 0 ]; then
140 copy_redis_conf
141
142 if [ $? -eq 2 ]; then
143 echo "redis.conf copy成功!"
144 else
145 echo "redis.conf copy失败,copy终止!"
146 exit 1
147 fi
148 fi
149
150 #安装redis
151 check_sentinel_conf
152 if [ $? -eq 0 ]; then
153 copy_sentinel_conf
154
155 if [ $? -eq 2 ]; then
156 echo "sentinel.conf copy成功!"
157 else
158 echo "sentinel.conf copy失败,copy终止!"
159 exit 1
160 fi
161 fi
162
163 copy_monitor_sh
164
165 if [ $? -eq 2 ]; then
166 echo "看门猫redis脚本 copy成功!"
167 else
168 echo "看门猫redis脚本 copy失败,copy终止!"
169 exit 1
170 fi
171
172 #提示“请输入当前节点IP(xx.xx.xx.xx):”,把输入IP保存入变量selfIp中
173 read -p "请输入当前节点IP(xx.xx.xx.xx):" selfIp
174 #提示“请输入Redis主节点IP(xx.xx.xx.xx):”,把输入IP保存入变量nodeIp中
175 read -p "请输入当前主节点IP(xx.xx.xx.xx):" nodeIp
176
177
178 if [ $selfIp = $nodeIp ]
179 then
180 sed -i 's#.*'"sentinel monitor mymaster.*#sentinel monitor mymaster ${nodeIp} 6379 2"'#' /home/zmoon/redis-5.0.12/etc/sentinel.conf
181 else
182 echo -e "replicaof ${nodeIp} 6379" >> /home/zmoon/redis-5.0.12/etc/redis.conf
183
184 sed -i 's#.*'"sentinel monitor mymaster.*#sentinel monitor mymaster ${nodeIp} 6379 2"'#' /home/zmoon/redis-5.0.12/etc/sentinel.conf
185 fi
186
187 #启动redis
188 $base_path$redis_path/bin/redis-server $base_path$redis_path/etc/redis.conf &
189 $base_path$redis_path/bin/redis-sentinel $base_path$redis_path/etc/sentinel.conf &
190 }
191 main $1
192 exit 0

里面首先判断是否有redis进程与sentinel进程,有则kill掉,

然后又判断是否有安装redis,

然后是etc下的两个配置文件是否存在,

进而是修改配置文件的内容,

最后启动redis服务与哨兵服务,redis升级完成。

请各位看官大大参与评论,指点不足~



推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
author-avatar
吴之薇_1989_l5g_112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有