使用Docker進(jìn)行Redis主從復(fù)制實(shí)踐

一、背景

最近在做零信任安全網(wǎng)關(guān)嘶窄,需要使用Redis作為認(rèn)證緩存服務(wù)器哭廉,因?yàn)榫W(wǎng)關(guān)服務(wù)器分布在多個集群脊僚,每次都跨機(jī)房認(rèn)證不太實(shí)現(xiàn);所以需要使用Redis主從同步遵绰,將過程記錄下來辽幌,希望可以給需要的同學(xué)一點(diǎn)參考。

二椿访、操作步驟

  1. 安裝Docker
  2. 主服務(wù)配置
  3. 從服務(wù)配置
  4. 驗(yàn)證同步效果

三乌企、安裝Docker

本篇文章主要是問了記錄主從配置的過程,因此我采用最簡單的docker方式來搭建Redis服務(wù)成玫,安裝docker的命令如下所示

curl -sSL https://get.daocloud.io/docker | sh

命令執(zhí)行完成之后加酵,可以看到如下圖所示界面


image

在上圖中可以看到docker的一些相關(guān)信息,我們要確認(rèn)docker安裝是否成功還可以使用docker info命令進(jìn)行查看哭当,執(zhí)行命令如下所示

docker info 

命令執(zhí)行之后猪腕,返回信息如下圖所示

image

在上圖中可以看到docker的版本信息為20.10.3,這是目前的最新版本,已經(jīng)確認(rèn)安裝成功無誤钦勘。

四陋葡、主服務(wù)配置

接下來我需要使用docker安裝Redis服務(wù),我在實(shí)踐過程中發(fā)現(xiàn)直接使用Redis鏡像有些異常彻采,于是使用centos鏡像腐缤,再在容器里安裝Redis朵栖,運(yùn)行容器的命令如下所示

docker run -d -it -p 16379:6379  --name  redis_master  centos:7

命令執(zhí)行完畢之后再進(jìn)入該容器,進(jìn)入容器的命令如下所示

docker exec -it redis_master  bash

命令執(zhí)行完畢后柴梆,返回的信息如下圖所示


image

在上圖中可以看到已經(jīng)成功的進(jìn)入到了容器里面陨溅,接下來我需要在容器里安裝Redis,安裝Redis的命令如下所示

yum install -y epel-release  && yum install -y redis

命令執(zhí)行完畢之后,返回的信息如下圖所示


image

從上圖中可以看到绍在,Redis已經(jīng)安裝完成门扇,接下來需要新建一個Redis的主庫配置文件,執(zhí)行命令如下所示

vi  ~/master.conf

配置文件如下所示偿渡,將下列配置文件復(fù)制并粘貼到vi編輯窗口當(dāng)中臼寄。

#bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
unixsocket /tmp/redis_auth.sock
unixsocketperm 777
timeout 0
tcp-keepalive 300
daemonize yes
supervised auto
pidfile /var/run/redis_auth.pid
loglevel debug
logfile /tmp/redis_auth.log
databases 16
save ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
requirepass 123123123
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "funfe.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 512mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
hz 10
aof-rewrite-incremental-fsync yes

在vi編輯窗口粘貼后吉拳,如下圖所示


image

粘貼完成并檢查無誤之后适揉,使用:wq!命令進(jìn)行保存留攒,接著就可以啟動Redis程序,啟動的命令如下所示

