真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Redis群集部署-創(chuàng)新互聯(lián)

一、Redis群集相關(guān)概念
Redis是從3.0版本開始支持cluter的,采用的是hash槽方式,可以將多個(gè)Redis實(shí)例整合在一起,形成一個(gè)群集,也就是將數(shù)據(jù)分散存儲(chǔ)到群集中的多個(gè)節(jié)點(diǎn)上。
Redis的cluster是一個(gè)無中心的結(jié)構(gòu),在群集中,每個(gè)master的身份是平等的,每個(gè)節(jié)點(diǎn)都保存數(shù)據(jù)和整個(gè)群集的狀態(tài),并且知道其他節(jié)點(diǎn)所負(fù)責(zé)的槽,也會(huì)定時(shí)發(fā)送心跳信息,能夠及時(shí)感知群集中異常的節(jié)點(diǎn),并且采取投票的方式來決定該節(jié)點(diǎn)是否為不可用,若票數(shù)為群集中節(jié)點(diǎn)的半數(shù)以上,則認(rèn)為該節(jié)點(diǎn)不可用,也正是因?yàn)榇颂攸c(diǎn),所以要部署Redis群集,節(jié)點(diǎn)數(shù)量最少要三個(gè)及以上。
群集角色有master和slave,master之間分配slots(槽),槽點(diǎn)編號(hào)是0-16383(共16384個(gè))。
默認(rèn)情況下,每個(gè)群集節(jié)點(diǎn)有兩個(gè)TCP端口在監(jiān)聽,一個(gè)是6379(用于監(jiān)聽客戶端的訪問連接),另一個(gè)是16379(用于群集之間的節(jié)點(diǎn)通信)。注意,防火墻需要放行這兩個(gè)端口的流量。
Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個(gè)append only file(aof)里面(這稱為“全持久化模式”)。
Redis提供的這兩種方式進(jìn)行持久化,一種是RDB持久化(原理是將Redis在內(nèi)存中的數(shù)據(jù)庫定時(shí)記錄dump到磁盤上的RDB持久化),另一種是AOF(append only file)持久化(原理是將Redis的操作日志以追加的方式寫入文件)
RDB的優(yōu)點(diǎn)與缺點(diǎn)
AOF全持久化的優(yōu)點(diǎn):
? 可以保證數(shù)據(jù)的高可用性;
? 寫入過程中及時(shí)出現(xiàn)宕機(jī)現(xiàn)象,也不會(huì)破壞日志文件中已經(jīng)存在的內(nèi)容,如果在寫入過程中宕機(jī),重啟Redis后可以通過redis-check-aof工具來解決;
? 如果日志過大,Redis可以自動(dòng)啟用rewrite機(jī)制,生成新的文件存儲(chǔ)aof日志;
? 該機(jī)制可以帶來更高的數(shù)據(jù)安全性,及數(shù)據(jù)持久性。Redis中提供了三種同步策略,即每秒同步、每修改同步和不同步。
? AOF全持久化的缺點(diǎn):
? 對(duì)于相同數(shù)量的數(shù)據(jù)集而言,AOF文件通常要大于RDB文件。RDB在恢復(fù)大數(shù)據(jù)集時(shí)的速度比AOF的恢復(fù)速度要快;
? 根據(jù)同步策略的不同,AOF在運(yùn)行效率上往往會(huì)慢于RDM,總之,每秒同步策略的效率是比較高的,同步禁用策略的效率和RDB一樣高效。
如果RDB和AOF同時(shí)存在,則優(yōu)先選擇AOF方式
二、部署Redis群集
1、環(huán)境如下:
Redis群集部署
總共六臺(tái)centos服務(wù)器,實(shí)現(xiàn)三臺(tái)master分別對(duì)應(yīng)一臺(tái)slave
為了避免因?yàn)槲锢矸?wù)器的宕機(jī)而造成整個(gè)群集崩潰,也可以在一臺(tái)服務(wù)器上配置多個(gè)Redis實(shí)例,實(shí)現(xiàn)交叉主從復(fù)制,所謂交叉就是master在node01,但對(duì)應(yīng)的slave在node02,node02上master對(duì)應(yīng)的slave在node03,而node03對(duì)應(yīng)的slave在node01
上述只是多個(gè)服務(wù)器部署Redis群集。
但我這里主要是在一臺(tái)服務(wù)器上部署多個(gè)節(jié)點(diǎn),所以在node6上會(huì)有多個(gè)實(shí)例
配置前可先下載所需軟件包,也可自行下載準(zhǔn)備,鏈接:https://pan.baidu.com/s/1mJGBD7b0QyR_II4mSpdD8Q
提取碼:72hi
2、配置Redis實(shí)例
這里以node01的配置進(jìn)行示例,其他節(jié)點(diǎn)的配置和node1基本一樣

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的萊蕪網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
[root@node1 /]# mkdir redis          # 個(gè)人習(xí)慣而已
[root@node1 /]# cd redis/
[root@node1 redis]# rz            # 上傳所需軟件包
[root@node1 redis]# ls             # node 節(jié)點(diǎn)只需要redis4.0這個(gè)包,其余兩個(gè)包是安裝ruby環(huán)境所需的
redis-3.3.0.gem  redis-4.0.14.tar.gz  ruby-2.3.1.tar.gz
[root@node1 redis]# tar zxf redis-4.0.14.tar.gz          # 解包
[root@node1 redis]# mv redis-4.0.14 /usr/local/redis          # 移動(dòng)并改名
[root@node1 redis]# cd /usr/local/redis/          # 進(jìn)入目錄
[root@node1 redis]# make && make install          # 編譯并安裝
[root@node1 redis]# ./utils/install_server.sh        # 對(duì)redis進(jìn)行初始化
# 初始化的所有選項(xiàng)保持默認(rèn),一路回車確認(rèn)即可,是在確認(rèn)監(jiān)聽端口、配置文件、日志文件、pid存放Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!

