docker+redis 集群模式

配置文件

修改redis.conf文件。(redis.conf可以从官方的github中下载)

bind 0.0.0.0                              #修改bindip 使其他用户可访问
daemonize no                            #关闭守护进程
requirepass 123456                        #添加密码
masterauth 123456                         #添加主从连接密码
logfile "/var/log/redis/redis-server.log"         #设置日志路径
cluster-enabled yes                          #配置集群相关信息
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

创建docker容器

首先创建6个redis:

docker run -d -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6379 redis redis-server /etc/redis/redis.conf
docker run -d -p 6380:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6380 redis redis-server /etc/redis/redis.conf
docker run -d -p 6381:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6381 redis redis-server /etc/redis/redis.conf
docker run -d -p 6382:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6382 redis redis-server /etc/redis/redis.conf
docker run -d -p 6383:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6383 redis redis-server /etc/redis/redis.conf
docker run -d -p 6384:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf --name redis-6384 redis redis-server /etc/redis/redis.conf

-p 6380:6379端口映射,本地的6380端口映射容器中的6379端口。
-v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf 文件映射,本地/usr/local/docker/redis/redis.conf的文件映射容器中的/etc/redis/redis.conf文件。
--name容器名称,注意不能重复。
redis 镜像名称。
redis-server /etc/redis/redis.confredis容器启动时选择的配置文件。

获取容器的ip地址

docker inspect redis-6379 redis-6380 redis-6381 redis-6382 redis-6383 redis-6384|grep IPA

redis关联

进入其中一个redis-cli中,让其与其他5个redis关联

CLUSTER MEET 172.17.0.3 6379
CLUSTER MEET 172.17.0.4 6379
CLUSTER MEET 172.17.0.5 6379
CLUSTER MEET 172.17.0.6 6379
CLUSTER MEET 172.17.0.7 6379
CLUSTER NODES #查看结果

分配糟信息

执行shell脚本

#!/bin/bash

n=0

for ((i=n;i<=5461;i++))
do
    /usr/bin/redis-cli -h 10.1.254.51 -p 6379 -a 123456 CLUSTER ADDSLOTS $i
done

n=5462

for ((i=n;i<=10922;i++))
do
    /usr/bin/redis-cli -h 10.1.254.51 -p 6380 -a 123456 CLUSTER ADDSLOTS $i
done

n=10923

for ((i=n;i<=16383;i++))
do
    /usr/bin/redis-cli -h 10.1.254.51 -p 6381 -a 123456 CLUSTER ADDSLOTS $i
done

该脚本将redis-6379,redis-6380,redis-6381,设置为主redis.
在redis-cli运行命令CLUSTER INFO,发现第一行cluster_state为ok。
集群搭建完成

高可用

到上面为止,redis集群已经可以用了,但是如果有其中一个redis挂掉就没有备用的启用,所以需要搭建高可用.
CLUSTER NODES查看节点
执行shell脚本

#!/bin/bash

/usr/bin/redis-cli -h 10.1.254.51 -p 6382 -a 123456 CLUSTER REPLICATE 3d501ebfeb0780e57b20efd4b8eb647df9a4c276

/usr/bin/redis-cli -h 10.1.254.51 -p 6383 -a 123456 CLUSTER REPLICATE d11bd089b4ab164040bb9ebaada001cfa078fbf5

/usr/bin/redis-cli -h 10.1.254.51 -p 6384 -a 123456 CLUSTER REPLICATE 3d1161aaab22988bb0700b662315a6a815f8e562

CLUSTER REPLICATE后面的一排字母分别是执行CLUSTER NODES命令后结果的3个主redis前面的字母。
该脚本将后三个redis分别设置为前三个redis的从节点或者可以说备用节点。

测试

测试集群

随便选择一个redis执行set key value,然后去其他redis中执行get key,查看结果.

测试高可用

将3个master的redis全部关了,然后在剩下的3个redis中随便选一个执行get key查看结果.


如果搭建错误那么执行下面的命令把容器全部删了重新搭建吧。

docker kill redis-6379
docker rm redis-6379
docker kill redis-6380
docker rm redis-6380
docker kill redis-6381
docker rm redis-6381
docker kill redis-6382
docker rm redis-6382
docker kill redis-6383
docker rm redis-6383
docker kill redis-6384
docker rm redis-6384
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值