環(huán)境介紹
操作系統(tǒng):Centos 6.* ( 雙核4G、硬盤至少20G)
redis 版本:3.0.5
1:redis-IP:192.168.1.180 (redis端口:6000/6001)
2:redis-IP:192.168.1.101 (redis端口:6002/6003)
3:redis-IP:192.168.1.127 (redis端口:6004/6005)
一:redis安裝
(三臺服務(wù)均裝redis服務(wù))
1)安裝依賴包
yum -y install make(現(xiàn)有的無需再yum)
yum -y install wget
yum -y install gcc-c++(必須加否則make時會出錯)
2)下載redis包(2的版本不支持集群)
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
3)解壓redis包到/usr/local
tar –zxvf redis-3.0.5.tar.gz –C /usr/local
4)進(jìn)入解壓目錄并將其重命名
cd /usr/local
mv redis-3.0.5 redis
5)編譯安裝redis服務(wù)
cd redis
make && make install
6)添加redis環(huán)境變量
echo -e "export REDIS_HOME=\"/usr/local/redis-3.0.5\"
export PATH=\"\$PATH:\$REDIS_HOME/src\"" >> /etc/profile
7)使環(huán)境變量生效
source /etc/profile
8)啟動redis服務(wù)并查看端口
redis-server &
netstat -ntpl |grep "6379"
二:配置redis集群
(三臺分別兩個redis,目錄及端口分別對應(yīng)修改)
1)創(chuàng)建并復(fù)制配置文件至集群目錄
mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir 6000
mkdir 6001
cp /usr/local/redis/redis.conf /usr/local/cluster
2)修改配置文件
cd /usr/local/cluster
vi redis.conf
port 6000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000 #當(dāng)網(wǎng)絡(luò)分裂出現(xiàn)期間,節(jié)點(diǎn)超時時間批幌,是一個重要的配置選項
appendonly yes
文件中的 cluster-enabled 選項用于開實(shí)例的集群模式
cluster-conf-file 選項則設(shè)定了保存節(jié)點(diǎn)配置文件的路徑,它由 Redis 集群在啟動時創(chuàng)建, 并在有需要時自動進(jìn)行更新。
3)把修改后配置文件分別拷貝到6000/6001/目錄下面
cp /usr/local/cluster/redis.conf /usr/local/cluster/6000
cp /usr/local/cluster/redis.conf /usr/local/cluster/6001
4)修改6001/6002目錄下面redis.conf文件中的port參數(shù)并分別啟動這2個redis實(shí)例
cd /usr/local/cluster/6000
redis-server redis.conf &
cd /usr/local/cluster/6001
redis-server redis.conf &
看下各各文件下是有這文件,尤其是nodes.conf
5)執(zhí)行redis的創(chuàng)建集群命令創(chuàng)建集群
5.1)一臺做redis集群:
cd /usr/local/redis/src
./redis-trib.rb create --replicas 1 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005
5.2)三臺做redis集群
還是要在配置文件中修改redis.conf里的bind 127.0.0.1修改成0.0.0.0,重啟redis服務(wù)生效呻粹。然后再執(zhí)行創(chuàng)建集群的命令。
./redis-trib.rb create --replicas 1 192.168.1.180:6000 192.168.1.180:6001 192.168.1.101:6002 192.168.1.101:6003 127.0.0.1:6004 127.0.0.1:6005
5.2.1) 執(zhí)行上面的命令的時候會報錯苏研,因?yàn)槭菆?zhí)行的ruby的腳本等浊,需要ruby的環(huán)境
A)所以需要安裝ruby的環(huán)境,使用yum安裝
yum install ruby
5.2.2)然后執(zhí)行5.2的創(chuàng)建集群命令
./redis-trib.rb create --replicas 1 192.168.1.180:6000 192.168.1.180:6001 192.168.1.101:6002 192.168.1.101:6003 127.0.0.1:6004 127.0.0.1:6005
B)還會報錯摹蘑,提示缺少rubygems組件筹燕,使用yum安裝
yum -y install rubygems
5.2.3)然后執(zhí)行5.2的創(chuàng)建集群命令
./redis-trib.rb create --replicas 1 192.168.1.180:6000 192.168.1.180:6001 192.168.1.101:6002 192.168.1.101:6003 127.0.0.1:6004 127.0.0.1:6005
C)還會報錯,提示不能加載redis,是因?yàn)槿鄙賠edis和ruby的接口庄萎,
gem install redis
5.2.4)然后執(zhí)行5.2的創(chuàng)建集群命令
./redis-trib.rb create --replicas 1 192.168.1.180:6000 192.168.1.180:6001 192.168.1.101:6002 192.168.1.101:6003 127.0.0.1:6004 127.0.0.1:6005
到此集群搭建完W偕佟!糠涛!
1)創(chuàng)建集群時報下錯:
這是由于上一次配置集群失敗時留下的配置信息導(dǎo)致的。 只要把redis.conf中定義的 cluster-config-file 所在的文件刪除兼犯,重新啟動redis-server及運(yùn)行redis-trib即可忍捡。
三臺做的集群
redis-cli -p 6004 cluster nodes
在圖中, 從左到右的各個域分別是: 節(jié)點(diǎn) ID 切黔, IP 地址和端口號砸脊, 標(biāo)志(flag), 最后發(fā)送 PING 的時間纬霞, 最后接收 PONG 的時間凌埂, 連接狀態(tài), 節(jié)點(diǎn)負(fù)責(zé)處理的槽诗芜。
由此可看出:
6004主瞳抓,6005從
6000主,6003從
6002主伏恐,6001從
測試
1.1)已在192.168.1.101上停掉了redis-server的6002端口
1.2)圖中已顯示6002主已經(jīng)連接失敗孩哑,6001成為了master
1.3)6002redis已啟動
1.4)6002變?yōu)閟lave
簡單來說:當(dāng)主宕掉后,主會失敗翠桦,從依舊在横蜒,過段時間從會頂替掉宕掉的主變成主,而最初的主一直出入失敗中销凑。當(dāng)最初的主的redis服務(wù)啟動后丛晌,會變成從,直接顛倒斗幼。