#!/bin/bash

# 判断是否为root用户,不是root用户提示退出

if [[ $EUID -ne 0 ]]; then
   echo "This script. must be run as root" 1>&2
   exit 1
fi
 
# 安装必要的组件
yum install -y gcc
 
# 下载redis源代码
cd /tmp
 
# 对比文件下载是否正确
echo 26c0fc282369121b4e278523fce122910b65fbbf  redis-3.2.1.tar.gz > /tmp/download.txt
sha1sum -c download.txt
if [ $? -ne 0 ]
then
  echo "The Download File is not Correct, Please Download it again."
  exit 0
fi
 
# 编译安装
tar xf redis-3.2.1.tar.gz
cd redis-3.2.1
make
make install
 
# 创建组和用户
groupadd redis
useradd -g redis redis
 
# LOG文件存放位置
mkdir /var/log/redis
chown redis:redis /var/log/redis
 
# 当前IP地址
IP=`ifconfig eth0 | grep "inet " | awk '{ print $2}'`
 
# Redis服务开机运行
echo "[Unit]" > /usr/lib/systemd/system/redis.service 
echo "Description=Redis persistent key-value database" >> /usr/lib/systemd/system/redis.service 
echo "After=network.target" >> /usr/lib/systemd/system/redis.service 
echo "[Service]" >> /usr/lib/systemd/system/redis.service  
echo "Type=forking" >> /usr/lib/systemd/system/redis.service  
echo "ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf" >> /usr/lib/systemd/system/redis.service  
echo "ExecStop=/usr/local/bin/redis-cli -h ${IP} shutdown" >> /usr/lib/systemd/system/redis.service  
echo "User=redis" >> /usr/lib/systemd/system/redis.service  
echo "Group=redis" >> /usr/lib/systemd/system/redis.service  
echo "[Install]" >> /usr/lib/systemd/system/redis.service  
echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/redis.service
 
# Redis Sentinel 服务开机运行
echo "[Unit]" > /usr/lib/systemd/system/redis-sentinel.service 
echo "Description=Redis Sentinel" >> /usr/lib/systemd/system/redis-sentinel.service 
echo "After=network.target" >> /usr/lib/systemd/system/redis-sentinel.service 
echo "[Service]" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "Type=forking" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "ExecStart=/usr/local/bin/redis-sentinel /etc/redis/sentinel.conf" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "ExecStop=/usr/local/bin/redis-cli -h ${IP} -p 26379 shutdown" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "User=redis" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "Group=redis" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "[Install]" >> /usr/lib/systemd/system/redis-sentinel.service  
echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/redis-sentinel.service
 
# redis 服务限制
mkdir /etc/systemd/system/redis.service.d/
echo "[Service]" > /etc/systemd/system/redis.service.d/limits.conf 
echo "LimitNOFILE=65535" >> /etc/systemd/system/redis.service.d/limits.conf
 
# 启用开机自动运行
systemctl enable redis.service
systemctl enable redis-sentinel.service
 
# 禁用selinux
sed -i 's/SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config
# 系统优化
echo "net.core.somaxconn=4096" >> /etc/sysctl.conf
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
chmod +x /etc/rc.local
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo "*  soft  nofile  65535" >> /etc/security/limits.conf
echo " *  hard  nofile  65535" >> /etc/security/limits.conf
echo " *  soft  nproc  65535" >> /etc/security/limits.conf
echo " *  hard  nproc  65535" >> /etc/security/limits.conf
echo "net.ipv4.tcp_tw_recycle=1" >> /etc/sysctl.conf
 
# 别名
echo "alias redis='redis-cli -h ${IP}'" >> /etc/profile
echo "alias sentinel='redis-cli -h ${IP} -p 26379'" >> /etc/profile
 
# 修改时区
/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
#Redis配置文件存放位置
mkdir /etc/redis
 
# 修改配置文件redis.conf
echo "bind ${IP}" > /etc/redis/redis.conf
echo "protected-mode no" >> /etc/redis/redis.conf
echo "tcp-backlog 4096" >> /etc/redis/redis.conf
echo "timeout 300" >> /etc/redis/redis.conf
echo "tcp-keepalive 60" >> /etc/redis/redis.conf
echo "daemonize yes" >> /etc/redis/redis.conf
echo "supervised systemd" >> /etc/redis/redis.conf
echo "logfile /var/log/redis/redis.log" >> /etc/redis/redis.conf
echo "dir /var/log/redis" >> /etc/redis/redis.conf
echo "maxclients 10000" >> /etc/redis/redis.conf
echo "maxmemory 4G" >> /etc/redis/redis.conf
echo "maxmemory-policy volatile-lru" >> /etc/redis/redis.conf
echo "appendonly no" >> /etc/redis/redis.conf
echo "slowlog-max-len 512" >> /etc/redis/redis.conf
echo "client-output-buffer-limit slave 512mb 256mb 300" >> /etc/redis/redis.conf
 
