需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试。

1.准备工作

Redis的版本和虚拟主机数量都按照客户的生产环境来准备:

Redis版本:3.2.10

准备3台虚拟机,具体环境信息为:

系统版本 主机名 IP地址 主机内存 磁盘空间
RHEL6.8 test01 192.168.1.121 4G 20G
RHEL6.8 test02 192.168.1.122 4G 20G
RHEL6.8 test03 192.168.1.123 4G 20G

使用wget下载redis-3.2.10.tar.gz

wget http://download.redis.io/releases/redis-3.2.10.tar.gz

需要确保安装有gcc @all nodes:

[root@test01 ~]# cluster_run_all_nodes "hostname; rpm -qa gcc"
test01
gcc-4.4.7-23.el6.x86_64
test02
gcc-4.4.7-23.el6.x86_64
test03
gcc-4.4.7-23.el6.x86_64

注:如果没有gcc,可以使用yum安装;

本文用到的cluster_run_all_nodes和cluster_copy_all_nodes两个命令,功能分别是在集群所有节点运行命令和同步文件。

2.安装编译Redis

软件安装&编译 @all nodes:

cd /u01/soft

tar -zxvf redis-3.2.10.tar.gz

mv redis-3.2.10 /usr/local/redis

cd /usr/local/redis

make PREFIX=/usr/local/redis install

实际我这里软件默认是在/root下,各节点同步软件介质、解压、指定安装路径、编译安装:

[root@test01 ~]# cluster_copy_all_nodes /root/redis-3.2.10.tar.gz /root/
[root@test01 ~]# cluster_run_all_nodes "hostname;tar -zxvf redis-3.2.10.tar.gz"
[root@test01 ~]# cluster_run_all_nodes "hostname;mv redis-3.2.10 /usr/local/redis"
--编译安装这步建议手工@all nodes 执行,因为时间长,输出信息多:
cd /usr/local/redis && make PREFIX=/usr/local/redis install

3.Redis运行环境配置

3.1 相关目录的创建:

--REDIS数据落地位置(数据目录)

//数据目录

mkdir -p /u01/redis/6379/data

//日志目录

mkdir -p /u01/redis/6379/log

--SENTINEL日志存放位置

//哨兵sentinel

mkdir -p /u01/redis/6379/temp

cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/data"
cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/log"
cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/temp"

3.2 redis参数配置(主从主要配置):

//生成redis参数文件及存放位置

mkdir /etc/redis

//redis参数文件命名可采用端口号方式,如下,端口为6379,命名为6379.conf

cp /usr/local/redis/redis.conf /etc/redis/6379.conf

cluster_run_all_nodes "hostname;mkdir /etc/redis"
cluster_run_all_nodes "hostname;cp /usr/local/redis/redis.conf /etc/redis/6379.conf"

具体参数设置及说明:

1)主节点:192.168.1.121

vi /etc/redis/6379.conf

bind 192.168.1.121
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slave-priority 100
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123

2)从节点1:192.168.1.122

vi /etc/redis/6379.conf

bind 192.168.1.122
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slaveof 192.168.1.121 6379
slave-read-only yes
slave-priority 80
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123

3)从节点2:192.168.1.123

vi /etc/redis/6379.conf

bind 192.168.1.123
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slaveof 192.168.1.121 6379
slave-read-only yes
slave-priority 60
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123

3.3 redis系统服务配置:

//拷贝redis服务启动文件到/etc/init.d

cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis

//redis启动文件修改分两部分

vi /etc/init.d/redis

//第一部分

#!/bin/sh

#chkconfig:2345 80 90 <- 这里需要添加这一行,否则chkconfig --add redis会报错“service redis does not support chkconfig”。

//第二部分

REDISPORT=6379

EXEC=/usr/local/redis/bin/redis-server <- 这里修改路径为/usr/local/redis

CLIEXEC=/usr/local/redis/bin/redis-cli <- 这里修改路径为/usr/local/redis

//添加redis服务

