直接上shell了。

  1. #!/bin/bash
  2.  
  3. #------------------------------------------------------------------------------------------------------------------#
  4. #| Some people die at the age of 25 and don't bury themselves in the earth until they are 75 |#
  5. #------------------------------------------------------------------------------------------------------------------#
  6. #| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$$ $$ $$$$$$ $$$$$$ |#
  7. #| $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ |#
  8. #| $$ $$$$$$$ $$$$$ $$ $$ $ $$ $$$$$$ $$ $$$$$ $$$$$ |#
  9. #| $$ $$ $$ $$ $$ $ $ $$ $$ $$ $$ $$ |#
  10. #| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$ $$ $$$$$$ $$$$$$ $$$$$$ |#
  11. #------------------------------------------------------------------------------------------------------------------#
  12. #| redis-cluster install |#
  13. #| 2018.12.10 |#
  14. #| blog http://www.cnblogs.com/chenglee/ |#
  15. #------------------------------------------------------------------------------------------------------------------#
  16. onversion="4.0.3"
  17. offversion=`basename redis-*.tar.gz .tar.gz | awk -F '-' '{print$2}'`
  18. installdir=$(cd `dirname $0`; pwd)
  19. cluster_name="redis-cluster"
  20. number=6
  21. numstaring=700
  22. #------------------------------------------------------------------------------------------------------------------#
  23. #| 说 明 |#
  24. #------------------------------------------------------------------------------------------------------------------#
  25. #| 此脚本分有离线安装和联网安装的功能, 联网安装的用法就是直接运行这个脚本 sh ***.sh /或者./***.sh |#
  26. #| 而离线安装, 就是把安装包和这个脚本放在想安装在的目录, 然后执行sh ***.sh /或者./***.sh即可,而无论选择哪一 |#
  27. #| 方式,都是包是否存在的问题,包在=离线,包不在=联网,下面说一下上面的全局变量的解释。 |#
  28. #| onversion 这个是在联网安装的时候需要制定的版本,默认4.0.3,如果需要安装5.0.0的, 修改此参数。 |#
  29. #| offversion 这个不用管它,这个是离线安装识别离线包版本的。 |#
  30. #| cluster_name 这个就是安装集群的文件夹名字,就是把集群装在这个文件夹里面。 |#
  31. #| number 这个就比较重要了, 节点。一台机器需要安装的节点,我这里是6,安装6个节点,可修改。 |#
  32. #| numstaring 这个是端口的前缀,比如我这里安装6个节点,端口自动分配为7001,7002,7003..., 如果需要修改成 |#
  33. #| 6001,6002...这些端口,修改此属性为600便可。 |#
  34. #------------------------------------------------------------------------------------------------------------------#
  35. function initize(){
  36. installdir=$(cd `dirname $0`; pwd)
  37. }
  38.  
  39. function checkroot(){
  40. if [ $UID -ne 0 ]
  41. then
  42. echo "|----------------------------------------------------------------------------------------------------------------|"
  43. echo "|------------------------------------------[权限不足...请切换至root用户]-----------------------------------------|"
  44. echo "|----------------------------------------------------------------------------------------------------------------|"
  45. exit;
  46. fi
  47. }
  48.  
  49. function judge(){
  50. echo
  51. offfile=`ls | grep redis-*.tar.gz`
  52. if [[ "$offfile" != "" ]]
  53. then
  54. echo "|----------------------------------------------------------------------------------------------------------------|"
  55. echo "|-------------------------------------------------[发现离线压包]-------------------------------------------------|"
  56. echo "|----------------------------------------------------------------------------------------------------------------|"
  57. /usr/bin/sleep 3
  58. offinstall
  59. else
  60. echo "|----------------------------------------------------------------------------------------------------------------|"
  61. echo "|-------------------------------------------------[未发现离线包]-------------------------------------------------|"
  62. echo "|--------------------------------------------[开始判断是否连接外网安装]------------------------------------------|"
  63. /usr/bin/sleep 3
  64. network
  65. fi
  66. }
  67.  
  68. function offinstall(){
  69. echo "|----------------------------------------------------------------------------------------------------------------|"
  70. echo "|-------------------------------------------------[离线包安装中]-------------------------------------------------|"
  71. echo "|----------------------------------------------------------------------------------------------------------------|"
  72. tar -zxvf redis-${offversion}.tar.gz >/dev/null 2>&1
  73. redis="redis-${offversion}"
  74. cd ${redis}/src && make >/dev/null 2>&1
  75. if [[ $? -ne 0 ]]; then
  76. echo "编译出错"
  77. else
  78. echo "|----------------------------------------------------------------------------------------------------------------|"
  79. echo "|-------------------------------------------------[文件编译完成]-------------------------------------------------|"
  80. echo "|----------------------------------------------------------------------------------------------------------------|"
  81. /usr/bin/sleep 3
  82. intend
  83. fi
  84. }
  85.  
  86. function network(){
  87. httpcode=`curl -I -m 10 -o /dev/null -s -w %{http_code}'\n' http://www.baidu.com`
  88. net1=$(echo $httpcode | grep "200")
  89. if [[ "$net1" != "" ]]
  90. then
  91. echo "|----------------------------------------------------------------------------------------------------------------|"
  92. echo "|-----------------------------------------------------[联网]-----------------------------------------------------|"
  93. echo "|-------------------------------------------------[准备联网安装]-------------------------------------------------|"
  94. echo "|----------------------------------------------------------------------------------------------------------------|"
  95. /usr/bin/sleep 3
  96. online
  97. else
  98. echo "|----------------------------------------------------------------------------------------------------------------|"
  99. echo "|-------------------------------------------[未联网,无离线安装包,准备退出]---------------------------------------|"
  100. echo "|----------------------------------------------------------------------------------------------------------------|"
  101. /usr/bin/sleep 3
  102. exit;
  103. fi
  104. }
  105. function online(){
  106. wget_v=`which wget`
  107. wget_vv=$(echo $wget_v | grep wget)
  108. if [[ "$wget_vv" != "" ]]
  109. then
  110. echo "|----------------------------------------------------------------------------------------------------------------|"
  111. echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
  112. echo "|----------------------------------------------------------------------------------------------------------------|"
  113. wget http://download.redis.io/releases/redis-${onversion}.tar.gz
  114. installon
  115. else
  116. echo "|----------------------------------------------------------------------------------------------------------------|"
  117. echo "|----------------------------------------[检测到wget没有安装, 准备安装wget]---------------------------------------|"
  118. echo "|----------------------------------------------------------------------------------------------------------------|"
  119. yum install wget -y
  120. echo "|----------------------------------------------------------------------------------------------------------------|"
  121. echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
  122. echo "|----------------------------------------------------------------------------------------------------------------|"
  123. wget http://download.redis.io/releases/redis-${onversion}.tar.gz
  124. installon
  125. fi
  126. }
  127.  
  128. function installon(){
  129. echo "|----------------------------------------------------------------------------------------------------------------|"
  130. echo "|-------------------------------------------------[在线安装包中]-------------------------------------------------|"
  131. echo "|----------------------------------------------------------------------------------------------------------------|"
  132. tar -zxvf redis-${onversion}.tar.gz >/dev/null 2>&1
  133. redis="redis-${onversion}"
  134. cd ${redis}/src && make >/dev/null 2>&1
  135. if [[ $? -ne 0 ]]; then
  136. echo "编译出错"
  137. else
  138. echo "|----------------------------------------------------------------------------------------------------------------|"
  139. echo "|-------------------------------------------------[文件编译完成]-------------------------------------------------|"
  140. echo "|----------------------------------------------------------------------------------------------------------------|"
  141. /usr/bin/sleep 3
  142. intend
  143. fi
  144. }
  145.  
  146. function intend(){
  147. echo "|----------------------------------------------------------------------------------------------------------------|"
  148. echo "|-------------------------------------------------[开始迁移文件]-------------------------------------------------|"
  149. echo "|----------------------------------------------------------------------------------------------------------------|"
  150. cd ${installdir}
  151. redis="redis-${onversion}"
  152. cd ${redis}/src
  153. if [ -f "redis-server" ];then
  154. echo "|----------------------------------------------------------------------------------------------------------------|"
  155. echo "|-------------------------------------------------[准备分配数据]-------------------------------------------------|"
  156. echo "|----------------------------------------------------------------------------------------------------------------|"
  157. else
  158. echo "|----------------------------------------------------------------------------------------------------------------|"
  159. echo "|-------------------------------------------------[失败重新编译]-------------------------------------------------|"
  160. echo "|----------------------------------------------------------------------------------------------------------------|"
  161. /usr/bin/sleep 2
  162. make >/dev/null 2>&1
  163. fi
  164. mkdir -p ${installdir}/${cluster_name}/{logs,nodes,conf,bin}
  165. cp redis-cli redis-server ${installdir}/${cluster_name}/bin
  166. cp redis-trib.rb ${installdir}/${cluster_name}
  167. for((i=1;i<=${number};i++));
  168. do
  169. port=${numstaring}${i}
  170. confile="redis-${numstaring}${i}.conf"
  171. cp ../redis.conf ${installdir}/${cluster_name}/conf/${confile}
  172. done
  173.  
  174. echo "|----------------------------------------------------------------------------------------------------------------|"
  175. echo "|-------------------------------------------------[数据迁移完成]-------------------------------------------------|"
  176. echo "|----------------------------------------------------------------------------------------------------------------|"
  177. /usr/bin/sleep 2
  178. echo "|----------------------------------------------------------------------------------------------------------------|"
  179. echo "|-------------------------------------------------[清理多余文件]-------------------------------------------------|"
  180. echo "|----------------------------------------------------------------------------------------------------------------|"
  181. #finish
  182. /usr/bin/sleep 2
  183. echo "|----------------------------------------------------------------------------------------------------------------|"
  184. echo "|-------------------------------------------------[配置快捷启动]-------------------------------------------------|"
  185. echo "|----------------------------------------------------------------------------------------------------------------|"
  186. service
  187. /usr/bin/sleep 2
  188. echo "|----------------------------------------------------------------------------------------------------------------|"
  189. echo "|-------------------------------------------------[修改配置文件]-------------------------------------------------|"
  190. echo "|----------------------------------------------------------------------------------------------------------------|"
  191. configfile
  192. /usr/bin/sleep 3
  193. echo "|****************************************************************************************************************|"
  194. echo "| WW WW EEEEEEE LL CCCCC OOOOOO MM MM EEEEEEE |"
  195. echo "| WW WWWW WW EE LL CC OO OO MMMM MMMM EE |"
  196. echo "| WW WW WW WW EEEEE LL CC OO OO MM MM MM MM EEEEE |"
  197. echo "| WW W W WW EE LL CC OO OO MM M M MM EE |"
  198. echo "| WW WW EEEEEEE LLLLLL CCCCC OOOOOO MM MMM MM EEEEEEE |"
  199. echo "|****************************************************************************************************************|"
  200. }
  201. function finish(){
  202. echo
  203. rm -rf ${installdir}/redis-*
  204. }
  205. #------------------------------------------------------------------------------------------------------------------#
  206. #| service 复制多份redis.conf conf 目录 |#
  207. #| configfile 对整改的内容做个整合 |#
  208. #| background 后台运行 |#
  209. #| updateport 端口 |#
  210. #| logpath 日志输出目录文件 logs 目录 |#
  211. #| colony 开启集群模式 |#
  212. #| clusterconf 集群数据输出目录文件 nodes目录 |#
  213. #| trib 创建集群 连接所有节点 redis-cluster.log |#
  214. #------------------------------------------------------------------------------------------------------------------#
  215. function service(){
  216. cd ${installdir}/${cluster_name}
  217. for((i=1;i<=${number};i++));
  218. do
  219. port=${numstaring}${i}
  220. confile="redis-${numstaring}${i}.conf"
  221. echo "./bin/redis-server conf/${confile}" >> start.sh
  222. done
  223. chmod +x start.sh
  224. }
  225. function configfile(){
  226. cd ${installdir}/${cluster_name}
  227. pathdir=`pwd`
  228. cd ${installdir}/${cluster_name}/conf
  229. for((i=1;i<=${number};i++));
  230. do
  231. port=${numstaring}${i}
  232. confile="redis-${numstaring}${i}.conf"
  233. #后台
  234. background
  235. #端口
  236. updateport
  237. #日志输出文件
  238. logpath
  239. #开启集群
  240. colony
  241. #集群数据文件
  242. clusterconf
  243. done
  244. }
  245. function background(){
  246. cd ${installdir}/${cluster_name}/conf
  247. for((i=1;i<=${number};i++));
  248. do
  249. confile="redis-${numstaring}${i}.conf"
  250. sed -i 's/daemonize no/daemonize yes/' ${confile}
  251. done
  252. }
  253. function updateport(){
  254. cd ${installdir}/${cluster_name}/conf
  255. for((i=1;i<=${number};i++));
  256. do
  257. port=${numstaring}${i}
  258. confile="redis-${numstaring}${i}.conf"
  259. sed -i "s|port 6379|port ${port}|g" ${confile}
  260. done
  261. }
  262. function colony(){
  263. cd ${installdir}/${cluster_name}/conf
  264. for((i=1;i<=${number};i++));
  265. do
  266. confile="redis-${numstaring}${i}.conf"
  267. sed -i 's/# cluster-enabled yes/cluster-enabled yes/' ${confile}
  268. done
  269. }
  270. function logpath(){
  271. cd ${installdir}/${cluster_name}
  272. pathdir=`pwd`
  273. cd ${installdir}/${cluster_name}/conf
  274. for((i=1;i<=${number};i++));
  275. do
  276. port=${numstaring}${i}
  277. confile="redis-${numstaring}${i}.conf"
  278. logfileold=`cat "${confile}" | grep logfile | awk -F '"' '{print$2}'`
  279. logfile="redis-${numstaring}${i}.logs"
  280. logfilenew=${pathdir}/logs/${logfile}
  281. if [ ! $logfileold ];then
  282. sed -i 's/logfile ""/logfile "judgement"/' ${confile}
  283. logfileold=`cat "${confile}" | grep logfile | awk -F '"' '{print$2}'`
  284. if [ ! $logfileold ];then
  285. echo
  286. else
  287. sed -i "s|$logfileold|$logfilenew|g" ${confile}
  288. fi
  289. sed -i "s|$logfileold|$logfilenew|g" ${confile}
  290. else
  291. sed -i "s|$logfileold|$logfilenew|g" ${confile}
  292. fi
  293. done
  294. }
  295. function clusterconf(){
  296. cd ${installdir}/${cluster_name}
  297. pathdir=`pwd`
  298. cd ${installdir}/${cluster_name}/conf
  299. for((i=1;i<=${number};i++));
  300. do
  301. port=${numstaring}${i}
  302. confile="redis-${numstaring}${i}.conf"
  303. nodes="nodes-${numstaring}${i}.conf"
  304. clusternumber=`cat -n ${confile} | grep cluster-config-file | awk '{print$1}' | head -n 1`
  305. clusterconfnew="cluster-config-file ${pathdir}/nodes/${nodes}"
  306. clusterNM=`cat -n ${confile} | grep cluster-config-file | grep -v '#' | wc -l`
  307. if [ ${clusterNM} -ge 1 ];then
  308. number=`cat -n ${confile} | grep cluster-config-file | grep -v '#' | awk '{print$1}' | head -n 1`
  309. sed -i "${number}d" ${confile}
  310. else
  311. sed -i "${clusternumber}i ${clusterconfnew}" ${confile}
  312. fi
  313. done
  314. }
  315. function trib(){
  316. cd ${installdir}/${cluster_name}
  317. echo "|----------------------------------------------------------------------------------------------------------------|"
  318. echo "|-------------------------------------------------[启动集群进程]-------------------------------------------------|"
  319. echo "|----------------------------------------------------------------------------------------------------------------|"
  320. ./start.sh
  321. /usr/bin/sleep 2
  322. echo "|----------------------------------------------------------------------------------------------------------------|"
  323. echo "|-------------------------------------------------[进程 已启动]-------------------------------------------------|"
  324. echo "|----------------------------------------------------------------------------------------------------------------|"
  325.  
  326. bindip=`ps aux | grep "redis" | awk '{print$12}' | grep -v "auto" | head -n ${number}`
  327. echo "|----------------------------------------------------------------------------------------------------------------|"
  328. echo "|-------------------------------------------------[安装 gem环境]-------------------------------------------------|"
  329. echo "|----------------------------------------------------------------------------------------------------------------|"
  330. /usr/bin/sleep 2
  331. wget https://rubygems.org/downloads/redis-3.2.0.gem
  332. gem install redis-*.gem
  333. echo "|----------------------------------------------------------------------------------------------------------------|"
  334. echo "|-------------------------------------------------[gem 环境已装]-------------------------------------------------|"
  335. echo "|----------------------------------------------------------------------------------------------------------------|"
  336. /usr/bin/sleep 2
  337. echo "|----------------------------------------------------------------------------------------------------------------|"
  338. echo "|-------------------------------------------------[搭建节点连接]-------------------------------------------------|"
  339. echo "|----------------------------------------------------------------------------------------------------------------|"
  340. ./redis-trib.rb create --replicas 1 ${bindip} > redis-cluster.log > /dev/null 2>&1
  341. }
  342. function main(){
  343. gem=`which gem`
  344. gemv=$(echo $gem | grep gem)
  345. if [[ $gemv != "" ]]
  346. then
  347. echo "|----------------------------------------------------------------------------------------------------------------|"
  348. echo "|-------------------------------------------------[gem 环境存在]-------------------------------------------------|"
  349. echo "|----------------------------------------------------------------------------------------------------------------|"
  350. checkroot
  351. judge
  352. trib
  353. else
  354. echo "|----------------------------------------------------------------------------------------------------------------|"
  355. echo "|-------------------------------------------------[gem 环境未装]-------------------------------------------------|"
  356. echo "|----------------------------------------------------------------------------------------------------------------|"
  357. yum install ruby rubygems -y
  358. wget https://rubygems.org/downloads/redis-3.2.0.gem
  359. gem install redis-*.gem
  360. /usr/bin/sleep 2
  361. echo "|----------------------------------------------------------------------------------------------------------------|"
  362. echo "|-------------------------------------------------[gem 环境已装]-------------------------------------------------|"
  363. echo "|----------------------------------------------------------------------------------------------------------------|"
  364. checkroot
  365. judge
  366. trib
  367. fi
  368. }
  369. main

