CentOS中搭建Redis偽分佈式集群

NoSQL Redis CentOS Perl PHP愛好者 2017-06-16

CentOS中搭建Redis偽分佈式集群

解壓redis

先到官網https://redis.io/下載redis安裝包,然後在CentOS操作系統中解壓該安裝包:

tar -zxvf redis-3.2.9.tar.gz

編譯redis

cd redis-3.2.9

make && make install

此時如果報如下錯誤:

bash: make: command not found

說明系統沒有安裝make,所有要先安裝make,即:

yum -y install gcc automake autoconf libtool make

如果此時再報如下錯誤:

Error Downloading Packages:

glibc-headers-2.12-1.107.el6.x86_64: failure: Packages/glibc-headers-2.12-1.107.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

1:perl-Module-Pluggable-3.90-129.el6.x86_64: failure: Packages/perl-Module-Pluggable-3.90-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

mpfr-2.4.1-6.el6.x86_64: failure: Packages/mpfr-2.4.1-6.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

1:make-3.81-20.el6.x86_64: failure: Packages/make-3.81-20.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

cloog-ppl-0.15.7-1.2.el6.x86_64: failure: Packages/cloog-ppl-0.15.7-1.2.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

gcc-4.4.7-3.el6.x86_64: failure: Packages/gcc-4.4.7-3.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

libgomp-4.4.7-3.el6.x86_64: failure: Packages/libgomp-4.4.7-3.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

kernel-headers-2.6.32-358.el6.x86_64: failure: Packages/kernel-headers-2.6.32-358.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

autoconf-2.63-5.1.el6.noarch: failure: Packages/autoconf-2.63-5.1.el6.noarch.rpm from c6-media: [Errno 256] No more mirrors to try.

automake-1.11.1-4.el6.noarch: failure: Packages/automake-1.11.1-4.el6.noarch.rpm from c6-media: [Errno 256] No more mirrors to try.

4:perl-libs-5.10.1-129.el6.x86_64: failure: Packages/perl-libs-5.10.1-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

3:perl-version-0.77-129.el6.x86_64: failure: Packages/perl-version-0.77-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

4:perl-5.10.1-129.el6.x86_64: failure: Packages/perl-5.10.1-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

1:perl-Pod-Simple-3.13-129.el6.x86_64: failure: Packages/perl-Pod-Simple-3.13-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

glibc-devel-2.12-1.107.el6.x86_64: failure: Packages/glibc-devel-2.12-1.107.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

1:perl-Pod-Escapes-1.04-129.el6.x86_64: failure: Packages/perl-Pod-Escapes-1.04-129.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

libtool-2.2.6-15.5.el6.x86_64: failure: Packages/libtool-2.2.6-15.5.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

ppl-0.10.2-11.el6.x86_64: failure: Packages/ppl-0.10.2-11.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

cpp-4.4.7-3.el6.x86_64: failure: Packages/cpp-4.4.7-3.el6.x86_64.rpm from c6-media: [Errno 256] No more mirrors to try.

說明需要配置本地yum源或者讓機器可以上網即可,如果需要配置本地yum源,可以參考另一篇文章《CentOS配置本地yum源》

安裝好make後,在redis-3.2.9目錄下,再執行

make && make install

出現如下信息,說明執行成功了:

Hint: It's a good idea to run 'make test'

make[1]: Leaving directory `/opt/redis-3.2.9/src'

cd src && make install

make[1]: Entering directory `/opt/redis-3.2.9/src'

Hint: It's a good idea to run 'make test'

INSTALL install

INSTALL install

INSTALL install

INSTALL install

INSTALL install

