操作步骤
记录在两台虚拟机(版本:CentOS7)上搭建Redis集群(Redis版本:redis-5.0.4),过程如下:
1、下载安装
首先在一台虚拟机A(IP:192.168.1.103)上新建目录redis,接着进入该目录下,下载redis-5.0.4,然后解压,进入解压目录下,编译并安装redis,虚拟机B(IP:192.168.1.104)上同理
mkdir redis
cd redis/
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zxvf redis-5.0.4.tar.gz
cd redis-5.0.4/
make && make install
2、配置节点
在虚拟机A的redis目录下创建redis_cluster目录,接着在redis_cluster目录下创建7000、7001、7002三个节点目录,并且复制redis-5.0.4目录下的配置文件redis.conf到7000、7001、7002三个节点目录下
mkdir redis_cluster
cd redis_cluster/
mkdir 7000 7001 7002
cp ../redis-5.0.4/redis.conf 7000
cp ../redis-5.0.4/redis.conf 7001
cp ../redis-5.0.4/redis.conf 7002
然后分别修改三个节点目录下的redis.conf配置文件,如修改7000目录下redis.conf如下,其他两个同理:
bind 192.168.1.103 // 绑定本机IP
port 7000 // 指定端口
daemonize yes // 后台运行
pidfile /root/data/redis/redis_cluster/7000/redis_7000.pid // pid文件
cluster-enabled yes // 开启集群
cluster-config-file nodes_7000.conf // 集群配置文件,集群启动后生成
appendonly yes // 开启日志
同样在虚拟机B上的redis目录下创建7003、7004、7005三个节点目录,复制并且修改redis.conf配置文件(也可以scp整个redis_cluster目录到虚拟机B的redis目录下,再修改目录名以及配置文件)。
3、启动
在虚拟机A上的redis_cluster下新建且编写start-all.sh启动脚本,如下:
../redis-5.0.4/src/redis-server 7000/redis.conf
../redis-5.0.4/src/redis-server 7001/redis.conf
../redis-5.0.4/src/redis-server 7002/redis.conf
echo 'start'
新建且编写stop-all.sh停止脚本,如下:
#!/bin/bash
PORT=7000
ENDPORT=7003
while [ $((PORT < ENDPORT)) != "0" ]; do
echo "Stopping Redis $PORT"
../redis-5.0.4/src/redis-cli -h 192.168.1.103 -p $PORT shutdown
PORT=$((PORT+1))
done
echo "done"
exit 0
把脚本复制到虚拟机B上,并且要用vim修改其中的目录、端口以及IP,如下:
scp -r *.sh 192.168.1.104:/root/data/redis/redis_cluster
为脚本添加可执行权限,并且启动,如下:
chmod +x *.sh
./start-all.sh
4、创建集群命令,一共6个节点,三主三从
../redis-5.0.4/src/redis-cli --cluster create 192.168.1.103:7000 192.168.1.103:7001 192.168.1.103:7002 192.168.1.104:7003 192.168.1.104:7004 192.168.1.104:7005 --cluster-replicas 1
最后验证集群,虚拟机A上用redis-cli连接192.168.1.104,7004端口,连接上后设置key:test,value:done,如下:
redis-cli -c -h 192.168.1.104 -p 7004
192.168.1.104:7004> set test done
-> Redirected to slot [6918] located at 192.168.1.104:7003
OK
接着虚拟机B上用redis-cli连接192.168.1.103,7001端口,连接上后获取test的值,输出done,证明集群成功,如下:
[root@localhost src]# redis-cli -c -h 192.168.1.103 -p 7001
192.168.1.103:7001> get test
-> Redirected to slot [6918] located at 192.168.1.104:7003
"done"