需要两台虚拟机,这里分别是
192.168.1.57 redis-1
192.168.1.56 redis-2
引言
redis集群模式采用主从模式,3主3从,我们在redis-1上安装3个节点,在redis-2上安装3个节点,从节点是主节点的备份节点,但不具有强一致性。至于为什么需要3主,是因为redis采用hash槽的方式进行数据分片,具体原理可以去看书。另外,这里的redis采用github上的最新版。
1.下载源码
分别在redis-1和redis-2上执行
cd /usr/local
sudo git clone https://github.com/antirez/redis.git
2.编译Redis源码
分别在redis-1和redis-2上执行
cd redis
make && make install
在构建Redis之后,最好使用以下方法对其进行测试:
#分别在redis-1和redis-2上执行
make test
3.配置redis.conf
在redis-1虚拟机上
mkdir redis-cluster
mkdir redis-cluster/7000
mkdir redis-cluster/7001
mkdir redis-cluster/7002
cp redis.conf redis-cluster/7000
cp redis.conf redis-cluster/7001
cp redis.conf redis-cluster/7002
在redis-2虚拟机上
mkdir redis-cluster
mkdir redis-cluster/7003
mkdir redis-cluster/7004
mkdir redis-cluster/7005
cp redis.conf redis-cluster/7003
cp redis.conf redis-cluster/7004
cp redis.conf redis-cluster/7005
为每个节点修改redis.conf文件
#端口7000,7001,7002
port 7000
#默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
bind 本机ip
#redis后台运行
daemonize yes
#pidfile文件7000,7001,7002
pidfile /var/run/redis_7000.pid
#开启集群 把注释#去掉
cluster-enabled yes
#集群的配置 配置文件首次启动自动生成7000,7001,7002
cluster-config-file nodes_7000.conf
#请求超时 默认15秒,可自行设置
cluster-node-timeout 15000
#aof日志开启,每次写操作都记录一条日志
appendonly yes
#配置redis服务器密码,不配的话jedis连接集群模式会报错
requirepass 123
4.启动redis各个节点
在redis-1上执行
cp /usr/local/redis/src/redis-server /usr/local/redis/redis_cluster
cd /usr/local/redis/redis_cluster
./redis-server 7000/redis.conf
./redis-server 7001/redis.conf
./redis-server 7002/redis.conf
在redis-2上执行
cp /usr/local/redis/src/redis-server /usr/local/redis/redis_cluster
cd /usr/local/redis/redis_cluster
./redis-server 7003/redis.conf
./redis-server 7004/redis.conf
./redis-server 7005/redis.conf
5.检查 redis 节点启动情况
分别在redis-1和redis-2上执行
ps -ef | grep redis
netstat -tnlp | grep redis
6.创建redis集群
在redis-1上执行
redis-cli --cluster create 192.168.1.57:7000 192.168.1.57:7001 192.168.1.57:7002 192.168.1.56:7003 192.168.1.56:7004 192.168.1.56:7005 --cluster-replicas 1 -a 123
输入 yes 即可,然后出现如下内容,说明安装成功。
7.集群验证
在redis-1上连接集群的7000端口的节点
#加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
redis-cli -h 192.168.1.57 -c -p 7000 -a 123
在redis-2上连接7005节点
redis-cli -h 192.168.1.56 -c -p 7005 -a 123
在7005节点执行命令
set hello world
执行结果如下:
然后在redis-1的7000节点,查看 key 为 hello 的内容
get hello
执行结果如下:
说明集群运作正常。
关闭redis节点的方法为,首先连接redis节点,然后执行SHUTDOWN命令,最后退出。
redis-cli -h 192.168.1.57 -c -p 7000 -a 123
SHUTDOWN
exit
最后,请允许我打波广告,作者开了一个公众号【大数据学堂】,专门分享一些与大数据和人工智能等相关学习资料和面试经验,欢迎您来一起交流学习。