shell脚本一键安装redis集群[最终版]的更多相关文章

  1. shell脚本一键安装redis集群

    简介: 明天再写,上脚本 #!/bin/bash #-------------------------------------------------------------------------- ...

  2. 编写shell脚本一键启动zookeeper集群!!

    踩了一个多小时坑终于解决了: 这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!! 首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令 这里简单说下原理: 通过ssh去另外一台 ...

  3. shell脚本一键安装redis

    支持识别离线包和联网安装,自动修改使用后台运行模式,离线安装的方法是,将离线包和脚本放在同一个文件夹, 它会先识别有没有离线包, 有离线包就先安装离线包, 没有离线包就安装进行判断机器是否能联网, 能 ...

  4. liunx contos 7.4 安装redis集群

    前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...

  5. 从零开始安装Redis 集群(Linux CenOS7)

    从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...

  6. centos7.0 安装redis集群

    生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大.这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很 ...

  7. Centos 6.4上面用Shell脚本一键安装vsftpd

    Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...

  8. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

    Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...

  9. 安装完Ubuntu后通过shell脚本一键安装软件

    安装完Ubuntu后通过shell脚本一键安装软件 以下代码中#是单行注释 :<<! ! 是多行注释. 运行的时候需要把多行注释去掉. 比如把以下代码保存为install.sh, 那么在终 ...

