Docker搭建Redis集群

Redis目前集群的方案分为以下几种:

1、RedisCluster:官方推荐,没有中心节点(比如集群这种一些点挂掉了,剩余节点如果超过半数,就需要选举出来一个主节点,其他的节点和这个节点进行同步数据,同步数据之后,然后主节点自动消失,集群里面就没有主节点了。解释:主节点是最新的,保存的数据最多)
2、Codis:中间产品,存在中心节点,(中心节点挂掉了整个集群就不能使用了)
3、Twemproxy:中间件产品,存在中心节点

根据以上对比,目前采用RedisCluster搭建集群,在他的集群里每个节点都是可读可写的,和PXC集群一样(MYsql集群),在这里有一个需要注意的地方:

在RedisCluster集群里,数据可以被分片存储,如果其中有一个节点挂掉,那么我们就会失去这个节点的数据,解决这个问题的办法是我们采用主从复制机制,给每个节点创建一个从节点,如果主接点挂掉,那么从节点会接替主节点的工作,防止数据丢失,因为主从节点的数据是同步的。·(在创建Redis集群,应该包含奇数个主节点,原因都是有选举的过程,超过一半才会选举)

安装Redis

dicker pull yyyyttttwwww/redis
//创建容器
docker run -it -d --name redis_node1 --net=net2 --ip 172.19.0.2 -p 5001:6379 redis
docker run -it -d --name redis_node2 --net=net2 --ip 172.19.0.3 -p 5002:6379 redis
docker run -it -d --name redis_node3 --net=net2 --ip 172.19.0.4 -p 5003:6379 redis
docker run -it -d --name redis_node4 --net=net2 --ip 172.19.0.5 -p 5004:6379 redis
docker run -it -d --name redis_node5 --net=net2 --ip 172.19.0.6 -p 5005:6379 redis
docker run -it -d --name redis_node6 --net=net2 --ip 172.19.0.7 -p 5006:6379 redis

第二步:修改Redis的配置文件

docker exec -it redis_node1 /bin/bash

//修改关键参数:
vim /usr/redis/redis.conf
daemonize   yes   #以后台运行的方式
cluster-enabled  yes #开启集群
cluster-config-file  nodes.conf   #集群配置文件
cluster-node-timeout   15000   #超时时间
appendonly yes  #开启日志功能

第三步:启动Redis

cd /usr/redis/src
./redis-server ../redis.conf

其他的节点启动方式类似,只是节点名称不同。
第四步:安装redis-trib.rb(创建集群的工具)要安装ruby环境

cp /usr/redis/src/redis-trib.rb /usr/src/cluster/
cd /usr/src/cluster/
apt-get install ruby
apt-get install rubygems
gem install redis

第五步:开始创建集群

cd /usr/src/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

注意:

--replicas 1 参数表示为每个主节点创建一个从节点

这样就成功创建了一个Redis集群。

你可能感兴趣的:(Docker搭建Redis集群)