使用兩台linux搭建redis主從復制架構


開頭聲明一下:操作是在兩台虛擬機上的,一台ip:10.19.157.121,主機名:eshop-cache01

另一台ip10.19.157.125,主機名:eshop-cache03#號開頭的都是命令,下面的主機名和ip是可以換使用的。其中eshop-cache01作為主節點,eshop-cache03作為從節點。命令# set nu, 可以在vi編輯模式顯示行號,在vi編輯模式的命令模式下直接輸入行號就可以跳轉到指定行了。

這次的主從復制是在兩台linux上操作的,

下載redis的包,下載地址:http://download.redis.io/releases/redis-3.2.8.tar.gz

redisC語言實現的,所以在Linux系統中需要安裝gcc來進行編譯,安裝gcc請去百度小子那里查找。

接下來需要安裝Tcl工具,如果不安裝的話后期我們將無法對Redis進行測試,完成安裝之后make test會報錯,tcl包的下載地址是:http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

使用ssh工具連接,版本是使用redis-3.2.8,把redis-3.2.8tcl上傳到linux/usr/local下。

 

使用xshell連接linux

# cd /usr/local

# tar -xzvf tcl8.6.1-src.tar.gz

效果:

 

# cd  /usr/local/tcl8.6.1/unix/

# ./configure  

效果:

 

# make && make install

效果:

 

# cd ..

# cd ..

# cd ..

退回到local目錄。

解壓:# tar -zxvf redis-3.2.8.tar.gz

進入:# cd /redis-3.2.8/utils

復制:# cp redis_init_script /etc/init.d

至於為啥要復制到這里,百度小子會給你很好的答案。

退到redis-3.2.8下:#cd ../

etc下創建redis目錄:# mkdir /etc/redis

 

拷貝redis.conf /etc/rediscp redis.conf /etc/redis/

效果:

 

這里移動redis.conf,是為了統一管理。

修改redis.conf6379.confmv redis.conf 6379.conf

 

至於為啥,后面會說到。

進入6379.confvi 6379.conf

61行,把bind 127.0.0.1修改為10.19.157.125(這個是我linux ip ,你們不要寫我的啊)

 

128行,把no改為yes

 

第 163行修改日志存儲位置,改為: logfile "/etc/log/redis/6379.log"

 

這個文件現在沒有,等會創建。

247行,改為:dir /var/redis/6379

 

這個文件現在沒有,等會創建,這個目錄是修改持久化文件的存放位置。

265行,改為: slaveof eshop-cache01 6379

 

這個地方是slave節點要配置,master節點不需要配置。當然,這台服務器是我之前就創建好的,上面也已經搭建好了redis,你們也可以參照現在這些筆記在另一台linux上搭建redis,然后把這里的主機名稱改一下就好了。(主機名稱要是不行,可能是你沒在/etc/hosts里面配置好對應關系。要是主機名稱不行,這里就換成你的masterip就好了)。

從節點默認開啟只讀配置,這個配置只要你配置了slaveof就會起作用。見下圖。

 

480行,改為: masterauth root

 

注意上圖的配置是slave節點的,這里我也是模擬生產環境的,這個配置是說,連接master要帶密碼過去,而這個root也是在master里面設置的,所以你們在參照筆記搭建master的時候,要注意這個地方,master配置見下圖。

master只配置:第272行,改為 requirepass root

 

這個root就是從節點連接的密碼。

上面就把redis的核心文件配置好了。

創建/var/redis/6379

命令:# mkdir /var/redis

      # mkdir /var/redis/6379

 

這個6379是用來存放redis持久化文件的。

進入init.d目錄:#cd /etc/init.d

 

redis_init_script改名為redis_6379:# mv redis_init_script redis_6379

redis跟隨系統啟動自動啟動

redis_6379腳本中,最上面,加入兩行注釋

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

 

然后: # chkconfig redis_6379 on

這里可以查看一下redis_6379文件:# cat redis_6379

 

從上面可以看到,為啥要把修改redis.conf6379.conf

啟動redis# ./redis_6379 start

 

要是報下面這個錯誤,是因為安裝redis的是沒有make install或者是make install沒起作用。

 

我們進入:#cd /usr/local/redis-3.2.8

 

重新:# make install。出現下面的情形就可以了。

 

回到/etc/init.d,重新執行:# ./redis_6379 start

成功啟動,查看命令:# ps -ef | grep redis

 

下面是使用telnet的使用:

#rpm -q telnet

#rpm -q telnet-server

分別執行,要是沒安裝出現:

 

執行#yum list |grep telnet

 

要是沒出現,那就自己去百度小子那里下載再上傳吧。

執行:#yum install telnet.i686

 

再執行:# yum install telnet-server.i686

 

查看服務:# service xinetd restart

 

失敗了,沒事。

執行:# vi /etc/xinetd.d/telnet

disable yes改為no

 

保存退出,重啟服務:# service xinetd restart

 

telnet默認端口是23,測試一下:

# netstat -tnl |grep 23,正在監聽。

 

 

執行 # redis-cli ping ,出現:

 

這是因為我們修改了bind的緣故。

執行# redis-cli -h,出現一堆命令,

 

執行:# redis-cli -h 10.19.157.125 ping,上面可知-h ip和主機名稱都可以。

 

 

 

出現上面錯誤的原因是我們開啟了密碼,所以要這樣

執行:# redis-cli -a root -h eshop-cache03 ping

 

終於可以了,累死。。

下面連接master了。

 

 

出現這個錯誤的原因是,從節點的6379端口沒有開啟,被防火牆攔截了。

執行:# iptables -A INPUT -ptcp --dport  6379 -j ACCEPT

      # iptables -L -n

6379端口已經再監聽了。

要是出現下面的情況,重啟一下就好了:# service iptables restart

 

使用這個命令可以查看,端口是否允許別的主機訪問:netstat -anp | grep 6379

Master

 

從節點:

 

主節點執行:# telnet 10.19.157.125 6379

 

 

# telnet eshop-cache01 6379下面這種錯誤是slave或者master的防火牆攔截了

 

 

退出編輯:quit

查看主節點信息,如下圖:

 

 

查看從節點信息,如下圖:

 

這時候就可以在masterset一個key,從節點就可以馬上拿到了。

到這里基本結束了,注意開發6379端口時,要是redis沒開啟,使用telnet連接,是顯示連接拒絕的,所以要先開啟redis先(不使用端口,開放出來也無法使用)。上面一系列的操作只是基本redis主從搭建,還沒有搭建完,完整的搭建后面再書寫。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM