文档章节

redis 单节点,集群,哨兵 部署

internetafei
 internetafei
发布于 2019/09/20 13:50
字数 2177
阅读 140
收藏 2
 

redis集群安装

1.环境

redis版本:5.0.5

操作系统:ubuntu 14.04以上版本或内核4.2.0-27-generic以上

ruby:sudo apt-get install ruby

2.单节点安装

2.1.下载

http://download.redis.io/releases/redis-5.0.5.tar.gz

2.2.解压

tar -xvf redis-5.0.5.tar.gz

2.3.编译安装

我们安装到opt下面

sudo mv redis-5.0.5 /opt/redis

给当前用户赋权(root不需要此操作)

sudo chown -R 用户名:用户组 /opt/redis

进入到/opt/redis

cd /opt/redis

编译

make


 

编译测试make test

redis.conf
vi redis.conf
修改 daemonize no  daemonize yes
修改最大内存2Gredis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)
修改 #maxmemory  maxmemory 2147483648
修改日志文件
logfile "redis.log"

启动服务:
 ./src/redis-server redis.conf 



验证是否启动:ps -ef|grep reids

2.4.测试

./src/redis-cli

set aa 1

get aa

del aa

keys *



 

到此,我们单节点redis安装成功

2.5.配置密码

停止redis服务

./src/redis-cli shutdown

配置redis.conf
vi redis.conf
修改#requirepass foobared  requirepass 123456(密码123456,可以自己修改。删除#
启动服务:
 ./src/redis-server redis.conf 

登陆加-a 指定密码

./src/redis-cli -a 123456

3.集群安装

3.1.安装

集群计划3主、三从,一共六个节点。生产情况下,需要6台主机。最低两个主机,三个主节点在一个主机,三个从节点在一个主机。本地模拟配置,是一个主机。

规划主节点端口:7001、7002、7003

从节点端口:7004、7005、7006

sudo mkdir /opt/redis_cluster

sudo mkdir /opt/redis_cluster/

sudo mkdir /opt/redis_cluster/7001

sudo mkdir /opt/redis_cluster/7002

sudo mkdir /opt/redis_cluster/7003

sudo mkdir /opt/redis_cluster/7004

sudo mkdir /opt/redis_cluster/7005

sudo mkdir /opt/redis_cluster/7006

给文件夹赋权

sudo chown -R 用户名:用户组 /opt/redis_cluster/

复制redis.conf文件到/opt/redis_cluster/7001

sudo cp /opt/redis/redis.conf /opt/redis_cluster/7001/

配置redis.conf文件

vi /opt/redis_cluster/7001/redis.conf

修改:

端口

port 7001
启用集群
cluster-enabled yes
集群节点文件
cluster-config-file nodes.conf
集群超时设置
cluster-node-timeout 5000
开启aof模式
appendonly yes
修改线程问家
pidfile /var/run/redis_7001.pid
配置访问密码

requirepass 123456

配置访问主节点 的密码

masterauth 123456

后台运行

daemonize yes

数据存放目录

dir /opt/redis_cluster/7001

注释bind

#bind 127.0.0.1

修改最大内存2Gredis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)
修改 #maxmemory  maxmemory 2147483648
修改日志保存文件
logfile "redis.log"


 


 

把/opt/redis_cluster/7001/redis.conf复制到/opt/redis_cluster/7002、/opt/redis_cluster/7003、/opt/redis_cluster/7004、/opt/redis_cluster/7005、/opt/redis_cluster/7006下

cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7002/

cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7003/

cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7004

cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7005

cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7006

修改端口、和线程文件

sed -i "s/7001/7002/g" /opt/redis_cluster/7002/redis.conf

sed -i "s/7001/7003/g" /opt/redis_cluster/7003/redis.conf

sed -i "s/7001/7004/g" /opt/redis_cluster/7004/redis.conf

sed -i "s/7001/7005/g" /opt/redis_cluster/7005/redis.conf

sed -i "s/7001/7006/g" /opt/redis_cluster/7006/redis.conf

动redis

cd /opt/redis_cluster/7001

/opt/redis/src/redis-server redis.conf

cd /opt/redis_cluster/7002

/opt/redis/src/redis-server redis.conf

cd /opt/redis_cluster/7003

/opt/redis/src/redis-server redis.conf

cd /opt/redis_cluster/7004

/opt/redis/src/redis-server redis.conf

cd /opt/redis_cluster/7005

/opt/redis/src/redis-server redis.conf

cd /opt/redis_cluster/7006

/opt/redis/src/redis-server redis.conf

查看启动节点
ps -ef|grep redis


创建集群

/opt/redis/src/redis-cli --cluster  create 192.168.3.153:7001  192.168.3.153:7002 192.168.3.153:7003  --cluster-replicas 0 -a 123456
配置集群主从复制
查看集群状态
/opt/redis/src/redis-cli -c -p 7001  -a 123456  cluster nodes



