基于docker的redis集群搭建

redis 集群搭建

redis集群搭建包含兩個主要步驟:一是搭建若干單節(jié)點redis服務(wù)器什猖,二是啟動集群控制進程。集群模式至少需要6個節(jié)點(3master尝抖、3slave)

單節(jié)點搭建

1滑肉、下載安裝包并解壓:tar -zxvf /redis-3.2.1.tar.gz
2栏尚、編譯安裝:make && make install

  • 配置
    redis.conf

daemonize yes
pidfile /var/run/redis_7001.pid
logfile "/home/appadmin/redis/dev/7001.log"
port 7001
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 5000
appendonly yes

  • 啟動
    最好每個實例建立獨立的文件夾,用來保存數(shù)據(jù)球昨、配置隙轻、集群管理等信息

redis-server redis.conf

集群搭建

redis有多種集群方案,這里只關(guān)注官方redis cluster集群方案瞳购,不考慮其它如sentinel话侄、codis等第三方集群方案。

安裝

1、安裝ruby和ruby-gem年堆,高版本ruby自帶gem

  • yum 安裝:yum install ruby
  • 下載二進制包安裝吞杭,類似redis
    2、安裝ruby的redis接口
  • 下載離線包:redis-3.3.0.gem
  • 離線安裝:gem install --local /home/appadmin/redis-3.3.0.gem

啟動

./redis-trib.rb create --replicas 1 168.61.9.154:6001 168.61.9.154:6002 168.61.9.154:6003 168.61.9.154:6004 168.61.9.154:6005 168.61.9.154:6006

一個基于docker 的集群搭建實例

redis節(jié)點部署

  • 拉取官方鏡像包
  • 提供獨立配置文件 redis.conf

daemonize yes
pidfile /var/run/redis_7001.pid
logfile "/home/appadmin/redis/dev/7001.log"
port 7001
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 5000
appendonly yes

根據(jù)實踐变丧,daemonize 應(yīng)設(shè)置為no芽狗,否則無法容器啟動,具體見:
https://segmentfault.com/q/1010000008272753

  • 啟動

docker run -p 6003:6379 -v /home/appadmin/redis/test:/data -d redis:3.2 redis-server --appendonly yes --cluster-enabled yes

可以加載外置文件痒蓬,如下:

docker run -p 6001:6001 --net=host -v /home/appadmin/redis/test/6001:/data -d redis:3.2 redis-server /data/redis.conf

以上為針對集群的配置方式童擎,docker采用host網(wǎng)絡(luò)方式,端口不能重復(fù)

集群搭建

前提:已安裝docker并下載redis官方鏡像
1攻晒、redis.conf

logfile "/data/redis.log"
port 6379
cluster-enabled yes
cluster-config-file /data/nodes.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no

2顾复、多節(jié)點啟動腳本:run.sh

#!/bin/bash
#清理
docker ps -a | grep "redis" | awk '{print $1 }'|xargs docker stop
rm -rf 600*
#創(chuàng)建目錄
mkdir 6001
mkdir 6002
mkdir 6003
mkdir 6004
mkdir 6005
mkdir 6006
#配置文件
cp redis.conf 6001/
cp redis.conf 6002/
cp redis.conf 6003/
cp redis.conf 6004/
cp redis.conf 6005/
cp redis.conf 6006/
sed -i "s/6379/6001/g" 6001/redis.conf
sed -i "s/6379/6002/g" 6002/redis.conf
sed -i "s/6379/6003/g" 6003/redis.conf
sed -i "s/6379/6004/g" 6004/redis.conf
sed -i "s/6379/6005/g" 6005/redis.conf
sed -i "s/6379/6006/g" 6006/redis.conf
#啟動
docker run -p 6001:6001 --net=host -v /home/appadmin/redis/test/6001:/data -d redis:3.2 redis-server /data/redis.conf
docker run -p 6002:6002 --net=host -v /home/appadmin/redis/test/6002:/data -d redis:3.2 redis-server /data/redis.conf
docker run -p 6003:6003 --net=host -v /home/appadmin/redis/test/6003:/data -d redis:3.2 redis-server /data/redis.conf
docker run -p 6004:6004 --net=host -v /home/appadmin/redis/test/6004:/data -d redis:3.2 redis-server /data/redis.conf
docker run -p 6005:6005 --net=host -v /home/appadmin/redis/test/6005:/data -d redis:3.2 redis-server /data/redis.conf
docker run -p 6006:6006 --net=host -v /home/appadmin/redis/test/6006:/data -d redis:3.2 redis-server /data/redis.conf

