redis集群搭建

redis

redis下載安裝
cd tmp
mkdir frank
cd frank
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar xzf redis-4.0.1.tar.gz
cd redis-4.0.1
make && make install
redis查看容达,關(guān)閉,卸載
  1. 查看
ps aux|grep redis
  1. 關(guān)閉
redis-cli shutdown 
or redis-cli -h 127.0.0.1 -p 6379 shutdown 
or kill -9 10654
  1. 卸載
rm -rf /usr/local/bin/redis*
rm -rf /tmp/frank/redis/redis-4.0.1
啟動redis服務(wù)
redis-server
啟動redis客戶端
redis-cli or redis-cli -h 127.0.0.1 -p 6379

ruby

安裝需要的Package
# yum -y install gcc

# yum -y install gcc-c++

# yum -y install zlib zlib-devel

# yum -y install readline readline-devel

# yum -y install openssl openssl-devel

最好是 #yum install gcc gcc-c++ openssl* readline* ncurses* zlib* libxml* libjpeg* libpng* libxslt* libtool*
ruby下載安裝
cd tmp
mkdir frank
cd frank
mkdir ruby
cd ruby
wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
tar xzf ruby-2.4.2.tar.gz
cd ruby-2.4.2
./configure
make && make install
安裝redis接口,gem未ruby下的一個工具包
gem install redis

1.問題1

ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

解決 :

# 進(jìn)入ruby源碼文件夾 
# 安裝ruby自身提供的zlib包 
cd ext/zlib
ruby ./extconf.rb
make
make install

搭建redis集群

  1. 環(huán)境

redis 采用 redis-3.2.1 版本扒袖。

服務(wù)器CentOS7.0 兩臺 (IP:116.196.65.198)麻养,(IP:47.52.41.245)

  1. 在兩臺服務(wù)器上美尸,下載安裝redis在tmp/frank/redis目錄下
cd /tmp
mkdir frank
cd frank
mkdir redis
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf redis-3.2.1.tar.gz 
cd redis-3.2.1
make && make install
  1. 將 redis安裝目錄下面的src目錄下面的redis-trib.rb 復(fù)制到 /usr/local/bin 目錄下
cd src
cp redis-trib.rb /usr/local/bin/
  1. 創(chuàng)建 Redis 節(jié)點

分別在兩臺服務(wù)器上redis安裝目錄下創(chuàng)建 redis_cluster 目錄;

mkdir redis_cluster

在116.196.65.198服務(wù)器上面的redis_cluster目錄下面創(chuàng)建名為7000侦高、7001、7002的目錄厌杜,并將 redis.conf 拷貝到這三個目錄中

cd redis_cluster 
mkdir 7000 7001 7002
cd ..
cp redis.conf redis_cluster/7000
cp redis.conf redis_cluster/7001
cp redis.conf redis_cluster/7002 

分別修改這三個配置文件奉呛,修改如下內(nèi)容

port  7000                                        //端口7000,7002,7003    protected-mode no                               //關(guān)掉保護(hù)模式3.2之后 不然會報Sorry, can't connect to node
#bind 本機ip                                       //默認(rèn)ip為127.0.0.1,在3.2之后要注釋掉 daemonize    yes                               //redis后臺運行
pidfile  /var/run/redis_7000.pid          //pidfile文件對應(yīng)7000,7001,7002
cluster-enabled  yes                           //開啟集群  把注釋#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次啟動自動生成 7000,7001,7002
cluster-node-timeout  15000                //請求超時  默認(rèn)15秒夯尽,可自行設(shè)置
appendonly  yes                           //aof日志開啟  有需要就開啟瞧壮,它會每次寫操作都記錄一條日志

接著在另外一臺機器上(47.52.41.245),的操作重復(fù)以上三步匙握,只是把目錄改為7003咆槽、7004、7005圈纺,對應(yīng)的配置文件也按照這個規(guī)則修改即可

  1. 啟動各個節(jié)點
