欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis集群的離線安裝步驟及原理詳析

 更新時間:2019年09月19日 09:49:42   作者:全me村的希望  
這篇文章主要給大家介紹了關(guān)于Redis集群的離線安裝步驟及原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要是記錄一下Redis集群在linux系統(tǒng)下離線的安裝步驟,畢竟在生產(chǎn)環(huán)境下一般都是無法聯(lián)網(wǎng)的,Redis的集群的Ruby環(huán)境安裝過程還是很麻煩的,涉及到很多的依賴的安裝,所以寫了一個文章來進(jìn)行記錄。本文分為兩部分,第一部分先通過原生命令的安裝來實現(xiàn)redis集群的部署,通過原生命令的安裝對于了解redis集群的實現(xiàn)原理有很大的幫助,第二部分通過官方工具Ruby來進(jìn)行Redis集群的安裝,通過Ruby安裝Redis集群的時候主要是搭建好Ruby環(huán)境,真正Redis集群的安裝配置通過Ruby還是很簡單的。

一、通過原生命令安裝Redis集群(僅做理解Redis集群原理使用)    

      1.配置開啟所需要的Redis節(jié)點     

     因為這里只是做一個簡單的Redis集群原理演示,所以假設(shè)此時Redis服務(wù)已經(jīng)安裝完畢,在config文件夾下創(chuàng)建六個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é)點的集群功能
cluster-config-file nodes-${port}.conf
cluster-require-full-coverage no
cluster-node-timeout 15000

     依次啟動六個redis后臺服務(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查看啟動情況:

    

  2.通過集群命令meet完成節(jié)點之間的相互通信    

    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é)點,其他的節(jié)點也可以相互感知到對方的存在,然后每兩個節(jié)點之間都會通信。

    驗證:登錄端口號為7000節(jié)點以后,分別輸入cluster nodes和cluster info 命令。

    

  3.指派槽

    完成了節(jié)點之間的通信以后,就需要給每個主節(jié)點分配虛擬槽,一共存在16384個slot,redis節(jié)點之間互相知道哪個槽在哪個節(jié)點上,如果數(shù)據(jù)訪問到了不屬于自己的槽的redis,redis會告訴數(shù)據(jù)應(yīng)該去訪問哪個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 只能一個一個輸入,感覺非常扯,使用數(shù)組的方式redis會報錯,用網(wǎng)上的解決辦法是將大括號里的 三個點改為兩個點,我試了試不行的,如果有什么好的解決辦法可以提供一下。    

  4.配置節(jié)點的主從關(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,但是可以幫助簡單的理解一下由Redis的單節(jié)點到Redis的集群都需要做什么工作?!?/p>

 二、通過Ruby離線安裝Redis集群    

  1.安裝環(huán)境以及安裝包說明

系統(tǒng):Centos7(安裝的時候選擇安裝了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的一個包管理工具,通過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)建六個redis節(jié)點工作目錄,三主三從。

    

  (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在后臺運行
pidfile /var/run/redis-7000.pid //改成和端口一致
cluster-enabled yes // 開啟集群 把注釋去掉
cluster-config-file node-7000.conf //集群的配置,和端口一致
cluster-node-timeout 15000 // 請求超時,默認(rèn)為15秒
appendonly yes // aof日志開啟,有需要就開啟,每一次寫操作都會記錄一條日志。

    將redis.conf 分別copy到六個節(jié)點的文件下

    cp redis.conf redis7000/ //將配置文件拷貝到redis7000節(jié)點的工作目錄下
    cp redis.conf redis7001/
    cp redis.conf redis7002/
    cp redis.conf redis7003/
    cp redis.conf redis7004/
    cp redis.conf redis7005/


    因為配置文件是根據(jù)7000端口模本的配置寫的,所以除了redis7000目錄下的redis.conf,其他工作目錄下的配置文件都需要將文件內(nèi)容中的端口號修改為對應(yīng)的工作目錄的端口號?!  ?/p>

   (4)啟動服務(wù)      

    cd /usr/local/redis/redis_cluster
    依次啟動所有節(jié)點
    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

    查看啟動情況: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 的時候出現(xiàn)以下錯誤:


      解決辦法:缺少了zlib包,需要安裝zlib。    

    (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)以下錯誤信息:


     發(fā)現(xiàn)原來是要將文件安裝到本地運行庫的里面才行,所有安裝的時候需要額外配置信息。重新執(zhí)行一下命令:

ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib //會生成一個Makefile文件


    繼續(xù)下一步:make && make install

    又出現(xiàn)報錯信息:


    這個時候打開ext/zlib/Makefile文件,找到下面一行把路徑進(jìn)行修改一下。

    zlib.o: $(top_srcdir)/include/ruby.h 改成:zlib.o: ../../include/ruby.h

    如下圖:


    修改完成,然后保存,然后重新:make && make install


  zlib的錯誤都解決以后再繼續(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)以下錯誤信息:


   因為Redis集群交互是需要OpenSSL,所系我們還需要安裝OpenSSL?!   ?/p>

    (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 此時會生成Makefile文件,下面出現(xiàn)的錯誤需要修改本文件
make && make install

    出現(xiàn)以下錯誤信息:


    解決辦法: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)境總算是安裝成功了,真是不容易啊,其實redis cluster的安裝的主要內(nèi)容還是上面的Ruby環(huán)境的安裝配置過程?!   ?/p>

    (12)啟動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)驗證集群狀態(tài)      

      以普通方式連接到7002端口的節(jié)點 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é)點的信息,CLUSTER NODES 列出當(dāng)前集群中的節(jié)點信息;


    執(zhí)行命令:set hello word


    7002節(jié)點報錯,客戶端該數(shù)據(jù)應(yīng)該使用7000端口的客戶端才能添加(是因為登錄的時候沒有加-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è)置成功:


    通過對比發(fā)現(xiàn)如果登錄的時候不加-c(非集群模式登錄,登錄的是單節(jié)點),添加數(shù)據(jù)時,如果數(shù)據(jù)的key的虛擬槽位沒有在該redis上則不能添加成功,即單節(jié)點登錄,對redis的操作不會進(jìn)行重定向。    

    (14)驗證集群的主從配置    

    關(guān)閉7002端口的節(jié)點

    kill -9 7002redis節(jié)點的pid

    登錄到7000端口的節(jié)點:

