新聞中心
環(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-tribreshard 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


咨詢
建站咨詢