#第一臺機器上執(zhí)行即116.196.65.198
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
 
#另外一臺機器上執(zhí)行即47.52.41.245
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf 
  1. 檢查 redis 啟動情況
ps -ef | grep redis

root      2138     1  0 13:57 ?        00:00:01 redis-server *:7003 [cluster]
root      2142     1  0 13:57 ?        00:00:01 redis-server *:7004 [cluster]
root      2146     1  0 13:57 ?        00:00:01 redis-server *:7005 [cluster]
root      2185  2119  0 14:20 pts/0    00:00:00 grep --color=auto redis


netstat -tnlp | grep redis

tcp        0      0 0.0.0.0:17003           0.0.0.0:*               LISTEN      2138/redis-server * 
tcp        0      0 0.0.0.0:17004           0.0.0.0:*               LISTEN      2142/redis-server * 
tcp        0      0 0.0.0.0:17005           0.0.0.0:*               LISTEN      2146/redis-server * 
tcp        0      0 0.0.0.0:7003            0.0.0.0:*               LISTEN      2138/redis-server * 
tcp        0      0 0.0.0.0:7004            0.0.0.0:*               LISTEN      2142/redis-server * 
tcp        0      0 0.0.0.0:7005            0.0.0.0:*               LISTEN      2146/redis-server * 
tcp6       0      0 :::17003                :::*                    LISTEN      2138/redis-server * 
tcp6       0      0 :::17004                :::*                    LISTEN      2142/redis-server * 
tcp6       0      0 :::17005                :::*                    LISTEN      2146/redis-server * 
tcp6       0      0 :::7003                 :::*                    LISTEN      2138/redis-server * 
tcp6       0      0 :::7004                 :::*                    LISTEN      2142/redis-server * 
tcp6       0      0 :::7005                 :::*                    LISTEN      2146/redis-server * 
  1. 創(chuàng)建集群

Redis 官方提供了 redis-trib.rb 這個工具秦忿,就在解壓目錄的 src 目錄中,第三步中已將它復(fù)制到 /usr/local/bin 目錄中蛾娶,可以直接在命令行中使用了灯谣。使用下面這個命令即可完成安裝

redis-trib.rb create --replicas 1 116.196.65.198:7000 116.196.65.198:7001 116.196.65.198:7002 47.52.41.245:7003 47.52.41.245:7004 47.52.41.245:7005

其中,前三個 ip:port 為第一臺機器的節(jié)點茫叭,剩下三個為第二臺機器酬屉。

這個工具是用 ruby 實現(xiàn)的,所以需要安裝 ruby揍愁。安裝命令如下:

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

gem install redis

或者按上面的流程安裝ruby

之后再運行 redis-trib.rb 命令呐萨,會出現(xiàn)如下提示:

redis-trib.rb create --replicas 1 116.196.65.198:7000 116.196.65.198:7001 116.196.65.198:7002 47.52.41.245:7003 47.52.41.245:7004 47.52.41.245:7005

###出現(xiàn)下面這些代表成功

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
116.196.65.198:7000
47.52.41.245:7003
116.196.65.198:7001
Adding replica 47.52.41.245:7004 to 116.196.65.198:7000
Adding replica 116.196.65.198:7002 to 47.52.41.245:7003
Adding replica 47.52.41.245:7005 to 116.196.65.198:7001
M: 33d50636b5235de9970de2da75901b642d2b14d2 116.196.65.198:7000
   slots:0-5460 (5461 slots) master
M: 668397aba571ece85532b1eb1fccb42e4e33b1f2 116.196.65.198:7001
   slots:10923-16383 (5461 slots) master
S: 908430b2bf63669898e9eaef79dd6c1b33c8c57a 116.196.65.198:7002
   replicates cc86a24f3896ad7530e2687cf52582912f74b661
