redis集群搭建帮助文档

有一天正在摸鱼 ,突然被领导告知 要搭建redis集群。

于是本着 积极向上的精神 。开始学习 百度 各种资料搭建

本机使用环境是vritualBox创建虚拟机 lunix Centos7版本 reids4.0.6

首先 先要安装redis到虚拟机中

我在/home下面上传了redis的gz安装包

一、安装主redis 

 进入/home路径下,解压缩安装包。

cd /home
# 解压命令
tar -zxvf redis-4.0.6.tar.gz

解压后在home文件夹下会粗现一个文件夹(就是我们刚才解压的)

然后 进入解压后的文件夹,开始编译安装

cd redis-4.0.6/
#编译后安装 安装到指定目录下
make PREFIX=/usr/local/redis install

我这里已经安装过了,就可以启动redis了 。

先进入刚才安装的目录下 ls查看下文件 可以看到有一个bin文件夹

我们把刚才/home/redis-***中的redis.conf复制过来,使用cp命令。

cp /home/redis-4.0.6/redis.conf /usr/local/redis/bin/

然后我们来查看下redis.conf中都有什么内容

首先我们要修改下访问策略 redis默认只能127.0.0.1的ip访问,使用vim或者vi编辑器,找到配置文件中的bind 将127.0.0.1注释掉 不限制ip访问限制(如果有需求可以设置)。

然后我们查看下是否允许远外部访问配置 protected-mode 属性 将yes修改为no

是否作为守护线程启动 daemonize属性 修改为yes

这个时候就可以用命令行启动redis服务了.

redis-server /usr/local/redis/bin/redis.conf

这个时候如果需要设置密码的话的童鞋可以搜索下相关配置(我就不说了嗷) 。我们可以查看下防火墙是否开通了相应的端口(百度,百度,百度 不做延伸扩展)。

我是用的是rdm工具来访问redis 。

测试是否能连通 redis。这样 就做好了(主)redis 。

二、搭建(从)redis

如果我们需要把从redis搭建到同一台服务器的话 ,就可以用不同的配置文件来启动redis(一会说)。如果我们的从redis不在这台服务器上 ,那么我们就需要到从服务器上重新安装一遍redis。 

我们接下来说说,怎么搭建从redis 以及 主从redis的配置文件到底哪里不一样:

我是在同一台服务器上搭建的从redis。那么为了方便管理配置文件。我在 /usr/local 路径下创建了一个文件夹。来管理从redis的配置文件 

cd /usr/local/
mkdir redis-cluster
cd redis-cluster
#这里我创建三个从redis 那么管理配置文件的地方就创建了三个文件夹 文件夹名称为端口号
mkdir 8001 8002 8003

将redis.conf复制到每个文件夹中。

我们修改配置文件后启动:


#######################################
#修改端口为从redis端口 这里以8001为例
port 6379
修改为
prot 8001
#######################################

#######################################
#主redis 的连接地址 搜索关键词 slaveof 
# slaveof <masterip> <masterport>
slaveof 192.168.0.115 6379
#######################################

#######################################
#如果主reids需要密码才能访问 修改这个地方 masterauth
# masterauth <master-password>
masterauth root
#######################################

#启动方式
redis-serve /usr/local/redis-cluster/8001/redis.conf

如果防火墙没有拦截端口的话。我们访问从redis所在服务器的ip 端口为刚才修改的8001 然后就可以连接了。如果连接成功

我们可以尝试在主redis中存入数据 从redis中 刷新会出现刚才主redis中的新增的数据 此时我们主从redis已经搭建好了

不过我们尝试往从redis中存入数据的时候。会发现 存不进去 报错 因为从redis只能读取 不能插入。

我们搭建主从redis后 会减少主redis的读取压力 。主redis中写入。从redis中读取。

