在 redis3.0
以前集群需要借助哨兵 sentinel
,在 3.0
版本正式推出 Redis Cluster
高可用集群模式; Redis Cluster
方案不需要额外部署 Sentinel
(哨兵)集群。
Redis
集群要求至少三个节点,否则不成功。本文采用虚拟机,模拟搭建三主三从集群模式。
虚拟机
IP
分别是192.168.18.139
,192.168.18.140
,192.168.18.141
可以只配置一台虚拟机,其他两台直接用克隆
本文使用192.168.18.139
进行配置
一 安装 redis v5
1. 下载
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2. 解压
tar -zxvf redis-5.0.7.tar.gz
3. 编译安装
将其安装在
/usr/local/redis
目录
cd redis-5.0.7
make
cd src && make PREFIX=/usr/local/redis install
二 配置节点
将节点信息配置在
cluster
目录下, 端口号分别是6378,6379
cd /usr/local/redis
mkdir -p cluster/6378 cluster/6378
1. 修改配置文件
复制
redis.conf
到cluster/6378/
vim cluster/redis.conf
主要修改内容如下:
启用守护线程
1.daemonize yes
同台计器不同节点的端口要不一样
2.port 6378
指定数据目录,必须要指定不同的目录位置,不然会丢失数据
3.dir /usr/local/redis/cluster/6378/
启动集群模式
4.cluster-enabled yes
集群节点信息文件,这里
6378
最好和port
对应上
5.cluster-config-file nodes-6378.conf
去掉bind绑定访问ip信息
6.#bind 127.0.0.1
关闭保护模式
7.protected-mode no
appendonly yes
cluster-node-timeout 5000
如果要设置密码需要增加如下配置
设置redis密码
10.requirepass xxx
设置集群节点间访问密码,跟上面一致
11.masterauth xxx
将 6378
的配置复制到 6379
并将 2,3,5
中的端口号修改为6379
cp cluster/6378/redis.conf cluster/6379/redis.conf
2. 创建启动脚本
vim /usr/local/redis/start-redis-cluster.sh
#!/bin/sh
REDIS_HOME=/usr/local/redis
$REDIS_HOME/bin/redis-server $REDIS_HOME/cluster/6378/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/cluster/6379/redis.conf
:wq
保存
3. 克隆该虚拟机
三 启动集群
1. 创建启动集群脚本
可以在任意一台虚拟机上创建该脚本,本文在
139
上创建
vim /usr/local/redis/create-cluster.sh
#!/bin/sh
bin/redis-cli --cluster create 192.168.18.139:6378 192.168.18.139:6379 192.168.18.140:6378 192.168.18.140:6379 192.168.18.141:6378 192.168.18.141:6379 --cluster-replicas 1
--cluster
:redis 5
提供的参数
--cluster-replicas 1
: 一主一从配置,六个节点就是 三主三从
2. 启动所有的 redis
节点
需要在三个虚拟机上都执行该命令
./start-redis-cluster.sh
2.1 查看是否启动成功
ps -ef | grep redis
3. 创建集群
只需要在一台虚拟机上执行该命令即可
./create-cluster.sh
如出现错误:
[ERR] Node 192.168.18.139:637x is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
删除cluster/637x
下aof、rdb、nodes-637x.conf本地备份文件, 然后再次执行脚本
出现交互 直接输入
yes
接受即可
[OK] All 16384 slots covered
说明集群创建成功
待续…