动态添加节点
添加节点
/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7004
/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7005
/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7006
设置70047001的节点
/opt/redis/src/redis-cli -c -a 123456 -p 7004 cluster REPLICATE bd88b8e1a32341b90eb0174cc13f227110d4cd45(是主节点的编号,需要自行修改)
设置70057002的节点
/opt/redis/src/redis-cli -c -a 123456 -p 7005 cluster REPLICATE bd88b8e1a32341b90eb0174cc13f227110d4cd45(是主节点的编号,需要自行修改)
设置70067003的节点
/opt/redis/src/redis-cli -c -a 123456 -p 7006 cluster REPLICATE b7716a9a899e4b12a2f368e2e07f0c97fdefa248(是主节点的编号,需要自行修改)


查看集群信息


集群搭建完毕

3.2.验证

登陆:/opt/redis$ src/redis-cli -c -a 123456 -p 7001

set aa 1

set bb 1


  



我们发现aa 写在7001节点上,bb写在 7002节点上
停止7001节点
shutdown  



我们发现aa 还可以取到1 ,但是在7004个节点上 
查看集群状态
cluster nodes


我们发现7001 已经disconnected了,7004master节点
启动7001  
/opt/redis/src/redis-server   /opt/redis_cluster/7001/redis.conf
查看集群状态

们看到7001 已经恢复,变为slave节点
我们的高可用配置成功。任何一个节点挂了不受影响。但是如果是主从都挂了,还会损失数据,这个损失部署不是平均1/3直接,是根据keyhash分布来说的。

4.哨兵模式

哨兵模式是对于单个主从来说的。
安装一个主节点、两个从节点、三个哨兵
主节点:8001
从节点:80028003
三个哨兵:120011200212003

4.1.安装

建立redis 文件夹

sudo mkdir /opt/sentinel/redis8001

sudo mkdir /opt/sentinel/redis8002

sudo mkdir /opt/sentinel/redis8003

建立sentinel文件夹

sudo mkdir /opt/sentinel/sentinel12001

sudo mkdir /opt/sentinel/sentinel12002

sudo mkdir /opt/sentinel/sentinel12003

cp /opt/redis/sentinel.conf /opt/sentinel/sentinel12001

cp /opt/redis/sentinel.conf /opt/sentinel/sentinel12002

cp /opt/redis/sentinel.conf /opt/sentinel/sentinel12003

修改权限(root用户不需要)

sudo chown -R 用户名:用户组 /opt/sentinel/

4.1.1.配置redis节点

配置redis8001节点

vi /opt/sentinel/redis8001/redis.conf

注释bind

#bind 127.0.0.1

修改端口

port 8001

在后台执行

daemonize yes

数据存放目录

dir /opt/sentinel/redis8001

主节点密码
masterauth 123456
本节点密码
requirepass 123456
修改最大内存2Gredis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)
修改 #maxmemory  maxmemory 2147483648
修改日志文件
logfile "redis.log"

配置redis8002节点

cp /opt/sentinel/redis8001/redis.conf /opt/sentinel/redis8002/redis.conf

vi /opt/sentinel/redis8002/redis.conf

注释bind

#bind 127.0.0.1

修改端口

port 8002

在后台执行

daemonize yes

数据存放目录

dir /opt/sentinel/redis8002

配置复制节点
replicaof 192.168.3.153 8001
主节点密码
masterauth 123456
本节点密码
requirepass 123456

配置redis8003节点

cp /opt/sentinel/redis8001/redis.conf /opt/sentinel/redis8003/redis.conf

vi /opt/sentinel/redis8002/redi3.conf

注释bind

#bind 127.0.0.1

修改端口

port 8003

在后台执行

daemonize yes

数据存放目录

dir /opt/sentinel/redis8003

配置复制节点
replicaof 192.168.3.153 8001
主节点密码
masterauth 123456
本节点密码
requirepass 123456
启动redis节点
/opt/redis/src/redis-server /opt/sentinel/redis8001/redis.conf
/opt/redis/src/redis-server /opt/sentinel/redis8002/redis.conf
/opt/redis/src/redis-server /opt/sentinel/redis8003/redis.conf

4.1.2.配置sentinel

配置sentinel12001节点

vi /opt/sentinel/sentinel12001/sentinel.conf

修改端口

port 12001

后台运行

daemonize yes

进程文件

pidfile /var/run/redis-sentinel-12001.pid

监控主节点名称,当有两个sentinel发现主节点挂了,切换节点。