chkconfig --add redis

实际我这里操作为:

cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
--这里按照上面引用文档的提示修改对应两部分内容,然后再分发复制到各节点、添加redis服务开机启动:
[root@test01 local]# cluster_copy_all_nodes /etc/init.d/redis /etc/init.d/redis
cluster_run_all_nodes "hostname;chkconfig --add redis"
cluster_run_all_nodes "hostname;chkconfig --list redis"

配置环境变量,确认redis相关命令可用:

//linux环境变量,针对所有用户

vim /etc/profile

export PATH="$PATH:/usr/local/redis/bin"

//立即生效

source /etc/profile

实际我这里操作为:

cluster_run_all_nodes "hostname;echo 'export PATH="$PATH:/usr/local/redis/bin"' >> /etc/profile'"

重新登陆@all nodes,验证环境变量生效。

3.4 哨兵sentinel配置

每台主机可以配置一个或者多个哨兵,取决与每个服务器上跑多少个redis。

系统参数配置:

vi /etc/sysctl.conf

//定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128

net.core.somaxconn= 1024

//sysctl.conf 生效

sysctl -p

//若临时生效,可使用如下命令:

echo 1024 >/proc/sys/net/core/somaxconn

实际我这里操作为:

[root@test01 6379]# cluster_run_all_nodes "hostname; echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf"
[root@test01 6379]# cluster_run_all_nodes "hostname; sysctl -p"
[root@test01 6379]# cluster_run_all_nodes "hostname; cat /proc/sys/net/core/somaxconn"

哨兵配置文件:

//哨兵配置文件位置

cp /usr/local/redis/sentinel.conf /etc/redis

//创建哨兵日志存放位置,最好是与redis的数据文件存放在一起

mkdir -p /u01/redis/6379/temp/

具体配置(每个节点都一样)

vi /etc/redis/sentinel.conf

protected-mode no

port 26379

dir "/u01/redis/6379/temp/"

daemonize yes

logfile "/u01/redis/6379/temp/sentinel.log"

sentinel monitor redis1 192.168.1.121 6379 2

sentinel down-after-milliseconds redis1 10000

sentinel parallel-syncs redis1 2

sentinel failover-timeout redis1 60000

sentinel auth-pass redis1 hundsun@bbep

实际我这里操作为:

[root@test01 local]# cluster_run_all_nodes "hostname; mkdir -p /u01/redis/6379/temp"
--按上面文档配置sentinel.conf 然后分发复制到@all nodes:
[root@test01 local]# cluster_copy_all_nodes /etc/redis/sentinel.conf /etc/redis/sentinel.conf

4.Redis启动和关闭

4.1 启动&关闭REDIS

启动Redis:

service redis start
//查看redis进程
[root@test01 ~]# ps -ef|grep redis
root 29097 1 0 01:14 ? 00:01:07 /usr/local/redis/bin/redis-server 192.168.1.121:6379
root 32072 31964 0 14:18 pts/0 00:00:00 grep redis

关闭Redis:

redis-cli -h

auth

shutdown

实际操作如下:

[root@test01 ~]# redis-cli -h 192.168.1.121
192.168.1.121:6379> auth Redis123
OK
192.168.1.121:6379> shutdown
not connected> exit

4.2 启动&关闭哨兵

启动哨兵:

redis-sentinel /etc/redis/sentinel.conf

[root@test01 ~]# redis-sentinel /etc/redis/sentinel.conf
[root@test01 ~]# ps -ef|grep sentinel
root 32112 1 0 14:21 ? 00:00:00 redis-sentinel *:26379 [sentinel]
root 32117 31964 0 14:21 pts/0 00:00:00 grep sentinel

关闭哨兵:

//杀进程法

ps -ef|grep sentinel

kill

kill -9 32112

