centos7 Redis单机多节点集群部署

太过爱你忘了你带给我的痛 2022-06-02 00:38 350阅读 0赞

centos7 redis的安装请参考一下链接 http://blog.csdn.net/duguxingfeng/article/details/78911640

1.Reids安装包里有个集群工具,要复制到/usr/local/bin里去

  1. [root@localhost ~]# ll
  2. [root@localhost ~]# cd redis-3.2.9/src
  3. [root@localhost src]# ll

Center

  1. [root@localhost src]# cp redis-trib.rb /usr/local/bin
  2. [root@localhost ~]# cd /usr/local/bin;ll

Center 1

2.创建节点,修改配置文件

我们现在要搞六个节点,三主三从,

端口规定分别是7001,7002,7003,7004,7005,7006

我们先在root目录下新建一个redis_cluster目录,然后该目录下再创建6个目录,

分别是7001,7002,7003,7004,7005,7006,用来存在redis配置文件;

这里我们要使用redis集群,要先修改redis的配置文件redis.conf

具体步骤如下:

  1. [root@localhost ~]# mkdir redis_cluster
  2. [root@localhost ~]# cd redis_cluster/
  3. [root@localhost redis_cluster]# mkdir 7001 7002 7003 7004 7005 7006

Center 2

先复制一份配置文件到7001目录下

  1. [root@localhost redis_cluster]# cd
  2. [root@localhost ~]# cp redis-3.2.9/redis.conf redis_cluster/7001/
  3. [root@localhost ~]# vim redis_cluster/7001/redis.conf

修改此配置文件里面的一下几项数值

  1. #bind 127.0.0.1 #注释掉,使其他机器也可访问
  2. protected-mode no #关闭保护模式
  3. port 7001 #六个节点配置文件分别是7001-7006
  4. daemonize yes #redis后台运行
  5. pidfile /var/run/redis_7001.pid #pidfile文件对应7001-7006
  6. cluster-enabled yes #开启集群
  7. cluster-config-file nodes_7001.conf #保存节点配置,自动创建,自动更新对应7001-7006
  8. cluster-node-timeout 5000 /#集群超时时间,节点超过这个时间没反应就断定是宕机

7001下的修改完后,我们把7001下的配置分别复制到7002-7006 ,只需修改port 、pidfile、cluster-config-file 即可

  1. [root@localhost ~]# cp redis_cluster/7001/redis.conf redis_cluster/7002/
  2. [root@localhost ~]# cp redis_cluster/7001/redis.conf redis_cluster/7003/
  3. [root@localhost ~]# cp redis_cluster/7001/redis.conf redis_cluster/7004/
  4. [root@localhost ~]# cp redis_cluster/7001/redis.conf redis_cluster/7005/
  5. [root@localhost ~]# cp redis_cluster/7001/redis.conf redis_cluster/7006/

3.分别启动上述六个节点

  1. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7001/redis.conf
  2. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7002/redis.conf
  3. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7003/redis.conf
  4. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7004/redis.conf
  5. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7005/redis.conf
  6. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7006/redis.conf

Center 3

出现以上说明这六个节点已经启动成功,接下来需要创建集群

4.创建集群

这里需要用到第一步复制到usr/local/bin里面的redis-trib.rb工具

创建集群之前需要安装rubby,以及redis和rubby的连接

  1. [root@localhost ~]# yum -y install ruby ruby-devel rubygems rpm-build
  2. [root@localhost ~]# gem install redis

会提示

Center 4

说明redis 需要ruby的版本在2.2.2以上。我们可以看到目前的版本为2.0.0

  1. [root@localhost ~]# yum list ruby

Center 5

  1. [root@localhost ~]# yum remove ruby

Center 6

提示是否删除依赖,这里选择y

Center 7

采用 rvm来更新ruby

首先需要安装RVM 具体步骤如下:

  1. [root@localhost ~]# gpg2 —keyserver hkp://keys.gnupg.net —recv-keys D39DC0E3 会下载密钥,如果连接失败,多尝试几次。

  2. root@localhost ~]# curl -L get.rvm.io | bash -s stable

  3. [root@localhost ~]# find / -name rvm -print

  4. [root@localhost ~]# source /usr/local/rvm/scripts/rvm

  5. [root@localhost ~]# rvm list known

Center 8

6.[root@localhost ~]# rvm install 2.3.3 安装ruby2.3.3此过程可能较慢,

Center 9

  1. [root@localhost ~]# ruby -v #查看当前ruby版本,为2.3.3

  2. [root@localhost ~]# gem install redis #重新安装redis即可

redis安装完成之后即可创建集群

[root@localhost ~]# redis-trib.rb create —replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

这一步可能会提示

Creating cluster
[ERR] Node 127.0.0.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

类似的错误。

其解决方案如下:

  1. [root@localhost ~]# ps -ef | grep redis #查看目前redis的进程 杀掉节点的进程

Center 10

2.到 用户目录下 删除下图文件。

Center 11

3.重新启动各个节点即可。

  1. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7001/redis.conf
  2. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7002/redis.conf
  3. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7003/redis.conf
  4. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7004/redis.conf
  5. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7005/redis.conf
  6. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7006/redis.conf

4.以上步骤可循环尝试

创建集群

  1. [root@localhost ~]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

Center 12

从运行结果看 主节点就是7001 7002 7003 从节点分别是7004 7005 7006

Center 13

以上说明集群已经配置成功!

5.测试:

