集羣技術是構建高併發網站的主要技術,訪問網站的最大壓力是在訪問某個頁面時,須要時查詢數據庫並相應,Redis從3.0版本之後開始支持集羣功能了,要讓集羣正常工做至少得有三個主節點。
Redis集羣是基於哈希槽(hash slot)的概念來實現的,redis只集成了16384個槽,當在redis中放置一個KYE的時候,redis會經過對這個KEY用crc16算法算出一個值,而後將這個值對16383求餘,這樣每一個KEY都會對應一個編號在0-16383間,redis會根據節點的數量將哈希槽分配到不一樣的節點。
當要取這個某一個KEY的值的時候,redis會經過要獲取的KYE名,經過crc16算出一個值,而後和16383求餘,經過餘找到相應的節點,再在這個節點上找這個KEY值。
Redis延續了讀寫分離的特性,每一個主節點都會有一個從節點,從節點也能夠有從節點。
主節點負責寫入,從節點負責讀取內存中的數據.
Node與Node互相監聽,一旦有Node退出,其餘幾個Node會自動均分退出Node的slot,
他們本身的slot不會被從新分配,全部並不影響其餘slot的使用node
三臺機器一臺機器能夠用多個端口開多個redisredis
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數據庫
安裝zlibruby
gunzip zlib-1.2.8.tar.gz tar -xvf zlib-1.2.8.tar cd zlib-1.2.8 ./configure make make install
安裝ruby
由於yum安裝的版本較低,不支持高版本的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-rediside
gem install -l redis-3.2.2.gem
redis( 在這3臺服務器都須要安裝)高併發
tar -zxvf redis-3.2.3.tar.gz cd redis-3.2.3 make
redis的配置文件
redis.conf 須要修改的地方工具
bind 0.0.0.0 #redis服務監聽的地址,測試改成本地地址會好點 port 6379 #啓動端口,若是是redis-6380.conf配置文件,修改成6380 daemonize yes #修改成yes,讓redis在後臺運行 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集羣
複製源碼包裏的工具 cp src/redis-server /usr/local/redis/ cp src/redis-cli /usr/local/redis cp src/redis-trib.rb /usr/local/redis
啓動redis,並建立集羣
redis-server redis.conf #每臺機器上都要啓動,單個機器多個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 #建立集羣
而後輸入yes就能夠了
查看集羣節點
redis-trib.rb check 192.168.123.160:6379
出現以上信息,說明集羣安裝成功