##########

开门见山,今天不废话。今天主要分享一下 redis 3主3从 集群的搭建过程。redis经常用来做缓存,可以提升读取数据的速度,数据都是存在内存中的,采用 RDB 或者 AOF 持久化存储后便可以实时落地到硬盘。本次主要是3主3从。架构原理如下:

640?wx_fmt=png

题图:来自于网络


图片中的每一个圆圈都代表一台服务器。客户端访问任何一台服务器便可以连通任何服务器。当老的主节点也就是 master 节点挂掉时,会进行重新选举,当半数以上的 master 节点投票出现失败状态时(也就是和该故障matser连不通),就会认为该 master 挂掉。


什么时候集群不可用? 1、当master挂掉时,这个master没有slave节点时,该集群则进入fail状态。 2、当集群超过半数以上master挂掉,则不论有没有slave节点,则该集群都会挂掉

tigergao


大型的互联网公司都会采用集群方式或者哨兵方式来保证高可用以及实现读写分离。下来进行搭建集群。

1、上redis官网网站,下载源码包,之后进行编译安装。官方网站说明如下。

官方网站说明安装过程如下:
Installation
Download, extract and compile Redis with:

$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make
The binaries that are now compiled are available in the src directory. Run Redis with:

$ src/redis-server
You can interact with Redis using the built-in client:

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

按照官网说明进行安装即可。进行编译将redis安装。

640?wx_fmt=png

2、安装后进行修改配置文件,并命名为redis6389.conf。

save 900 1
bind 10.131.156.170
daemonize yes	
 port 6389	
loglevel warning
timeout 60
logfile "6389.log"
dbfilename dump6389.rdb
pidfile /var/run/redis_6389.pid
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file nodes-6389.conf
protected-mode no

640?wx_fmt=png

3、同时将redis6389.conf拷贝几份按照如上配置,进行修改端口。

640?wx_fmt=png

4、安装ruby和ruby依赖rubygem。安装ruby的目的是进行创建和管理redis集群。Redis-trib.rb是采用ruby实现的redis集群管理工具。内部通过cluster相关命令简化集群创建,检查,槽迁移和均衡等常见运维操作。同样进行解压并编译安装。

mkdir rubydata

tar -zxvf ruby-2.4.0.tar.gz

./configure -prefix=/app/redis-cluster/rubydata

make && make install

640?wx_fmt=png

5、安装ruby的gem。

./gem install -l redis-3.2.2.gem
./gem list redis

640?wx_fmt=png

6、分别进行启动不同端口的redis,如图。

./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6389.conf
./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6399.conf 
./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6489.conf 
./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6499.conf 
./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6589.conf 
./redis-server /app/redis-cluster/redis-4.0.9/redis-conf/redis6599.conf

640?wx_fmt=png

7、进行集群创建。执行./redis-trib.rb help如图。

640?wx_fmt=png

1、 create :创建集群

2、 check :检查集群

3、 info :查看集群信息

4、 fix :修复集群

5、 reshard :在线迁移slot

6、 rebalance :平衡集群节点slot数量

7、 add-node :将新节点加入集群

8、 del-node :从集群中删除节点

9、 set-timeout :设置集群节点间心跳连接的超时时间

10、 call :在集群全部节点上执行命令

11、 import :将外部redis数据导入集群

8、创建集群。创建的时候碰到了一个问题,提示需要调整内核参数vm.overcommit_memory。

vm.overcommit_memory=0
vm.overcommit_memory=1
vm.overcommit_memory=2
0表示内核将检查是否有足够的内存来供应用进程使用,如果没有将会将错误状态返回给应用程序。
1表示允许分配物理内存不管当前内存状态。
2表示内核允许分配超过物理内存+交换内存的综合。

需要给/etc/sysctl.conf中加入参数并执行sysctl.conf -p 生效

640?wx_fmt=png

执行集群创建命令开始创建集群。

./redis-trib.rb create --replicas 1 10.131.156.170:6389 10.131.156.170:6399 10.131.156.170:6489 10.131.156.170:6499 10.131.156.170:6589 10.131.156.170:6599 

./redis-trib.rb create --replicas 1 10.131.156.170:6389 10.131.156.170:6399 10.131.156.170:6489 10.131.156.170:6499 10.131.156.170:6589 10.131.156.170:6599 

----replicas 1 表示附带几个slave也就是从节点。

640?wx_fmt=png

640?wx_fmt=png

9、登录6389节点,进行设置key。

640?wx_fmt=png

10、登录6599节点,进行获取key,验证数据是否同步。如图,可以看到集群数据已经自动同步。

640?wx_fmt=png

至此,3主3从的redis集群已经搭建完毕。


#抉择的策略# 刚才一位很熟悉的兄弟问先深挖MySQL还是先接触Linux的问题,这里我统一说下吧。其实,不光是这个上的抉择问题,生活中的事情都可以去决策。因为这位球友是做后端Java的,主要的工作还是在windows平台上,并且写后端离不开数据库,所以很简单,建议先搞MySQL,这样可以快速提升专业水平。假如运维或者是DBA亦或者是devops的话就要首选Linux了,应用服务器大部分都是在Linux上运行,基本没有在win上搞的,则碰到的首要问题就是安装,要安装就要会Linux。但是开发懂Linux是一个加分项,这个是一定的。很多招聘要求都要求开发熟悉基本的Linux用法。同样,要不要跳槽,要不要买房等等之类的事情,都可以去抉择。选择有时候往往真的会大于努力的,尤其是关键档口。我说这个得意思就是多思考然后再抉择,做事多考虑。做出的选择不要后悔,之后按照节奏一步一步往出来踩路,说真的,三四年下来基本没什么难的,大多数百分之六十的目标均可以实现。


我一般很少写技术相关的文章,转发和在看也是一种鼓励和支持。如果想加入私密圈子高哥织梦圈可以进行扫描如下第一张二维码或扫描第二张进行关注,相信从技术、商业、写作、认知多方面也是对大家一个提升的过程。道路千万条,学习第一条,因为我从未停止过,一直在努力奔跑。


640?wx_fmt=png

640?wx_fmt=png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值