搭建完全分散式redis叢集
這裡用三臺伺服器搭建一個完全分散式redis叢集,用來做爬蟲請求url的共享佇列.每臺伺服器建立兩個節點(一個master 一個slave),當mater掛了的時候slave會頂上去,這樣就構成了一個三主三從的叢集。
三臺伺服器:host1 host2 host3
6379埠為主節點,6380為輔助節點
1.下載
下載地址:http://download.redis.io/releases/
可選想要的版本進行下載,一般用http://download.redis.io/releases/redis-stable.tar.gz
cd /root
wget http://download.redis.io/releases/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
mv redis-stable redis-6379
2編譯redis
cd redis-6379
make
make install
3修改配置
vi redis.conf
#redis後臺執行
daemonize yes
#允許訪問的機器
bind 0.0.0.0
#埠
port 6379
#日誌輸入配置
loglevel notice
logfile"redis-6379.log"
#叢集配置
#開啟叢集
cluster-enabled yes
#叢集的配置,首次啟動時會自動生成
cluster-config-filenode-6379.log
#請求超時時間當前設定為5秒
cluster-node-timeout 5000
#aof日誌開啟,每次寫操作都會記錄一條日誌
appendonly yes
4啟動 測試
src/redis-server redis.conf
ps -ef | grep redis
看到6379正在執行
5.搭建叢集
安裝 ruby
yum -y install ruby
yum -y install rubygems
安裝 ruby 的redis 驅動
gem install redis
將redis-6379複製一份為redis-6380,再修改配置檔案
#redis後臺執行
daemonize yes
#允許訪問的機器
bind 0.0.0.0
#埠
port 6380
#日誌輸入配置
loglevel notice
logfile"redis-6380.log"
#叢集配置
#開啟叢集
cluster-enabled yes
#叢集的配置,首次啟動時會自動生成
cluster-config-filenode-6380.log
#請求超時時間當前設定為5秒
cluster-node-timeout 5000
#aof日誌開啟,每次寫操作都會記錄一條日誌
appendonly yes
將這臺伺服器上的的redis-6379和redis-6380複製到另外兩臺伺服器
命令建立叢集:
src/redis-trib.rb create –replicas 1 host1:6379 106.host2:6379 host3:6379host1:6380 106.host2:6380 host3:6380
( 1表示主從關係1:1的比例,前三個是主節點)
檢視叢集情況:
src/redis-cli
cluster info
6叢集測試
叢集測試
進去叢集環境:
[[email protected] cluster]# redis-cli -c -h 127.0.0.1 -p 6379
127.0.0.1:7000>set sex male
Ok
127.0.0.1:7000>get sex
“male”
切換任意節點:
[[email protected] redis-6379]# src/redis-cli -c -h 127.0.0.1 -p 6379
[[email protected] cluster]# redis-cli -c -h 127.0.0.1 -p 7004
127.0.0.1:7004> get sex
-> Redirected to slot [2584] located at 127.0.0.1:7000
"male"
7.清空叢集資料
src/cli
flushall
需要每個節點都要執行一次
8redis視覺化操作工具
Redis Desktop Manager
9報錯備註
1》 ruby版本太低
手動安裝ruby環境
$ ./configure
$ make && make install
檢視安裝是否成功
$ ruby -v
如果報錯執行
$ export PATH=/usr/local/bin:$PATH
再測試
$ ruby -v
2》建立叢集一直Waiting for the cluster to join...................解決:
刪除 nodes-6379.conf redis-6379.log
根目錄 Chmod -R 777 *
檢視防火牆狀態service iptables status
重新啟動redis