redis主从复制的原理图

  • 从数据库连接主数据库,发送SYNC命令; 
  • 主数据库接收到SYNC命令后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 
  • 主数据库BGSAVE执行完后,向所有从数据库发送快照文件,并在发送期间继续记录被执行的写命令; 
  • 从数据库收到快照文件后丢弃所有旧数据,载入收到的快照; 
  • 主数据库快照发送完毕后开始向从数据库发送缓冲区中的写命令; 
  • 从数据库完成对快照的载入,开始接收命令请求,并执行来自主数据库缓冲区的写命令;(从数据库初始化完成
  • 主数据库每执行一个写命令就会向从数据库发送相同的写命令,从数据库接收并执行收到的写命令(从数据库初始化完成后的操作
  • 出现断开重连后,2.8之后的版本会将断线期间的命令传给重数据库,增量复制。
  • 主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。Redis 的策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

优点:

  • 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离;
  • 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成;
  • Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力;
  • Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求;
  • Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据;

缺点:

  • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复;
  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性;
  • 如果多个Slave断线了,需要重启的时候,尽量不要在同一时间段进行重启。因为只要Slave启动,就会发送sync请求和主机全量同步,当多个 Slave 重启的时候,可能会导致 Master IO剧增从而宕机。
  • Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂;

三、哨兵模式

对不起 我还没亲手搭建 不敢写

四、cluster集群

为了创建集群,首先我必须有一些以集群模式(cluster mode)运行的Redis实例。

下面是一个最小的Redis集群配置文件:

<--redis服务端口号-->
port 7000
<--是否启动集群模式 默认为注释-->
cluster-enabled yes
<--自动生成的配置文件 可以自定义名称 -->
cluster-config-file nodes.conf
<--过期时间 -->
cluster-node-timeout 5000
<--是否启动aof存储 具体查看参考文档 redis持久化的文档-->
appendonly yes
<--这个设置代表会在启动redis时所在目录生成rdm文件-->
dir ./
<--守护进程 如果你在同一台服务器来启动很多redis服务的话 需要修改这个名称 否则数据会错乱-->
pidfile /var/run/redis_6379.pid
<--如果使用cluster集群的话 我们必须注释掉主从复制中从redis中的slave配置 否则服务无法启动-->
slaveof ***.***.***.***:**

为了启动我们的集群 我们至少需要六个redis服务(三主三从)。

我是本地启动6个服务 那么我开始在我的/usr/local/redis-cluster(这个目录没有的话自己创建)下创建我的redis集群配置文件

我创建了 8000 8001 8002 8003 8004 8005 六个文件夹 ,将redis.conf文件分别复制到每个文件夹内。

启动redis服务时 可以看到每个服务的cluster-config文件中 暂时没出现集群的配置

最简单的实现是用redis-trib工具,它在src目录下。它是一个ruby程序,所以需要先安装ruby。

yum install ruby
yum install rubygems
gem install redis
#这个时候 可能会报错 于是,要升级Ruby版本
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
#下面这行curl也许会报错提示无法读取 将网址替换为 
# https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer
curl -sSL https://get.rvm.io | bash -s stable

source /etc/profile.d/rvm.sh
rvm list known
rvm install 2.4.1

参考文档:

集群搭建文档

Redis ==> 集群的三种模式 - 破解孤独 - 博客园(三种集群方式)

redis集群简介 - vietaKo - 博客园

redis集群搭建(非常详细,适合新手)_橙子君的博客-CSDN博客_redis集群搭建

redis4.0.6集群搭建_Rebirth 重生-CSDN博客

Redis进阶实践之十一 Redis的Cluster集群搭建 - 可均可可 - 博客园(故障转移测试)

Redis-使用redis-trib构建集群_张张张小胜的博客-CSDN博客_redis-trib (Spring集成 redis-cluster)

redis配置

Redis主从配置和持久化(需要密码认证)(centos7)_renfeigui0的博客-CSDN博客

Redis集群 - 废物大师兄 - 博客园 (讲解细分)

redis持久化(扩展阅读)

REDIS persistence -- Redis中国用户组(CRUG)

虚拟机xfs 恢复

CentOS7 莫名其妙开机出现Generating "/run/initramfs/rdsosreport.txt"-服务器-CSDN问答

redis主从复制的配置以及实现原理

百度安全验证

Redis主从同步配置(详细图解)_cdtaogang's blog-CSDN博客_redis主从同步配置

redis集群启动成功后 关闭所有节点后重启 失败 提示 err slot xxx is already busy

https://blog.csdn.net/qiushisoftware/article/details/78837855

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值