M: cc86a24f3896ad7530e2687cf52582912f74b661 47.52.41.245:7003
   slots:5461-10922 (5462 slots) master
S: 3a0b27e2e34e72430ce41bb78f6d207579175306 47.52.41.245:7004
   replicates 33d50636b5235de9970de2da75901b642d2b14d2
S: ca60de73e15c19a9aa45da508d270a5781a76724 47.52.41.245:7005
   replicates 668397aba571ece85532b1eb1fccb42e4e33b1f2
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join......
>>> Performing Cluster Check (using node 116.196.65.198:7000)
M: 33d50636b5235de9970de2da75901b642d2b14d2 116.196.65.198:7000
   slots:0-5460 (5461 slots) master
M: 668397aba571ece85532b1eb1fccb42e4e33b1f2 116.196.65.198:7001
   slots:10923-16383 (5461 slots) master
M: 908430b2bf63669898e9eaef79dd6c1b33c8c57a 116.196.65.198:7002
   slots: (0 slots) master
   replicates cc86a24f3896ad7530e2687cf52582912f74b661
M: cc86a24f3896ad7530e2687cf52582912f74b661 47.52.41.245:7003
   slots:5461-10922 (5462 slots) master
M: 3a0b27e2e34e72430ce41bb78f6d207579175306 47.52.41.245:7004
   slots: (0 slots) master
   replicates 33d50636b5235de9970de2da75901b642d2b14d2
M: ca60de73e15c19a9aa45da508d270a5781a76724 47.52.41.245:7005
   slots: (0 slots) master
   replicates 668397aba571ece85532b1eb1fccb42e4e33b1f2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

  1. 集群驗證
    在第一臺機器上連接集群的7002端口的節(jié)點,在另外一臺連接7005節(jié)點莽囤,連接方式為 redis-cli -h 116.196.65.198 -c -p 7002 ,加參數(shù) -C 可連接到集群谬擦,因為上面 redis.conf 將 bind 改為了ip地址,所以 -h 參數(shù)不可以省略朽缎。
####鏈接116.196.65.198:7002存入 鍵jiqun 值chenggong
[root@iZj6c7eeosj2t5vjw8rf4xZ redis-3.2.1]# redis-cli -h 116.196.65.198 -c -p 7002
116.196.65.198:7002> set jiqun chenggong
-> Redirected to slot [8235] located at 47.52.41.245:7003
OK
47.52.41.245:7003> 

####鏈接47.52.41.245:700取出 鍵jiqun 的值
[root@jdu4e00u53f7 redis-3.2.1]# redis-cli -h 47.52.41.245 -c -p 7005
47.52.41.245:7005> get jiqun
-> Redirected to slot [8235] located at 47.52.41.245:7003
"chenggong"
47.52.41.245:7003> 
  1. 可能出現(xiàn)問題
  • Sorry, can't connect to node

解決方案:

首先檢查服務(wù)器端口是否開發(fā)惨远,阿里,京東等服務(wù)器需要在安全組里面開發(fā)
端口话肖,直接在服務(wù)器里面用命令開發(fā)端口是無效的北秽。其次在redis.config配置文件里面關(guān)閉保護(hù)模式和注釋掉bin

  • [ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some
    解決方案:

1)、將需要新增的節(jié)點下aof最筒、rdb等本地備份文件刪除贺氓;

2)、同時將新Node的集群配置文件刪除,即:刪除你redis.conf里面cluster-config-file所在的文件床蜘;

3)辙培、再次添加新節(jié)點如果還是報錯蔑水,則登錄新Node,./redis-cli –h x –p對數(shù)據(jù)庫進(jìn)行清除:

116.196.65.198:7000> flushdb #清空當(dāng)前數(shù)據(jù)庫

4),重啟服務(wù)器扬蕊,或者重啟redis

  • Waiting for the cluster to join 一直等待

解決方案:

1搀别、服務(wù)器的防火墻是否允許集群總線端口通過