[root@localhost ~]# /usr/local/redis/bin/redis-cli -c -p 7002 #登录节点7002

设置age

登录其他节点获取,能够成功获取到值

Center 14

6.集群宕机测试

这里我们干掉一个节点,比如7003

  1. [root@localhost ~]# ps -ef|grep redis
  2. root 9606 1 0 10:50 ? 00:00:06 /usr/local/redis/bin/redis-server *:7001 [cluster]
  3. root 9614 1 0 10:50 ? 00:00:06 /usr/local/redis/bin/redis-server *:7002 [cluster]
  4. root 9623 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7003 [cluster]
  5. root 9635 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7004 [cluster]
  6. root 9642 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7005 [cluster]
  7. root 9649 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7006 [cluster]
  8. root 10370 10209 0 11:31 pts/4 00:00:00 grep --color=auto redis
  9. [root@localhost ~]# ps -ef|grep redis
  10. root 9606 1 0 10:50 ? 00:00:06 /usr/local/redis/bin/redis-server *:7001 [cluster]
  11. root 9614 1 0 10:50 ? 00:00:06 /usr/local/redis/bin/redis-server *:7002 [cluster]
  12. root 9635 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7004 [cluster]
  13. root 9642 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7005 [cluster]
  14. root 9649 1 0 10:51 ? 00:00:06 /usr/local/redis/bin/redis-server *:7006 [cluster]
  15. root 10381 10209 0 11:32 pts/4 00:00:00 grep --color=auto redis

查看目前集群的情况

  1. [root@localhost ~]# redis-trib.rb check 127.0.0.1:7001
  2. >>> Performing Cluster Check (using node 127.0.0.1:7001)
  3. M: ce53acdd719273cf6af746da9760243cf70860b1 127.0.0.1:7001
  4. slots:0-5460 (5461 slots) master
  5. 1 additional replica(s)
  6. M: d155427a31c295179642c22b6936fd5acb31e6a8 127.0.0.1:7006
  7. slots:10923-16383 (5461 slots) master
  8. 0 additional replica(s)
  9. S: e39fb46a37e63f737b6802f13458b8a1978f7d05 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates ce53acdd719273cf6af746da9760243cf70860b1
  12. S: 3aeb4b14c31f1c3f7858236ed1e705d62b824b11 127.0.0.1:7005
  13. slots: (0 slots) slave
  14. replicates dacc614b13d4f927cf80a557a74ddc7d737ccf23
  15. M: dacc614b13d4f927cf80a557a74ddc7d737ccf23 127.0.0.1:7002
  16. slots:5461-10922 (5462 slots) master
  17. 1 additional replica(s)
  18. [OK] All nodes agree about slots configuration.
  19. >>> Check for open slots...
  20. >>> Check slots coverage...
  21. [OK] All 16384 slots covered.

我们看到 7006本来是从节点,但是7003这个主节点挂了,7006就变成了主节点

同时显示[OK] All 16384 slots covered. 表明,集群还可用。

现在我们干掉7006

  1. [root@localhost ~]# ps -ef|grep redis
  2. root 9606 1 0 10:50 ? 00:00:08 /usr/local/redis/bin/redis-server *:7001 [cluster]
  3. root 9614 1 0 10:50 ? 00:00:08 /usr/local/redis/bin/redis-server *:7002 [cluster]
  4. root 9635 1 0 10:51 ? 00:00:08 /usr/local/redis/bin/redis-server *:7004 [cluster]
  5. root 9642 1 0 10:51 ? 00:00:08 /usr/local/redis/bin/redis-server *:7005 [cluster]
  6. root 9649 1 0 10:51 ? 00:00:08 /usr/local/redis/bin/redis-server *:7006 [cluster]
  7. root 10436 10209 0 11:37 pts/4 00:00:00 grep --color=auto redis
  8. [root@localhost ~]# kill -9 9649
  9. [root@localhost ~]# redis-trib.rb check 127.0.0.1:7001
  10. [ERR] Sorry, can't connect to node 127.0.0.1:7006
  11. >>> Performing Cluster Check (using node 127.0.0.1:7001)
  12. M: ce53acdd719273cf6af746da9760243cf70860b1 127.0.0.1:7001
  13. slots:0-5460 (5461 slots) master
  14. 1 additional replica(s)
  15. S: e39fb46a37e63f737b6802f13458b8a1978f7d05 127.0.0.1:7004
  16. slots: (0 slots) slave
  17. replicates ce53acdd719273cf6af746da9760243cf70860b1
  18. S: 3aeb4b14c31f1c3f7858236ed1e705d62b824b11 127.0.0.1:7005
  19. slots: (0 slots) slave
  20. replicates dacc614b13d4f927cf80a557a74ddc7d737ccf23
  21. M: dacc614b13d4f927cf80a557a74ddc7d737ccf23 127.0.0.1:7002
  22. slots:5461-10922 (5462 slots) master
  23. 1 additional replica(s)
  24. [OK] All nodes agree about slots configuration.
  25. >>> Check for open slots...
  26. >>> Check slots coverage...
  27. [ERR] Not all 16384 slots are covered by nodes.

最后发现 Not all 16384 slots are covered by nodes. 没有完全覆盖,集群不能正常使用

如需重新启用,将已经挂掉的节点重新启动即可

如:命令如下:

  1. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7003/redis.conf
  2. [root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7006/redis.conf

Center 15

集群还可正常使用

发表评论

表情:
评论列表 (有 0 条评论,350人围观)

还没有评论,来说两句吧...

相关阅读