一、运行环境
环境和软件版本 | 版本 |
阿里云Centos | 7.5 |
Redis | 5.0.7 |
二、节点情况
节点:端口 | 角色 |
0.0.0.0:7001 | 主节点 |
0.0.0.0:7002 | 主节点 |
0.0.0.0:7003 | 主节点 |
0.0.0.0:7004 | 从节点 |
0.0.0.0:7005 | 从节点 |
0.0.0.0:7006 | 从节点 |
三、环境准备
mkdir /home/redis-cluster/7001
make install PREFIX=/home/redis-cluster/7001
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/7001/bin/
修改配置文件以下内容:
# 修改端口为7001
port 7001
# 设置后台启动
daemonize yes
# 不限制绑定ip
bind 0.0.0.0
# 打开cluster-enabled
cluster-enabled yes
将节点的内容依次复制到其他节点,主从节点之间的密码要保持一致,注意修改端口。
cp -r /home/redis-cluster/7001/* /home/redis-cluster/7002/
准备一个shell脚本,用来统一启动节点。
cd 7001/bin
./redis-server redis.conf
cd ../..
cd 7002/bin
./redis-server redis.conf
cd ../..
cd 7003/bin
./redis-server redis.conf
cd ../..
cd 7004/bin
./redis-server redis.conf
cd ../..
cd 7005/bin
./redis-server redis.conf
cd ../..
cd 7006/bin
./redis-server redis.conf
cd ../..
echo "redis-cluster start success..."
赋予执行脚本写和执行的权限
chmod u+x start.sh
四、安全配置
生产环境下集群不能裸奔,所以要增加安全配置。
# 登录集群
./redis-cli -h 127.0.0.1 -p 7001 -c
# 设置密码
config set requirepass 123456
# 密码登录
auth 123456
# 设置链接密码
config set masterauth 123456
# 将修改重写到配置文件中
config rewrite
回去看配置文件,可以发现是重写了masterauth和requirepass,所以每个节点去修改这两个配置项也是可以的。
五、集群安装
运行上面创建的脚本,查看进程是否正常启动
集群创建,-a后面携带的是密码
./redis-cli --cluster create 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 127.0.0.1:7006 --cluster-replicas 1 -a 123456
显示槽的分配和结果情况则表示集群搭建成功
以集群形式访问
./redis-cli -h 127.0.0.1 -p 7001 -c
# 查看集群状态
cluster info
# 查看集群节点
cluster nodes
登录的是7001,添加一个测试数据set name helloworld
,可以看到此时通过计算得到的槽式5789,将数据分配给7002这个节点。
到这基本上就完成了整个Redis-Cluster的搭建部署流程。
六、踩到的坑
1、如果是云服务或者是远程服务器,redis记得要取消ip的绑定,不然后面创建集群的时候会连不上
# 不限制绑定ip
bind 0.0.0.0
2、./redis-cli --cluster create
创建集群的时候,如果是云服务要记得用外网地址。
客户端操作数据的时候,会计算槽获取要操作的Redis节点,节点信息保存在node.conf里,这里的信息就是创建集群的时候指定的信息,如果不是外网地址,在数据操作中如果发生重定向,客户端拿到的是错误地址就会导致访问不到节点。
3、如果是在同个机器下部署伪集群,可能会出现一直卡在等待客户端加入,仔细看控制台打印的内容发现节点的id是一样的,此时可以修改node.conf的文件名,例如:node.conf -> node_7001.conf