Redis目前集群的方案分為以下幾種:
1器瘪、RedisCluster:官方推薦株汉,沒有中心節(jié)點(比如集群這種一些點掛掉了败明,剩余節(jié)點如果超過半數(shù),就需要選舉出來一個主節(jié)點野宜,其他的節(jié)點和這個節(jié)點進行同步數(shù)據(jù)扫步,同步數(shù)據(jù)之后,然后主節(jié)點自動消失匈子,集群里面就沒有主節(jié)點了河胎。解釋:主節(jié)點是最新的,保存的數(shù)據(jù)最多)
2虎敦、Codis:中間產(chǎn)品游岳,存在中心節(jié)點,(中心節(jié)點掛掉了整個集群就不能使用了)
3原茅、Twemproxy:中間件產(chǎn)品,存在中心節(jié)點
根據(jù)以上對比堕仔,目前采用RedisCluster搭建集群擂橘,在他的集群里每個節(jié)點都是可讀可寫的,和PXC集群一樣(MYsql集群)摩骨,在這里有一個需要注意的地方:
在RedisCluster集群里通贞,數(shù)據(jù)可以被分片存儲,如果其中有一個節(jié)點掛掉恼五,那么我們就會失去這個節(jié)點的數(shù)據(jù)昌罩,解決這個問題的辦法是我們采用主從復(fù)制機制,給每個節(jié)點創(chuàng)建一個從節(jié)點灾馒,如果主接點掛掉茎用,那么從節(jié)點會接替主節(jié)點的工作,防止數(shù)據(jù)丟失睬罗,因為主從節(jié)點的數(shù)據(jù)是同步的轨功。·(在創(chuàng)建Redis集群容达,應(yīng)該包含奇數(shù)個主節(jié)點古涧,原因都是有選舉的過程,超過一半才會選舉)
安裝Redis
dicker pull yyyyttttwwww/redis
//創(chuàng)建容器
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
//修改關(guān)鍵參數(shù):
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
其他的節(jié)點啟動方式類似花盐,只是節(jié)點名稱不同羡滑。
第四步:安裝redis-trib.rb(創(chuàng)建集群的工具)要安裝ruby環(huán)境
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
第五步:開始創(chuàng)建集群
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 參數(shù)表示為每個主節(jié)點創(chuàng)建一個從節(jié)點
這樣就成功創(chuàng)建了一個Redis集群菇爪。