# 修改配置文件sentinel.conf
echo "port 26379" > /etc/redis/sentinel.conf
echo "bind ${IP}" >> /etc/redis/sentinel.conf
echo "dir /var/log/redis" >> /etc/redis/sentinel.conf
echo "sentinel monitor mymaster ${IP} 6379 2" >> /etc/redis/sentinel.conf
echo "maxclients 10" >> /etc/redis/sentinel.conf
echo "logfile /var/log/redis/sentinel.log" >> /etc/redis/sentinel.conf
echo "daemonize yes" >> /etc/redis/sentinel.conf
echo "sentinel down-after-milliseconds mymaster 5000" >> /etc/redis/sentinel.conf
echo "sentinel failover-timeout mymaster 60000" >> /etc/redis/sentinel.conf

Redis & Sentinel 安装脚本的更多相关文章

  1. Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)

    Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...

  2. Redis Sentinel安装与部署,实现redis的高可用

    前言 对于生产环境,高可用是避免不了要面对的问题,无论什么环境.服务,只要用于生产,就需要满足高可用:此文针对的是redis的高可用. 接下来会有系列文章,该系列是对spring-session实现分 ...

  3. Redis+Sentinel安装与配置

    在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分. 物理机IP:192.168.0.12 主节点master端口:6301 从节点slave1端 ...

  4. Redis一键安装脚本

    #! /usr/bin/env bash # redis 6.0.3 源码安装 # 用法: bash -x install-redis-single.sh 6.0.3 version=$1 usage ...

  5. 高可用Redis(九):Redis Sentinel

    1.主从复制高可用的问题 主从复制高可用的作用 1.为master提供备份,当master宕机时,slave有完整的备份数据 2.对master实现分流,实现读写分离 但是主从架构有一个问题 1.如果 ...

  6. Redis入门到高可用(十九)——Redis Sentinel

    一.Redis  Sentinel架构     二.redis sentinel安装与配置 四.客户端连接Sentinel            四.实现原理—— 故障转移演练(客户端高可用) 五.实 ...

  7. Redis 入门到分布式 (八)Redis Sentinel

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...

  8. Redis Sentinel 集群安装 step by step

    一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本   CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...

  9. Redis 安装成windows服务- 一主二从三哨兵,sentinel安装为Windows服务

    这里只做记录说明 Redis的主从配置网上很多文章,百度一大堆,安装流程应该都可以配置通.我使用的这篇文章 https://blog.csdn.net/u010648555/article/detai ...

随机推荐

  1. LR参数化设置(转)

    LR学习笔记---参数设置 2010-10-20 14:58:55|  分类: 默认分类|举报|字号 订阅     LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用 ...

  2. 【转】linux trap

    在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚 本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我 们可不希望用户使用c ...

  3. Error starting static Resources java.lang.IllegalArgumentException: Document base D:\Program Files\apache-tomcat-xxx\webapps\xxx does not exist or is not a readable directory

    网上的答案大多数如下: 但并没有解决我的问题  经过我的观察: 在tomcat的server.xml有Lottery项目描述,但实际上,该项目已被我删除,不存在于webapps中了    该行Cont ...

  4. 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)

    内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...

  5. 【Hadoop学习】CDH5.2安装部署

    [时间]2014年11月19日 [平台]Centos 6.5 [工具]scp [软件]jdk-7u67-linux-x64.rpm CDH5.2.0-hadoop2.5.0 [步骤] 1. 准备条件 ...

  6. MySQL 字段类型详解

    一.非数字类型 类型 范围 说明   Char(N) [ binary] N=1~255 个字元 binary :分辨大小写 固定长度 std_name cahr(32) not null VarCh ...

  7. Android实例-为程序创建快捷方式(未测试)

    结果: 1.因为只有小米手机,没有三星手机,没法测试.如果哪位神测试过的话,记得M我哦,谢了. 实例代码:  unit Unit1; interface uses System.SysUtils, S ...

  8. Java与MySql数据类型对照表

    类型名称 显示长度 数据库类型 JAVA类型 VARCHAR L+N VARCHAR java.lang.String CHAR N CHAR java.lang.String BLOB L+N BL ...

  9. bzoj 1064【noi2008】假面舞会

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1064 给一个有向图染色,每个点的后继必须相同,问至少&至多有多少种染色方案 sol: ...

  10. C++学习笔记(三):数组

    数组声明时必须指定该数组的长度: ]; 这个时候已经分配了内存,但没有初始化,所以具体的值是不确定的: 初始化: ] = {, , }; ] = {};//指定第一个数字为1,后面的使用0填充: ] ...