Redis安装部署(一主二从三哨兵)
需求:根据当前客户的生产环境,模拟安装部署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安装部署(一主二从三哨兵)的更多相关文章
- redis 一主二从三哨兵
总体部署 一主二从三哨兵 ip地址分配分别为 主 127.0.0.1:6379 从 127.0.0.1:6389 从 127.0.0.1:6399 哨兵 127.0.0.1:26379 哨兵 127. ...
- docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)
本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...
- redis环境搭建及一主二从三哨兵模式配置
一.单机redis环境搭建 1.安装: OS:linux redhat6.5 下载redis 官网下载链接:https://redis.io/download 把安装包上传到服务器,进行解压 [roo ...
- redis一主二从三哨兵
redis做集群的时候有很多种配置方法,一主二从三哨兵这种模式是官网推荐的.,写配置文件链接的时候,写的是哨兵地址,不是IP,用户名,密码之类的. 一主二从很好理解,一个主的redis,实时备份到两个 ...
- springboot 集成Redis一主二从三哨兵
1.Centos7 Redis一主二从三哨兵配置 Redis一主二从三哨兵环境搭建 2.接入过程 与集成redis单机不同的是jedis相关的配置做了修改,JedisPool换成了JedisSenti ...
- docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...
- Redis 安装成windows服务- 一主二从三哨兵,sentinel安装为Windows服务
这里只做记录说明 Redis的主从配置网上很多文章,百度一大堆,安装流程应该都可以配置通.我使用的这篇文章 https://blog.csdn.net/u010648555/article/detai ...
- Docker Compose搭建Redis一主二从三哨兵高可用集群
一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...
- Redis 搭建一主二从三哨兵高可用集群
1.单个redis服务搭建请参考:redis服务搭建 2.在/usr/local下创建目录redis-cluster,并在redis-cluster下创建 6379.6380.6381目录以及data ...
随机推荐
- 洛谷P1003 铺地毯 模拟
这一题就是一个很普通的模拟,每次输入的时候存储四个角的值 把四个角的横纵坐标存储在一排.然后在倒序遍历一遍,查找的时候就看所要查找的坐标在不在这个范围内,如果找到了就标记一下再输出,如果没有找到就输出 ...
- java基本数据类型和引用数据类型的调用传递的区别
(1)基本数据类型:就是进行了值的传递把一份数据拷贝了之后传递过去 (2)引用数据类型:实际上也是进行了数据拷贝然后传过去,实际上也是值传递,只不过传递过去的值和原有的值指向了同一个对象 所以在调用的 ...
- 《JavaScript 模式》读书笔记(5)— 对象创建模式1
这又是一个新的开始,对象的重要性不言而喻.在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的.但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式. 本篇 ...
- Oracle时间日期计算--计算某一日期为一年中的第几周
Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...
- vue-父组件传递参数到子组件
案例: 父组件 <template> <div id="app"> <h1>vuex</h1> <h3>count:{{ ...
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界
决定从这篇文章开始,开一个读源码系列,不限制平台语言或工具,任何自己感兴趣的都会写.前几天碰到一个小问题又读了一遍ConcurrentQueue的源码,那就拿C#中比较常用的并发队列Concurren ...
- 如何获取 bing 每日壁纸(超高清版)
目录 需求描述 实现方式 简单粗暴 如何下载 如何更高清 排坑指南 初级 优点 给有好奇心的孩子 进阶 接口 自动保存 网站集成 爬虫 需求描述 必应作为一个在壁纸圈做搜索引擎最优秀的站点,其每日壁纸 ...
- 基于 HTML5 WebGL 的楼宇智能化集成系统(二)
前言 一套完整的可视化操作交互上,必不可少 2D/3D 的融合,在上期我们介绍了有关 3D 场景的环视漫游.巡视漫游以及动画效果,还包括了冷站场景.热站场景以及智慧末端的实现原理,本期主要 ...
- @Configuration和@Bean 配置类注入
@Configuration和@Bean 1. 概述 @Configuration 注解标记在类上, 就像下面的配置文件. 我们将该类成为配置类. <?xml version="1.0 ...
- STM32F103ZET6通用定时器的输入捕获
1.通用定时器输入捕获功能简介 通用定时器的输入捕获模式可以用来测量脉冲宽度或者测量频率. STM32的每个通用定时器都有4个输入捕获的通道,分别是TIMx_CH1.TIMx_CH2.TIMx_CH3 ...