随机推荐

  1. python知识补足

    1.class的init功能,初始化class,给出一些初始值 __init__可以理解成初始化class的变量,取自英文中initial 最初的意思.可以在运行时,给初始值附值, class Cal ...

  2. 不同版本Hibernate.获取SessionFactory的方式

    不同版本Hibernate.获取SessionFactory的方式 Hibernate 版本说明: 我当前使用的是 Hibernate 5.x ,(hibernate-release-5.3.6.Fi ...

  3. Android -- 实现RecyclerView可拖拽Item

    1,今天和大家一起实现RecyclerView可拖拽Item,主要是使用RecyclerView结合ItemTouchHelper来实现的,来看一下效果 2,看一下怎么实现的呢,很简单,只需要给rec ...

  4. [IDE] ECLIPSE取消自动更新

    eclipse自动更新的取消方法: window --> preferences --> General --> Startup and Shutdown --> 在列表中找到 ...

  5. SNMP 安装及使用

    一.SNMP的安装 1.安装 snmp服务,python扩展等 参考:http://lihuipeng.blog.51cto.com/3064864/915965 [root@localhost] y ...

  6. 本地文件直接访问html,document.cookie总是显示空字符串

    当file:///E:/browser.html访问时,我们设置document.cookie,读取时一直会显示空字符串! 而开一下Apache时:localhost/browser.html或者12 ...

  7. PID控制動手玩玩看

    PID控制動手玩玩看 PID三個參數到底該怎麼調才好,真的是一門藝術. 雖然在Marlin韌體內有提供自動測量的功能,但是測得的結果,不見得能令人滿意,還是需要調整.可是到底該怎麼調整?從哪個參數開始 ...

  8. Jmeter自己jar包的引用

    1.编写清空指定文件夹里所有内容的jar包 package org.na;import java.io.File;public class deletedir {    public static b ...

  9. 两眼论&矩阵变现理论结合打造赚钱大模式

    两眼论&矩阵变现理论结合打造赚钱大模式 围棋有一个基本规则,就是一块棋有两只真眼,就是活棋. 围棋没有复杂的规则,它最有趣的地方是没有太多的规则和限制,由此演变出了大千世界,所以古人云“棋如人 ...

  10. tomcat查看并修改jvm大小

    JVM--Java Virtual Machine,Java虚拟机:tomcat不是直接运行在物理操作系统上,而是运行在Java虚拟机上,通常说的配置jvm就是配置分配给Java虚拟机的内存大小: 如 ...