redis集群搭建
名词:
redis是REmote DIctionary Server的缩写
环境:
redis-4.0.9
centOS7
配置文件
找到redis安装目录下的redis..conf模板配置文件,复制出来作为集群节点的配置文件,修改其中的配置参数。
部分参数如下:
参数 | 值 | 描述 |
---|---|---|
port | 7000 | 节点的端口 |
daemonize | yes | 设置启动线程为后台线程 |
cluster-enabled | yes | 开启集群 |
cluster-config-file | nodes.conf | 这里只是配置一个虚拟的文件名称而已,节点在启动时会创建这个文件,用于节点的配置 |
cluster-node-timeout | 5000 | 节点失效的超时时间。如果在这个时间内没收到节点的信息,则表示节点失效。单位毫秒 |
cluster-require-full-coverage | no | 槽点全覆盖。如果设置为’yes’,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务。 |
appendonly | yes | 记录命令日志。将命令保存在日志文件aof中,实现故障恢复,弥补发生故障时数据丢失的风险。 |
bind | 127.0.0.1 192.168.1.12 | 绑定主机。可以绑定多个主机,用空格分开ip地址。在创建集群时,切记不能使用127.0.0.1作为创建节点的主机地址,否者会导致其他主机访问时,出现获取不到资源的错误[ERR can not get a resource],用主机的网络IP地址即可。 |
启动节点
假定 redis 集群预计使用6个节点(3主3从),且安装在一台服务器上,则至少需要6个端口。
1. 新建集群目录
$ mkdir clsuter
2. 新建6个子目录,以端口号作为目录名称,启动节点时从此目录下启动节点。因为节点启动过后,会在启动目录下创建几个文件,独有于此节点。另每个节点都有一个自己的启动配置文件redis.conf,也可以放在这个端口目录下。
$ mkdir cluster/7000
$ mkdir cluster/7001
$ mkdir cluster/7002
$ mkdir cluster/7003
$ mkdir cluster/7004
$ mkdir cluster/7005
3. 启动节点,每个节点下的配置文件都是相同的命名redis.conf
$ src/redis-server ../../cluster/7000/redis.conf
$ src/redis-server ../../cluster/7001/redis.conf
$ src/redis-server ../../cluster/7002/redis.conf
$ src/redis-server ../../cluster/7003/redis.conf
$ src/redis-server ../../cluster/7004/redis.conf
$ src/redis-server ../../cluster/7005/redis.conf
4. 查看节点是否启动成功,输出后面有[cluster]表示启动的是集群节点
$ ps -ef | grep 'cluster'
5. 安装gem(如果没有安装的话),在线安装方法:
$ yum install gem
可能提示需要更高版本的gem:
$ gem update --system
6. 创建集群,replcas 1 表示每个主节点创建一个从节点,redis自动分配主从节点。
$ src/redis-trib.rb create --replicas 1 127.0.0.1:7000 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
当提示‘[ERR] Sorry, can’t connect to node 127.0.0.1:7000’时,可能由于配置文件中设置了密码所至,去掉密码即可。
查看主从节点是否关联上:
$ src/redis-cli -h 127.0.0.1 -p 7000 cluster nodes
这时便可进入任一节点验证是否进行了数据分发,进入集群节点时,需要加上-c选项:
$ src/redis-cli -c -p 7000
集群命令
以下是部分集群的命令,在客户端执行:
命令 | 描述 |
---|---|
CLUSTER NODES | 打印出集群所有节点的状态视图。包括与每个节点的连接状态,每个节点的标记位(flags),属性和已经分配的哈希槽等等。 |
CLUSTER INFO | 使用 INFO 风格的形式展现了关于Redis集群的重要参数。 |
DEBUG SEGFAULT | 崩溃。使服务器崩溃,用于崩溃测试。 |
DBSIZE | 返回当前数据库中key的数量。 |
FLUSHDB | 清空当前数据库 |
FLUSHALL | 清空所有数据库 |
INFO | 获取服务器的信息。后面加参数all,返回所有信息。 |
SHUTDOWN | 关闭服务 |