redis集羣離線安裝

環境準備:

  • redis-4.0.7.tar.gz redis的安裝包
  • Ruby環境(集羣搭建須要用ruby建立, ruby環境在2.2以上。)
  • rubygems-2.7.4.tgz 和 redis-3.2.2.gem (後面的是redis集羣須要的ruby插件,rubygems是ruby的一個包管理工具,經過rubygems安裝redis-3.2.2.gem。)
  • centos7,注意安裝系統的基礎環境,包括zlib和openssl。

安裝步驟

一、解壓編譯redis

cd /usr/local/
mkdir redis
將redis放到redis目錄下
tar -vxf redis-4.0.7.tar.gz
make

若是報錯:
報錯node

說明系統沒有安裝gcc的環境,沒法進行編譯。redis

1.一、安裝gcc(若是make不報錯不作這一步)

mount /dev/cdrom /mnt
cd /mnt/Packages (有的不在Packages目錄下,這個目錄下都是rpm包)
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm

報錯

安裝gcc以前須要安裝其餘的依賴,按照提示的依賴從上到下安裝:shell

rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm cpp-4.8.5-4.el7.x86_64.rpm glibc-devel-2.17-105.el7.x86_64.rpm  libmpc-1.0.1-3.el7.x86_64.rpm glibc-headers-2.17-105.el7.x86_64.rpm kernel-headers-3.10.0-327.el7.x86_64.rpm

安裝依賴

1.二、make報錯:

make報錯

解決辦法:make 後面帶參數vim

make MALLOC=libc
make install 
cd src
./redis-server

開啓成功

看到這個界面redis單機版啓動成功,驗證:
另外打開一個鏈接,到根目錄下執行centos

./redis-cli
ping

若是有響應,則redis單機版本安裝成功。
響應ruby

二、配置集羣環境(兩臺機器,6個節點,至少須要6個節點。)

2.一、建立集羣目錄

在redis安裝目錄下建立redis_cluster目錄:app

mkdir redis_cluster
在redis_cluster中建立子目錄:
cd redis_cluster/
mkdir 7000
mkdir 7001
mkdir 7002

2.二、配置redis.conf

將redis.conf拷貝到這三個目錄中去:(redis.conf在安裝目錄下)工具

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

 
修改每一個redis.conf的配置,須要修改的內容以下:測試

port 7000    //配置集羣的端口,分別是7000、700一、7002
bind 本機的IP    //這裏的默認配置是127.0.0.1改成內網ip。
daemonsize yes   //容許redis在後臺運行
pidfile  /var/run/redis_7000.pid  //改爲和端口一致
cluster-enabled  yes   // 開啓集羣 把註釋去掉
cluster-config-file node_7000.conf  //集羣的配置,和端口一致
cluster-node-timeout  15000  // 請求超時,默認爲15秒
appendonly  yes // aof日誌開啓,有須要就開啓,每一次寫操做都會記錄一條日誌。

修改完成以後啓動服務:centos7

cd src/
./redis-server ../redis_cluster/7000/redis.conf

依次啓動全部節點:
依次啓動全部節點

查看啓動狀況:
啓動狀況

2.三、另外一臺機器執行相同的操做

另外一臺機器的redis端口分配爲:700三、700四、7005,而後修改對應的主機ip。

三、安裝ruby環境

3.一、下載、安裝ruby

mkdir /usr/local/ruby
cd ruby/
把包放到改目錄下
tar -vxf ruby-2.5.0.tar.gz
cd ruby-2.5.0/
./configure
make && make install

驗證:
ruby -v
驗證ruby環境

3.二、下載安裝rubygems

cd /usr/local
mkdir rubygems
把文件放到該目錄下
tar -vzxf rubygems-2.7.4.tgz
cd rubygems-2.7.4/
ruby setup.rb

報錯:
報錯

解決辦法:缺乏了zlib包,須要下載並安裝zlib

3.2.一、下載安裝zlib
cd /usr/local
mkdir zlib
tar -vxf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make
make install
3.2.二、編譯 ruby 中的zlib
cd /usr/local/ruby-2.5.0/ext/zlib/
ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib
make

又報錯:
報錯

解決辦法:執行完extconf.rb以後會生成一個Makefile vim Makefile
解決方案