redis-server `/redis.conf

在上方的啟動命令中需要指定配置文件路徑嫉嘀,如下圖所示


image

在上圖中可以看到Redis服務(wù)已經(jīng)啟動完成剪侮。

五拭宁、從服務(wù)配置

接下來我需要再次啟動一個Redis從庫服務(wù)器,運(yùn)行容器的命令如下所示

docker run -d -it -p 26379:6379  --name  redis_slave  centos:7

在上方的命令中瓣俯,因?yàn)樵谕慌_主機(jī)杰标,為了不和主庫端口產(chǎn)生沖突彩匕,我將主機(jī)端口26379,啟動完成之后就可以進(jìn)入從庫容器,運(yùn)行的命令如下所示

docker exec -it redis_slave  bash

命令執(zhí)行完畢后桶蝎,同樣需要新建一個Redis的配置文件谅畅,運(yùn)行的命令如下所示

vi ~/redis.conf

在配置文件中,需要加入從庫的配置代碼毡泻,配置樣例如下所示

bind 127.0.0.1
protected-mode yes
port 6379
tcp-backlog 511
unixsocket /tmp/redis_auth.sock
unixsocketperm 777
timeout 0
tcp-keepalive 300
daemonize yes
supervised auto
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /tmp/redis.log
databases 16
save ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slaveof 172.23.193.148 16379
masterauth 123123123
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "funfe.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 512mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
hz 10
aof-rewrite-incremental-fsync yes

將配置樣例復(fù)制進(jìn)來之后,窗口如下所示


image

粘貼完成并檢查無誤之后雹顺,使用:wq!命令進(jìn)行保存廊遍,接著就可以啟動Redis程序喉前,啟動的命令如下所示

接著安裝Redis服務(wù),安裝命令如下所示

yum install -y epel-release  && yum install -y redis

命令執(zhí)行完畢之后卵迂,返回的信息如下圖所示

image

在上圖中可以看到從庫的Redis也安裝完成了见咒,接下來使用redis-server命令啟動從庫服務(wù)器,命令如下圖所示

redis-server redis.conf

命令執(zhí)行完畢之后改览,返回的信息如下圖所示


image

在上圖中可以看到Redis已經(jīng)啟動完成恃疯,接下來就可以進(jìn)行驗(yàn)證效果了

六、結(jié)果驗(yàn)證

驗(yàn)證方法主要是在主庫中設(shè)置數(shù)據(jù),觀察從庫是否也會同步更新鸳碧;

6.1 初步驗(yàn)證

不過這種操作有點(diǎn)麻煩,我們最好是先檢查一下從庫的啟動日志腾仅,查看啟動日志的命令如下所示

cat /tmp/redis.log

命令執(zhí)行完畢之后套利,會返回Redis的日志信息,如下圖所示


image

在上圖中的日志信息可以看到從庫已經(jīng)成功將主庫信息復(fù)制到本地來了验辞。

6.2 同步檢查

雖然日志中提示成功了喊衫,不過是否成功主從同步還是要以實(shí)際效果為準(zhǔn),這里我回到主服務(wù)器的終端窗口壳贪,然后進(jìn)入redis的命令控制臺,進(jìn)入控制臺的命令如下所示

redis-cli -a 123123123

命令執(zhí)行之后互纯,就可以進(jìn)行redis命令操作了磕蒲,這里我設(shè)置一個test123123的鍵值對,設(shè)置命令如下所示

set  test  123123

命令執(zhí)行完畢之后愤兵,返回的信息如下圖所示


image

在上圖中可以看到Redis已經(jīng)提示設(shè)置鍵值對成功了排吴,接下來我繼續(xù)回到從庫的終端窗口钻哩,然后進(jìn)入Redis的控制臺,執(zhí)行命令如下所示

redis-cli -a 123123123

命令執(zhí)行完畢之后街氢,就可以通過keys命令查看當(dāng)前從庫的鍵值對珊肃,命令如下所示

keys *

命令執(zhí)行完畢之后,返回的信息如下圖所示

image

在上圖中可以看到test這個數(shù)據(jù)已經(jīng)成功復(fù)制過來了厉亏。


作者:湯青松

微信:songboy8888

日期:2021-04-11

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烈和,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恬试,更是在濱河造成了極大的恐慌疯暑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦粮,死亡現(xiàn)場離奇詭異,居然都是意外死亡预麸,警方通過查閱死者的電腦和手機(jī)儒将,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門钩蚊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砰逻,你說我怎么就攤上這事∮欢” “怎么了刚操?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵菊霜,是天一觀的道長。 經(jīng)常有香客問我鉴逞,道長,這世上最難降的妖魔是什么辙纬? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蓖谢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啥辨。我一直安慰自己盯腌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布级乍。 她就那樣靜靜地躺著,像睡著了一般甚淡。 火紅的嫁衣襯著肌膚如雪捅厂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天撵割,我揣著相機(jī)與錄音辙芍,去河邊找鬼。 笑死外遇,一個胖子當(dāng)著我的面吹牛契吉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捐晶,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼惑灵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佩憾?” 一聲冷哼從身側(cè)響起干花,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抡驼,沒想到半個月后肿仑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碎税,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馏锡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年眷篇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虐杯。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡昧港,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出达舒,到底是詐尸還是另有隱情叹侄,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布贯底,位于F島的核電站撒强,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胚想。R本人自食惡果不足惜芽隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臼闻。 院中可真熱鬧囤采,春花似錦惩淳、人聲如沸乓搬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽江掩。三九已至乘瓤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抬吟,已是汗流浹背统抬。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钙畔,地道東北人金麸。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像叔锐,于是被迫代替她去往敵國和親见秽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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