(二十一)高併發redis學習筆記:搭建redis cluster集羣


前提我們之前已經搭建過主從架構,在A,B上都部署redis並且啓動了開機啓動,A是主節點,B是從節點,同時我們在A,B,C上都部署了哨兵。那麼我們需要先停掉之前所有的實例。三個機器都要搞一下


redis cluster: 自動,master+slave複製和讀寫分離,master+slave高可用和主備切換,支持多個master的hash slot支持數據分佈式存儲。

1、redis cluster的重要配置

主要有以下重要的配置:

cluster-enabled <yes/no>
cluster-config-file <filename>:這是指定一個文件,供cluster模式下的redis實例將集羣狀態保存在那裏,包括集羣中其他機器的信息,比如節點的上線和下限,故障轉移,不是我們去維護的,給它指定一個文件,讓redis自己去維護的
cluster-node-timeout <milliseconds>:節點存活超時時長,超過一定時長,認爲節點宕機,master宕機的話就會觸發主備切換,slave宕機就不會提供服務

2、在三臺機器上啓動6個redis實例

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

正式環境下,建議都是說在6臺機器上去搭建,至少3臺機器
保證,每個master都跟自己的slave不在同一臺機器上,如果是6臺自然更好。我們是三臺機器。

(1)在eshop-cache03上部署目錄
需要創建目錄:
/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)

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

(2)編寫配置文件
在每臺機器上都需要執行以下:

mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
#(7001要改,7001,7002在第一臺,7003,7004在第二臺)
mkdir -p /var/redis/7001

我們一共有6個實例,那麼需要6份配置文件,3個master,每個master帶一個slave。下面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

將每個配置文件中的slaveof給刪除或者註釋
將上面的配置文件,在/etc/redis下放6個,分別爲: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf,注意上面的配置的7001相對應改一下,bind的地址不同機器也不同

(3)準備生產環境的啓動腳本
在/etc/init.d下,放6個啓動腳本,分別爲: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006。我們可以直接把之前的給靠過來改:

cd /etc/init.d
cp redis_6379 redis_7001
vi redis_7001

把裏面的端口號給改了。


每個啓動腳本內,都修改對應的端口號
要是第三臺還沒有redis_6379文件,可以從其他機器拷貝一份過去即可。

(4)分別在3臺機器上,啓動6個redis實例
注意將每個配置文件中的slaveof給刪除


如果出現權限不夠的話,直接使用

chmod 777 <文件名>

3、創建集羣
我們只需要在第一臺機器執行以下命令,因爲啓動集羣需要ruby語言環境。

cd /usr/local/
yum install -y ruby
yum install -y rubygems
gem install redis

在執行gem install redis,中間會遇到一個問題:redis requires Ruby version >= 2.3.0.,版本號不對。

[root@localhost ~]# gem install redis
Fetching: redis-4.1.2.gem (100%)
ERROR:  Error installing redis:
	redis requires Ruby version >= 2.3.0.

我們需要先安裝rvm,然後通過rvm安裝ruby正確版本。
先安裝crul:

yum install curl

然後執行下面命令安裝RVM:

# (有時候會出錯,多執行一次)
curl -L get.rvm.io | bash -s stable

出現下面的祕鑰:

把這一段祕鑰拷貝到命令行回車。

然後執行下面命令:

source /etc/profile.d/rvm.sh
# 或者
source /usr/local/rvm/scripts/rvm

列出ruby版本

rvm list known

我選擇了這個版本:

rvm install 2.6.3

安裝完之後卸載原來的版本,指定版本:

rvm use 2.6.3
rvm remove 2.0.0
ruby --version

然後再執行install命令就可以啦。

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.8.181:7001 192.168.8.181:7002 192.168.8.182:7003 192.168.8.182:7004 192.168.8.183:7005 192.168.8.183:7006

–replicas: 是指每個master有幾個slave
6臺機器,3個master,3個slave,儘量自己讓master和slave不在一臺機器上,這個是集羣自動決定的。
我們會看到實際上集羣已經起來了:

slot已經分配完成,也可以用下面的命令查看一下:

redis-trib.rb check 192.168.31.187:7001


至此,一個cluster就搭建完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章