把$(top_srcdir) 換成 ../../
而後再make
make
make install

錯誤都解決以後,回到安裝rubygems的步驟。
進入rubygems的安裝目錄,執行ruby setup.rb

cd /usr/local/rubygems/rubygems-2.7.4
ruby setup.rb

安裝成功:
安裝成功

四、安裝ruby-redis插件

4.1.一、下載redis-3.2.2.gem

剛剛安裝rubygems就是爲了安裝這個插件。
把文件放到 /usr/local/redis 目錄下。

gem install redis-3.2.2.gem

又報錯:
報錯

解決辦法:缺乏OpenSSL,下載安裝。

4.1.二、下載安裝OpenSSL

這個問題和zlib的解決方案相似,可類比解決。

cd /usr/local
mkdir openssl
tar -xvf openssl-1.0.2n.tar.gz 
./config -fPIC --prefix=/usr/local/openssl enable-shared
./config -t
make && make install

安裝成功:
安裝成功

4.1.三、編譯ruby中的openssl
cd /usr/local/ruby/ruby-2.5.0/ext/openssl/
ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
make

報錯:
報錯

解決辦法:vim Makefile 把全部的 $(top_srcdir) 換成 ../.. 注意替換全部
解決辦法

make && make install

安裝成功:
安裝成功

而後回到安裝 redis-3.2.2.gem ,在redis目錄下安裝。

gem install redis-3.2.2.gem

安裝成功:
安裝成功

五、啓動一個集羣

cd /usr/local/redis/redis-4.0.7/src
./redis-trib.rb create --replicas 1 192.168.80.230:7000 192.168.80.230:7001 192.168.80.230:7002 192.168.80.231:7003 192.168.80.231:7004 192.168.80.231:7005

啓動成功:
啓動成功

而後測試一下集羣:
隨便鏈接一個節點:

./redis-cli -h 192.168.80.231 -p 7005 -c
鏈接成功以後:
set test1 'test001' 

測試

而後再鏈接另一個節點:

./redis-cli -h 192.168.80.230 -p 7002 -c
get test1

測試

集羣的操做

可使用可視化工具查看和管理redis集羣。

一、建立一個集羣

./redis-trib.rb create --replicas 1 192.168.80.230:7000 192.168.80.230:7001 192.168.80.230:7002 192.168.80.231:7003 192.168.80.231:7004 192.168.80.231:7005
 建立集羣

二、鏈接集羣

cd /usr/local/redis/redis-4.0.7/src
./redis-cli -p 7003 -c -h 192.168.80.231

參數說明: -p port 端口 -h host 主機 -c cluster 集羣

鏈接進集羣以後 輸入ping , 若是響應了pong 表示鏈接集羣成功:
響應

鏈接進集羣以後能夠查看當前集羣的信息和節點的信息
CLUSTER INFO 列出當前節點的信息
列出當前節點

CLUSTER NODES 列出當前集羣中的節點信息
當前節點信息

前面一段很長的字符串就是節點的id。從這個命令能夠知道哪些節點還活着,哪些節點已經掛了。端口後面帶着fail的都是掛掉的節點。

三、關閉一個節點

退出集羣鏈接才能關閉某一個節點:

./redis-cli -c -h 192.168.80.230 -p 7000 shutdown

這條命令的意思是關閉230機器上端口爲7000的redis節點。
關閉以後能夠鏈接集羣去執行 CLUSTER NODES ,這個節點的狀態已是fail。

四、節點加入、移出集羣

添加一個節點以前務必保證該節點已經啓動了,若是該節點以前在建立集羣時已經在集羣裏面了,關閉該節點而後再從新啓動,該節點會自動加入集羣。

./redis-server ../redis_cluster/7000/redis.conf

而後鏈接進集羣,若是該節點以前不在集羣中,鏈接集羣輸入cluster meet 命令就能夠指定某個節點加入集羣。

CLUSTER MEET 192.168.80.230:7000
CLUSTER forget fd72b78b1eaa430ca309bc5226d90fe67199a576

這個一長段字符串是節點的id,forget以後能夠再去看節點的信息。
節點信息

forget以後,若是一分鐘不進行任何操做,該節點會自動加入集羣。

相關文章
相關標籤/搜索