配置redisCluster集群
原创
©著作权归作者所有:来自51CTO博客作者qq59caeb714a7a4的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.安装Redis镜像
docker pull yyyyttttwwww/redis
2.创建net2网段
docker network create --subnet=172.19.0.0/16 net2
3创建1个节点Redis容器
#redis镜像改名:
docker tag docker.io/yyyyttttwwww/redis redis
#删除旧的redis
docker rmi docker.io/yyyyttttwwww/redis
#创建6个redis容器
docker run -it -d --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash
docker run -it -d --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis bash
docker run -it -d --name r6 -p 5006:6379 --net=net2 --ip 172.19.0.7 redis bash
4.分别修改每个redis容器的配置文件,使得集群功能开启,如下是修改r1 这个容器,其他容器修改方式同理,虽然这种方式不是很快捷,重复性劳动比较多, 如果redis的个数是成百的,那么会很不方便,这里先暂且以满足目标为导向,暂不考虑效率问题
docker exec -it r1 sh
vi /usr/redis/redis.conf
修改:daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
注意还要修改bind ,bind对应你docker run时的指定ip ,每个redis集群的ip都不一样,比如我其中一个redis ip是172.19.0.2 ,那么我就要将bind 修改为172.19.0.2,如下:
cd /usr/redis/src
./redis-server ../redis.conf
#这里我把对各个redis的操作命令整理,方便快速搭建
#进入r1节点
docker exec -it r1 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
#进入r2节点
docker exec -it r2 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
#进入r3节点
docker exec -it r3 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
#进入r4节点
docker exec -it r4 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
#进入r5节点
docker exec -it r5 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
#进入r6节点
docker exec -it r6 bash
vi /usr/redis/redis.conf #修改redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
ps -ef | grep redis #检查启动是否是正确的ip
5.使用redis-trib.rb构建redis 集群
docker exec -it r1 sh
cd /usr/redis
mkdir cluster
cp /usr/redis/src/redis-trib.rb /usr/redis/cluster
cd /usr/redis/cluster
#创建ruby环境
gem #测试是否有ruby环境,我的redis镜像默认是拥有ruby的环境,如果有,则直接进入#创建Cluster集群
apk add ruby
apk add rubygems
gem install redis
#检查测试
ps -ef| grep redis
root 65 0 0 06:54 ? 00:00:00 ./redis-server 172.19.0.2:6379 [cluster]
#显示172.19.0.2:6379,而不是127.0.0.1:6379代表成功
#创建Cluster集群
cd /usr/redis/cluster
./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
6.测试redis 的高可用性,高性能
/usr/redis/src/redis-cli -c -h 172.19.0.2 # -c代表以集群方式启动 ,注意要加上-h指定是哪个ip
set a 10
测试结果显示正常!!!