Redis的集群方案大致有三种:
1)redis cluster集群方案;
2)master/slave主从方案;
3)哨兵模式来进行主从替换以及故障恢复。
但是主从方案和哨兵模式与cluster集群模式相比性能要相对差,所以现在很多企业都换成了集群模式
部署redis5-cluster集群
(至少需要3个主节点,生产环境建议用三台机器做,每台上部署一套主从,总共六个节点)
1.wget http://download.redis.io/releases/redis-5.0.5.tar.gz
解压,进入解压后的文件夹,执行 make && make install PREFIX=/usr/local/redis
意思是把命令安装到/usr/local/redis/下面
2.进入文件夹 cd /usr/local/redis/
创建集群文件夹redis-cluster,把节点配置文件放到里面管理 mkdir redis-cluster
进入文件夹 cd redis-cluster
mkdir 7001 7002 7003 7004 7005 7006
-
3.部署六个节点,因为是实验机器所以都部署在一台机器上,生产环境应该部署在多台机器上,多台机器都安装redis,每一台上都创建一个目录夹,比如是三台机器就一台上创建两个目录夹,总共六个,命令复制到其他机器上。
-
4.新建配置文件
vim 7001/redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid
bind 192.168.0.49
其他7002/redis.conf 7003/redis.conf也是一样,记得改端口和文件名
- 启动节点
cd /usr/local/redis/bin
./redis-server /usr/local/redis/redis-cluster/7001/redis.conf
./redis-server /usr/local/redis/redis-cluster/7002/redis.conf
./redis-server /usr/local/redis/redis-cluster/7003/redis.conf
./redis-server /usr/local/redis/redis-cluster/7004/redis.conf
./redis-server /usr/local/redis/redis-cluster/7005/redis.conf
./redis-server /usr/local/redis/redis-cluster/7006/redis.conf
- 启动集群
./redis-cli --cluster create 192.168.21.130:7001 192.168.21.130:7002 192.168.21.130:7003 192.168.21.130:7004 192.168.21.130:7005 192.168.21.130:7006 --cluster-replicas 1
输入yes
netstat -nalp | grep redis | grep LISTEN
查看六个节点的端口是否正常
- 连接测试
./redis-cli -h 192.168.0.49 -p 7003 -c
set 一个值,然后用其他端口查看是否数据同步,-c参数表示以集群方式连接
./redis-cli -h 192.168.0.49 -p 7006 -c
- 设置redis开机自启动
先写个启动redis节点的脚本nodes-start.sh
#!/bin/bash
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7005/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7006/redis.conf
- 写入系统任务
vim /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/nodes-start.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重载系统服务:systemctl daemon-reload
设置开机自启 systemctl enable redis