1. 程式人生 > >06-專案中部署redis的讀寫分離架構

06-專案中部署redis的讀寫分離架構

一主一從,往主節點去寫,在從節點去讀,可以讀到,主從架構就搭建成功了

1、啟用複製,部署slave node

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd  /usr/local/tcl8.6.1/unix/
./configure  
make && make install

使用redis-3.2.8.tar.gz(截止2017年4月的最新穩定版)

tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install

(1)redis utils目錄下,有個redis_init_script指令碼

(2)將redis_init_script指令碼拷貝到linux的/etc/init.d目錄中,將redis_init_script重新命名為redis_6379,6379是我們希望這個redis例項監聽的埠號

cp redis-3.2.8/utils/redis_init_script /etc/init.d/redis_6379

(3)修改redis_6379指令碼的第6行的REDISPORT,設定為相同的埠號(預設就是6379)

(4)建立兩個目錄:/etc/redis(存放redis的配置檔案),/var/redis/6379(存放redis的持久化檔案)

mkdir /etc/redis
mkdir -p /var/redis/6379

(5)修改redis配置檔案(預設在根目錄下,redis.conf),拷貝到/etc/redis目錄中,修改名稱為6379.conf

cp redis-3.2.8/redis.conf /etc/redis/6379.conf

(6)修改redis.conf中的部分配置為生產環境

daemonize   yes                         讓redis以daemon程序執行
pidfile     /var
/run/redis_6379.pid 設定redis的pid檔案位置 port 6379 設定redis的監聽埠號 dir /var/redis/6379 設定持久化檔案的儲存位置

(7)讓redis跟隨系統啟動自動啟動

在redis_6379指令碼中,最上面,加入兩行註釋

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

chkconfig redis_6379 on

在slave node上配置:slaveof 192.168.1.1 6379,即可

slaveof 192.168.1.1 6379

也可以使用slaveof命令

2、強制讀寫分離

基於主從複製架構,實現讀寫分離

redis slave node只讀,預設開啟,slave-read-only

開啟了只讀的redis slave node,會拒絕所有的寫操作,這樣可以強制搭建成讀寫分離的架構

3、叢集安全認證

master上啟用安全認證,requirepass
master連線口令,masterauth

4、讀寫分離架構的測試

先啟動主節點,eshop-cache01上的redis例項
再啟動從節點,eshop-cache02上的redis例項

剛才我除錯了一下,redis slave node一直說沒法連線到主節點的6379的埠

在搭建生產環境的叢集的時候,不要忘記修改一個配置,bind

bind 127.0.0.1 -> 本地的開發除錯的模式,就只能127.0.0.1本地才能訪問到6379的埠

每個redis.conf中的bind 127.0.0.1 -> bind自己的ip地址

bind 192.168.100.***

在每個節點上都:

iptables -A INPUT -ptcp --dport  6379 -j ACCEPT
redis-cli -h ipaddr
info replication

在主上寫,在從上讀

3、壓測

redis-3.2.8/src

./redis-benchmark -h 192.168.100.***
-c <clients>       Number of parallel connections (default 50)
-n <requests>      Total number of requests (default 100000)
-d <size>          Data size of SET/GET value in bytes (default 2)

根據你自己的高峰期的訪問量,在高峰期,瞬時最大使用者量會達到10萬+,

-c 100000-n 10000000-d 50