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

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

Redis_cluster集群-創(chuàng)新互聯(lián)

Redis cluster 集群

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、嶗山網(wǎng)站維護(hù)、網(wǎng)站推廣。

   Redis-Cluster 在設(shè)計(jì)的時(shí)候,就考慮到了去中心化,去中間件,集群中的每個(gè)節(jié)點(diǎn)都是平等的關(guān)系,都是對(duì)等的,每個(gè)節(jié)點(diǎn)都保存各自的數(shù)據(jù)和整個(gè)集群的狀態(tài)。每個(gè)節(jié)點(diǎn)都和其他所有節(jié)點(diǎn)連接,而且這些連接保持活躍,這樣就保證了我們只需要連接集群中的任意一個(gè)節(jié)點(diǎn),就可以獲取到其他節(jié)點(diǎn)的數(shù)據(jù)。

  Redis 集群沒有并使用傳統(tǒng)的一致性哈希來分配數(shù)據(jù),而是采用另外一種叫做哈希槽 (hash slot)的方式來分配的。redis cluster 默認(rèn)分配了 16384 個(gè)slot,當(dāng)我們set一個(gè)key 時(shí),會(huì)用CRC16算法來取模得到所屬的slot,然后將這個(gè)key 分到哈希槽區(qū)間的節(jié)點(diǎn)上,具體算法就是:CRC16(key) % 16384。所以我們?cè)跍y(cè)試的時(shí)候看到set 和 get 的時(shí)候,直接跳轉(zhuǎn)到了默認(rèn)第一個(gè)配置啟動(dòng)的節(jié)點(diǎn)。

  Redis 集群會(huì)把數(shù)據(jù)存在一個(gè) master 節(jié)點(diǎn),然后在這個(gè) master 和其對(duì)應(yīng)的salve 之間進(jìn)行數(shù)據(jù)同步。當(dāng)讀取數(shù)據(jù)時(shí),也根據(jù)一致性哈希算法到對(duì)應(yīng)的 master 節(jié)點(diǎn)獲取數(shù)據(jù)。只有當(dāng)一個(gè)master 掛掉之后,才會(huì)啟動(dòng)一個(gè)對(duì)應(yīng)的 salve 節(jié)點(diǎn),充當(dāng) master 。

  需要注意的是:Redis集群至少3+3,是還延續(xù)著Master-Slave的設(shè)計(jì)理念;

一、安裝依賴

yum -y install gcc gcc-c++ tcl ruby ruby-devel rubygems rpm-build

安裝完Redis再執(zhí)行:gem install redis

二、redis配置實(shí)例

conf目錄:redis_cluster

data目錄: data

logs目錄:logs

端口實(shí)例;6001 6001 6002 6003 6004 6005 6006

# cat redis.conf

bind 10.10.101.100

protected-mode yes

port 6379

# 端口配置6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

# redis后臺(tái)運(yùn)行

cluster-enabled yes

# 開啟集群

cluster-config-file nodes_6379.conf

集群配置 首次啟動(dòng)生成

cluster-node-timeout 5000

# 請(qǐng)求超時(shí)

appendonly yes

# aof 日志開啟

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile /opt/redis/logs/6379/redis.log

# 日志目錄

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /opt/redis/data/6379

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendfilename "appendonly.6379.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

    三、啟動(dòng)

src/redis-server redis_cluster/6001/redis.conf

src/redis-server redis_cluster/6002/redis.conf

src/redis-server redis_cluster/6003/redis.conf

src/redis-server redis_cluster/6004/redis.conf

src/redis-server redis_cluster/6005/redis.conf

src/redis-server redis_cluster/6006/redis.conf

    四、集群操作

通過使用 Redis 集群命令行工具 redis-trib , 編寫節(jié)點(diǎn)配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源碼的 src 文件夾中, 它是一個(gè) Ruby 程序, 這個(gè)程序通過向?qū)嵗l(fā)送特殊命令來完成創(chuàng)建新集群, 檢查集群, 或者對(duì)集群進(jìn)行重新分片(reshared)等工作。

    1、創(chuàng)建一個(gè)集群

redis-trib.rb create --replicas 1 10.10.101.100:6001 10.10.101.100:6002 10.10.101.100:6003 10.10.101.100:6004 10.10.101.100:6005 10.10.101.100:6006

    // --replicas 1 表示 為集群中的每個(gè)主節(jié)點(diǎn)創(chuàng)建一個(gè)從節(jié)點(diǎn)。

Redis_cluster 集群

  2、集群重新分片

./redis-trib.rb reshard 10.10.101.100:6003

    // 需要指定移動(dòng)哈希槽數(shù) ( 1 - 16383 ) 和目標(biāo)節(jié)點(diǎn) ID

# src/redis-cli -h 10.10.101.100 -p 6003 cluster nodes | grep myself

root@redis: /opt/redis# redis-cli -h 10.10.101.100 -p 6003 cluster nodes | grep myself

739f446f69739eb7f95331eec7c74a4e57d2eeac 10.10.101.100:6003 myself,master - 0 0 3 connected 10923-16383

Redis_cluster 集群

    3、添加一個(gè)新節(jié)點(diǎn)

    添加新的節(jié)點(diǎn)的基本過程就是添加一個(gè)空的節(jié)點(diǎn)然后移動(dòng)一些數(shù)據(jù)給它,有兩種情況,添加一個(gè)主節(jié)點(diǎn)和添加一個(gè)從節(jié)點(diǎn)(添加從節(jié)點(diǎn)時(shí)需要將這個(gè)新的節(jié)點(diǎn)設(shè)置為集群中某個(gè)節(jié)點(diǎn)的復(fù)制).

兩種情況第一步都是要添加一個(gè)空的節(jié)點(diǎn).

A、添加一個(gè)節(jié)點(diǎn)到現(xiàn)有的集群中去.

./redis-trib.rb add-node 10.10.101.100:6379 10.10.101.100:6003

    // 使用addnode命令來添加節(jié)點(diǎn),第一個(gè)參數(shù)是新節(jié)點(diǎn)的地址,第二個(gè)參數(shù)是任意一個(gè)已經(jīng)存在的節(jié)點(diǎn)的IP和端口.

root@redis: /opt/redis# src/redis-cli -c -h 10.10.101.100 -p 6379

10.10.101.100:6379> cluster nodes

0d9cb75cf92ce44dc3a4ad48bd95b48fc0d7a5ca 10.10.101.100:6379 myself,master - 0 0 0 connected

40d6721c15f32d732da89871b941788c3c57dcd3 10.10.101.100:6001 master - 0 1494413014845 1 connected 0-5460

041cb360dfcd8c1e8c77d8e7db03183da553953b 10.10.101.100:6004 slave 40d6721c15f32d732da89871b941788c3c57dcd3 0 1494413014344 1 connected

c9d5f58cd5e74f2c5ebbf6213e4314f4e92fb389 10.10.101.100:6006 slave 739f446f69739eb7f95331eec7c74a4e57d2eeac 0 1494413014644 3 connected

5a606eef48bc1fd8be9ad4d7a1d2a9420d8b2552 10.10.101.100:6002 master - 0 1494413015845 2 connected 5461-10922

f539cc2330a19f31a8dd55360e184cda2dc81151 10.10.101.100:6005 slave 5a606eef48bc1fd8be9ad4d7a1d2a9420d8b2552 0 1494413015345 2 connected

739f446f69739eb7f95331eec7c74a4e57d2eeac 10.10.101.100:6003 master - 0 1494413016345 3 connected 10923-16383

10.10.101.100:6379>

    // 新節(jié)點(diǎn)沒有包含任何數(shù)據(jù), 因?yàn)樗鼪]有包含任何哈希槽.

Redis_cluster 集群

Redis_cluster 集群

    盡管新節(jié)點(diǎn)沒有包含任何哈希槽, 但它仍然是一個(gè)主節(jié)點(diǎn), 所以在集群需要將某個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn)時(shí), 這個(gè)新節(jié)點(diǎn)不會(huì)被選中。只要將集群中的某些哈希桶移動(dòng)到新節(jié)點(diǎn)里面, 新節(jié)點(diǎn)就會(huì)成為真正的主節(jié)點(diǎn)了。

    4、添加一個(gè)從節(jié)點(diǎn)

有兩種方法添加從節(jié)點(diǎn),可以像添加主節(jié)點(diǎn)一樣使用redis-trib 命令,也可以像下面的例子一樣使用 –slave選項(xiàng):

src/redis-trib.rb add-node --slave 10.10.101.100:6379 10.10.101.100:6001

    // 此處并沒有指定添加的這個(gè)從節(jié)點(diǎn)的主節(jié)點(diǎn),這種情況下系統(tǒng)會(huì)在其他的復(fù)制集中的主節(jié)點(diǎn)中隨機(jī)選取一個(gè)作為這個(gè)從節(jié)點(diǎn)的主節(jié)點(diǎn)。

        a、指定主節(jié)點(diǎn)添加:

src/redis-trib.rb add-node --slave --master-id 739f446f69739eb7f95331eec7c74a4e57d2eeac 10.10.101.100:6379 10.10.101.100:6001

        b、給主節(jié)點(diǎn) 10.10.101.100:6003添加一個(gè)從節(jié)點(diǎn),該節(jié)點(diǎn)哈希槽的范圍10923-16383

節(jié)點(diǎn) ID 739f446f69739eb7f95331eec7c74a4e57d2eeac,我們需要鏈接新的節(jié)點(diǎn)(已經(jīng)是空的主節(jié)點(diǎn))并執(zhí)行命令:

redis 10.10.101.100:6379> cluster replicate 739f446f69739eb7f95331eec7c74a4e57d2eeac

       c、驗(yàn)證下集群節(jié)點(diǎn)

$ redis-cli -p 6379 cluster nodes | grep slave | grep739f446f69739eb7f95331eec7c74a4e57d2eeac

f093c80dde814da99c5cf72a7dd01590792b783b 10.10.101.100:6379 slave 739f446f69739eb7f95331eec7c74a4e57d2eeac 0 1385543617702 3 connected

041cb360dfcd8c1e8c77d8e7db03183da553953b 10.10.101.100:6004 slave 40d6721c15f32d732da89871b941788c3c57dcd3 0 1494413014344 1 connected

    // 節(jié)點(diǎn) 739f446f69739eb7f95331eec7c74a4e57d2eeac 有兩個(gè)從節(jié)點(diǎn), 6004 (已經(jīng)存在的) 和 6379 (新添加的).

    5、移除一個(gè)節(jié)點(diǎn)

只要使用 del-node 命令即可:

src/redis-trib del-node 10.10.101.100:6001 ``

    // 第一個(gè)參數(shù)是任意一個(gè)節(jié)點(diǎn)的地址,第二個(gè)節(jié)點(diǎn)是你想要移除的節(jié)點(diǎn)地址。

使用同樣的方法移除主節(jié)點(diǎn),不過在移除主節(jié)點(diǎn)前,需要確保這個(gè)主節(jié)點(diǎn)是空的. 如果不是空的,需要將這個(gè)節(jié)點(diǎn)的數(shù)據(jù)重新分片到其他主節(jié)點(diǎn)上.

    替代移除主節(jié)點(diǎn)的方法是手動(dòng)執(zhí)行故障恢復(fù),被移除的主節(jié)點(diǎn)會(huì)作為一個(gè)從節(jié)點(diǎn)存在,不過這種情況下不會(huì)減少集群節(jié)點(diǎn)的數(shù)量,也需要重新分片數(shù)據(jù).

    6、從節(jié)點(diǎn)的遷移

在Redis集群中會(huì)存在改變一個(gè)從節(jié)點(diǎn)的主節(jié)點(diǎn)的情況,需要執(zhí)行如下命令 :

CLUSTER REPLICATE

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


當(dāng)前題目:Redis_cluster集群-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/ddigdp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部