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