make[1]: Leaving directory `/opt/redis-3.2.9/src'

此時redis-3.2.9目錄下,多了一個src文件夾,裡面內容如下:

CentOS中搭建Redis偽分佈式集群

此時編譯redis完成。

創建redis節點

由於要讓redis集群正常運行,就至少需要3個主節點,所以在此就在一臺主機上創建6個redis節點來演示集群配置,實際生產環境中需要每個節點一臺主機。同時對應的redis節點的ip和端口對應關係如下:

192.168.242.10 6380

192.168.242.10 6381

192.168.242.10 6382

192.168.242.10 6383

192.168.242.10 6384

192.168.242.10 6385

在redis-3.2.9目錄下,新建一個redis_cluster目錄,用於存放各位節點的配置信息:

mkdir redis_cluster

同時在redis_cluster目錄下分別新建6380、6381、6382、6383、6384、6385文件夾:

mkdir 6380

mkdir 6381

mkdir 6382

mkdir 6383

mkdir 6384

mkdir 6385

在6380文件夾下,新建redis.conf文件:

touch redis.conf

編輯如下內容:

daemonize yes

pidfile redis_6380.pid

logfile redis_6380.log

appendonly yes

bind 192.168.242.10

port 6380

cluster-enabled yes

cluster-config-file nodes-6380.conf

cluster-node-timeout 15000

cluster-slave-validity-factor 10

cluster-migration-barrier 1

cluster-require-full-coverage yes

集群相關的配置說明:

cluster-enabled 是否開啟集群配置

cluster-config-file 集群節點集群信息配置文件,每個節點都有一個,由redis生成和更新,配置時避免名稱衝突

cluster-node-timeout 集群節點互連超時的閥值,單位毫秒

cluster-slave-validity-factor 進行故障轉移時,salve會 申請成為master。有時slave會和master失聯很久導致數據較舊,這樣的slave不應該成為master。這個配置用來判斷slave是否和master失聯時間過長。

同樣在其它文件夾下,也新建redis.conf文件,裡面的配置信息相應的修改即可。

啟動各個節點:

首先進入redis-3.2.9目錄下的,src目錄,然後再執行啟動各個節點:

./redis-server ../redis_cluster/6380/redis.conf

./redis-server ../redis_cluster/6381/redis.conf

./redis-server ../redis_cluster/6382/redis.conf

./redis-server ../redis_cluster/6383/redis.conf

./redis-server ../redis_cluster/6384/redis.conf

./redis-server ../redis_cluster/6385/redis.conf

檢查各個節點是否正常啟動了:

如果出現如下信息,說明6個節點正常啟動了:

CentOS中搭建Redis偽分佈式集群

創建redis集群

redis官方提供了redis-trib.rb這個工具來創建redis集群,同時這個工具就在redis-3.2.9目錄下的src目錄中,執行如下命令:

./redis-trib.rb create --replicas 1 192.168.242.10:6380 192.168.242.10:6381 192.168.242.10:6382 192.168.242.10:6383 192.168.242.10:6384 192.168.242.10:6385

此時如果報如下錯誤,說明沒有安裝ruby:

/usr/bin/env: ruby: No such file or directory

所以先安裝ruby:

yum install ruby

安裝完成ruby後,再執行上面的創建集群的命令,此時如果再報如下錯誤,因為缺少redis和ruby的接口,使用gem安裝:

./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

由於安裝redis和ruby的接口需要用gem,所以先裝gem:

yum install rubygems

然而此時如果報如下錯誤:

Error Downloading Packages:

rubygems-1.3.7-1.el6.noarch: failure: Packages/rubygems-1.3.7-1.el6.noarch.rpm from c6-media: [Errno 256] No more mirrors to try.

說明在鏡像文件中沒有rubygems的安裝包,此時只能先將rubygems的安裝下載下來,然後在安裝。

這裡將rubygems-1.3.7-5.el6.noarch.rpm文件上傳到CentOS中,然後執行安裝命令:

rpm -ivh rubygems-1.3.7-5.el6.noarch.rpm

此時會報如下錯誤:

warning: rubygems-1.3.7-5.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

error: Failed dependencies:

ruby-rdoc is needed by rubygems-1.3.7-5.el6.noarch

說明需要先將rubygems依賴的軟件先安裝好,即將ruby-irb和ruby-rdoc先安裝:

yum install ruby-irb ruby-rdoc

然後再執行上面安裝rubygems-1.3.7-5.el6.noarch.rpm的命令,出現如下信息,說明安裝成功了:

CentOS中搭建Redis偽分佈式集群

再來安裝redis和ruby的接口:

gem install redis

出現如下信息,說明安裝成功:

CentOS中搭建Redis偽分佈式集群

此時再來執行創建redis集群的命令:

./redis-trib.rb create --replicas 1 192.168.242.10:6380 192.168.242.10:6381 192.168.242.10:6382 192.168.242.10:6383 192.168.242.10:6384 192.168.242.10:6385

出現如下信息,說明redis集群啟動成功:

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.242.10:6380

192.168.242.10:6381

192.168.242.10:6382

Adding replica 192.168.242.10:6383 to 192.168.242.10:6380

Adding replica 192.168.242.10:6384 to 192.168.242.10:6381

Adding replica 192.168.242.10:6385 to 192.168.242.10:6382

M: cd9a1cfb495fd728ebf86fe3c2ae484d33a55efa 192.168.242.10:6380

slots:0-5460 (5461 slots) master

M: 86ff5dd6c91f2b1f723d20e0611b6b000b5564b9 192.168.242.10:6381

slots:5461-10922 (5462 slots) master

M: c7124e5837d89a108d4fedce46d18d190d831355 192.168.242.10:6382

slots:10923-16383 (5461 slots) master

S: 1eae195a6d3628b7ac4c2152518cd0afd2dcc4a2 192.168.242.10:6383

replicates cd9a1cfb495fd728ebf86fe3c2ae484d33a55efa

S: 3dd781d5161ac8367cbf16b97414f7ecbb271fd1 192.168.242.10:6384

replicates 86ff5dd6c91f2b1f723d20e0611b6b000b5564b9

S: a942e13b48d63e54f22425a4694fb6ba71b7be89 192.168.242.10:6385

replicates c7124e5837d89a108d4fedce46d18d190d831355

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 192.168.242.10:6380)

M: cd9a1cfb495fd728ebf86fe3c2ae484d33a55efa 192.168.242.10:6380

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: a942e13b48d63e54f22425a4694fb6ba71b7be89 192.168.242.10:6385

slots: (0 slots) slave

replicates c7124e5837d89a108d4fedce46d18d190d831355

S: 1eae195a6d3628b7ac4c2152518cd0afd2dcc4a2 192.168.242.10:6383

slots: (0 slots) slave

replicates cd9a1cfb495fd728ebf86fe3c2ae484d33a55efa

M: 86ff5dd6c91f2b1f723d20e0611b6b000b5564b9 192.168.242.10:6381

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: c7124e5837d89a108d4fedce46d18d190d831355 192.168.242.10:6382

slots:10923-16383 (5461 slots) master

1 additional replica(s)

S: 3dd781d5161ac8367cbf16b97414f7ecbb271fd1 192.168.242.10:6384

slots: (0 slots) slave

replicates 86ff5dd6c91f2b1f723d20e0611b6b000b5564b9

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

驗證redis集群

直接通過redis-cli工具來連接集群,該redis-cli工具也是在src目錄下的。

./redis-cli -h 192.168.242.10 -c -p 6380

注意:

需要加參數 -c 可連接到集群,-p的端口只要是集群中某個節點的端口就行。

連接成功後,測試往redis集群中存入數據和取數據:

CentOS中搭建Redis偽分佈式集群

CentOS中搭建Redis偽分佈式集群

相關推薦

推薦中...