docker搭建redis主從復(fù)制

1、什么是主從復(fù)制余黎?

就是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù)颖侄,復(fù)制到其他的Redis服務(wù)器鸟雏。前者稱為主節(jié)點(diǎn)(master),后者稱為從節(jié)點(diǎn)(slave),數(shù)據(jù)的復(fù)制是單向的览祖,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)孝鹊。默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn)展蒂,且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒(méi)有從節(jié)點(diǎn))又活,但一個(gè)從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)苔咪。簡(jiǎn)單的說(shuō)就是主機(jī)數(shù)據(jù)更新后根據(jù)配置和策略, 自動(dòng)同步到備機(jī)的master/slaver機(jī)制柳骄,Master以寫(xiě)為主团赏,Slave以讀為主

主從復(fù)制

2耐薯、主從復(fù)制有什么作用舔清?
  1. 數(shù)據(jù)冗余:主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式曲初。
  2. 故障恢復(fù):當(dāng)主節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)体谒,可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù)臼婆;實(shí)際上是一種服務(wù)的冗余营密。簡(jiǎn)單的說(shuō)就是主服務(wù)器掛掉了,從服務(wù)器頂上去目锭。
  3. 負(fù)載均衡:在主從復(fù)制的基礎(chǔ)上评汰,配合讀寫(xiě)分離,可以由主節(jié)點(diǎn)提供寫(xiě)服務(wù)痢虹,由從節(jié)點(diǎn)提供讀服務(wù)(即寫(xiě)Redis數(shù)據(jù)時(shí)應(yīng)用連接主節(jié)點(diǎn)被去,讀Redis數(shù)據(jù)時(shí)應(yīng)用連接從節(jié)點(diǎn)),分擔(dān)服務(wù)器負(fù)載奖唯;尤其是在寫(xiě)少讀多的場(chǎng)景下惨缆,通過(guò)多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載,可以大大提高Redis服務(wù)器的并發(fā)量丰捷。
3坯墨、配置容器自定義網(wǎng)絡(luò)
  • docker netwoek ls 可以看到 docker 有三種網(wǎng)絡(luò)類型:bridge(橋接網(wǎng)絡(luò))、host(主機(jī)網(wǎng)路)病往、none(無(wú)指定網(wǎng)絡(luò))捣染。
  • 為什么要配置容器自定義網(wǎng)絡(luò)呢?因?yàn)槲矣玫氖莇ocker部署停巷,如果不自定義耍攘,容器重啟之后網(wǎng)絡(luò)IP就會(huì)發(fā)生變化,會(huì)導(dǎo)致構(gòu)建的主從配置失效畔勤,所以我們需要自定義網(wǎng)絡(luò)蕾各。
  • 自定義網(wǎng)絡(luò),下面為創(chuàng)建自定義網(wǎng)絡(luò)的過(guò)程


    自定義網(wǎng)絡(luò)
4庆揪、配置redis.conf文件
  • 首先是獲取docker鏡像式曲,docker pull redis:6.0.10,然后需要到這里獲取對(duì)應(yīng)版本的redid.conf缸榛。
  • 修改默認(rèn)redis.conf配置文件:
1吝羞、bind 0.0.0.0 //修改為允許所有的ip都能訪問(wèn)始鱼,默認(rèn)是:127.0.0.1 因?yàn)槲覀円鞴?jié)點(diǎn)和從節(jié)點(diǎn)不是同一個(gè)ip。
2脆贵、proctected-mode no //默認(rèn)yes医清,開(kāi)啟保護(hù)模式,這里便于測(cè)試不設(shè)密碼卖氨,生產(chǎn)就必須為yes会烙。
3、daemonize no //默認(rèn)no筒捺,改為yes意為以守護(hù)進(jìn)程方式啟動(dòng)柏腻,可后臺(tái)運(yùn)行,除非kill進(jìn)程(可選)系吭,改為yes會(huì)使以配置文件方式啟動(dòng)redis失敗五嫂。
4、dir ./ //輸入本地redis數(shù)據(jù)庫(kù)存放文件夾(可選)肯尺。
5沃缘、appendonly yes //redis持久化(可選)。
5则吟、啟動(dòng)容器

前提:將master下的redis.conf文件復(fù)制一份給從節(jié)點(diǎn)使用槐臀,如果你在同一個(gè)主機(jī)本地中運(yùn)行,必改的標(biāo)簽為:pidfile氓仲、port水慨、dbfilename,因?yàn)槲疫@里docker運(yùn)行敬扛,所以可不修改晰洒。

// master主節(jié)點(diǎn)
docker run -d --name redis-master --net redis-network --ip 172.50.0.2 -p 6379:6379 -v /home/gavin/qxf/redis-docker/master/conf/redis.conf:/etc/redis/redis.conf -v /home/gavin/qxf/redis-docker/master/data/:/data redis:6.0.10 redis-server /etc/redis/redis.conf --appendonly yes

// 從節(jié)點(diǎn)
docker run -d --name redis-slave1 --net redis-network --ip 172.50.0.3 -p 6380:6379 -v /home/gavin/qxf/redis-docker/slave1/conf/redis.conf:/etc/redis/redis.conf -v /home/gavin/qxf/redis-docker/slave1/data/:/data redis:6.0.10 redis-server /etc/redis/redis.conf --appendonly yes
說(shuō)明:
  • --name redis-master:容器名。
  • --net redis-network:自定義網(wǎng)絡(luò)啥箭。
  • --ip 172.50.0.2:ip地址谍珊。
  • -p 6379:6379:端口映射。
  • -v /home/gavin/qxf/redis-docker/master/conf/redis.conf:/etc/redis/redis.conf:把宿主機(jī)配置好的redis.conf放到容器內(nèi)部的這個(gè)位置中 捉蚤。
  • -v /home/gavin/qxf/redis-docker/master/data/:/data:把redis持久化的數(shù)據(jù)在宿主機(jī)內(nèi)顯示抬驴,做數(shù)據(jù)備份。
  • redis:6.0.10:鏡像名缆巧。
  • redis-server /etc/redis/redis.conf:讓redis不是無(wú)配置啟動(dòng),而是按照容器內(nèi)部的這個(gè)redis.conf的配置啟動(dòng)豌拙。
  • –appendonly yes:redis啟動(dòng)后數(shù)據(jù)持久化陕悬。
6、主從配置

上述中啟動(dòng)了2個(gè)redis的實(shí)列按傅,進(jìn)入容器后用redis-cli 登錄redis可以使用 info replication查看主從信息胧卤,發(fā)現(xiàn)所有的redis,role都為master拼岳。

image.png

使用slaveof [ip] [port]:
  1. 直接登錄redis,執(zhí)行 slaveof [master-ip] [master-port]惜纸,如:slaveof 172.50.0.2 6379叶撒,這種方式如果容器停止后會(huì)失效。
  2. slaveof [master-ip] [master-port]寫(xiě)入 redis.conf文件中使其永久生效耐版。

經(jīng)過(guò)如上操作后,如下所示就說(shuō)明成功了古瓤,可以進(jìn)行測(cè)試了


image.png

說(shuō)明:這里兩個(gè)容器的端口都為6379,是因?yàn)閐ocker容器之間都是隔離的所以不影響腺阳。

容器名稱                容器IP地址           映射端口號(hào)              服務(wù)運(yùn)行模式
redis-master           172.50.0.2         6379 -> 6379              master
redis-slave1           172.50.0.3         6380 -> 6379              slave1
redis-slave1           172.50.0.4         6381 -> 6379              slave2
7落君、測(cè)試
簡(jiǎn)單測(cè)試

從上看出slave執(zhí)行 set k v 命令會(huì)出錯(cuò),因?yàn)閺墓?jié)點(diǎn)只允許讀叽奥,不能寫(xiě)痛侍。

總結(jié)下步驟:
  1. docker安裝好并拉去redis鏡像。
  2. 配置docker的自定義網(wǎng)絡(luò)主届。
  3. 獲取redis.conf文件,并按上述第四點(diǎn)配置redis.conf文件后枫夺,然后放入掛載點(diǎn)即可。
  4. 啟動(dòng)主從節(jié)點(diǎn)redis容器橡庞,命令按上述印蔗。
  5. 使用slaveof [master-ip] [master-port]配置主從節(jié)點(diǎn)。
  6. 使用info replication 查看主從情況华嘹,最后測(cè)試。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末强挫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呆细,更是在濱河造成了極大的恐慌八匠,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臀叙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡渊涝,警方通過(guò)查閱死者的電腦和手機(jī)床嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鳖谈,“玉大人阔涉,你說(shuō)我怎么就攤上這事缆娃。” “怎么了贯要?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵椭住,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我宅广,道長(zhǎng)些举,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任兽肤,我火速辦了婚禮绪抛,結(jié)果婚禮上资铡,老公的妹妹穿的比我還像新娘幢码。我一直安慰自己,他們只是感情好店雅,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布贞铣。 她就那樣靜靜地躺著,像睡著了一般窍奋。 火紅的嫁衣襯著肌膚如雪酱畅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天窖逗,我揣著相機(jī)與錄音餐蔬,去河邊找鬼。 笑死樊诺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痴鳄。 我是一名探鬼主播缸夹,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼橡类!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起顾画,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谱邪,沒(méi)想到半個(gè)月后庶诡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扯俱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年喇澡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片读存。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窜醉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榨惰,到底是詐尸還是另有隱情,我是刑警寧澤居凶,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布藤抡,位于F島的核電站,受9級(jí)特大地震影響缠黍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜替饿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一贸典、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊驼,春花似錦惋砂、人聲如沸绳锅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庸队。三九已至,卻和暖如春竿拆,著一層夾襖步出監(jiān)牢的瞬間宾尚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工煌贴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怠肋。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓淹朋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親础芍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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