Redis集群介紹
Redis 是一個開源的 key-value 存儲系統,由於出眾的性能,大部分互聯網企業都用來做服務器端緩存。Redis在3.0版本之前只支持單實例模式 雖然支持主從模式,哨兵模式來解決單點故障,可是互聯網公司動輒幾百G的數據,顯然是沒辦法滿足業務需求的。所以Redis在3.0版本之后推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot,每個 Redis 實例負責其中一部分 slot 。集群中的所有信息(節點、端口、slot等),都通過節點之間定期的數據交換而更新。
Redis 客戶端可以在任意一個 Redis 實例發出請求,如果所需數據不在該實例中,通過重定向命令引導客戶端訪問所需的實例。
首先這個帖子是對Redis集群搭建的帖子 搭建集群的前提是已經在Linux下安裝了Redis 在搭建集群之前我要先說一下Redis集群搭建規則,由於集群至少需要六個節點(三主三從)但是我本地沒有那么多機器讓我 玩 所以我選擇在一台虛擬機上進行集群的搭建 這個和在生產環境上搭建是沒有區別的 請注意,下面所有集群搭建環境都基於已安裝好的 Redis 做的
1.創建文件夾
首先我們的集群的端口號為 6301-6306 數據存放在 端口號/data文件夾中
mkdir /usr/local/redis-cluster
cd redis-cluster/
mkdir -p 6301/data 6302/data 6303/data 6304/data 6305/data 6306/data
2.復制執行腳本
在/usr/local/redis-cluster 目錄下創建bin文件夾,用來存放集群運行腳本,並把安裝好的 Redis 的 src
路徑下的運行腳本拷貝過來
mkdir redis-cluster/bin
cd /usr/local/redis-4.0.6/src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
3.復制一個新的Redis實例
從已經安裝好的Redis中復制一個新的實例到6301中並且修改他的redis.config配置
cp /usr/local/redis-4.0.6/* /usr/local/redis-cluster/6301
port 6301(每個節點的端口號)
daemonize yes
#bind 127.0.0.1(注釋掉)
dir /usr/local/redis-cluster/6301/data/(數據文件存放位置)
pidfile /var/run/redis_6301.pid(pid 6301和port要對應)
cluster-enabled yes(啟動集群模式)
cluster-config-file nodes6301.conf(6301和port要對應)
cluster-node-timeout 15000
appendonly yes
4.復制其他節點
因為我們之前已經復制出了一個節點 6301 之后的操作就比較呆 在復制其余的五個節點就好了 我們這里選擇將6301實例復制給其余的五個,其中要修改的就是redis.config文件 所有與端口相關的信息
5.修改6302-6306的redis.config文件
其中到這一步已經很簡單了 因為之前已經做好了一個實例的修改(6301) 你通過搜索會發現其實只有四個點需要修改,我們全局替換下吧,進入相應的節點文件夾,做替換就好了。命令非常簡單
vim redis.conf
:%s/6301/6302/g
到這里我們的基本環境已經搭建好了 剩下的就是啟動了!!!
如果我們現在直接啟動redis六個節點往里面添加東西會報錯(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)。
因為雖然我們配置並啟動了 Redis 集群服務,但是他們暫時還並不在一個集群中,互相直接發現不了,而且還沒有可存儲的位置,就是所謂的slot(槽)。
所以接下來我們要安裝集群所需要的軟件 ruby
yum install centos-release-scl-rh//會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源
yum install rh-ruby26 -y //直接yum安裝即可
scl enable rh-ruby26 bash//必要一步
ruby -v//查看安裝版本
gem install redis
如果直接使用
這三行命令進行安裝ruby的時候會默認安裝2.0.0版本的ruby這個時候會發生 版本不兼容的問題 所以使用我這種yum安裝方式不會有這種問題的出現
集群搭建的命令
在輸入命令前需要保證六個redis節點已經啟動
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.211.128:6301 192.168.211.128:6302 192.168.211.128:6303 192.168.211.128:6304 192.168.211.128:6305 192.168.211.128:6306
然后調用ruby命令來創建集群 replicas 1 表示主從比例為1:1 一個主節點對應一個從節點然后默認給我們分配好了每個主節點和對應從節點服務,以及 solt 的大小,因為在 Redis 集群中有且僅有 16383 個 solt ,默認情況會給我們平均分配,當然你可以指定,后續的增減節點也可以重新分配。
這個就表示集群已經創建成功
cluster info
cluster nodes
輸入這兩個命令可以查看集群的狀態和節點信息
ps:
2022/08/15
補充一個缺少的一個命令 當安裝redis集群的服務器重啟后從新啟動redis節點
redis-server {這里寫reids.conf配置文件} 啟動rdis節點