3、啟動集群

./redis-trib.rb create --replicas 1 168.61.9.154:6001 168.61.9.154:6002 168.61.9.154:6003 168.61.9.154:6004 168.61.9.154:6005 168.61.9.154:6006

客戶端

1鲁捏、客戶端管理軟件
2芯砸、redis-cli -c -p 7000
3、jedis

參考

redis集群搭建: http://www.cnblogs.com/yuanermen/p/5717885.html
基于docker搭建redis集群(有問題给梅,直接用host模式):http://www.cnblogs.com/wozijisun/p/6043511.html
集群管理:http://blog.csdn.net/cuiy6642/article/details/50924722
redis集群教程:http://www.cnblogs.com/li-peng/p/6143709.html

注意點:

  • 集群模式啟動需要對redis配置進行調(diào)整:
    允許外部主機訪問:protected-mode no
    #bind 127.0.0.1
  • 集群啟動失敗會導(dǎo)致數(shù)據(jù)殘留假丧,需要手動清理
  • 配置完所有主節(jié)點后,報" ERR Invalid node address specified"
    由于Redis-trib.rb 對域名或主機名支持不好,故在創(chuàng)建集群的時候要使用ip:port的方式
    redis-trib.rb create ip1:port1 ip2:port2 ip3:port3
  • 創(chuàng)建集群時報某個err slot 0 is already busy (redis::commanderror)
    這是由于之間創(chuàng)建集群沒有成功,需要將nodes.conf和dir里面的文件全部刪除(注意不要刪除了redis.conf)
  • 創(chuàng)建集群時一直處于"Waiting for the cluster to join...................................."的狀態(tài)
    這個問題原因不知,但解決方法是在redis.conf文件中把bind 127.0.0.1本地環(huán)回口改為物理接口.
  • 安裝ruby redis時長時間沒響應(yīng)
    這是由于天朝網(wǎng)絡(luò),解決辦法是改ruby源(請自行baidu)或手動安裝
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市动羽,隨后出現(xiàn)的幾起案子包帚,更是在濱河造成了極大的恐慌,老刑警劉巖运吓,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渴邦,死亡現(xiàn)場離奇詭異,居然都是意外死亡羽德,警方通過查閱死者的電腦和手機几莽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宅静,“玉大人章蚣,你說我怎么就攤上這事∫碳校” “怎么了纤垂?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長磷账。 經(jīng)常有香客問我峭沦,道長,這世上最難降的妖魔是什么逃糟? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任吼鱼,我火速辦了婚禮蓬豁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菇肃。我一直安慰自己地粪,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布琐谤。 她就那樣靜靜地躺著蟆技,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斗忌。 梳的紋絲不亂的頭發(fā)上质礼,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音织阳,去河邊找鬼眶蕉。 笑死,一個胖子當著我的面吹牛陈哑,可吹牛的內(nèi)容都是我干的妻坝。 我是一名探鬼主播伸眶,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼惊窖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厘贼?” 一聲冷哼從身側(cè)響起界酒,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘴秸,沒想到半個月后毁欣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡岳掐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年凭疮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片串述。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡执解,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纲酗,到底是詐尸還是另有隱情衰腌,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布觅赊,位于F島的核電站右蕊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吮螺。R本人自食惡果不足惜饶囚,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一帕翻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萝风,春花似錦熊咽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卿拴,卻和暖如春衫仑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背堕花。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工文狱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缘挽。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓瞄崇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壕曼。 傳聞我的和親對象是個殘疾皇子苏研,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容