Linux環境安裝redis集羣
[TOC]
安裝環境
系統:CentOS release 6.5 (Final)
環境要求:
gcc;
Ruby:
Rubygems:
redis-3.X (需要3.0以上版本支持集羣)
注意:我測試時連接外網了,如果沒有連接外網就需要離線下載所需的依賴,然後上傳安裝。
安裝單個redis
注意:這裏需要gcc和ruby的環境。安裝前需要檢查系統是否有gcc和ruby的環境:
-
gcc環境
gcc用來編譯redis的源碼,使用gcc -v 查看,
-
ruby 環境
ruby 用來執行集羣的命名,使用ruby -v,gem -v 查看:
安裝好上述兩個依賴後,現在安裝redis.
- 創建存放安裝包的文件夾,makdir redis。然後cd到該目錄,上傳下載好的tar.gz文件。然後,執行解壓命令
tar zxvf redis-3.2.12.tar.gz
-
cd到redis的解壓目錄,然後執行make && make install 命令安裝:
$ cd /home/redis/redis-3.2.12 $ make && make install //make 這裏如果不指定PREFIX,默認將安裝在/usr/local/bin下,保持默認就好
安裝成功後,出現如下圖:
也可以在/usr/local/bin下查看redis的安裝文件。
-
cd到解壓目錄,指定配置文件啓動。
redis-server redis.conf
注意,這裏啓動的redis不是後臺啓動,退出會話後redis會自動退出。通常單機redis我們需要修改如下配置:
daemonize yes //默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啓用守護進程
requirepass foobared //設置客戶端連接密碼
port 6379 //指定端口
bind 127.0.0.1 //綁定的主機地址,如果需要遠程連接,則需修改該參數
protected-mode yes // 保護模式,如果需要遠程連接,則需要修改該參數
安裝Redis集羣
安裝集羣至少需要三個主節點,三個對應的從節點。防止某個節點掛掉,其他兩個節點可以推舉其對應得從節點爲主節點,一定程度的容錯。
這裏在同一臺機器上安裝,生產環境至少需要三臺機器安裝。創建6個文件分別存放配置信息,文件夾名以端口命名。比如7001-7006。
- 使用mkdir命令批量創建文件夾。
- 然後我們需要在安裝目錄複製redis-cli、redis-server、redis.conf 三個配置文件到每個文件夾,用來啓動單個redis. 如果安裝時沒有指定目錄,則默認在usr/local/bin 目錄下複製redis-cli、redis-server文件,redis.conf在解壓的目錄可以複製,也可以自己創建。
在複製redis.conf配置文件
- 修改每個redis.conf文件
bind 0.0.0.0 //0.0.0.0表示允許所有連接
protected-mode no //保護模式,yes表示不允許遠程連接
port 7001 //端口,這裏每個配置文件不同
daemonize yes //以後臺方式啓動
appendonly yes //redis 將每一次寫操作請求都追加到appendonly.aof 文件中redis重新啓動時,會從 該文件恢復出之前的狀態。
cluster-enabled yes //啓用集羣
cluster-node-timeout 5000 //節點超時時間
- 在每個文件下執行redis-server redis.conf 命令。這個可以創建腳本執行比較快。
vim startall.sh 就會打開vim編輯器,創建一個空的文本
這裏我每個分別啓動,腳本執行不起作用(心累)
-
此時,我們進入解壓的目錄src下,複製redis-trib.rb 文件到redis目錄;
-
在redis目錄執行命令:
注意:這裏--replicas 1 表示每個主數據庫擁有從數據庫個數爲1。master節點不能少於3個。
如果需要遠程訪問,這裏的命令中127.0.0.1 需要換成服務器的ip地址。否則不能遠程訪問。
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
各種報錯解決
執行./redis-trib.rb create --replicas 命令後報錯:
然後,ruby-v 和gem -v 查看ruby環境發現都已經安裝了。其實這個錯誤是缺少redis對ruby的接口,我們需要下載redis的gem包;
執行命令:gem install redis 有報錯了。
ruby版本太低了。。。。
執行如下命令安裝rvm,用他來安裝ruby更新的版本:
//具體RVM安裝命令地址:http://rvm.io/
[root@linux ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
[root@linux ~]# curl -sSL https://get.rvm.io | bash -s stable
[root@linux ~]# find / -name rvm -print
[root@linux ~]# source /usr/local/rvm/scripts/rvm
安裝好rvm,就可以看到很多rvm的文件。
設置默認的ruby版本
在執行gem install redis,就會安裝成功了。
gem install redis
接下來執行命令安裝集羣:
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
輸入yes,回車。
終於成功了,顯示顯示的主從節點信息。
集羣測試
切換到任意的節點目錄下,連接添加數據測試:
redis-cli -p 7001 -c
這裏就可以看到set name 集羣已經hash了key分佈在哪個槽上,自動跳轉到對應的節點上。