1. 程式人生 > >08-redis cluster搭建

08-redis cluster搭建

停止之前所有的例項,包括redis主從和哨兵叢集

1、redis cluster的重要配置

cluster-enabled <yes/no>
cluster-config-file <filename>

  這是指定一個檔案,供cluster模式下的redis例項將叢集狀態儲存在那裡,包括叢集中其他機器的資訊,比如節點的上線和下限,故障轉移,不是我們去維護的,給它指定一個檔案,讓redis自己去維護的

  cluster-node-timeout :節點存活超時時長,超過一定時長,認為節點宕機,master宕機的話就會觸發主備切換,slave宕機就不會提供服務

2、在三臺機器上啟動6個redis例項

(1)在eshop-cache03上部署目錄

  /etc/redis(存放redis的配置檔案),/var/redis/6379(存放redis的持久化檔案)

(2)編寫配置檔案

  redis cluster叢集,要求至少3個master,去組成一個高可用,健壯的分散式的叢集,每個master都建議至少給一個slave,3個master,3個slave,最少的要求

  正式環境下,建議都是說在6臺機器上去搭建,至少3臺機器

  保證,每個master都跟自己的slave不在同一臺機器上,如果是6臺自然更好,一個master+一個slave就死了

  3臺機器去搭建6個redis例項的redis cluster

mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
mkdir -p /var/redis/7001
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize   yes                         
pidfile     /var/run/redis_7001.pid                         
dir         /var
/redis/7001 logfile /var/log/redis/7001.log bind 192.168.31.187 appendonly yes

  至少要用3個master節點啟動,每個master加一個slave節點,先選擇6個節點,啟動6個例項

  將上面的配置檔案,在/etc/redis下放6個,分別為: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

(3)準備生產環境的啟動指令碼

  在/etc/init.d下,放6個啟動指令碼,分別為: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006

  每個啟動指令碼內,都修改對應的埠號

(4)分別在3臺機器上,啟動6個redis例項

  將每個配置檔案中的slaveof給刪除

3、建立叢集

yum install -y ruby
yum install -y rubygems
gem install redis

其中 gem install redis命令執行時出現了:

redis requires Ruby version >= 2.2.2的報錯,查了資料發現是Centos預設支援ruby到2.0.0,可gem 安裝redis需要最低是2.2.2

1.安裝curl

sudo yum install curl

2. 安裝RVM

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable

3. 使生效

source /usr/local/rvm/scripts/rvm

4. 檢視rvm庫中已知的ruby版本

rvm list known

5. 安裝一個ruby版本

rvm install 2.3.3

6. 使用一個ruby版本

rvm use 2.3.3

7. 設定預設版本

rvm remove 2.0.0

8. 解除安裝一個已知版本

ruby --version

9. 再安裝redis就可以了

gem install redis
cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 192.168.31.187:7001 192.168.31.187:7002 192.168.31.19:7003 192.168.31.19:7004 192.168.31.227:7005 192.168.31.227:7006

–replicas: 每個master有幾個slave

6臺機器,3個master,3個slave,儘量自己讓master和slave不在一臺機器上

redis-trib.rb check 192.168.31.187:7001

4、讀寫分離+高可用+多master

  1. 讀寫分離:每個master都有一個slave
  2. 高可用:master宕機,slave自動被切換過去
  3. 多master:橫向擴容支援更大資料量