ubuntu部署redis集群
记录第一次在linux(ubuntu)下部署redis集群
环境准备
redis版本5.0.8
官网下载源码并解压
// redis 5.0.8
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
make PREFIX=/home/slk/software/redis install
集群部署
目录创建及配置文件更改
首先创建6个目录,用来部署6个节点,3主3从,端口号自定义,本文选用7000-7005
并在6个目录中分别创建conf data log 3个目录用来存放日志等文件
将解压的redis-5.0.8目录下redis.conf文件分别复制到上面的6个目录中,对应每个端口号修改内容
port 7000 # 修改端口号对应目录的端口号
bind 0.0.0.0 # Ip绑定 绑定本机ip或者改为 0.0.0.0--这个配置我没有修改,使用默认的127.0.0.1
/home/weblogic/redis/redis-cluster/7000/data # 数据位置dir ./ 改为>dir /home/weblogic/redis/redis-cluster/7000/data
cluster-enabled yes # 启用集群模式
cluster-config-file nodes-7000.conf # 集群模式中节点的配置文件
cluster-node-timeout 5000 # 超时时间
appendonly yes # redis数据持久化开启,开启AOF模式
daemonize yes # 后台运行
protected-mode no # 非保护模式,允许 Redis 远程访问
pidfile /home/weblogic/redis/redis-cluster/7000/data/redis_7000.pid # pidfile 需要随着文件夹的不同调增
# 如需密码则修改如下配置--这里我并未设置密码
requirepass "guoyuan" # 在:# requirepass foobared 下新增密码配置
masterauth "密码" # masterauth <master-password> 下新增密码配置
使用redis-server工具启动进程
# 注意6个进程都要启动,这里只列举一个
/home/slk/software/redis/bin/redis-server /home/slk/software/redis/redis-cluster/7000/7000.conf
启动后用ps命令查看进程是否启动成功
注意:此时只是启动了redis的6个实例,但并未创建集群模式,使用redis-cli命令进入任意一个节点创建key会报错
127.0.0.1:7005> set test 123
(error) CLUSTERDOWN Hash slot not served
原因是6个节点并未分配slot
create命令创建集群
进程启动成功后,使用redis-cli create命令创建集群,注意安装过程中需要输入yes
/home/slk/software/redis/bin/redis-cli --cluster create 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 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
M: c173c00989f0f64e390711116141f37d8039ea43 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
M: 42b09bed1ef637f70f21d7788d3ae4220d72eb18 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
S: c41bafa0bb3debd8cd37b70df15746bf8dbbb962 127.0.0.1:7003
replicates c173c00989f0f64e390711116141f37d8039ea43
S: 91e9af3e8fa8d4744c85ead86a80556818919707 127.0.0.1:7004
replicates 42b09bed1ef637f70f21d7788d3ae4220d72eb18
S: 678f12ca3af4d2b92f3bbb9f474c307487594ebc 127.0.0.1:7005
replicates 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 42b09bed1ef637f70f21d7788d3ae4220d72eb18 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: c41bafa0bb3debd8cd37b70df15746bf8dbbb962 127.0.0.1:7003
slots: (0 slots) slave
replicates c173c00989f0f64e390711116141f37d8039ea43
M: c173c00989f0f64e390711116141f37d8039ea43 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 91e9af3e8fa8d4744c85ead86a80556818919707 127.0.0.1:7004
slots: (0 slots) slave
replicates 42b09bed1ef637f70f21d7788d3ae4220d72eb18
S: 678f12ca3af4d2b92f3bbb9f474c307487594ebc 127.0.0.1:7005
slots: (0 slots) slave
replicates 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此,3主3从集群的部署基本完成了。
问题积累
- redis-cli连接某个节点时只能查看当前节点的key信息