您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何離線安裝Redis集群,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一、通過原生命令安裝Redis集群(僅做理解Redis集群原理使用)
1.配置開啟所需要的Redis節(jié)點(diǎn)
因?yàn)檫@里只是做一個(gè)簡(jiǎn)單的Redis集群原理演示,所以假設(shè)此時(shí)Redis服務(wù)已經(jīng)安裝完畢,在config文件夾下創(chuàng)建六個(gè)redis.conf配置文件,分別為redis-7000.conf、redis-7001.conf、redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf。其內(nèi)容如下:
port ${port} daemonize yes dir "/opt/redis/redis/data/" dbfilename "dump-${port}.rdb" logfile "${port}.log" cluster-enabled yes //開啟節(jié)點(diǎn)的集群功能 cluster-config-file nodes-${port}.conf cluster-require-full-coverage no cluster-node-timeout 15000
依次啟動(dòng)六個(gè)redis后臺(tái)服務(wù)
redis-server redis-7000.conf
redis-server redis-7001.conf
redis-server redis-7002.conf
redis-server redis-7003.conf
redis-server redis-7004.conf
redis-server redis-7005.conf
ps -ef | grep redis
查看啟動(dòng)情況:
2.通過集群命令meet完成節(jié)點(diǎn)之間的相互通信
meet:cluster meet ip port
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7002
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7003
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7004
redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7005
通過端口為7000的節(jié)點(diǎn),其他的節(jié)點(diǎn)也可以相互感知到對(duì)方的存在,然后每?jī)蓚€(gè)節(jié)點(diǎn)之間都會(huì)通信。
驗(yàn)證:登錄端口號(hào)為7000節(jié)點(diǎn)以后,分別輸入cluster nodes和cluster info 命令。
3.指派槽
完成了節(jié)點(diǎn)之間的通信以后,就需要給每個(gè)主節(jié)點(diǎn)分配虛擬槽,一共存在16384個(gè)slot,redis節(jié)點(diǎn)之間互相知道哪個(gè)槽在哪個(gè)節(jié)點(diǎn)上,如果數(shù)據(jù)訪問到了不屬于自己的槽的redis,redis會(huì)告訴數(shù)據(jù)應(yīng)該去訪問哪個(gè)redis
指派槽的命令:cluster addslots slot[slot...]
redis-cli -h 127.0.0.1 -p 7000 cluster addslots {0...5641}
redis-cli -h 127.0.0.1 -p 7001 cluster addslots {5642...10922}
redis-cli -h 127.0.0.1 -p 7002 cluster addslots {10923...16383}
在這里發(fā)現(xiàn)使用addslots 只能一個(gè)一個(gè)輸入,感覺非常扯,使用數(shù)組的方式redis會(huì)報(bào)錯(cuò),用網(wǎng)上的解決辦法是將大括號(hào)里的 三個(gè)點(diǎn)改為兩個(gè)點(diǎn),我試了試不行的,如果有什么好的解決辦法可以提供一下?! ?/p>
4.配置節(jié)點(diǎn)的主從關(guān)系
cluster replicate node-id
redis-cli -h 127.0.0.1 -p 7003 cluster replicate ${node-id-7000}
redis-cli -h 127.0.0.1 -p 7004 cluster replicate ${node-id-7001}
redis-cli -h 127.0.0.1 -p 7005 cluster replicate ${node-id-7002}
到此通過原生命令安裝Redis集群就已經(jīng)完成了,中間的步驟存在問題,無法分配slots,但是可以幫助簡(jiǎn)單的理解一下由Redis的單節(jié)點(diǎn)到Redis的集群都需要做什么工作?!?/p>
二、通過Ruby離線安裝Redis集群
1.安裝環(huán)境以及安裝包說明
系統(tǒng):Centos7(安裝的時(shí)候選擇安裝了gcc) 安裝包:redis-4.0.6.tar.gz //redis 的安裝包 ruby-2.5.6.tar.gz //集群搭建需要Ruby環(huán)境 rubygems-3.0.6.zip //redis集群需要的ruby插件,rubygems是ruby的一個(gè)包管理工具,通過rubygems安裝redis-3.2.2.gem zlib-1.2.11.tar.gz //可能缺少的基礎(chǔ)環(huán)境zlib openssl-1.0.2t.tar.gz //可能缺少的基礎(chǔ)環(huán)境openssl
2.安裝步驟
(1)解壓編譯redis
mkdir /usr/local/redis //創(chuàng)建redis工作目錄 cp redis-4.0.6.tar.gz /usr/local/redis //將redis的安裝包拷貝到redis目錄下 cd /usr/local/redis //進(jìn)去redis文件下 tar -vxf redis-4.0.6.tar.gz //解壓縮 ln -s redis-4.0.6 redis //建立軟連接 cd redis //進(jìn)入redis目錄下 make && make install //編譯安裝redis
(2)創(chuàng)建集群目錄
cd /usr/local/redis mkdir redis_cluster //在redis安裝目錄下創(chuàng)建redis_cluster目錄 mkdir redis700{0,1,2,3,4,5}//批量創(chuàng)建六個(gè)redis節(jié)點(diǎn)工作目錄,三主三從。
(3)配置redis.conf
cd /usr/local/redis/redis_cluster //進(jìn)去集群工作目錄
vim redis.conf //創(chuàng)建redis.conf文件并添加一下內(nèi)容
port 7000 //配置集群的端口 bind 本機(jī)的IP //這里的默認(rèn)配置是127.0.0.1改為內(nèi)網(wǎng)ip。 daemonize yes //允許redis在后臺(tái)運(yùn)行 pidfile /var/run/redis-7000.pid //改成和端口一致 cluster-enabled yes // 開啟集群 把注釋去掉 cluster-config-file node-7000.conf //集群的配置,和端口一致 cluster-node-timeout 15000 // 請(qǐng)求超時(shí),默認(rèn)為15秒 appendonly yes // aof日志開啟,有需要就開啟,每一次寫操作都會(huì)記錄一條日志。
將redis.conf 分別copy到六個(gè)節(jié)點(diǎn)的文件下
cp redis.conf redis7000/ //將配置文件拷貝到redis7000節(jié)點(diǎn)的工作目錄下
cp redis.conf redis7001/
cp redis.conf redis7002/
cp redis.conf redis7003/
cp redis.conf redis7004/
cp redis.conf redis7005/
因?yàn)榕渲梦募歉鶕?jù)7000端口模本的配置寫的,所以除了redis7000目錄下的redis.conf,其他工作目錄下的配置文件都需要將文件內(nèi)容中的端口號(hào)修改為對(duì)應(yīng)的工作目錄的端口號(hào)?! ?/p>
(4)啟動(dòng)服務(wù)
cd /usr/local/redis/redis_cluster
依次啟動(dòng)所有節(jié)點(diǎn)
redis-server redis7000/redis.conf
redis-server redis7001/redis.conf
redis-server redis7002/redis.conf
redis-server redis7003/redis.conf
redis-server redis7004/redis.conf
redis-server redis7005/redis.conf
查看啟動(dòng)情況:ps -ef | grep redis
(5)安裝ruby
mkdir /usr/local/ruby //創(chuàng)建ruby工作目錄 cp ruby-2.5.6.tar.gz /usr/local/ruby //將安裝包拷貝到該目錄下 cd /usr/local/ruby //進(jìn)入ruby工作目錄 tar -vxf ruby-2.5.6.tar.gz // 解壓縮 cd ruby-2.5.6/ ./configure make && make install
查看安裝情況:ruby -v
(6)安裝rubygems
mkdir /usr/local/rubygems //創(chuàng)建rubygems工作目錄 cp rubygems-3.0.6.zip /usr/local/rubygems //將安裝包拷貝到該目錄下 cd /usr/local/rubygems //進(jìn)入ruby工作目錄 unzip rubygems-3.0.6.zip // 解壓縮 cd rubygems-3.0.6/ ruby setup.rb
執(zhí)行ruby setup.rb 的時(shí)候出現(xiàn)以下錯(cuò)誤:
解決辦法:缺少了zlib包,需要安裝zlib?! ?/em>
(7)安裝zlib
mkdir /usr/local/zlib //創(chuàng)建zlib工作目錄 cp zlib-1.2.11.tar.gz /usr/local/zlib //將安裝包拷貝到該目錄下 cd /usr/local/zlib //進(jìn)入zlib工作目錄 tar -vxf zlib-1.2.11.tar.gz // 解壓縮 cd zlib-1.2.11/ ./configure --prefix=/usr/local/zlib
make make install
(8)編譯ruby中的zlib
cd /usr/local/ruby/ruby-2.5.6/ext/zlib/ ruby extconf.rb
出現(xiàn)以下錯(cuò)誤信息:
發(fā)現(xiàn)原來是要將文件安裝到本地運(yùn)行庫(kù)的里面才行,所有安裝的時(shí)候需要額外配置信息。重新執(zhí)行一下命令:
ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib //會(huì)生成一個(gè)Makefile文件
繼續(xù)下一步:make && make install
又出現(xiàn)報(bào)錯(cuò)信息:
這個(gè)時(shí)候打開ext/zlib/Makefile文件,找到下面一行把路徑進(jìn)行修改一下。
zlib.o: $(top_srcdir)/include/ruby.h 改成:zlib.o: ../../include/ruby.h
如下圖:
修改完成,然后保存,然后重新:make && make install
zlib的錯(cuò)誤都解決以后再繼續(xù)重新安裝rubygems。
cd /usr/local/rubygems/rubygems-3.0.6 ruby setup.rb
這次就安裝成功了,如下圖:
(9)安裝redis-3.0.0.gem
cp redis-3.0.0.gem /usr/local/redis/redis cd /usr/local/redis/redis gem install redis-3.3.0.gem
出現(xiàn)以下錯(cuò)誤信息:
因?yàn)镽edis集群交互是需要OpenSSL,所系我們還需要安裝OpenSSL。
(10)安裝openssl
mkdir /usr/local/openssl //創(chuàng)建openssl工作目錄 cp openssl-1.0.2t.tar.gz /usr/local/openssl //將安裝包拷貝到該目錄下 cd /usr/local/openssl //進(jìn)入openssl工作目錄 tar -vxf openssl-1.0.2t.tar.gz // 解壓縮 cd openssl-1.0.2t/ ./config -fPIC --prefix=/usr/local/openssl enable-shared ./config -t make && make install
安裝成功:
(11)編譯ruby中的openssl
cd /usr/local/ruby/ruby-2.5.6/ext/openssl/ ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib 此時(shí)會(huì)生成Makefile文件,下面出現(xiàn)的錯(cuò)誤需要修改本文件 make && make install
出現(xiàn)以下錯(cuò)誤信息:
解決辦法:vim Makefile 把Makefile文件中所有的 $(top_srcdir) 換成 ../.. 注意替換所有
替換完成后,重新進(jìn)行
make && make install
安裝成功:
安裝成功以后繼續(xù)進(jìn)行第九步的安裝redis-3.0.0.gem
cd /usr/local/redis/redis/ gem install redis-3.0.0.gem
安裝成功:
到這里ruby環(huán)境總算是安裝成功了,真是不容易啊,其實(shí)redis cluster的安裝的主要內(nèi)容還是上面的Ruby環(huán)境的安裝配置過程?! ?/p>
(12)啟動(dòng)redis集群
cd /usr/local/redis/redis/src/
在該目錄下執(zhí)行命令:
./redis-trib.rb create --replicas 1 192.168.182.132:7000 192.168.182.132:7001 192.168.182.132:7002 192.168.182.132:7003 192.168.182.132:7004 192.168.182.132:7005
輸入yes
安裝成功:
(13)驗(yàn)證集群狀態(tài)
以普通方式連接到7002端口的節(jié)點(diǎn) redis-cli -p 7002 -h 192.168.182.132
參數(shù)說明: -p port 端口 -h host 主機(jī) -c cluster 集群
連接進(jìn)集群之后 輸入ping , 如果響應(yīng)了pong 表示連接集群成功;
CLUSTER INFO 列出當(dāng)前節(jié)點(diǎn)的信息,CLUSTER NODES 列出當(dāng)前集群中的節(jié)點(diǎn)信息;
執(zhí)行命令:set hello word
7002節(jié)點(diǎn)報(bào)錯(cuò),客戶端該數(shù)據(jù)應(yīng)該使用7000端口的客戶端才能添加(是因?yàn)榈卿浀臅r(shí)候沒有加-c)
登錄7000端口的客戶端重新set hello world,添加數(shù)據(jù)成功(上次在7002中添加hello world沒有成功,所以在7000中獲取hello是沒有內(nèi)容的)
使用集群方式連接集群redis-cli -p 7003 -h 192.168.182.132 -c(7003是7000的備機(jī))
查詢hello:
get hello
重新設(shè)置hello的值:
set hello java
設(shè)置成功:
通過對(duì)比發(fā)現(xiàn)如果登錄的時(shí)候不加-c(非集群模式登錄,登錄的是單節(jié)點(diǎn)),添加數(shù)據(jù)時(shí),如果數(shù)據(jù)的key的虛擬槽位沒有在該redis上則不能添加成功,即單節(jié)點(diǎn)登錄,對(duì)redis的操作不會(huì)進(jìn)行重定向。
(14)驗(yàn)證集群的主從配置
關(guān)閉7002端口的節(jié)點(diǎn)
kill -9 7002redis節(jié)點(diǎn)的pid
登錄到7000端口的節(jié)點(diǎn):
redis-cli -p 7000 -h 192.168.182.132 -c cluster nodes
CLUSTER NODES 前面的字符串是節(jié)點(diǎn)的id。從這個(gè)命令還可以知道哪些節(jié)點(diǎn)還活著,哪些節(jié)點(diǎn)已經(jīng)掛了。帶著fail的都是已經(jīng)掛掉的節(jié)點(diǎn)。
集群信息顯示7002節(jié)點(diǎn)已經(jīng)down掉,7005取代7002成為主節(jié)點(diǎn)
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何離線安裝Redis集群”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。