使用ruby內建工具進行redis叢集搭建

來源:互聯網
上載者:User

標籤:redis 叢集 shell

使用源碼安裝redis,在官網上下載3.0以後的版本。

(1)確保系統安裝zlib,否則gem install會報(no such file to load -- zlib)

  1. #download:zlib-1.2.6.tar  

  2. ./configure  

  3. make  

  4. make install  

(2)安裝ruby

  1. # ruby1.9.2   

  2. cd /home/searat/ruby  

  3. ./configure -prefix=/usr/local/ruby  

  4. make  

  5. make install  

  6. cp ruby /usr/local/bin  

(3)安裝rubygem

  1. # rubygems-1.8.16.tgz  

  2. cd /home/searat/gem  

  3. ruby setup.rb  

  4. cp bin/gem /usr/local/bin  

(4)安裝gem-redis

  1. gem install redis --version 3.0.0  



wget http://rubygems.org/gems/redis/versions/3.0.0  

  1. gem install -l /home/searat/redis-3.0.0.gem  

接下對redis目錄做處理

使用源碼安裝後目錄如下:

-bash-4.1$ tree -L 2 /home/searat/redis

/home/searat/redis

├── bin

│   ├── dump.rdb

│   ├── redis-benchmark

│   ├── redis-check-aof

│   ├── redis-check-dump

│   ├── redis-cli

│   ├── redis-sentinel -> redis-server

│   └── redis-server

├── conf

│   ├── dump.rdb

│   └── redis.conf

├── log

│   └── redis.log

└── redis_6379

從源碼包中複製redis-trib.rb到/home/searat/redis/bin下,另外從源碼包中找到create-cluster指令碼,複製到/home/searat/redis/bin下。

若在單台伺服器上使用create-cluster建立redis叢集,直接執行create-cluster指令碼即可。

若在兩台或者更多台伺服器上建立redis叢集,可以改寫create-cluster指令碼

-bash-4.1$ cat create-cluster #!/bin/bashPORT=$2   #連接埠號碼可以自己隨意指定PORTNUM=3 #定義連接埠號碼的個數REPLICAS=1REDIS_HOME=/home/searat/redisHOST1=192.168.1.101HOST2=192.168.1.102HOSTS="$HOST1 $HOST2"declare -A HOSTGROUP  #定義一個數組用來存放IP:PORT形式的資料,在建立叢集時使用i=1if [ "$1" == "start" ]then    while [ $PORTNUM -gt "0" ]; do        echo "Starting 127.0.0.1:$PORT"        $REDIS_HOME/bin/redis-server ../conf/redis_$PORT.confPORT=$((PORT+1))PORTNUM=$((PORTNUM-1))    done    exit 0fiif [ "$1" == "stop" ]then    while [ $PORTNUM -gt "0" ]; do        echo "Stopping 127.0.0.1:$PORT"        $REDIS_HOME/bin/redis-cli -p $PORT shutdown nosave        PORT=$((PORT+1))        PORTNUM=$((PORTNUM-1))    done    exit 0fiif [ "$1" == "create" ]then    while [ $PORTNUM -gt "0" ]; do        for host in $HOSTS            do                HOSTGROUP[$i]=$host:$PORT                i=`expr $i + 1`            done        PORT=$((PORT+1))        PORTNUM=$((PORTNUM-1))    done    echo ${HOSTGROUP[*]}    $REDIS_HOME/bin/redis-trib.rb create --replicas 1 ${HOSTGROUP[*]}    exit 0fiif [ "$1" == "clean" ]then    rm -rf ../log/*.log    rm -rf ../data/appendonly*.aof    rm -rf ../data/dump*.rdb    rm -rf ../data/nodes*.conf    exit 0fiecho "Usage: $0 [start|create|stop|clean"echo "start       -- Launch Redis Cluster instances."echo "create      -- Create a cluster using redis-trib create."echo "stop        -- Stop Redis Cluster instances."echo "clean       -- Remove all instances data, logs, configs."

至於redis_6379.conf、redis_6380.conf這些設定檔,可以提前配置好,也可以在create-cluster中繼續追加自動組建組態檔案的代碼。

redis叢集啟停:/home/searat/redis/bin/create-cluster start/stop 6379

建立叢集:/home/searat/redis/bin/create-cluster create 6379

如果提示如下資訊,則證明建立成功:

[OK] All nodes agree about slotsconfiguration.

>>>Check for open slots...

>>>Check slots coverage...

[OK] All 16384 slots covered.

驗證Master、Slave資訊:

/home/searat/redis/bin/redis-cli -p $PORT cluster nodes | head -30

0784283914d088acd66c458f6ee32db337bc3daf192.168.0.101:6379 master- 0 1453248628585 2 connected 5461-10922

4eebf65f5b1f4ac4c547c47fd19f442b30f27396192.168.0.102:6379myself,master - 0 0 1 connected 0-5460

f0763f4d57ce2996f95fdc0693680a36bb004c98192.168.0.102:6381 slave0784283914d088acd66c458f6ee32db337bc3daf 0 1453248627976 5 connected

d7461d15c6347a960a686530d3b72602a1fd855b192.168.0.101:6380 slave4eebf65f5b1f4ac4c547c47fd19f442b30f27396 0 1453248627976 4 connected

0977a10502ea3897c943ea88afe6133170ed09a8192.168.0.101:6381 master- 0 1453248628585 7 connected 10923-16383

836cdfbf7938c983f4bae07197a413fc43f7a155192.168.0.102:6380 slave0977a10502ea3897c943ea88afe6133170ed09a8 0 1453248627976 7 connected


Yes!這樣就通過create-cluster的方式建立了redis叢集,管理方便,擴充方便。



本文出自 “Jacky鑫” 部落格,請務必保留此出處http://jackyxin.blog.51cto.com/1976631/1736970

使用ruby內建工具進行redis叢集搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.