shell脚本一键安装redis集群[最终版]
直接上shell了。
- #!/bin/bash
- #------------------------------------------------------------------------------------------------------------------#
- #| Some people die at the age of 25 and don't bury themselves in the earth until they are 75 |#
- #------------------------------------------------------------------------------------------------------------------#
- #| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$$ $$ $$$$$$ $$$$$$ |#
- #| $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ |#
- #| $$ $$$$$$$ $$$$$ $$ $$ $ $$ $$$$$$ $$ $$$$$ $$$$$ |#
- #| $$ $$ $$ $$ $$ $ $ $$ $$ $$ $$ $$ |#
- #| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$ $$ $$$$$$ $$$$$$ $$$$$$ |#
- #------------------------------------------------------------------------------------------------------------------#
- #| redis-cluster install |#
- #| 2018.12.10 |#
- #| blog http://www.cnblogs.com/chenglee/ |#
- #------------------------------------------------------------------------------------------------------------------#
- onversion="4.0.3"
- offversion=`basename redis-*.tar.gz .tar.gz | awk -F '-' '{print$2}'`
- installdir=$(cd `dirname $0`; pwd)
- cluster_name="redis-cluster"
- number=6
- numstaring=700
- #------------------------------------------------------------------------------------------------------------------#
- #| 说 明 |#
- #------------------------------------------------------------------------------------------------------------------#
- #| 此脚本分有离线安装和联网安装的功能, 联网安装的用法就是直接运行这个脚本 sh ***.sh /或者./***.sh |#
- #| 而离线安装, 就是把安装包和这个脚本放在想安装在的目录, 然后执行sh ***.sh /或者./***.sh即可,而无论选择哪一 |#
- #| 方式,都是包是否存在的问题,包在=离线,包不在=联网,下面说一下上面的全局变量的解释。 |#
- #| onversion 这个是在联网安装的时候需要制定的版本,默认4.0.3,如果需要安装5.0.0的, 修改此参数。 |#
- #| offversion 这个不用管它,这个是离线安装识别离线包版本的。 |#
- #| cluster_name 这个就是安装集群的文件夹名字,就是把集群装在这个文件夹里面。 |#
- #| number 这个就比较重要了, 节点。一台机器需要安装的节点,我这里是6,安装6个节点,可修改。 |#
- #| numstaring 这个是端口的前缀,比如我这里安装6个节点,端口自动分配为7001,7002,7003..., 如果需要修改成 |#
- #| 6001,6002...这些端口,修改此属性为600便可。 |#
- #------------------------------------------------------------------------------------------------------------------#
- function initize(){
- installdir=$(cd `dirname $0`; pwd)
- }
- function checkroot(){
- if [ $UID -ne 0 ]
- then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|------------------------------------------[权限不足...请切换至root用户]-----------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- exit;
- fi
- }
- function judge(){
- echo
- offfile=`ls | grep redis-*.tar.gz`
- if [[ "$offfile" != "" ]]
- then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[发现离线压包]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 3
- offinstall
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[未发现离线包]-------------------------------------------------|"
- echo "|--------------------------------------------[开始判断是否连接外网安装]------------------------------------------|"
- /usr/bin/sleep 3
- network
- fi
- }
- function offinstall(){
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[离线包安装中]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- tar -zxvf redis-${offversion}.tar.gz >/dev/null 2>&1
- redis="redis-${offversion}"
- cd ${redis}/src && make >/dev/null 2>&1
- if [[ $? -ne 0 ]]; then
- echo "编译出错"
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[文件编译完成]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 3
- intend
- fi
- }
- function network(){
- httpcode=`curl -I -m 10 -o /dev/null -s -w %{http_code}'\n' http://www.baidu.com`
- net1=$(echo $httpcode | grep "200")
- if [[ "$net1" != "" ]]
- then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-----------------------------------------------------[联网]-----------------------------------------------------|"
- echo "|-------------------------------------------------[准备联网安装]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 3
- online
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------[未联网,无离线安装包,准备退出]---------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 3
- exit;
- fi
- }
- function online(){
- wget_v=`which wget`
- wget_vv=$(echo $wget_v | grep wget)
- if [[ "$wget_vv" != "" ]]
- then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- wget http://download.redis.io/releases/redis-${onversion}.tar.gz
- installon
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|----------------------------------------[检测到wget没有安装, 准备安装wget]---------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- yum install wget -y
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- wget http://download.redis.io/releases/redis-${onversion}.tar.gz
- installon
- fi
- }
- function installon(){
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[在线安装包中]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- tar -zxvf redis-${onversion}.tar.gz >/dev/null 2>&1
- redis="redis-${onversion}"
- cd ${redis}/src && make >/dev/null 2>&1
- if [[ $? -ne 0 ]]; then
- echo "编译出错"
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[文件编译完成]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 3
- intend
- fi
- }
- function intend(){
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[开始迁移文件]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- cd ${installdir}
- redis="redis-${onversion}"
- cd ${redis}/src
- if [ -f "redis-server" ];then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[准备分配数据]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[失败重新编译]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 2
- make >/dev/null 2>&1
- fi
- mkdir -p ${installdir}/${cluster_name}/{logs,nodes,conf,bin}
- cp redis-cli redis-server ${installdir}/${cluster_name}/bin
- cp redis-trib.rb ${installdir}/${cluster_name}
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- cp ../redis.conf ${installdir}/${cluster_name}/conf/${confile}
- done
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[数据迁移完成]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[清理多余文件]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- #finish
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[配置快捷启动]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- service
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[修改配置文件]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- configfile
- /usr/bin/sleep 3
- echo "|****************************************************************************************************************|"
- echo "| WW WW EEEEEEE LL CCCCC OOOOOO MM MM EEEEEEE |"
- echo "| WW WWWW WW EE LL CC OO OO MMMM MMMM EE |"
- echo "| WW WW WW WW EEEEE LL CC OO OO MM MM MM MM EEEEE |"
- echo "| WW W W WW EE LL CC OO OO MM M M MM EE |"
- echo "| WW WW EEEEEEE LLLLLL CCCCC OOOOOO MM MMM MM EEEEEEE |"
- echo "|****************************************************************************************************************|"
- }
- function finish(){
- echo
- rm -rf ${installdir}/redis-*
- }
- #------------------------------------------------------------------------------------------------------------------#
- #| service 复制多份redis.conf conf 目录 |#
- #| configfile 对整改的内容做个整合 |#
- #| background 后台运行 |#
- #| updateport 端口 |#
- #| logpath 日志输出目录文件 logs 目录 |#
- #| colony 开启集群模式 |#
- #| clusterconf 集群数据输出目录文件 nodes目录 |#
- #| trib 创建集群 连接所有节点 redis-cluster.log |#
- #------------------------------------------------------------------------------------------------------------------#
- function service(){
- cd ${installdir}/${cluster_name}
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- echo "./bin/redis-server conf/${confile}" >> start.sh
- done
- chmod +x start.sh
- }
- function configfile(){
- cd ${installdir}/${cluster_name}
- pathdir=`pwd`
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- #后台
- background
- #端口
- updateport
- #日志输出文件
- logpath
- #开启集群
- colony
- #集群数据文件
- clusterconf
- done
- }
- function background(){
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- confile="redis-${numstaring}${i}.conf"
- sed -i 's/daemonize no/daemonize yes/' ${confile}
- done
- }
- function updateport(){
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- sed -i "s|port 6379|port ${port}|g" ${confile}
- done
- }
- function colony(){
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- confile="redis-${numstaring}${i}.conf"
- sed -i 's/# cluster-enabled yes/cluster-enabled yes/' ${confile}
- done
- }
- function logpath(){
- cd ${installdir}/${cluster_name}
- pathdir=`pwd`
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- logfileold=`cat "${confile}" | grep logfile | awk -F '"' '{print$2}'`
- logfile="redis-${numstaring}${i}.logs"
- logfilenew=${pathdir}/logs/${logfile}
- if [ ! $logfileold ];then
- sed -i 's/logfile ""/logfile "judgement"/' ${confile}
- logfileold=`cat "${confile}" | grep logfile | awk -F '"' '{print$2}'`
- if [ ! $logfileold ];then
- echo
- else
- sed -i "s|$logfileold|$logfilenew|g" ${confile}
- fi
- sed -i "s|$logfileold|$logfilenew|g" ${confile}
- else
- sed -i "s|$logfileold|$logfilenew|g" ${confile}
- fi
- done
- }
- function clusterconf(){
- cd ${installdir}/${cluster_name}
- pathdir=`pwd`
- cd ${installdir}/${cluster_name}/conf
- for((i=1;i<=${number};i++));
- do
- port=${numstaring}${i}
- confile="redis-${numstaring}${i}.conf"
- nodes="nodes-${numstaring}${i}.conf"
- clusternumber=`cat -n ${confile} | grep cluster-config-file | awk '{print$1}' | head -n 1`
- clusterconfnew="cluster-config-file ${pathdir}/nodes/${nodes}"
- clusterNM=`cat -n ${confile} | grep cluster-config-file | grep -v '#' | wc -l`
- if [ ${clusterNM} -ge 1 ];then
- number=`cat -n ${confile} | grep cluster-config-file | grep -v '#' | awk '{print$1}' | head -n 1`
- sed -i "${number}d" ${confile}
- else
- sed -i "${clusternumber}i ${clusterconfnew}" ${confile}
- fi
- done
- }
- function trib(){
- cd ${installdir}/${cluster_name}
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[启动集群进程]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- ./start.sh
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[进程 已启动]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- bindip=`ps aux | grep "redis" | awk '{print$12}' | grep -v "auto" | head -n ${number}`
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[安装 gem环境]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 2
- wget https://rubygems.org/downloads/redis-3.2.0.gem
- gem install redis-*.gem
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[gem 环境已装]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[搭建节点连接]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- ./redis-trib.rb create --replicas 1 ${bindip} > redis-cluster.log > /dev/null 2>&1
- }
- function main(){
- gem=`which gem`
- gemv=$(echo $gem | grep gem)
- if [[ $gemv != "" ]]
- then
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[gem 环境存在]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- checkroot
- judge
- trib
- else
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[gem 环境未装]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- yum install ruby rubygems -y
- wget https://rubygems.org/downloads/redis-3.2.0.gem
- gem install redis-*.gem
- /usr/bin/sleep 2
- echo "|----------------------------------------------------------------------------------------------------------------|"
- echo "|-------------------------------------------------[gem 环境已装]-------------------------------------------------|"
- echo "|----------------------------------------------------------------------------------------------------------------|"
- checkroot
- judge
- trib
- fi
- }
- main
shell脚本一键安装redis集群[最终版]的更多相关文章
- shell脚本一键安装redis集群
简介: 明天再写,上脚本 #!/bin/bash #-------------------------------------------------------------------------- ...
- 编写shell脚本一键启动zookeeper集群!!
踩了一个多小时坑终于解决了: 这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!! 首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令 这里简单说下原理: 通过ssh去另外一台 ...
- shell脚本一键安装redis
支持识别离线包和联网安装,自动修改使用后台运行模式,离线安装的方法是,将离线包和脚本放在同一个文件夹, 它会先识别有没有离线包, 有离线包就先安装离线包, 没有离线包就安装进行判断机器是否能联网, 能 ...
- liunx contos 7.4 安装redis集群
前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...
- 从零开始安装Redis 集群(Linux CenOS7)
从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...
- centos7.0 安装redis集群
生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大.这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很 ...
- Centos 6.4上面用Shell脚本一键安装vsftpd
Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...
- 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 ...
- 安装完Ubuntu后通过shell脚本一键安装软件
安装完Ubuntu后通过shell脚本一键安装软件 以下代码中#是单行注释 :<<! ! 是多行注释. 运行的时候需要把多行注释去掉. 比如把以下代码保存为install.sh, 那么在终 ...
随机推荐
- python知识补足
1.class的init功能,初始化class,给出一些初始值 __init__可以理解成初始化class的变量,取自英文中initial 最初的意思.可以在运行时,给初始值附值, class Cal ...
- 不同版本Hibernate.获取SessionFactory的方式
不同版本Hibernate.获取SessionFactory的方式 Hibernate 版本说明: 我当前使用的是 Hibernate 5.x ,(hibernate-release-5.3.6.Fi ...
- Android -- 实现RecyclerView可拖拽Item
1,今天和大家一起实现RecyclerView可拖拽Item,主要是使用RecyclerView结合ItemTouchHelper来实现的,来看一下效果 2,看一下怎么实现的呢,很简单,只需要给rec ...
- [IDE] ECLIPSE取消自动更新
eclipse自动更新的取消方法: window --> preferences --> General --> Startup and Shutdown --> 在列表中找到 ...
- SNMP 安装及使用
一.SNMP的安装 1.安装 snmp服务,python扩展等 参考:http://lihuipeng.blog.51cto.com/3064864/915965 [root@localhost] y ...
- 本地文件直接访问html,document.cookie总是显示空字符串
当file:///E:/browser.html访问时,我们设置document.cookie,读取时一直会显示空字符串! 而开一下Apache时:localhost/browser.html或者12 ...
- PID控制動手玩玩看
PID控制動手玩玩看 PID三個參數到底該怎麼調才好,真的是一門藝術. 雖然在Marlin韌體內有提供自動測量的功能,但是測得的結果,不見得能令人滿意,還是需要調整.可是到底該怎麼調整?從哪個參數開始 ...
- Jmeter自己jar包的引用
1.编写清空指定文件夹里所有内容的jar包 package org.na;import java.io.File;public class deletedir { public static b ...
- 两眼论&矩阵变现理论结合打造赚钱大模式
两眼论&矩阵变现理论结合打造赚钱大模式 围棋有一个基本规则,就是一块棋有两只真眼,就是活棋. 围棋没有复杂的规则,它最有趣的地方是没有太多的规则和限制,由此演变出了大千世界,所以古人云“棋如人 ...
- tomcat查看并修改jvm大小
JVM--Java Virtual Machine,Java虚拟机:tomcat不是直接运行在物理操作系统上,而是运行在Java虚拟机上,通常说的配置jvm就是配置分配给Java虚拟机的内存大小: 如 ...