Starting Redis server...
Installation successful!
路徑等信息            # 當(dāng)出現(xiàn)這些信息說明初始化成功
[root@node1 redis]# echo "512" > /proc/sys/net/core/somaxconn            # 接下做一些優(yōu)化
[root@node1 redis]# echo  "vm.overcommit_memory = 1" >> /etc/sysctl.conf 
[root@node1 redis]# sysctl -p
vm.overcommit_memory = 1
[root@node1 redis]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled 
[root@node1 redis]# vim /etc/redis/6379.conf           # 編輯配置文件
bind 0.0.0.0          #找到?jīng)]有被注釋的這一行,修改為0.0.0.0
daemonize yes    #若有注釋符號(hào),需要?jiǎng)h除注釋符號(hào),以便生效
cluster-enabled yes            # 如有注釋,需要去掉注釋符號(hào)
cluster-node-timeout 5000         # 修改
appendonly yes         # 改為 yes
[root@node1 redis]# /etc/init.d/redis_6379 restart        # 重啟服務(wù)使配置生效
[root@node1 redis]# netstat -anput | grep 6379        # 確定已經(jīng)監(jiān)聽6379和16379兩個(gè)端口
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      44263/redis-server  
tcp        0      0 0.0.0.0:16379           0.0.0.0:*               LISTEN      44263/redis-server  
在其他節(jié)點(diǎn)服務(wù)器上將上述配置依次進(jìn)行即可,node6除外
3、配置node06主機(jī)的多Redis實(shí)例
node06這個(gè)節(jié)點(diǎn)上,我將配置其運(yùn)行多個(gè)Redis數(shù)據(jù)庫實(shí)例,所以與前面五個(gè)節(jié)點(diǎn)的配置并不是完全一樣,小心配置
[root@node6 /]# mkdir redis
[root@node6 /]# cd redis/
[root@node6 redis]# rz
[root@node6 redis]# tar zxf redis-4.0.14.tar.gz 
[root@node6 redis]# mv redis-4.0.14 /usr/local/redis
[root@node6 redis]# cd /usr/local/redis/
[root@node6 redis]# make && make install            # 編譯并安裝,安裝完畢后無需初始化
[root@node6 redis]# redis-server         # 執(zhí)行此命令啟動(dòng)會(huì)出現(xiàn)3個(gè)警告,這三個(gè)警告就是我們需要優(yōu)化的三個(gè)選項(xiàng)
[root@node6 redis]# echo "512" > /proc/sys/net/core/somaxconn
[root@node6 redis]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf 
[root@node6 redis]# sysctl -p
vm.overcommit_memory = 1
[root@node6 redis]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
[root@node6 redis]# vim redis.conf          # 編輯配置文件
bind 0.0.0.0
port 7000          # redis的默認(rèn)端口是6379,這里我修改為7000,為了方便識(shí)別
daemonize yes        #開啟后臺(tái)守護(hù)進(jìn)程,以便后臺(tái)運(yùn)行
cluster-enabled yes        #開啟群集
cluster-node-timeout 5000     #群集節(jié)點(diǎn)間的超時(shí)時(shí)間,單位是毫秒
appendonly yes       #是否開啟同步到磁盤
appendfilename "appendonly-7000.aof"     #aof日志的名字,因?yàn)楸九_(tái)主機(jī)上擁有多個(gè)實(shí)例,所以各個(gè)端口是不一樣的,所以使用端口來命名日志名稱
[root@node6 redis]# mkdir -p /usr/local/redis-cluster/{7000..7004}
#以上是打算運(yùn)行幾個(gè)Redis實(shí)例,就創(chuàng)建幾個(gè)目錄即可,這里我以實(shí)例的端口號(hào)給目錄命名(暫時(shí)打算運(yùn)行4個(gè)Redis實(shí)例)
#以下是將修改后的配置文件復(fù)制到指定的目錄下一份
[root@node6 redis]# cp redis.conf /usr/local/redis-cluster/7000/
[root@node6 redis]# cp redis.conf /usr/local/redis-cluster/7001/
[root@node6 redis]# cp redis.conf /usr/local/redis-cluster/7002/
[root@node6 redis]# cp redis.conf /usr/local/redis-cluster/7003/
[root@node6 redis]# cp redis.conf /usr/local/redis-cluster/7004/