redis集群不僅需要開通redis客戶端連接的端口,而且需要開通集群總線端口尾抑,集群總線端口為redis客戶端連接的端口 + 10000

如上面用到redis端口為6379歇父,7000,7001,7002,7003,7004,7005,則集群總線端口為16379再愈,17000,17001,17002,17003,17004,17005庶骄,故,所有服務(wù)器的點需要開通redis的客戶端連接端口和集群總線端口践磅。如果服務(wù)器有安全組安全組也要開通,沒有只要開通服務(wù)器本身的

##centos7.3服務(wù)器
systemctl status firewalld.service #防火墻狀態(tài)
systemctl start firewalld.service   #防火墻開啟
systemctl disable firewalld.service #防火墻不可用

firewall-cmd --zone=public --add-port=80/tcp --permanent #開啟端口

命令含義:

--zone #作用域

--add-port=80/tcp  #添加端口灸异,格式為:端口/通訊協(xié)議

--permanent  #永久生效府适,沒有此參數(shù)重啟后失效

重啟防火墻

firewall-cmd --reload

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肺樟,隨后出現(xiàn)的幾起案子檐春,更是在濱河造成了極大的恐慌,老刑警劉巖么伯,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疟暖,死亡現(xiàn)場離奇詭異,居然都是意外死亡田柔,警方通過查閱死者的電腦和手機俐巴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硬爆,“玉大人欣舵,你說我怎么就攤上這事∽嚎模” “怎么了缘圈?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袜蚕。 經(jīng)常有香客問我糟把,道長,這世上最難降的妖魔是什么牲剃? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任遣疯,我火速辦了婚禮,結(jié)果婚禮上颠黎,老公的妹妹穿的比我還像新娘另锋。我一直安慰自己滞项,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布夭坪。 她就那樣靜靜地躺著文判,像睡著了一般。 火紅的嫁衣襯著肌膚如雪室梅。 梳的紋絲不亂的頭發(fā)上戏仓,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音亡鼠,去河邊找鬼赏殃。 笑死,一個胖子當(dāng)著我的面吹牛间涵,可吹牛的內(nèi)容都是我干的仁热。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勾哩,長吁一口氣:“原來是場噩夢啊……” “哼抗蠢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起思劳,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤迅矛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后潜叛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秽褒,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年威兜,在試婚紗的時候發(fā)現(xiàn)自己被綠了销斟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡椒舵,死狀恐怖票堵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逮栅,我是刑警寧澤悴势,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站措伐,受9級特大地震影響特纤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侥加,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一捧存、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦昔穴、人聲如沸镰官。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泳唠。三九已至,卻和暖如春宙搬,著一層夾襖步出監(jiān)牢的瞬間笨腥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工勇垛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脖母,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓闲孤,卻偏偏與公主長得像谆级,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子讼积,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 【1 :集群原理】 (1)redis-cluster架構(gòu)圖 架構(gòu)細(xì)節(jié): (1)所有的redis節(jié)點彼此互聯(lián)(P...
    先生_呂閱讀 523評論 0 1
  • 這里創(chuàng)建6個redis節(jié)點哨苛,其中三個為主節(jié)點,三個為從節(jié)點币砂。redis和端口對應(yīng)關(guān)系:127.0.0.1:7000...
    壹點零閱讀 218評論 0 0
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)决摧、高可擴展、高可用凑兰、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,292評論 0 36
  • Redis集群的搭建 本來是想搞一主二從的掌桩,但是一主二從不好擴展啊,高并發(fā)的時候性能肯定也不如集群啊姑食,redis3...
    愛喝咖啡的土撥鼠閱讀 4,301評論 1 8
  • 登幽州臺歌 陳子昂 前不見古人波岛,后不見來者。 念天地之悠悠音半,獨愴然而涕下则拷。 輯評: 《升庵詩話》:其辭簡質(zhì),有漢魏...
    蘇白小喵閱讀 381評論 0 1