開頭聲明一下:操作是在兩台虛擬機上的,一台ip:10.19.157.121,主機名:eshop-cache01
另一台ip:10.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
redis是C語言實現的,所以在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.8和tcl上傳到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/redis:cp redis.conf /etc/redis/
效果:
這里移動redis.conf,是為了統一管理。
修改redis.conf為6379.conf:mv redis.conf 6379.conf
至於為啥,后面會說到。
進入6379.conf:vi 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里面配置好對應關系。要是主機名稱不行,這里就換成你的master的ip就好了)。
從節點默認開啟只讀配置,這個配置只要你配置了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.conf為6379.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 。
查看主節點信息,如下圖:
查看從節點信息,如下圖:
這時候就可以在master,set一個key,從節點就可以馬上拿到了。
到這里基本結束了,注意開發6379端口時,要是redis沒開啟,使用telnet連接,是顯示連接拒絕的,所以要先開啟redis先(不使用端口,開放出來也無法使用)。上面一系列的操作只是基本redis主從搭建,還沒有搭建完,完整的搭建后面再書寫。