試驗機操作系統:CentOS Linux release 7.2.1511 (Core)
本文的目的是教會大家快速搭建redis集群,完了再深入學習。
試問如果不上手試驗,看的資料再多有個毛用?
下載redis
下載網址:https://redis.io/download
寫文章時最新版本為:redis-4.0.1.tar.gz

可以先下載到windows操作系統,然后拷貝到centos。
下載成功后,在centos上創建一個目錄,存放我們的軟件,我比較喜歡放在/soft目錄下。
[root@localhost /]# mkdir /soft
然后利用WinScp工具拷貝到centos系統,放在/soft/目錄下。
安裝gcc
[root@localhost ~]# yum install gcc
中間有2次提示,要求輸入:yes 或 y,我們按照提示來就可以。
安裝pstree
[root@localhost ~]# yum install psmisc
中間有1次提示,要求輸入:y。按照提示來就可以。
解壓tar包
[root@localhost /]# cd /soft
[root@localhost soft]# tar zxvf redis-4.0.1.tar.gz
[root@localhost soft]# mv redis-4.0.1 /usr/local/redis
編譯安裝
[root@localhost soft]# cd /usr/local/redis
[root@localhost redis]# make MALLOC=libc
[root@localhost redis]# make & make install
說明:如果在make的時候不指定內存管理方式,會報錯的:
zmalloc.h:50:31: 致命錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄。
malloc是管理內存碎片的。
啟動reids
[root@localhost redis]# src/redis-server redis.conf
如果成功,如下圖:

然后新開終端,打開redis客戶端
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# src/redis-cli

表示已經啟動成功。
我相信單機安裝有點linux基礎的同學都能安裝成功。
-------------------------------------------------------------------------------
Redis集群
redis集群要求最小3主3從。我這里跟其它介紹的不一樣,我是模擬的真機環境。
准備6台centos7服務器,其中192.168.1.80我們剛剛裝了redis,並啟動成功。
因為redis集群還需要安裝ruby,還需要配置集群,所以我的想法是先在一台機器上安裝好之后,我們再拷貝整個系統到其它5台機器。這樣我們做的重復工作就比較少了。
192.168.1.80
192.168.1.81
192.168.1.82
192.168.1.83
192.168.1.84
192.168.1.85
安裝ruby
在剛安裝好的redis服務器上安裝ruby
因為創建集群時需要用Ruby 運行redis-trib.rb
[root@localhost redis]# yum -y install ruby ruby-devel rubygems rpm-build
[root@localhost redis]# gem install redis
這條命令有點慢,稍等片刻即可安裝成功,如下圖:

修改redis.conf
打開redis.conf,把下面列出來的配置項全部注釋,完了拷貝下面7條配置到redis.conf文件末尾
port 6379
bind 192.168.1.80
daemonize yes
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
pidfile /var/run/redis_6379.pid
克隆5台系統
克隆5台操作系統,並且每台系統的redis.conf中的bind修改成對應的IP
我用的虛擬機,克隆前先關掉虛擬機,即192.168.1.80。不然無法克隆。
打開相關端口
說明:
redis集群不僅需要開通redis客戶端連接的端口,而且需要開通集群總線端口
集群總線端口為redis客戶端連接的端口 + 10000
如redis端口為6379,則集群總線端口為16379
所以,所有服務器需要開通redis的客戶端連接端口和集群總線端口
每台都要開啟這兩個端口
開啟6379端口和16379端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=16379/tcp --permanent
重啟防火牆
[root@localhost ~]# firewall-cmd --reload
啟動redis
每台都要啟動
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# src/redis-server redis.conf
啟動集群
[root@localhost ~]# /usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.1.80:6379 192.168.1.81:6379 192.168.1.82:6379 192.168.1.83:6379 192.168.1.84:6379 192.168.1.85:6379
如下圖,表示成功啟動

仔細看這張圖,其中
192.168.1.80
192.168.1.81
192.168.1.82
三台節點自動設置成了主節點
192.168.1.83
192.168.1.84
192.168.1.85
三台節點自動設置成了從節點,而且每個從節點對應哪個主節點都有說明。
連接redis集群
在192.168.1.80機器上進行連接
[root@localhost redis]# src/redis-cli -h 192.168.1.80 -c -p 6379
必須要加:-c參數
在192.168.1.80節點上寫一條數據,看圖:

然后Ctrl+c退出redis客戶端,再連接到192.168.1.83節點上進行查詢
[root@localhost redis]# src/redis-cli -h 192.168.1.83 -c -p 6379
看圖:

看到沒,跳轉到192.168.1.80上了,從192.168.1.80獲取的數據
好了,成功了,累死寶寶了。
參考網址
https://redis.io/download
http://os.51cto.com/art/201702/533052.htm?pc
續
如果重啟服務器后,再次執行redis-trib.rb會報錯如下錯誤:
[ERR] Node 192.168.1.80:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解決方法:
刪除dump.rdb和nodes-6379.conf這兩個文件,然后重啟redis服務,最后啟動集群。
1次不行搞2次,2次不行搞3次。多刪除幾次。
