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。

安裝步驟

1、解壓編譯redis

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

如果報錯:
報錯

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

1.1、安裝gcc(如果make不報錯不做這一步)

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

報錯

安裝gcc之前需要安裝其他的依賴,按照提示的依賴從上到下安裝:

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.2、make報錯:

make報錯

解決辦法:make 后面帶參數

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

開啟成功

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

./redis-cli
ping

如果有響應,則redis單機版本安裝成功。
響應

2、配置集群環境(兩台機器,6個節點,至少需要6個節點。)

2.1、創建集群目錄

在redis安裝目錄下創建redis_cluster目錄:

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

2.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、7001、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日志開啟,有需要就開啟,每一次寫操作都會記錄一條日志。

修改完成之后啟動服務:

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

依次啟動所有節點:
依次啟動所有節點

查看啟動情況:
啟動情況

2.3、另一台機器執行相同的操作

另一台機器的redis端口分配為:7003、7004、7005,然后修改對應的主機ip。

3、安裝ruby環境

3.1、下載、安裝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.2、下載安裝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.1、下載安裝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.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

安裝成功:
安裝成功

4、安裝ruby-redis插件

4.1.1、下載redis-3.2.2.gem

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

gem install redis-3.2.2.gem

又報錯:
報錯

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

4.1.2、下載安裝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.3、編譯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

安裝成功:
安裝成功

5、啟動一個集群

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集群。

1、創建一個集群

./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
 創建集群

2、連接集群

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的都是掛掉的節點。

3、關閉一個節點

退出集群連接才能關閉某一個節點:

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

這條命令的意思是關閉230機器上端口為7000的redis節點。
關閉之后可以連接集群去執行 CLUSTER NODES ,這個節點的狀態已經是fail。

4、節點加入、移出集群

添加一個節點之前務必保證該節點已經啟動了,如果該節點之前在創建集群時已經在集群里面了,關閉該節點然后再重新啟動,該節點會自動加入集群。

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

然后連接進集群,如果該節點之前不在集群中,連接集群輸入cluster meet 命令就可以指定某個節點加入集群。

CLUSTER MEET 192.168.80.230:7000
CLUSTER forget fd72b78b1eaa430ca309bc5226d90fe67199a576 

這個一長段字符串是節點的id,forget之后可以再去看節點的信息。
節點信息

forget之后,如果一分鍾不進行任何操作,該節點會自動加入集群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM