redis搭建集群

790 阅读4分钟

安装redis

步骤
1.安装
2.以单机模式启动
3.通过命令行客户端访问


mac

安装的时候没有配置文件redis.conf,所以启动的时候全部使用默认值,比如ip和端口。

搭建集群

搭建集群不需要安装多个redis实例,而是通过配置文件的不同端口来代表一个实例,具体来说就是每个配置文件/端口就是代表一个实例。

然后,只要以集群模式启动即可,启动之后,每个实例就是以集群模式在运行了。

最后,虽然现在是以集群模式运行,但是各个实例之间还没有任何关系,最后一步就是把实例组合成一个集群,主要有两点: 1.为主节点分配槽 2.为主节点分配从节点。

创建各个节点的配置文件


redis.conf内容

cluster-enabled yes //开启集群模式
port 30001 //当前节点端口
cluster-config-file /usr/local/etc/redisCluster/node1/node.conf //指定集群配置文件目录和文件名字(mac默认是在/user/local/gongzhihao目录)
dbfilename dump.rdb //指定持久化文件名字
dir /usr/local/etc/redisCluster/node1/ //指定持久化文件目录(mac默认是在/user/local/gongzhihao目录)

以集群模式启动运行

bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node1/redis.conf //一个节点一个节点的启动
1332:M 20 Dec 22:37:05.922 * Increased maximum number of open files to 10032 (it was originally set to 256).
1332:M 20 Dec 22:37:05.925 * No cluster configuration found, I'm 101873767c0b6bcf18bb047c61011b5dadb56764
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30001
 |    `-._   `._    /     _.-'    |     PID: 1332
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1332:M 20 Dec 22:37:05.929 # Server started, Redis version 3.0.7
1332:M 20 Dec 22:37:05.930 * The server is now ready to accept connections on port 30001


^Z
[1]+  Stopped                 redis-server /usr/local/etc/redisCluster/node1/redis.conf
bogon:~ gongzhihao$
bogon:~ gongzhihao$
bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node2/redis.conf
1333:M 20 Dec 22:37:24.302 * Increased maximum number of open files to 10032 (it was originally set to 256).
1333:M 20 Dec 22:37:24.304 * No cluster configuration found, I'm db9fdbe242da713b5036723041a9075791bf76e0
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30002
 |    `-._   `._    /     _.-'    |     PID: 1333
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1333:M 20 Dec 22:37:24.305 # Server started, Redis version 3.0.7
1333:M 20 Dec 22:37:24.305 * The server is now ready to accept connections on port 30002

^Z
[2]+  Stopped                 redis-server /usr/local/etc/redisCluster/node2/redis.conf
bogon:~ gongzhihao$
bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node3/redis.conf
1334:M 20 Dec 22:37:34.295 * Increased maximum number of open files to 10032 (it was originally set to 256).
1334:M 20 Dec 22:37:34.297 * No cluster configuration found, I'm d9db9e0ff5cffc46dbe88109580b491af9eb2015
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30003
 |    `-._   `._    /     _.-'    |     PID: 1334
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1334:M 20 Dec 22:37:34.298 # Server started, Redis version 3.0.7
1334:M 20 Dec 22:37:34.298 * The server is now ready to accept connections on port 30003


^Z
[3]+  Stopped                 redis-server /usr/local/etc/redisCluster/node3/redis.conf
bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node4/redis.conf
1335:M 20 Dec 22:37:40.795 * Increased maximum number of open files to 10032 (it was originally set to 256).
1335:M 20 Dec 22:37:40.796 * No cluster configuration found, I'm d5c2e64650ef36a718b8e3f3ba196f6898a7f366
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30004
 |    `-._   `._    /     _.-'    |     PID: 1335
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1335:M 20 Dec 22:37:40.798 # Server started, Redis version 3.0.7
1335:M 20 Dec 22:37:40.798 * The server is now ready to accept connections on port 30004


^Z
[4]+  Stopped                 redis-server /usr/local/etc/redisCluster/node4/redis.conf
bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node5/redis.conf
1336:M 20 Dec 22:37:49.521 * Increased maximum number of open files to 10032 (it was originally set to 256).
1336:M 20 Dec 22:37:49.523 * No cluster configuration found, I'm 432ad51d4913c6faf3b178c57ced84f9105589be
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30005
 |    `-._   `._    /     _.-'    |     PID: 1336
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1336:M 20 Dec 22:37:49.524 # Server started, Redis version 3.0.7
1336:M 20 Dec 22:37:49.524 * The server is now ready to accept connections on port 30005
^Z
[5]+  Stopped                 redis-server /usr/local/etc/redisCluster/node5/redis.conf
bogon:~ gongzhihao$
bogon:~ gongzhihao$
bogon:~ gongzhihao$ redis-server /usr/local/etc/redisCluster/node6/redis.conf
1337:M 20 Dec 22:37:55.068 * Increased maximum number of open files to 10032 (it was originally set to 256).
1337:M 20 Dec 22:37:55.070 * No cluster configuration found, I'm 45a48e40b7ab70403e94dffdc2e9c164b507e1a8
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 30006
 |    `-._   `._    /     _.-'    |     PID: 1337
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1337:M 20 Dec 22:37:55.071 # Server started, Redis version 3.0.7
1337:M 20 Dec 22:37:55.071 * The server is now ready to accept connections on port 30006
^Z
[6]+  Stopped                 redis-server /usr/local/etc/redisCluster/node6/redis.conf
bogon:~ gongzhihao$
bogon:~ gongzhihao$
bogon:~ gongzhihao$ ps -ef | grep redis //启动成功
  501  1332  1081   0 10:37PM ttys002    0:00.02 redis-server *:30001 [cluster]
  501  1333  1081   0 10:37PM ttys002    0:00.01 redis-server *:30002 [cluster]
  501  1334  1081   0 10:37PM ttys002    0:00.01 redis-server *:30003 [cluster]
  501  1335  1081   0 10:37PM ttys002    0:00.01 redis-server *:30004 [cluster]
  501  1336  1081   0 10:37PM ttys002    0:00.01 redis-server *:30005 [cluster]
  501  1337  1081   0 10:37PM ttys002    0:00.01 redis-server *:30006 [cluster]
  501  1345  1081   0 10:38PM ttys002    0:00.00 grep redis
bogon:~ gongzhihao$

关联各个节点到一个集群中去

虽然上面启动成功了,但是节点之间没有形成主从节点关系,也没有分配槽slot。要想真正的形成集群关系,还需要分配槽。

问题

搭建的时候,遇到很多报错,都是各种配置问题。待整理。

参考

zhuanlan.zhihu.com/p/59172042

黄健张的书

redis运维