#然后下面將復(fù)制過去的各個(gè)配置文件中改為與Redis實(shí)例對(duì)應(yīng)的端口號(hào)

[root@node6 redis]# cd /usr/local/redis-cluster/
[root@node6 redis-cluster]# ls
7000  7001  7002  7003  7004
[root@node6 redis-cluster]# sed -i s/7000/7001/g 7001/redis.conf 
[root@node6 redis-cluster]# sed -i s/7000/7002/g 7002/redis.conf 
[root@node6 redis-cluster]# sed -i s/7000/7003/g 7003/redis.conf 
[root@node6 redis-cluster]# sed -i s/7000/7004/g 7004/redis.conf 
[root@node6 redis-cluster]# cd 7000/         # 進(jìn)入到7000實(shí)例目錄中
[root@node6 7000]# redis-server redis.conf         # 啟動(dòng)該實(shí)例
8142:C 13 Feb 10:44:17.501 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8142:C 13 Feb 10:44:17.501 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=8142, just started
8142:C 13 Feb 10:44:17.501 # Configuration loaded
# 來就是依次進(jìn)入到各個(gè)實(shí)例目錄中,啟動(dòng)實(shí)例,這里我就不演示了

Redis群集部署
4、主機(jī)node01安裝配置ruby的運(yùn)行環(huán)境,便于管理Redis群集

[root@node1 /]# yum -y install rpm-build openssl openssl-devel       # 安裝所需依賴包
[root@node1 /]# cd /redis/
[root@node1 redis]# ls
redis-3.3.0.gem  redis-4.0.14.tar.gz  ruby-2.3.1.tar.gz
[root@node1 redis]# tar zxf ruby-2.3.1.tar.gz         # 解包
[root@node1 redis]# cd ruby-2.3.1/
[root@node1 ruby-2.3.1]# ./configure --prefix=/usr/local/ruby && make && make install          # 此環(huán)境編譯時(shí)間較長(zhǎng)
[root@node1 ruby-2.3.1]# ln -s /usr/local/ruby/bin/* /usr/local/bin/         # 為命令做軟連接
[root@node1 ruby-2.3.1]# ln -s /usr/local/redis/src/redis-trib.rb /usr/local/bin/
[root@node1 ruby-2.3.1]# ln -s /usr/local/ruby/bin/* /usr/bin/
[root@node1 ruby-2.3.1]# cd ..
[root@node1 redis]# gem install redis-3.3.0.gem       # 回到有g(shù)em文件的目錄,進(jìn)行安裝
Successfully installed redis-3.3.0
Parsing documentation for redis-3.3.0
Installing ri documentation for redis-3.3.0
Done installing documentation for redis after 0 seconds
1 gem installed
# 范圍如上信息則表示安裝成功

