#!/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、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)
Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...
- Redis Sentinel安装与部署,实现redis的高可用
前言 对于生产环境,高可用是避免不了要面对的问题,无论什么环境.服务,只要用于生产,就需要满足高可用:此文针对的是redis的高可用. 接下来会有系列文章,该系列是对spring-session实现分 ...
- Redis+Sentinel安装与配置
在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分. 物理机IP:192.168.0.12 主节点master端口:6301 从节点slave1端 ...
- Redis一键安装脚本
#! /usr/bin/env bash # redis 6.0.3 源码安装 # 用法: bash -x install-redis-single.sh 6.0.3 version=$1 usage ...
- 高可用Redis(九):Redis Sentinel
1.主从复制高可用的问题 主从复制高可用的作用 1.为master提供备份,当master宕机时,slave有完整的备份数据 2.对master实现分流,实现读写分离 但是主从架构有一个问题 1.如果 ...
- Redis入门到高可用(十九)——Redis Sentinel
一.Redis Sentinel架构 二.redis sentinel安装与配置 四.客户端连接Sentinel 四.实现原理—— 故障转移演练(客户端高可用) 五.实 ...
- Redis 入门到分布式 (八)Redis Sentinel
个人博客网:https://wushaopei.github.io/ (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...
- Redis Sentinel 集群安装 step by step
一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本 CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...
- Redis 安装成windows服务- 一主二从三哨兵,sentinel安装为Windows服务
这里只做记录说明 Redis的主从配置网上很多文章,百度一大堆,安装流程应该都可以配置通.我使用的这篇文章 https://blog.csdn.net/u010648555/article/detai ...
随机推荐
- [selenium webdriver Java]常用api
1. 获取元素文本 WebElement类的getText()方法返回元素的innerText属性.所以元素里如果有子节点一样也会被返回出来.如下所示 public class GetText { @ ...
- ubuntu 11.10 (64bit) install opencv 2.4.8 and run in Qtcreator
install gtk2+ sudo apt-get install libgtk2.0*sudo apt-get install cmake-qt-gui tar xzvf opencv-2.4.8 ...
- 洛谷 P1273 有线电视网
2016-05-31 13:25:45 题目链接: 洛谷 P1273 有线电视网 题目大意: 在一棵给定的带权树上取尽量多的叶子节点,使得sigma(val[选择的叶子节点])-sigma(cost[ ...
- 细谈Linux和windows差异之图形化用户接口、命令行接口
相信来看本博文的朋友,肯定是已经玩过linux好段时间了,才能深刻理解我此番话语. 这是在Windows下的命令行接口 这是windows下的用户接口 就是它,explorer.ext,可以去尝试.把 ...
- 统一样式的View应该用style修饰
我们的应用中,常常有一些统一的组件,这时候应该用style来修饰.这样的话,修改起来也方便,代码也更简洁 比如,下面的代码,没有用style修饰 <LinearLayout xmlns:andr ...
- Android实例-OrientationSensor方向传感器(XE8+小米2)
相关资料: <修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题>:http://www.cnblogs.com/onechen/p/4497282. ...
- Stones
题目是:HDU1896 题目简述:输入一堆石头,每个石头有自己所在的位置p,以及自己可以抛多远的距离d.你每遇到第奇数个石头,就把石头丢出去,第偶数个石头就不管.计算出最后一个石头它所处的位置. 解法 ...
- Linq知识小结
Linq语法小结:有两种形式的语法可供我们在写Linq查询时使用,分别是“查询语法”.“方法语法”.1)先看个列子,有个直观认识 int[] arr = { 12, 2,45,34,23,18 ...
- 高效使用Bitmaps(三) 神奇的Cache
转载:http://my.oschina.net/rengwuxian/blog/184650 应用的场景 假设你开发了一个聊天程序,它的好友列表中显示从网络获取的好友头像.可是如果用户发现每次进入好 ...
- Unity3D的ugui之按钮事件
为Unity3D的按钮添加事件有三种方式,假设我们场景中有一个Canvas对象,Canvas对象中有一个Button对象. 方式一: 创建脚本ClickObject.cs,然后将脚本添加到Canvas ...