集群技術(shù)是構(gòu)建高并發(fā)網(wǎng)站的主要技術(shù),訪問網(wǎng)站的最大壓力是在訪問某個頁面時,需要時查詢數(shù)據(jù)庫并相應(yīng),redis從3.0版本以后開始支持集群功能了,要讓集群正常工作至少得有三個主節(jié)點(diǎn)。
Redis集群是基于哈希槽(hash slot)的概念來實(shí)現(xiàn)的,redis只集成了16384個槽,當(dāng)在redis中放置一個KYE的時候,redis會通過對這個KEY用crc16算法算出一個值,然后將這個值對16383求余,這樣每個KEY都會對應(yīng)一個編號在0-16383間,redis會根據(jù)節(jié)點(diǎn)的數(shù)量將哈希槽分配到不同的節(jié)點(diǎn)。
當(dāng)要取這個某一個KEY的值的時候,redis會通過要獲取的KYE名,通過crc16算出一個值,然后和16383求余,通過余找到相應(yīng)的節(jié)點(diǎn),再在這個節(jié)點(diǎn)上找這個KEY值。
Redis延續(xù)了讀寫分離的特性,每個主節(jié)點(diǎn)都會有一個從節(jié)點(diǎn),從節(jié)點(diǎn)也可以有從節(jié)點(diǎn)。
主節(jié)點(diǎn)負(fù)責(zé)寫入,從節(jié)點(diǎn)負(fù)責(zé)讀取內(nèi)存中的數(shù)據(jù).
Node與Node互相監(jiān)聽,一旦有Node退出,其他幾個Node會自動均分退出Node的slot,
他們自己的slot不會被重新分配,所有并不影響其他slot的使用
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計,網(wǎng)站托管、服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)。
三臺機(jī)器一臺機(jī)器可以用多個端口開多個redis
192.168.123.160:6379 | 192.168.123.160:6380 |
---|---|
192.168.123.170:6379 | 192.168.123.170:6380 |
192.168.123.180:6379 | 192.168.123.180:6380 |
Redis安裝包里自帶有redis集群工具
集群工具需要的安裝包
zlib-1.2.8.tar.gz http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
ruby-2.2.9.tar.gz https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.gz
rubygems-2.5.1.tgz https://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.5.1.tgz
redis-3.2.2.gem https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
redis-3.2.3.tar.gz http://download.redis.io/releases/redis-3.2.3.tar.gz
安裝zlib
gunzip zlib-1.2.8.tar.gz
tar -xvf zlib-1.2.8.tar
cd zlib-1.2.8
./configure
make
make install
安裝ruby
因?yàn)閥um安裝的版本較低,不支持高版本的redis集群,所有我們使用高版本的
tar -zxvf ruby-2.2.9.tar.gz
cd ruby-2.2.4
./configure -prefix=/usr/local/ruby
make
maek install
cp ruby /bin
安裝rubygems
tar -zxvf rubygems-2.5.1.tgz
cd rubygems-2.5.1
ruby setup.rb
cp bin/gem /bin
安裝gem-redis
gem install -l redis-3.2.2.gem
redis( 在這3臺服務(wù)器都需要安裝)
tar -zxvf redis-3.2.3.tar.gz
cd redis-3.2.3
make
redis的配置文件
redis.conf 需要修改的地方
bind 0.0.0.0 #redis服務(wù)監(jiān)聽的地址,測試改為本地地址會好點(diǎn)
port 6379 #啟動端口,如果是redis-6380.conf配置文件,修改為6380
daemonize yes #修改為yes,讓redis在后臺運(yùn)行
pidfile /var/run/redis_6379.pid #如果是redis-6380.conf配置文件,修改位redis_6380.pid
logfile /usr/local/redis/logs/redis-6379.log #如果是redis-6380.conf配置文件,修改為redis_6380.pid
cluster-enabled yes #開啟集群
cluster-config-file nodes-51-6379.conf #如果是redis-6380.conf配置文件,修改為nodes-51-6380.conf
redis集群
復(fù)制源碼包里的工具
cp src/redis-server /usr/local/redis/
cp src/redis-cli /usr/local/redis
cp src/redis-trib.rb /usr/local/redis
啟動redis,并創(chuàng)建集群
redis-server redis.conf #每臺機(jī)器上都要啟動,單個機(jī)器多個redis要多個配置文件
redis-trib.rb create –replicas 1 192.168.123.160:6379 192.168.123.160:6380 192.168.123.170:6379 192.168.123.170:6380 192.168.123.180:6379 192.168.123.180:6380 #創(chuàng)建集群
然后輸入yes就可以了
查看集群節(jié)點(diǎn)
redis-trib.rb check 192.168.123.160:6379
出現(xiàn)以上信息,說明集群安裝成功