日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
RedisCluster集群配置簡述

環(huán)境:

成都創(chuàng)新互聯(lián)公司主營宕昌網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,宕昌h5成都微信小程序搭建,宕昌網(wǎng)站營銷推廣歡迎宕昌等地區(qū)企業(yè)咨詢

centos 6.7

Redis 3.0.3

3臺虛擬機,IP分別是server1:192.168.1.1    server2:192.168.1.2     server3:   192.168.1.3

(因redis機器最少要有3主3從,這里就用3臺虛擬機來方便區(qū)分,實在沒機器的可以在1臺機上開6個節(jié)點)

拿到機器后,首先把環(huán)境弄好

yum groupinstall "Development tools" -y
yum install wget -y

首先安裝redis

cd /usr/local/src/
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar -zxvf redis-3.0.3.tar.gz

解壓出來后要到目錄里面編譯安裝

cd redis-3.0.3
make  && make install

在這里,可能會出現(xiàn)如下錯誤:(如沒有,請略過)

make[1]: Entering directory `/redis/src'
CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/redis/src'
make: *** [all] Error 2

原因是沒有安裝jemalloc內(nèi)存分配器,可以安裝jemalloc 或 直接 輸入make MALLOC=libc  && make install

安裝好redis后就是要創(chuàng)建節(jié)點了,3主3從總共6個

以server1為例

首先創(chuàng)建redis集群的目錄

cd /usr/local
mkdir redis
cd ./redis

然后把剛才已經(jīng)編譯好的redis包復(fù)制過來

cp  -r  /usr/local/src/redis-3.0.3 /usr/local/redis/ && mv /usr/local/redis/redis-3.0.3  7000   #這里以7000 7001 端口為例,為方便管理把文件夾以端口號命名
cp  -r  /usr/local/src/redis-3.0.3 /usr/local/redis/ && mv /usr/local/redis/redis-3.0.3  7001

此步驟分別在其余的2臺機子上重復(fù)一遍,那么redis的6個節(jié)點就算簡歷完畢。

接下來要做的就是修改各個節(jié)點的配置文件

以7000節(jié)點為例:

cd /usr/local/redis/7000
vi redis.conf     #主要修改一下這幾個參數(shù)
daemonize    yes                       #后臺運行redis
pidfile  /var/run/redis_7000.pid    #pidfile文件對應(yīng)7000
port  7000                            #監(jiān)聽的端口號
cluster-enabled  yes         #開啟集群,這個原本有的把注釋#去掉就好了
cluster-config-file  nodes.conf  #集群的配置  配置文件首次啟動自動生成
cluster-node-timeout  5000      #請求超時的時間
appendonly  yes       #aof日志開啟,按需開啟,每次寫操作都會記錄成1條日志
bind  192.168.1.1     #這里要改成server的IP,不改的話后續(xù)會報錯

其他節(jié)點的配置只需把pidfile對應(yīng)的文件和端口號改下就好了,一般建議7000 7001 7002 這樣一直寫上去

當所有的節(jié)點都配置好后,就啟動redis了

cd /usr/local/redis/7000
redis-server ./redis.conf        
#這里是先進到7000節(jié)點的目錄再開啟,因為我發(fā)現(xiàn)如果直接輸入 redis-server /usr/local/redis/7000/redis.conf的話,自動生成的appendonly.aof  nodes.conf文件會在當前目錄下,而不是在對應(yīng)節(jié)點的目錄下。大家可以試驗一下。
啟動完成后,循例檢查下。
ps aux |grep redis              netstat -an |grep 7000/7001

正常情況下是可以看到7000  7001  17000 17001端口的

7000,7001是用于客戶端訪問,17000,17001是用于集群內(nèi)部節(jié)點之間的訪問的

當所有的節(jié)點都配置并啟動完之后,我們要做的就是利用這些節(jié)點來創(chuàng)建集群

官方提供了一個專門的工具   redis-trib.rb  

配合使用redis-trib.rb還要安裝ruby

yum -y install ruby ruby-devel rubygems rpm-build

裝好后再用gem命令來安裝redis接口,至于這個gem的話我也不大了解,

gem install redis

在3臺server上都安裝好后,就可以開始創(chuàng)建集群了

/usr/local/redis/7000/src/redis-trib.rb

運行redis-trib.rb后就可以看到redis-trib.rb的具體用法,如下:

Usage: redis-trib 
  reshard        host:port
                  --to 
                  --yes
                  --slots 
                  --from 
  check          host:port
  call            host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  add-node        new_host:new_port existing_host:existing_port
                  --master-id 
                  --slave
  del-node        host:port node_id
  fix            host:port
  import          host:port
                  --from 
  help            (show this help)
  create          host1:port1 ... hostN:portN
                  --replicas 
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

那么我們這里用的是create 新建集群

/usr/local/redis/7000/src/redis-trib.rb  create  --replicas  1  192.168.1.1:7000  192.168.1.2:7000 192.168.1.3:7000  192.168.1.1:7001  192.168.1.2:7001  192.168.1.3:7001

這里講一下,使用iptables或者其他防火墻的話一定要把端口開放出來,否則會創(chuàng)建失敗。

命令一定要以IP:端口形式來輸入,千萬別用域名。

參數(shù) --replicas 1   是自動為每臺master配置1個slave   上面有6個節(jié)點 會按規(guī)則生成3個主節(jié)點(master)3個從節(jié)點(slave)

注意:前面3個IP redis會默認他為主節(jié)點。

輸入完命令后會提示

Can I set the above configuration? (type 'yes' to accept): 

這里輸入yes 就可以了

然后就會彈出如下信息:

>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 5ca195e70a7d6d3b2756f06bfd5bb62f133ad236 127.0.0.1:7000
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: a79ab5c1558f64d37efb6ad3e775bcd32bee70fc 192.168.20.186:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: ebbc18dca8215930cf6430c39671b7660ca1de0f 192.168.20.187:7001
   slots: (0 slots) slave
   replicates 5ca195e70a7d6d3b2756f06bfd5bb62f133ad236
S: c195573125f0d0a87b0f1076dd7de392aa90a5f3 192.168.20.186:7001
   slots: (0 slots) slave
   replicates 0e590350177d69f337dc88188545dfe3c4c75742
M: 0e590350177d69f337dc88188545dfe3c4c75742 192.168.20.184:7000
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: b29210a818e15b1097422933163e92722c624ad8 192.168.20.184:7001
   slots: (0 slots) slave
   replicates a79ab5c1558f64d37efb6ad3e775bcd32bee70fc
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

這樣子就可以了。至于測試的話可以從其他文章里面找到

#redis 常見集群報錯處理

1.配置完所有主節(jié)點后,報" ERR Invalid node address specified"

由于redis-trib.rb 對域名或主機名支持不好,故在創(chuàng)建集群的時候要使用ip:port的方式

redis-trib.rb create ip1:port1 ip2:port2 ip3:port3

2.創(chuàng)建集群時報某個err slot 0 is already busy (redis::commanderror)

這是由于之間創(chuàng)建集群沒有成功,需要將nodes.conf和dir里面的文件全部刪除(注意不要刪除了redis.conf)

3.創(chuàng)建集群時一直處于"Waiting for the cluster to join...................................."的狀態(tài)

這個問題原因不知,但解決方法是在redis.conf文件中把bind 127.0.0.1本地環(huán)回口改為物理接口.

4.安裝ruby redis時長時間沒響應(yīng)

這是由于大家知道的網(wǎng)絡(luò)原因,解決辦法是改ruby源(請自行baidu)或手動安裝


文章題目:RedisCluster集群配置簡述
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/dpedhcs.html