sentinel monitor mymaster 192.168.3.153 8001 2
sentinel心跳每隔1分钟发送心跳
sentinel down-after-milliseconds mymaster 60000
failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel  将会认为此次failoer失败
sentinel failover-timeout mymaster 180000
当新master产生时,同时进行slaveof到新master并进行同步复制的slave个数,也就是同时几个slave进行同步。因为在salve执行salveof与新master同步时,将会终止客户端请求,因此这个值需要权衡。此值较大,意味着“集群”终止客户端请求的时间总和和较大,此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据
sentinel parallel-syncs mymaster 1
配置sentinel 12002节点
cp /opt/sentinel/sentinel12001/sentinel.conf /opt/sentinel/sentinel12002/sentinel.conf
把端口改为12002
sed -i 's/12001/12002/g' /opt/sentinel/sentinel12002/sentinel.conf
配置sentinel 12003节点
cp /opt/sentinel/sentinel12001/sentinel.conf /opt/sentinel/sentinel12003/sentinel.conf
把端口改为12003
sed -i 's/12001/12003/g' /opt/sentinel/sentinel12003/sentinel.conf
启动哨兵节点
 /opt/redis/src/redis-sentinel    /opt/sentinel/sentinel12001/sentinel.conf 
 /opt/redis/src/redis-sentinel    /opt/sentinel/sentinel12002/sentinel.conf 
 /opt/redis/src/redis-sentinel    /opt/sentinel/sentinel12003/sentinel.conf 
查看哨兵
ps -ef|grep sentinel 

4.2.

验证登陆主节点
/opt/redis/src/redis-cli -p 8001 -a 123456
设置 aa 等于1 
set aa 1
关闭主节点
shutdown
退出
exit
登陆 8002节点
/opt/redis/src/redis-cli -p 8002 -a 123456
查看复制节点信息
info replication


当前节点是从节点登陆8003节点
/opt/redis/src/redis-cli -p 8003 -a 123456
查看复制节点信息
info replication


8003节点是主节点
设置 aa 3
set aa 3
get aa
8001节点
/opt/redis/src/redis-server  /opt/sentinel/redis8001/redis.conf
查看
ps -ef|grep redis|grep 800


登陆8001节点
/opt/redis/src/redis-cli -p 8001 -a 123456
查看复制节点
info replication
aa 的值为3,刚才在8003 上给aa 赋值 3已经同步过来了



5.安装中问题

Increased maximum number of open files to 10032 (it was originally set to 1024).

解决办法
#查看系统限制

ulimit -a

#设置“open files”数量

ulimit -n 10032

 

© 著作权归作者所有

internetafei

internetafei

粉丝 16
博文 171
码字总数 45187
作品 0
郑州
高级程序员
私信 提问
加载中

评论(0)

构建高可用redis(4.0.8)缓存集群-根据图灵公开课完整实现搭建

redis 主从模式 单体应用,系统中只有一台redis服务器,只有一台时候有单点的问题。 redis升级 主从形式: 升级主从后,从redis 服务器不对外提供服务,只是从主服务器哪里同步数据;一旦主r...

JQ_AK47
04/01
0
0
07、redis哨兵架构的相关基础知识的讲解

1、哨兵的介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 (1)集群监控,负责监控redis master和slave进程是否正常工作 (2)消息通知,如果某个red...

一只小青蛙
2019/05/31
65
0
redis——集群

现实中redis需要若干台redis服务器的支持: (1)从结构上,单个Redis服务器会产生单点故障,同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并分配在不同的服务器上。 ...

nao
2016/05/24
185
0
redis replication以及redis sentinel配置

redis replication以及redis sentinel配置 redis replication(复制)功能是为了实现高吞吐量的redis集群,做读写分离架构,以及支持横向扩容的特性。同时,为了保障redis集群的高可用性,red...

_wangjianfeng
03/31
0
0
Redis的哨兵部署(sentinel)(实验)

首先感谢“吧喱公路”的引导,打开了我对哨兵的理解思路,再次谢谢。 Redis的哨兵(sentinel) 哨兵适用于非集群结构的redis环境,比如:redis主从环境。 关于哨兵集群,我这里就不做实验了,...

张德帅ya
2018/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官你来,130行带你手写完整Promise

大家好,我是雷锋蜀黍。一直在某些面试宝典看到面试官要你手撸一个promise,今天天气这么好,不如我们来搞一搞。(PS:从未看过别人的实现,本文更像是记录一个思考的过程) 最终的代码完全符...

osc_kb5fqz4x
18分钟前
24
0
使用React严格模式避免过时的代码和副作用

在本文中,我们将研究如何使用React的严格模式来获得有关开发期间过时的API和副作用的额外警告。 严格模式 严格模式是用于突出显示应用程序中潜在问题的工具,它不会呈现任何可见的UI。 它只...

osc_3dm2dqof
20分钟前
35
0
安卓手机调成黑白屏幕

开发者选项 —— 硬件加速渲染 —— 模拟颜色空间 —— 全色盲

osc_z9jr2tjo
21分钟前
48
0
azure/copter_control_ifs

copter_control_ifs 多旋翼无人机控制接口 copter control interface with dji or mavlink devicce like px4/ardupilot 适应大疆(未开发)和mavlink设备 Introduction 介绍 基于C++的多旋翼...

osc_0vd38ylb
22分钟前
37
0
Metasploit发布了新版本5.0.83

Metasploit发布了新版本5.0.83 在该版本中,新增加了以下模块:大学霸IT达人 (1)dlink_dwl_2600_command_injection模块:用于DLINK DWL-2600漏洞注入。 (2)solr_velocity_rce模块:通过V...

大学霸
23分钟前
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部