redis 系列27 Cluster高可用 (集群搭建详解 3)
一. Cluster集群说明
1.1 环境配置
群集IP | 节点 | 密码 | 槽号 |
主库172.168.18.201 | 7000 | 123456 | 0 ~ 5000 |
主库172.168.18.201 | 7001 | 123456 | 5001~10000 |
主库172.168.18.201 | 7002 | 123456 | 10001~16383 |
从库 172.168.18.203 | 7000 | 123456 | |
从库 172.168.18.203 | 7001 | 123456 | |
从库 172.168.18.203 | 7002 | 123456 |
1.2配置介绍
在搭建并使用Redis集群时,需要在普通的Redis服务下配置redis.conf文件,通过所需的参数配置,成为集群模式下的一个节点。下面是集群配置文件最小参数选项介绍:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
cluster-enabled 选项用于开实例的集群模式,nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。
二. 主库节点搭建步骤
(1) 在主库201上,先为集群创建三个文件夹(7000 7001 7002),每个文件夹存放一份redis.conf文件,文件放在redis安装目录下。
[root@hsr redis]# mkdir cluster-test [root@hsr redis]# cd cluster-test [root@hsr cluster-test]# mkdir 7000 7001 7002 [root@hsr cluster-test]# ls 7000 7001 7002
(2)将原有的redis /bin目录下的redis.conf文件,复制到四个文件夹下
[root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf ./7000 [root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf ./7001 [root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf ./7002
(3)将三个redis.conf文件配置好,按上面的参数来配置, 以7000的redis.conf为例,相关参数如下:
[root@hsr 7000]# vim redis.conf 92 port 7000 814 cluster-enabled yes 822 cluster-config-file nodes-7000.conf 828 cluster-node-timeout 5000 672 appendonly yes
(4) 将原有的redis /bin目录下的 redis-server执行文件,复制到 cluster-test 文件夹下,目录结构如下:
[root@hsr cluster-test]# cp ../bin/redis-server redis-server [root@hsr cluster-test]# ls -l 总用量 7080 drwxr-xr-x 2 root root 24 12月 24 11:36 7000 drwxr-xr-x 2 root root 24 12月 24 11:40 7001 drwxr-xr-x 2 root root 24 12月 24 11:41 7002 -rwxr-xr-x 1 root root 3624512 12月 24 11:46 redis-server
(5) 启动三个主服务节点,以及查看节点进程
[root@hsr cluster-test]# ./redis-server ./7000/redis.conf 1120:C 24 Dec 13:58:03.936 # Configuration loaded [root@hsr cluster-test]# ./redis-server ./7001/redis.conf 1125:C 24 Dec 13:58:09.412 # Configuration loaded [root@hsr cluster-test]# ./redis-server ./7002/redis.conf [root@hsr cluster-test]# ps -ef | grep redis-server root 1121 1 0 13:58 ? 00:00:00 ./redis-server *:7000 [cluster] root 1126 1 0 13:58 ? 00:00:00 ./redis-server *:7001 [cluster] root 1131 1 0 13:58 ? 00:00:00 ./redis-server *:7002 [cluster]
三. 从库节点搭建步骤
(1) 在从库203上,先为集群创建四个文件夹(7000 7001 7002 7003),每个文件夹存放一份redis.conf文件,文件放在redis安装目录下。
[root@xuegod64 redis]# pwd /usr/local/redis [root@xuegod64 redis]# mkdir cluster-test [root@xuegod64 redis]# cd cluster-test [root@xuegod64 cluster-test]# mkdir 7000 7001 7002 [root@xuegod64 cluster-test]# ls 7000 7001 7002
(2)将原有的redis 目录下的redis.conf文件,复制到四个文件夹下
[root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf ./7000 [root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf ./7001 [root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf ./7002
(3)将三个redis.conf文件配置为从节点, 以7000节点为例,参数如下:
-- 7000的redis.conf 92 port 7000 280 slaveof 172.168.18.201 7000 263 dir "/usr/local/redis/cluster-test/7000" 813 cluster-enabled no 821 cluster-config-file nodes-7000.conf 827 cluster-node-timeout 5000
(4) 将原有的redis 目录下的 redis-server执行文件,复制到 cluster-test 文件夹下,目录结构如下:
[root@xuegod64 cluster-test]# cp ../redis-server redis-server [root@xuegod64 cluster-test]# ls -l 总用量 5620 drwxr-xr-x 2 root root 24 12月 27 16:17 7000 drwxr-xr-x 2 root root 24 12月 27 16:16 7001 drwxr-xr-x 2 root root 24 12月 27 16:14 7002 -rwxr-xr-x 1 root root 5753704 12月 27 16:19 redis-server
(5) 启动三个从服务节点,以及查看节点进程
[root@xuegod64 cluster-test]# ls 7000 7001 7002 dump.rdb redis-server [root@xuegod64 cluster-test]# ./redis-server ./7000/redis.conf [root@xuegod64 cluster-test]# ./redis-server ./7001/redis.conf [root@xuegod64 cluster-test]# ./redis-server ./7002/redis.conf [root@xuegod64 cluster-test]# ps -ef | grep redis-server root 50134 1 6 16:51 ? 00:00:04 ./redis-server *:7000 root 50143 1 4 16:52 ? 00:00:01 ./redis-server *:7001 root 50149 1 5 16:52 ? 00:00:01 ./redis-server *:7002
(6) 在主库200上查看各主节点的复制信息
127.0.0.1:7000> info replication # Replication role:master connected_slaves:1 slave0:ip=172.168.18.203,port=7000,state=online,offset=210,lag=1 127.0.0.1:7001> info replication # Replication role:master connected_slaves:1 slave0:ip=172.168.18.203,port=7001,state=online,offset=196,lag=0 127.0.0.1:7002> info replication # Replication role:master connected_slaves:1 slave0:ip=172.168.18.203,port=7002,state=online,offset=84,lag=0
(7)在从库203上查看从节点的复制信息,以7000从节点为例
[root@xuegod64 redis]# ls appendonly.aof cluster-test dump.rdb redis-benchmark redis-cli redis.conf redis.log redis-server [root@xuegod64 redis]# ./redis-cli -h 127.0.0.1 -p 7000 -a 123456 127.0.0.1:7000> info replication # Replication role:slave master_host:172.168.18.201 master_port:7000 master_link_status:up
四. 集群设置
(1) 主节点握手
在主节点7000的客户端,通过与7001,7002主节点握手来形成集群节点,以及握手成功后查看群集状态。
[root@hsr bin]# ./redis-cli -c -p 7000 -a 123456 127.0.0.1:7000> cluster meet 127.0.0.1 7001 OK 127.0.0.1:7000> cluster meet 127.0.0.1 7002 OK
127.0.0.1:7000> cluster nodes 0eed9cc9122d2724365550b70965c2a8e281043d 127.0.0.1:7002@17002 master - 0 1545632759414 2 connected aeaaeacb8b4d4c4a3bca3c6f52fc4b363e68f083 127.0.0.1:7001@17001 master - 0 1545632758405 0 connected 142116fa16006f39865ebe604d1580c119fa0fea 127.0.0.1:7000@17000 myself,master - 0 1545632756000 1 connected
(2)分配槽
给各主节点分配槽范围,全部分配完后,此时查看群集状态为OK(已上线),再查看槽分配信息
[root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7000 -a 123456 cluster addslots {0..5000} OK [root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7001 -a 123456 cluster addslots {5001..10000} OK [root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7002 -a 123456 cluster addslots {10001..16383} OK
127.0.0.1:7000> cluster info cluster_state:ok
127.0.0.1:7000> cluster nodes a9e82a7870ac31c221a4d13b28ba9897bb12257c 127.0.0.1:7000@17000 myself,master - 0 1545704528000 0 connected 0-5000 3b10786d21bbeb66e3517e8d3daa3ee2ce16705e 127.0.0.1:7001@17001 master - 0 1545704529806 1 connected 5001-10000 7bd0cbd26392d1e98ffe9d46ae153c944d8f398d 127.0.0.1:7002@17002 master - 0 1545704529000 2 connected 10001-16383