redis-cli -p 7000 -h 192.168.182.132 -c
cluster nodes

    CLUSTER NODES 前面的字符串是節(jié)點的id。從這個命令還可以知道哪些節(jié)點還活著,哪些節(jié)點已經(jīng)掛了。帶著fail的都是已經(jīng)掛掉的節(jié)點。


   

 集群信息顯示7002節(jié)點已經(jīng)down掉,7005取代7002成為主節(jié)點

總結(jié):

雖然整個過程是讓人很糟心的,但是總歸是成功了,實踐出真理。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • redis延時隊列zset實現(xiàn)的示例

    redis延時隊列zset實現(xiàn)的示例

    延時隊列是一種常用的設(shè)計模式,用于處理那些需要在未來某個時間點執(zhí)行的任務(wù),本文主要介紹了redis延時隊列zset實現(xiàn)的示例,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Redis拓展之定時消息通知實現(xiàn)詳解

    Redis拓展之定時消息通知實現(xiàn)詳解

    這篇文章主要為大家介紹了Redis拓展之定時消息通知實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Linux 下redis5.0.0安裝教程詳解

    Linux 下redis5.0.0安裝教程詳解

    這篇文章主要介紹了Linux 下redis5.0.0安裝教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Redis過期刪除策略與內(nèi)存淘汰策略

    Redis過期刪除策略與內(nèi)存淘汰策略

    這篇文章主要介紹了Redis過期刪除策略與內(nèi)存淘汰策略,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動態(tài)泛型傳參的問題

    使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動態(tài)泛型傳參的問題

    這篇文章主要介紹了使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動態(tài)泛型傳參的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Redis實現(xiàn)Session共享與單點登錄

    Redis實現(xiàn)Session共享與單點登錄

    本文主要介紹了Redis實現(xiàn)Session共享與單點登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Redis實現(xiàn)事物以及鎖的方法

    Redis實現(xiàn)事物以及鎖的方法

    本文主要介紹了Redis實現(xiàn)事物以及鎖的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • redis緩存存儲Session原理機(jī)制

    redis緩存存儲Session原理機(jī)制

    這篇文章主要為大家介紹了redis緩存存儲Session原理機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • redis?主從哨兵模式實現(xiàn)一主二從

    redis?主從哨兵模式實現(xiàn)一主二從

    本文主要介紹了redis?主從哨兵模式實現(xiàn)一主二從,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • redis在Windows中下載及安裝、設(shè)置教程

    redis在Windows中下載及安裝、設(shè)置教程

    這篇文章主要介紹了Windows中redis的下載及安裝、設(shè)置教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論