5、配置群集中的各個(gè)節(jié)點(diǎn)

[root@node1 /]# redis-cli -p 6379          # 登錄到ben'di本地實(shí)例
127.0.0.1:6379> CLUSTER MEET 192.168.171.134 6379       # 將各個(gè)節(jié)點(diǎn)添加到群集中
OK
127.0.0.1:6379> CLUSTER MEET 192.168.171.135 6379
OK
127.0.0.1:6379> CLUSTER MEET 192.168.171.136 6379
OK
127.0.0.1:6379> CLUSTER MEET 192.168.171.137 6379
OK
127.0.0.1:6379> CLUSTER MEET 192.168.171.138 7000     # 這塊是因?yàn)閚ode6修改過端口號(hào)
OK
127.0.0.1:6379> set test aaa             # 由于并沒有分配hash槽,所以并不能添加數(shù)據(jù)
(error) CLUSTERDOWN Hash slot not served      
127.0.0.1:6379> CLUSTER INFO           # 查看群集的狀態(tài)
cluster_state:fail                   # 會(huì)發(fā)現(xiàn)這里是fail失敗的
cluster_slots_assigned:0
127.0.0.1:6379> exit

# 下來我們分配槽點(diǎn),要小心配置
#雖然可以將命令中的“add”換為“del”,但是我沒有成功
#一定要將0至16383完全分配出去,最好是等份分配
#只需給作為master的節(jié)點(diǎn)分配即可,我這里node01至node03為master
[root@node1 /]# redis-cli -h 192.168.171.133 -p 6379 cluster addslots {0..5461}
OK
[root@node1 /]# redis-cli -h 192.168.171.134 -p 6379 cluster addslots {5462..10922}
OK
[root@node1 /]# redis-cli -h 192.168.171.135 -p 6379 cluster addslots {10923..16383}
OK
[root@node1 /]# redis-cli -p 6379 -c          # 進(jìn)入群集,需要添加-c選項(xiàng)
127.0.0.1:6379> CLUSTER NODES            # 查看群集節(jié)點(diǎn)信息
#接下來是將各個(gè)slave從節(jié)點(diǎn)與master進(jìn)行綁定
#node04作為node01的從節(jié)點(diǎn),node05作為node02的從節(jié)點(diǎn),node06的6379實(shí)例作為node03的從節(jié)點(diǎn)
#需要配置哪個(gè)從節(jié)點(diǎn),就需要登錄到哪個(gè)實(shí)例
127.0.0.1:6379> CLUSTER NODES     #可以先執(zhí)行此命令,查看相應(yīng)節(jié)點(diǎn)的ID,以便接下來指定
[root@node1 /]# redis-cli -h 192.168.171.136 -p 6379        # 登錄到node4
192.168.171.136:6379> CLUSTER REPLICATE 4397bb3e5e43fdf1700551d0a2587f502e6c02a8
OK
#以上添加的是node1的節(jié)點(diǎn)id
192.168.171.136:6379> exit       # 退出該節(jié)點(diǎn)
[root@node1 /]# redis-cli -h 192.168.171.137 -p 6379
192.168.171.137:6379> CLUSTER REPLICATE 1eca51f415ba5194a95d5400176daa5713d64990
OK
#以上添加的是node2的節(jié)點(diǎn)id
192.168.171.137:6379> exit
[root@node1 /]# redis-cli -h 192.168.171.138 -p 7000
192.168.171.138:7000> CLUSTER REPLICATE ee71a2fd995f35992ce69328096ccd50fc68f89e
OK
#以上添加的是node3的節(jié)點(diǎn)id

Redis群集部署

至此,群集即可正常讀寫數(shù)據(jù)了,如下:
[root@node1 /]# redis-cli -h 192.168.171.133 -p 6379 -c 
192.168.171.133:6379> set test aaa
-> Redirected to slot [6918] located at 192.168.171.134:6379
OK
192.168.171.134:6379> get test
"aaa"
192.168.171.134:6379> 
6、使用ruby安裝的命令管理Redis群集
[root@node1 /]# redis-trib.rb check 127.0.0.1:637

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站欄目:Redis群集部署-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/cspjsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部