安装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。要想真正的形成集群关系,还需要分配槽。
问题
搭建的时候,遇到很多报错,都是各种配置问题。待整理。
参考
黄健张的书
redis运维