Redis安装部署(一主二从三哨兵)的更多相关文章

  1. redis 一主二从三哨兵

    总体部署 一主二从三哨兵 ip地址分配分别为 主 127.0.0.1:6379 从 127.0.0.1:6389 从 127.0.0.1:6399 哨兵 127.0.0.1:26379 哨兵 127. ...

  2. docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)

    本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...

  3. redis环境搭建及一主二从三哨兵模式配置

    一.单机redis环境搭建 1.安装: OS:linux redhat6.5 下载redis 官网下载链接:https://redis.io/download 把安装包上传到服务器,进行解压 [roo ...

  4. redis一主二从三哨兵

    redis做集群的时候有很多种配置方法,一主二从三哨兵这种模式是官网推荐的.,写配置文件链接的时候,写的是哨兵地址,不是IP,用户名,密码之类的. 一主二从很好理解,一个主的redis,实时备份到两个 ...

  5. springboot 集成Redis一主二从三哨兵

    1.Centos7 Redis一主二从三哨兵配置 Redis一主二从三哨兵环境搭建 2.接入过程 与集成redis单机不同的是jedis相关的配置做了修改,JedisPool换成了JedisSenti ...

  6. docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

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

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

  8. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  9. Redis 搭建一主二从三哨兵高可用集群

    1.单个redis服务搭建请参考:redis服务搭建 2.在/usr/local下创建目录redis-cluster,并在redis-cluster下创建 6379.6380.6381目录以及data ...

随机推荐

  1. 洛谷P1003 铺地毯 模拟

    这一题就是一个很普通的模拟,每次输入的时候存储四个角的值 把四个角的横纵坐标存储在一排.然后在倒序遍历一遍,查找的时候就看所要查找的坐标在不在这个范围内,如果找到了就标记一下再输出,如果没有找到就输出 ...

  2. java基本数据类型和引用数据类型的调用传递的区别

    (1)基本数据类型:就是进行了值的传递把一份数据拷贝了之后传递过去 (2)引用数据类型:实际上也是进行了数据拷贝然后传过去,实际上也是值传递,只不过传递过去的值和原有的值指向了同一个对象 所以在调用的 ...

  3. 《JavaScript 模式》读书笔记(5)— 对象创建模式1

    这又是一个新的开始,对象的重要性不言而喻.在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的.但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式. 本篇 ...

  4. Oracle时间日期计算--计算某一日期为一年中的第几周

    Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...

  5. vue-父组件传递参数到子组件

    案例: 父组件 <template> <div id="app"> <h1>vuex</h1> <h3>count:{{ ...

  6. [一起读源码]走进C#并发队列ConcurrentQueue的内部世界

    决定从这篇文章开始,开一个读源码系列,不限制平台语言或工具,任何自己感兴趣的都会写.前几天碰到一个小问题又读了一遍ConcurrentQueue的源码,那就拿C#中比较常用的并发队列Concurren ...

  7. 如何获取 bing 每日壁纸(超高清版)

    目录 需求描述 实现方式 简单粗暴 如何下载 如何更高清 排坑指南 初级 优点 给有好奇心的孩子 进阶 接口 自动保存 网站集成 爬虫 需求描述 必应作为一个在壁纸圈做搜索引擎最优秀的站点,其每日壁纸 ...

  8. 基于 HTML5 WebGL 的楼宇智能化集成系统(二)

    前言       一套完整的可视化操作交互上,必不可少 2D/3D 的融合,在上期我们介绍了有关 3D 场景的环视漫游.巡视漫游以及动画效果,还包括了冷站场景.热站场景以及智慧末端的实现原理,本期主要 ...

  9. @Configuration和@Bean 配置类注入

    @Configuration和@Bean 1. 概述 @Configuration 注解标记在类上, 就像下面的配置文件. 我们将该类成为配置类. <?xml version="1.0 ...

  10. STM32F103ZET6通用定时器的输入捕获

    1.通用定时器输入捕获功能简介 通用定时器的输入捕获模式可以用来测量脉冲宽度或者测量频率. STM32的每个通用定时器都有4个输入捕获的通道,分别是TIMx_CH1.TIMx_CH2.TIMx_CH3 ...