需求:根据当前客户的生产环境,模拟安装部署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. Building Applications with Force.com and VisualForce (DEV401) 中用到的Recruiting Application介绍

    1.Who uses Recruiting Application. 2. Recruiting Application Object Model

  2. latex中文支持ubuntu

    latex安装: sudo apt install texlive-full 中文字体安装: sudo apt-get install latex-cjk-all      字体包中包含bsmi,bk ...

  3. C语言自学网官方微信相关功能使用方法

    一.微信扫描关注微信公众账号(C语言自学网),我们会不定时更新关于编程的技术文章和相关资讯,了解大佬的成长之路. 二.回复“C语言学习资料”,将显示由我们精心整理的全套C语言学习资料的下载地址及链接. ...

  4. linux svn 批量添加

    近期开始用svn来进行代码版本的维护管理,之前一直用git,两个感觉大同小异.用svn命令行来添加文件的话需要一个一个的选,很是蛋疼,于是就写了个shell脚本,批量添加文件,还在改进中... #!/ ...

  5. jmeter实现接口关联的两种方式:正则表达式提取器和json提取器看这篇就够了

    一.前言在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联. 关联通俗来讲就是把上一次请求的返回内容中的部分截取 ...

  6. Rust入坑指南:万物初始

    有没有同学记得我们一起挖了多少个坑?嗯-其实我自己也不记得了,今天我们再来挖一个特殊的坑,这个坑可以说是挖到根源了--元编程. 元编程是编程领域的一个重要概念,它允许程序将代码作为数据,在运行时对代码 ...

  7. Three.js中的动画实现02-[Three.js]-[Object3D属性.onAfterRender/.onBeforeRender]

    Table Of Content Object3D简介以及两个属性的介绍 一个示例 Object3D简介以及两个属性的介绍 这是Three.js中大部分对象的基类,提供了一系列的属性和方法来对三维空间 ...

  8. Qt实现学生学籍管理系统(文件存储)

    记录 19:53 2019-07-30 在小学期学c++做完课设后萌生了把写完的课设放在博客上的想法,于是,我第一篇博客诞生了. 22:32:19 2019-07-30 下棋 16:04:56 201 ...

  9. 痞子衡嵌入式:走进二维码(QR Code)的世界(1)- 引言

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是走进二维码(QR Code)的世界专题的引言. 如今二维码可以说是深入走进大家的生活了,推送名片.扫码支付都离不开它,大家几乎每天都会和 ...

  10. Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据

    问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...