精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Redis集群環(huán)境搭建實(shí)踐

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) Redis
本文是Redis集群學(xué)習(xí)的實(shí)踐總結(jié)(基于Redis 6.0+),詳細(xì)介紹逐步搭建Redis集群環(huán)境的過(guò)程,并完成集群伸縮的實(shí)踐。

 本文是Redis集群學(xué)習(xí)的實(shí)踐總結(jié)(基于Redis 6.0+),詳細(xì)介紹逐步搭建Redis集群環(huán)境的過(guò)程,并完成集群伸縮的實(shí)踐。

Redis集群簡(jiǎn)介

Redis集群(Redis Cluster) 是Redis提供的分布式數(shù)據(jù)庫(kù)方案,通過(guò) 分片(sharding) 來(lái)進(jìn)行數(shù)據(jù)共享,并提供復(fù)制和故障轉(zhuǎn)移功能。相比于主從復(fù)制、哨兵模式,Redis集群實(shí)現(xiàn)了較為完善的高可用方案,解決了存儲(chǔ)能力受到單機(jī)限制,寫(xiě)操作無(wú)法負(fù)載均衡的問(wèn)題。

本文是Redis集群學(xué)習(xí)的實(shí)踐總結(jié),詳細(xì)介紹逐步搭建Redis集群環(huán)境的過(guò)程,并完成集群伸縮的實(shí)踐。

1 Redis集群環(huán)境搭建

方便起見(jiàn),這里集群環(huán)境的所有節(jié)點(diǎn)全部位于同一個(gè)服務(wù)器上,共6個(gè)節(jié)點(diǎn)以端口號(hào)區(qū)分,3個(gè)主節(jié)點(diǎn)+3個(gè)從節(jié)點(diǎn)。集群的簡(jiǎn)單架構(gòu)如圖:

本文基于最新的Redis 6.0+,直接從github下載最新的源碼編譯獲得常用工具 redis-server ,  redis-cli 。值得注意的是,從Redis 5.0以后的版本,集群管理軟件 redis-trib.rb 被集成到 redis-cli 客戶(hù)端工具中(詳細(xì)可參考cluster-tutorial)。

本節(jié)介紹集群環(huán)境搭建時(shí),并未借助 redis-trib.rb 快速管理,而是按照標(biāo)準(zhǔn)步驟一步步搭建,這也是為了熟悉集群管理的基本步驟。在集群伸縮實(shí)踐一節(jié)將借助 redis-trib.rb 完成集群重新分片工作。

集群的搭建可以分為四步:

  1.  啟動(dòng)節(jié)點(diǎn):將節(jié)點(diǎn)以集群方式啟動(dòng),此時(shí)節(jié)點(diǎn)是獨(dú)立的。
  2.  節(jié)點(diǎn)握手:將獨(dú)立的節(jié)點(diǎn)連成網(wǎng)絡(luò)。
  3.  槽指派:將16384個(gè)槽位分配給主節(jié)點(diǎn),以達(dá)到分片保存數(shù)據(jù)庫(kù)鍵值對(duì)的效果。
  4.  主從復(fù)制:為從節(jié)點(diǎn)指定主節(jié)點(diǎn)。

1.1 啟動(dòng)節(jié)點(diǎn)

每個(gè)節(jié)點(diǎn)初始狀態(tài)仍為 Master服務(wù)器,唯一不同的是:使用 Cluster 模式啟動(dòng)。需要對(duì)配置文件進(jìn)行修改,以端口號(hào)為6379的節(jié)點(diǎn)為例,主要修改如下幾項(xiàng): 

  1. # redis_6379_cluster.conf  
  2. port 6379  
  3. cluster-enabled yes  
  4. cluster-config-file "node-6379.conf"  
  5. logfile "redis-server-6379.log"  
  6. dbfilename "dump-6379.rdb"  
  7. daemonize yes 

其中 cluster-config-file 參數(shù)指定了集群配置文件的位置,每個(gè)節(jié)點(diǎn)在運(yùn)行過(guò)程中,會(huì)維護(hù)一份集群配置文件;每當(dāng)集群信息發(fā)生變化時(shí)(如增減節(jié)點(diǎn)),集群內(nèi)所有節(jié)點(diǎn)會(huì)將最新信息更新到該配置文件;當(dāng)節(jié)點(diǎn)重啟后,會(huì)重新讀取該配置文件,獲取集群信息,可以方便的重新加入到集群中。也就是說(shuō),當(dāng)Redis節(jié)點(diǎn)以集群模式啟動(dòng)時(shí),會(huì)首先尋找是否有集群配置文件,如果有則使用文件中的配置啟動(dòng),如果沒(méi)有,則初始化配置并將配置保存到文件中。集群配置文件由Redis節(jié)點(diǎn)維護(hù),不需要人工修改。

為6個(gè)節(jié)點(diǎn)修改好相應(yīng)的配置文件后,即可利用 redis-server redis_xxxx_cluster.conf 工具啟動(dòng)6個(gè)服務(wù)器(xxxx表示端口號(hào),對(duì)應(yīng)相應(yīng)的配置文件)。利用ps命令查看進(jìn)程: 

  1. $ ps -aux | grep redis  
  2. ... 800  0.1  0.0  49584  2444 ?        Ssl  20:42   0:00 redis-server 127.0.0.1:6379 [cluster]  
  3. ... 805  0.1  0.0  49584  2440 ?        Ssl  20:42   0:00 redis-server 127.0.0.1:6380 [cluster]  
  4. ... 812  0.3  0.0  49584  2436 ?        Ssl  20:42   0:00 redis-server 127.0.0.1:6381 [cluster]  
  5. ... 817  0.1  0.0  49584  2432 ?        Ssl  20:43   0:00 redis-server 127.0.0.1:6479 [cluster]  
  6. ... 822  0.0  0.0  49584  2380 ?        Ssl  20:43   0:00 redis-server 127.0.0.1:6480 [cluster]  
  7. ... 827  0.5  0.0  49584  2380 ?        Ssl  20:43   0:00 redis-server 127.0.0.1:6481 [cluster] 

1.2 節(jié)點(diǎn)握手

1.1中將每個(gè)節(jié)點(diǎn)啟動(dòng)后,節(jié)點(diǎn)間是相互獨(dú)立的,他們都處于一個(gè)只包含自己的集群當(dāng)中,以端口號(hào)6379的服務(wù)器為例,利用 CLUSTER NODES 查看當(dāng)前集群包含的節(jié)點(diǎn)。 

  1. 127.0.0.1:6379> CLUSTER NODES  
  2. 37784b3605ad216fa93e976979c43def42bf763d :6379@16379 myself,master - 0 0 0 connected 449 4576 5798 7568 8455 12706 

我們需要將各個(gè)獨(dú)立的節(jié)點(diǎn)連接起來(lái),構(gòu)成一個(gè)包含多個(gè)節(jié)點(diǎn)的集群,使用 CLUSTER MEET 命令。 

  1. $ redis-cli -p 6379 -c          # -c 選項(xiàng)指定以Cluster模式運(yùn)行redis-cli 127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6380 OK 127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6381 OK 127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6480 OK 127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6381 OK 127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6382 OK 

再次查看此時(shí)集群中包含的節(jié)點(diǎn)情況: 

  1. 127.0.0.1:6379> CLUSTER NODES  
  2. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603632309283 4 connected  
  3. 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,master - 0 1603632308000 1 connected  
  4. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603632310292 2 connected  
  5. 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 master - 0 1603632309000 5 connected  
  6. 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603632308000 3 connected 
  7. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 master - 0 1603632311302 0 connected 

可以發(fā)現(xiàn)此時(shí)6個(gè)節(jié)點(diǎn)均作為主節(jié)點(diǎn)加入到集群中, CLUSTER NODES 返回的結(jié)果各項(xiàng)含義如下: 

  1. <id> <ip:port@cport> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot> 
  •  節(jié)點(diǎn)id: 由40個(gè)16進(jìn)制字符串組成,節(jié)點(diǎn)id只在集群初始化時(shí)創(chuàng)建一次,然后保存到集群配置文件(即前文提到的cluster-config-file)中,以后節(jié)點(diǎn)重新啟動(dòng)時(shí)會(huì)直接在集群配置文件中讀取。
  •  port@cport: 前者為普通端口,用于為客戶(hù)端提供服務(wù);后者為集群端口,分配方法為:普通端口+10000,只用于節(jié)點(diǎn)間的通訊。

其余各項(xiàng)的詳細(xì)解釋可以參考官方文檔cluster nodes。

1.3 槽指派

Redis集群通過(guò)分片(sharding)的方式保存數(shù)據(jù)庫(kù)的鍵值對(duì),整個(gè)數(shù)據(jù)庫(kù)被分為16384個(gè)槽(slot),數(shù)據(jù)庫(kù)每個(gè)鍵都屬于這16384個(gè)槽的一個(gè),集群中的每個(gè)節(jié)點(diǎn)都可以處理0個(gè)或者最多16384個(gè)slot。

槽是數(shù)據(jù)管理和遷移的基本單位。當(dāng)數(shù)據(jù)庫(kù)中的16384個(gè)槽都分配了節(jié)點(diǎn)時(shí),集群處于上線(xiàn)狀態(tài)(ok);如果有任意一個(gè)槽沒(méi)有分配節(jié)點(diǎn),則集群處于下線(xiàn)狀態(tài)(fail)。

注意,只有主節(jié)點(diǎn)有處理槽的能力,如果將槽指派步驟放在主從復(fù)制之后,并且將槽位分配給從節(jié)點(diǎn),那么集群將無(wú)法正常工作(處于下線(xiàn)狀態(tài))。

利用 CLUSTER ADDSLOTS 

  1. redis-cli  -p 6379 cluster addslots {0..5000}  
  2. redis-cli  -p 6380 cluster addslots {5001..10000}  
  3. redis-cli  -p 6381 cluster addslots {10001..16383} 

槽指派后集群中節(jié)點(diǎn)情況如下: 

  1. 127.0.0.1:6379> CLUSTER NODES  
  2. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603632880310 4 connected 5001-10000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,master - 0 1603632879000 1 connected 0-5000 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603632879000 2 connected 10001-16383 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 master - 0 1603632878000 5 connected 
  3. 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603632880000 3 connected 
  4. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 master - 0 1603632881317 0 connected  
  5. 127.0.0.1:6379> CLUSTER INFO  
  6. cluster_state:ok                        # 集群處于上線(xiàn)狀態(tài)  
  7. cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:5 cluster_my_epoch:1 cluster_stats_messages_ping_sent:4763 cluster_stats_messages_pong_sent:4939 cluster_stats_messages_meet_sent:5 cluster_stats_messages_sent:9707 cluster_stats_messages_ping_received:4939 cluster_stats_messages_pong_received:4768 cluster_stats_messages_received:9707 

1.4 主從復(fù)制

上述步驟后,集群節(jié)點(diǎn)均作為主節(jié)點(diǎn)存在,仍不能實(shí)現(xiàn)Redis的高可用,配置主從復(fù)制之后,才算真正實(shí)現(xiàn)了集群的高可用功能。

CLUSTER REPLICATE <node_id> 用來(lái)讓集群中接收命令的節(jié)點(diǎn)成為 node_id 所指定節(jié)點(diǎn)的從節(jié)點(diǎn),并開(kāi)始對(duì)主節(jié)點(diǎn)進(jìn)行復(fù)制。 

  1. redis-cli  -p 6479 cluster replicate 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52  
  2. redis-cli  -p 6480 cluster replicate c47598b25205cc88abe2e5094d5bfd9ea202335f  
  3. redis-cli  -p 6481 cluster replicate 51081a64ddb3ccf5432c435a8cf20d45ab795dd8  
  4. 127.0.0.1:6379> CLUSTER NODES  
  5. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603633105211 4 connected 5001-10000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,master - 0 1603633105000 1 connected 0-5000 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603633105000 2 connected 10001-16383 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603633107229 5 connected 
  6. 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 slave 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 0 1603633106221 3 connected 
  7. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603633104000 4 connected 

順帶補(bǔ)充,上述步驟1.2,1.3,1.4可以利用 redis-trib.rb 工具整體實(shí)現(xiàn),在Redis 5.0之后直接利用 redis-cli 完成,參考命令如下: 

  1. redis-cli --cluster create  127.0.0.1:6379 127.0.0.1:6479  127.0.0.1:6380 127.0.0.1:6480  127.0.0.1:6381 127.0.0.1:6481  --cluster-replicas 1 

--cluster-replicas 1 指示給定的創(chuàng)建節(jié)點(diǎn)列表是以主節(jié)點(diǎn)+從節(jié)點(diǎn)對(duì)組成的。

1.5 在集群中執(zhí)行命令

集群此時(shí)處于上線(xiàn)狀態(tài),可以通過(guò)客戶(hù)端向集群中的節(jié)點(diǎn)發(fā)送命令。接收命令的節(jié)點(diǎn)會(huì)計(jì)算出命令要處理的鍵屬于哪個(gè)槽,并檢查這個(gè)槽是否指派給自己。

  •  如果鍵所在的slot剛好指派給了當(dāng)前節(jié)點(diǎn),會(huì)直接執(zhí)行這個(gè)命令。
  •  否則,節(jié)點(diǎn)向客戶(hù)端返回 MOVED 錯(cuò)誤,指引客戶(hù)端轉(zhuǎn)向 redirect 至正確的節(jié)點(diǎn),并再次發(fā)送此前的命令。

此處,我們利用 CLUSTER KEYSLOT 查看到鍵 name 所在槽號(hào)為5798(被分配在6380節(jié)點(diǎn)),當(dāng)對(duì)此鍵操作時(shí),會(huì)被重定向到相應(yīng)的節(jié)點(diǎn)。對(duì)鍵 fruits 的操作與此類(lèi)似。 

  1. 127.0.0.1:6379> CLUSTER KEYSLOT name  
  2. (integer) 5798  
  3. 127.0.0.1:6379> set name huey -> Redirected to slot [5798] located at 127.0.0.1:6380 OK 127.0.0.1:6380>  
  4. 127.0.0.1:6379> get fruits -> Redirected to slot [14943] located at 127.0.0.1:6381  
  5. "apple"  
  6. 127.0.0.1:6381> 

值得注意的是,當(dāng)我們將命令通過(guò)客戶(hù)端發(fā)送給一個(gè)從節(jié)點(diǎn)時(shí),命令會(huì)被重定向至對(duì)應(yīng)的主節(jié)點(diǎn)。 

  1. 127.0.0.1:6480> KEYS *  
  2. 1) "name"  
  3. 127.0.0.1:6480> get name -> Redirected to slot [5798] located at 127.0.0.1:6380  
  4. "huey" 

1.6 集群故障轉(zhuǎn)移

集群中主節(jié)點(diǎn)下線(xiàn)時(shí),復(fù)制此主節(jié)點(diǎn)的所有的從節(jié)點(diǎn)將會(huì)選出一個(gè)節(jié)點(diǎn)作為新的主節(jié)點(diǎn),并完成故障轉(zhuǎn)移。和主從復(fù)制的配置相似,當(dāng)原先的從節(jié)點(diǎn)再次上線(xiàn),它會(huì)被作為新主節(jié)點(diǎn)的的從節(jié)點(diǎn)存在于集群中。

下面模擬6379節(jié)點(diǎn)宕機(jī)的情況(將其SHUTDOWN),可以觀(guān)察到其從節(jié)點(diǎn)6479將作為新的主節(jié)點(diǎn)繼續(xù)工作。 

  1. 462:S 26 Oct 14:08:12.750 * FAIL message received from c47598b25205cc88abe2e5094d5bfd9ea202335f about 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 462:S 26 Oct 14:08:12.751 # Cluster state changed: fail 462:S 26 Oct 14:08:12.829 # Start of election delayed for 595 milliseconds (rank #0, offset 9160). 462:S 26 Oct 14:08:13.434 # Starting a failover election for epoch 6. 462:S 26 Oct 14:08:13.446 # Failover election won: I'm the new master. 
  2. 462:S 26 Oct 14:08:13.447 # configEpoch set to 6 after successful failover 462:M 26 Oct 14:08:13.447 # Setting secondary replication ID to d357886e00341b57bf17e46b6d9f8cf53b7fad21, valid up to offset: 9161. New replication ID is adbf41b16075ea22b17f145186c53c4499864d5b 462:M 26 Oct 14:08:13.447 * Discarding previously cached master state. 462:M 26 Oct 14:08:13.448 # Cluster state changed: ok 

 6379節(jié)點(diǎn)從宕機(jī)狀態(tài)恢復(fù)后,將作為6380節(jié)點(diǎn)的從節(jié)點(diǎn)存在。 

  1. 127.0.0.1:6379> CLUSTER NODES  
  2. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603692968000 2 connected 10001-16383 c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603692968504 0 connected 5001-10000 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603692967495 6 connected 0-5000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603692964000 1 connected 
  3. 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603692967000 4 connected 
  4. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603692967000 5 connected 

前文提到 cluster-config-file 會(huì)記錄下集群節(jié)點(diǎn)的狀態(tài),打開(kāi)節(jié)點(diǎn)6379的配置文件 nodes-6379.conf ,可以看到 CLUSTER NODES 所示信息均被保存在配置文件中: 

  1. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603694920206 2 connected 10001-16383 c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603694916000 0 connected 5001-10000 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603694920000 6 connected 0-5000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603694918000 1 connected 
  2. 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603694919000 4 connected 
  3. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603694919200 5 connected 
  4. vars currentEpoch 6 lastVoteEpoch 0 

 2 集群伸縮實(shí)踐

集群伸縮的關(guān)鍵在于對(duì)集群的進(jìn)行重新分片,實(shí)現(xiàn)槽位在節(jié)點(diǎn)間的遷移。本節(jié)將以在集群中添加節(jié)點(diǎn)和刪除節(jié)點(diǎn)為例,對(duì)槽遷移進(jìn)行實(shí)踐。

借助于 redis-cli 中集成的 redis-trib.rb 工具進(jìn)行槽位的管理,工具的幫助菜單如下: 

  1. $ redis-cli --cluster help  
  2. Cluster Manager Commands:  
  3.   create         host1:port1 ... hostN:portN --cluster-replicas <arg> check          host:port --cluster-search-multiple-owners  
  4.   info           host:port  
  5.   fix            host:port --cluster-search-multiple-owners --cluster-fix-with-unreachable-masters  
  6.   reshard        host:port --cluster-from <arg>  
  7.                  --cluster-to <arg>  
  8.                  --cluster-slots <arg> 
  9.                  --cluster-yes --cluster-timeout <arg>  
  10.                  --cluster-pipeline <arg>  
  11.                  --cluster-replace 
  12.    rebalance      host:port --cluster-weight <node1node1=w1...nodeN=wN>  
  13.                  --cluster-use-empty-masters --cluster-timeout <arg>  
  14.                  --cluster-simulate --cluster-pipeline <arg>  
  15.                  --cluster-threshold <arg>  
  16.                  --cluster-replace  
  17.   add-node       new_host:new_port existing_host:existing_port --cluster-slave --cluster-master-id <arg> del-node       host:port node_id  
  18.   call           host:port command arg arg .. arg set-timeout    host:port milliseconds  
  19.   import         host:port --cluster-from <arg>  
  20.                  --cluster-copy --cluster-replace  
  21.   backup         host:port backup_directory  
  22.   help  
  23. For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster. 

2.1 集群伸縮-添加節(jié)點(diǎn)

考慮在集群中添加兩個(gè)節(jié)點(diǎn),端口號(hào)為6382和6482,其中節(jié)點(diǎn)6482對(duì)6382進(jìn)行復(fù)制。

(1) 啟動(dòng)節(jié)點(diǎn):按照1.1中介紹的步驟,啟動(dòng)6382和6482節(jié)點(diǎn)。

(2) 節(jié)點(diǎn)握手:借助 redis-cli --cluster add-node 命令分別添加節(jié)點(diǎn)6382和6482。 

  1. redis-cli --cluster add-node 127.0.0.1:6382 127.0.0.1:6379 redis-cli --cluster add-node 127.0.0.1:6482 127.0.0.1:6379  
  2. $ redis-cli --cluster add-node 127.0.0.1:6382 127.0.0.1:6379  
  3. >>> Adding node 127.0.0.1:6382 to cluster 127.0.0.1:6379  
  4. >>> Performing Cluster Check (using node 127.0.0.1:6379)  
  5. S: 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379 slots: (0 slots) slave  
  6.     replicates 4c23b25bd4bcef7f4b77d8287e330ae72e738883  
  7. M: 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381 slots:[10001-16383] (6383 slots) master 1 additional replica(s)  
  8. M: c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380 slots:[5001-10000] (5000 slots) master 1 additional replica(s)  
  9. M: 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479 slots:[0-5000] (5001 slots) master 1 additional replica(s)  
  10. S: 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481 slots: (0 slots) slave  
  11.     replicates 51081a64ddb3ccf5432c435a8cf20d45ab795dd8  
  12. S: 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480 slots: (0 slots) slave  
  13.     replicates c47598b25205cc88abe2e5094d5bfd9ea202335f  
  14. [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage...  
  15. [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 127.0.0.1:6382 to make it join the cluster.  
  16. [OK] New node added correctly.  
  17. ```shell 
  18. 3) 重新分片:借助 redis-cli --cluster reshard 命令對(duì)集群重新分片,使得各節(jié)點(diǎn)槽位均衡(分別從節(jié)點(diǎn)6379/6380/6381中遷移一些slot到節(jié)點(diǎn)6382中)。需要指定:  
  19. * 移動(dòng)的槽位數(shù):最終平均每個(gè)主節(jié)點(diǎn)有4096個(gè)slot,因此總共移動(dòng)4096 slots  
  20. * 接收槽位的目標(biāo)節(jié)點(diǎn)ID:節(jié)點(diǎn)6382的ID  
  21. * 移出槽位的源節(jié)點(diǎn)ID:節(jié)點(diǎn)6379/6380/6381的ID  
  22. ```shell  
  23. $ redis-cli --cluster reshard 127.0.0.1 6479  
  24. >>> Performing Cluster Check (using node 127.0.0.1:6479)  
  25. M: 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479 slots:[0-5000] (5001 slots) master 1 additional replica(s) 
  26.  S: 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480 slots: (0 slots) slave  
  27.   replicates c47598b25205cc88abe2e5094d5bfd9ea202335f  
  28. M: 706f399b248ed3a080cf1d4e43047a79331b714f 127.0.0.1:6482 slots: (0 slots) master  
  29. M: af81109fc29f69f9184ce9512c46df476fe693a3 127.0.0.1:6382 slots: (0 slots) master  
  30. M: 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381 slots:[10001-16383] (6383 slots) master 1 additional replica(s)  
  31. S: 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481 slots: (0 slots) slave  
  32.   replicates 51081a64ddb3ccf5432c435a8cf20d45ab795dd8  
  33. S: 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379 slots: (0 slots) slave  
  34.   replicates 4c23b25bd4bcef7f4b77d8287e330ae72e738883  
  35. M: c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380 slots:[5001-10000] (5000 slots) master 1 additional replica(s)  
  36. [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage...  
  37. [OK] All 16384 slots covered.  
  38. How many slots do you want to move (from 1 to 16384)? 4096 What is the receiving node ID? 

(4) 設(shè)置主從關(guān)系: 

  1. redis-cli -p 6482 cluster replicate af81109fc29f69f9184ce9512c46df476fe693a3   
  2. 127.0.0.1:6482> CLUSTER NODES  
  3. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603694930000 0 connected  
  4. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603694931000 2 connected 11597-16383 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603694932000 2 connected 
  5. 706f399b248ed3a080cf1d4e43047a79331b714f 127.0.0.1:6482@16482 myself,slave af81109fc29f69f9184ce9512c46df476fe693a3 0 1603694932000 8 connected 
  6. 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603694932000 6 connected 
  7. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603694933678 0 connected 6251-10000 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603694932669 6 connected 1250-5000 af81109fc29f69f9184ce9512c46df476fe693a3 127.0.0.1:6382@16382 master - 0 1603694933000 9 connected 0-1249 5001-6250 10001-11596 

2.2 集群伸縮-刪除節(jié)點(diǎn)

這里考慮將新添加的兩個(gè)節(jié)點(diǎn)6382和6482刪除,需要將節(jié)點(diǎn)6382上分配的槽位遷移到其他節(jié)點(diǎn)。

(1) 重新分片: 同樣借助 redis-cli --cluster reshard 命令,將6382節(jié)點(diǎn)上的槽位全部轉(zhuǎn)移到節(jié)點(diǎn)6479上。 

  1. $ redis-cli --cluster reshard 127.0.0.1 6382  
  2. >>> Performing Cluster Check (using node 127.0.0.1:6382)  
  3. M: af81109fc29f69f9184ce9512c46df476fe693a3 127.0.0.1:6382 slots:[0-1249],[5001-6250],[10001-11596] (4096 slots) master 1 additional replica(s)  
  4. M: 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381 slots:[11597-16383] (4787 slots) master 1 additional replica(s)  
  5. S: 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379 slots: (0 slots) slave  
  6.     replicates 4c23b25bd4bcef7f4b77d8287e330ae72e738883  
  7. S: 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480 slots: (0 slots) slave  
  8.     replicates c47598b25205cc88abe2e5094d5bfd9ea202335f  
  9. M: 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479 slots:[1250-5000] (3751 slots) master 1 additional replica(s)  
  10. M: c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380 slots:[6251-10000] (3750 slots) master 1 additional replica(s)  
  11. S: 706f399b248ed3a080cf1d4e43047a79331b714f 127.0.0.1:6482 slots: (0 slots) slave  
  12.     replicates af81109fc29f69f9184ce9512c46df476fe693a3  
  13. S: 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481 slots: (0 slots) slave  
  14.     replicates 51081a64ddb3ccf5432c435a8cf20d45ab795dd8  
  15. [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage...  
  16. [OK] All 16384 slots covered.  
  17. How many slots do you want to move (from 1 to 16384)? 4096 What is the receiving node ID? 4c23b25bd4bcef7f4b77d8287e330ae72e738883  
  18. Please enter all the source node IDs.  
  19. Type 'all' to use all the nodes as source nodes for the hash slots.  
  20. Type 'done' once you entered all the source nodes IDs.  
  21. Source node #1: af81109fc29f69f9184ce9512c46df476fe693a3  
  22. Source node #2: done  
  23. 127.0.0.1:6379> CLUSTER NODES  
  24. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603773540922 0 connected 6251-10000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603773539000 1 connected 
  25. 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603773541000 10 connected 0-6250 10001-11596 706f399b248ed3a080cf1d4e43047a79331b714f 127.0.0.1:6482@16482 slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603773541000 10 connected 
  26. 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603773539000 5 connected 
  27. 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603773541931 4 connected 
  28. af81109fc29f69f9184ce9512c46df476fe693a3 127.0.0.1:6382@16382 master - 0 1603773539000 9 connected 
  29. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603773540000 2 connected 11597-16383 

(2) 刪除節(jié)點(diǎn): 利用 redis-cli --cluster del-node 命令依次刪除從節(jié)點(diǎn)6482和主節(jié)點(diǎn)6382。 

  1. $ redis-cli --cluster del-node 127.0.0.1:6482 706f399b248ed3a080cf1d4e43047a79331b714f >>> Removing node 706f399b248ed3a080cf1d4e43047a79331b714f from cluster 127.0.0.1:6482 
  2. >>> Sending CLUSTER FORGET messages to the cluster... >>> Sending CLUSTER RESET SOFT to the deleted node. 
  3. $ redis-cli --cluster del-node 127.0.0.1:6382 af81109fc29f69f9184ce9512c46df476fe693a3 >>> Removing node af81109fc29f69f9184ce9512c46df476fe693a3 from cluster 127.0.0.1:6382 
  4. >>> Sending CLUSTER FORGET messages to the cluster... >>> Sending CLUSTER RESET SOFT to the deleted node.  
  5. 127.0.0.1:6379> CLUSTER NODES  
  6. c47598b25205cc88abe2e5094d5bfd9ea202335f 127.0.0.1:6380@16380 master - 0 1603773679121 0 connected 6251-10000 87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52 127.0.0.1:6379@16379 myself,slave 4c23b25bd4bcef7f4b77d8287e330ae72e738883 0 1603773677000 1 connected 
  7. 4c23b25bd4bcef7f4b77d8287e330ae72e738883 127.0.0.1:6479@16479 master - 0 1603773678000 10 connected 0-6250 10001-11596 32ed645a9c9d13ca68dba5a147937fb1d05922ee 127.0.0.1:6480@16480 slave c47598b25205cc88abe2e5094d5bfd9ea202335f 0 1603773680130 5 connected 
  8. 9d587b75bdaed26ca582036ed706df8b2282b0aa 127.0.0.1:6481@16481 slave 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 0 1603773677099 4 connected 
  9. 51081a64ddb3ccf5432c435a8cf20d45ab795dd8 127.0.0.1:6381@16381 master - 0 1603773678112 2 connected 11597-16383 

 3 總結(jié)

Redis集群環(huán)境的搭建主要包括啟動(dòng)節(jié)點(diǎn)、節(jié)點(diǎn)握手、槽指派和主從復(fù)制等四個(gè)步驟,集群伸縮同樣涉及這幾個(gè)方面。借助 redis-cli --cluster 命令來(lái)管理集群環(huán)境,不僅能增加簡(jiǎn)便性,還能降低操作失誤的風(fēng)險(xiǎn)。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 馬哥Linux運(yùn)維
相關(guān)推薦

2021-03-16 11:10:37

Redis數(shù)據(jù)庫(kù)命令

2022-02-11 08:41:19

WindowsRedis集群

2024-03-07 16:03:56

RedisDocker

2024-09-11 20:05:56

2012-11-01 17:15:04

2022-05-31 08:04:03

Redis高可用集群

2020-06-01 08:55:56

WindowsRedis集群

2019-09-16 16:05:13

Redis集群模式

2023-04-07 08:28:14

2017-07-11 13:30:12

RedisDockerLinux

2021-04-06 06:04:36

Redis 6.X C集群搭建操作系統(tǒng)

2024-04-03 00:00:00

Redis集群代碼

2020-04-21 22:59:50

Redis搭建選舉

2020-03-23 22:50:36

WindowsNginxTomcat

2023-12-08 07:59:04

2020-04-14 21:12:42

Redis集群Linux

2023-11-13 09:03:10

2021-03-31 05:57:40

集群搭建哨兵集群Redis

2025-06-27 02:44:00

2010-06-04 17:43:12

Hadoop集群搭建
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

一个人www视频在线免费观看| 91麻豆精品成人一区二区| 毛片网站在线看| 成人一区二区三区视频| 91禁外国网站| 中文字幕5566| 久久久成人av毛片免费观看| 国产精品入口麻豆九色| 91精品视频在线| 五月天婷婷网站| 国产成人精品免费视| 欧美三级电影在线看| 视频一区二区综合| www.激情五月| 久久综合九色| 麻豆国产精品va在线观看不卡 | 免费成人av电影| 免费观看久久久4p| 欧美精品福利视频| 亚洲无人区码一码二码三码的含义| 成人在线视频免费看| 成人免费一区二区三区视频| 国产精品免费区二区三区观看| 激情综合五月网| 精品一区二区三区在线| 日韩精品在线网站| 99免费视频观看| 操你啦视频在线| 偷拍自拍在线| www.成人网| 日本电影亚洲天堂一区| 国产又粗又爽又黄的视频| 凸凹人妻人人澡人人添| 精品在线播放免费| 欧美一级片久久久久久久| 久久精品一区二区三区四区五区| 少妇一区二区三区| 欧美一二三在线| 日韩黄色短视频| 黄色在线播放网站| 国产网站一区二区三区| 国产欧美日韩一区| 99久久一区二区| 免费人成在线不卡| 91大神福利视频在线| 91杏吧porn蝌蚪| 日韩高清电影免费| 欧美一级日韩免费不卡| 久久美女福利视频| 欧美videossex| 中文字幕一区二区三区av| 欧美极品日韩| 手机在线精品视频| 国产精品夜夜嗨| 国产一区二区在线免费| 国产精品51麻豆cm传媒| 老鸭窝91久久精品色噜噜导演| 久久露脸国产精品| 91精品国产高清一区二区三蜜臀| 天天天综合网| 最近中文字幕日韩精品| 国产亚洲精品熟女国产成人| 亚洲盗摄视频| 亚洲男人av电影| 精品夜夜澡人妻无码av| 窝窝社区一区二区| 亚洲精品久久视频| 免费观看一区二区三区| 欧美午夜在线播放| 日韩一区二区在线观看| 久草福利在线观看| 亚洲精品aⅴ| 日韩一区二区免费在线电影| 99久久99精品| 亚洲三区欧美一区国产二区| 欧美mv日韩mv亚洲| 在线看黄色的网站| 果冻天美麻豆一区二区国产| 亚洲国产成人精品一区二区| 国产成人av无码精品| 美女呻吟一区| 日韩精品免费在线| 日韩精品电影一区二区| 欧美久久综合网| 中文字幕久精品免费视频| 国产视频123区| 伊人久久大香线| 欧美日本啪啪无遮挡网站| 免费在线观看国产精品| 在线一区免费观看| 国产精品免费网站| 国产精品特级毛片一区二区三区| 国产一区二区0| 国产成人精品日本亚洲11 | 欧美另类z0zxhd电影| 五月激情五月婷婷| 试看120秒一区二区三区| 欧美成人综合网站| 一本色道综合久久欧美日韩精品| 伊人久久大香线蕉无限次| 在线视频精品一| 侵犯稚嫩小箩莉h文系列小说| 国内精品福利| 日韩av免费在线看| 97超碰资源站| av高清不卡在线| 亚洲第一综合| 国产网红在线观看| 色狠狠一区二区三区香蕉| 亚洲精品成人在线播放| 免费福利视频一区| 日韩在线观看免费全| 国产精彩视频在线| 久久99九九99精品| 精品伊人久久大线蕉色首页| 国产1区2区3区在线| 亚洲三级在线免费观看| 日韩在线一级片| 欧美系列精品| 欧美一级午夜免费电影| 熟女高潮一区二区三区| 日本精品三区| 97免费中文视频在线观看| 无码人妻av免费一区二区三区 | a级日韩大片| 亚洲天堂第二页| 久视频在线观看| 老司机免费视频一区二区三区| 国产伦精品一区二区三区免 | 91精品中文字幕一区二区三区| 少妇激情一区二区三区视频| 婷婷综合社区| 国产成人一区三区| 婷婷五月综合久久中文字幕| 日韩美女视频一区二区 | 五月天亚洲婷婷| 奇米视频888| 欧美欧美黄在线二区| 欧美www在线| 夜夜爽8888| 久久女同精品一区二区| 男人添女荫道口图片| 精品久久久久久久久久岛国gif| 国产香蕉97碰碰久久人人| 久久精品国产亚洲av无码娇色| 久久丁香综合五月国产三级网站| 另类欧美小说| 成年男女免费视频网站不卡| 日韩欧美精品在线视频| 999精品视频在线观看播放| 日本色综合中文字幕| 国产91精品入口17c| av色综合久久天堂av色综合在| 精品视频1区2区3区| 波多野结衣办公室33分钟| 日韩午夜免费视频| 成人欧美一区二区三区在线观看 | 国产日韩精品一区二区三区 | 色综合久久九月婷婷色综合| 无码人妻aⅴ一区二区三区 | 成人高清免费观看| a级片一区二区| 国产精品成人**免费视频| 日韩在线国产精品| 中文字幕在线播放日韩| 国产精品色一区二区三区| www日韩在线观看| 免费看av成人| 国产精品444| 国产精品麻豆一区二区三区| 色哦色哦哦色天天综合| 亚洲精品一区二区三区影院忠贞| 日韩福利电影在线观看| 久久国产精品-国产精品| 手机在线观看av网站| 亚洲精品按摩视频| 欧美 日韩 精品| 久久精品视频免费| 久久久国产欧美| 99国产精品一区二区| 91久久精品国产| 黄色的网站在线观看| 91精品国产黑色紧身裤美女| 91狠狠综合久久久| 成人中文字幕电影| 日韩av片在线看| 欧洲毛片在线视频免费观看| 91精品国产综合久久香蕉| 国产三级在线播放| 精品久久久久一区| 国产精品久免费的黄网站| 久久久www免费人成精品| 色乱码一区二区三区在线| 91精品国产乱码久久久久久| www.成人三级视频| 夜鲁夜鲁夜鲁视频在线播放| 国产一区二区三区免费视频| 国产男女猛烈无遮挡| 亚洲国产精品久久人人爱| 国产精品无码一区二区三区| 九色综合狠狠综合久久| 欧美精品卡一卡二| 欧美亚洲国产精品久久| 亚洲综合中文字幕在线观看| 僵尸再翻生在线观看免费国语| 国产一区二区免费| 成 人片 黄 色 大 片| 欧美日韩中文在线| 成人免费精品动漫网站| 成人精品一区二区三区中文字幕| 老头吃奶性行交视频| 欧美日韩三级电影在线| 日韩精品不卡| 日韩成人精品| 日本欧美爱爱爱| 自拍视频在线| 亚洲第一精品自拍| 中国精品一区二区| 一区二区三区中文在线| 久久久久亚洲AV成人无码国产| 美女脱光内衣内裤视频久久网站| 日本aa在线观看| 日韩伦理视频| 美媛馆国产精品一区二区| 久久伊人精品| 国产成人福利视频| 9999热视频在线观看| 久久精品国产成人精品| 欧美人体大胆444www| 日韩三级中文字幕| 国产精品露脸视频| 亚洲大片一区二区三区| 免费成年人视频在线观看| 久久夜色精品国产噜噜av| 久久久久久久久久一区二区| 亚洲综合欧美| 成人一级生活片| 久久久国产精品| 日韩av不卡在线播放| 日韩高清影视在线观看| 国产精品xxxx| 亚洲精品视频一二三区| 国产一区二区丝袜| 成人h在线观看| 青青久久av北条麻妃海外网| 欧美6一10sex性hd| 在线观看视频99| 久久av少妇| 亚洲免费一在线| 日本一二三区在线视频| 亚洲国产精品悠悠久久琪琪| 亚洲av综合色区无码一区爱av | 欧美日本在线视频中文字字幕| 天堂а√在线资源在线| 亚洲欧美综合精品久久成人| 亚洲三级中文字幕| 日韩精品久久久久久久玫瑰园| 亚洲精品字幕在线观看| 欧美成人猛片aaaaaaa| 国产乱码久久久| 欧美日韩国产乱码电影| 97超碰资源站| 制服丝袜亚洲播放| 99精品人妻无码专区在线视频区| 欧美挠脚心视频网站| 一级黄色片在线看| 欧美区视频在线观看| 国产老妇伦国产熟女老妇视频| 91精品在线观看入口| 国产视频一区二区三| 日韩三级高清在线| 狠狠人妻久久久久久综合麻豆| 欧美r级电影在线观看| 手机在线不卡av| 精品国产人成亚洲区| 亚洲aⅴ乱码精品成人区| 日韩黄在线观看| 毛片在线能看| 一道本无吗dⅴd在线播放一区| 91精品专区| 欧美成人激情在线| 阿v视频在线观看| 欧美一区二区三区……| 成人免费福利| 国产在线不卡精品| japansex久久高清精品| 国产精品自产拍在线观| 深夜福利一区| 国产精选一区二区| 妖精视频一区二区三区免费观看| 欧美日韩精品综合| 日韩精品永久网址| 男插女免费视频| 欧美在线网站| 免费高清一区二区三区| 久久精品人人做人人爽电影蜜月| 不卡av免费在线| 国产精品一区免费在线观看| 私密视频在线观看| 国产精品视频在线看| 欧产日产国产v| 精品久久久国产精品999| 亚洲中文无码av在线| 日韩亚洲电影在线| 欧美新色视频| 久久天天躁狠狠躁老女人| а√在线中文网新版地址在线| 国产精品久久久久久亚洲影视| 电影91久久久| 美女主播视频一区| 午夜精品婷婷| 婷婷丁香激情网| 成人性生交大合| 久久精品国产亚洲AV成人婷婷| 亚洲成人在线观看视频| 在线观看中文字幕码| 亚洲成人免费网站| 日本高清视频在线播放| 欧美在线观看一区二区三区| 精品国产鲁一鲁****| 久久久久久久久久久久久9999| 日韩欧美视频| 黄色三级中文字幕| 日本女人一区二区三区| 国产性生活毛片| 亚洲欧美激情视频在线观看一区二区三区 | 精品国产网站在线观看| 在线观看黄av| 欧美精品电影在线| 国产精选久久| 亚洲看片网站| 日韩—二三区免费观看av| 亚洲av成人片无码| 亚洲乱码国产乱码精品精的特点 | 最新国产在线观看| 欧美亚洲另类激情另类| 亚洲日本va午夜在线电影| 日本在线一区| 性色av一区二区怡红| 黄色性视频网站| 悠悠色在线精品| 国产三级视频在线播放| 自拍偷拍亚洲欧美| 欧美黑人疯狂性受xxxxx野外| 国产女主播一区二区| 中文字幕一区二区三区久久网站| 18岁视频在线观看| 91丨porny丨在线| 日韩三级一区二区三区| 欧美大片一区二区| 中文字幕有码在线观看| 91精品视频专区| 青草国产精品| 久久撸在线视频| 国产香蕉久久精品综合网| www.国产一区二区| 日韩精品欧美国产精品忘忧草 | 一区在线不卡| 视频一区二区三区在线观看| 日韩成人dvd| 少妇的滋味中文字幕bd| 欧美日韩午夜在线视频| 91视频在线观看| 国产精品视频男人的天堂| 国产一区毛片| 深夜黄色小视频| 最新国产精品久久精品| 99热这里只有精品在线观看| 欧美国产高跟鞋裸体秀xxxhd| 成人免费观看49www在线观看| 一区二区三区四区免费观看| 国产剧情一区二区三区| 欧美日韩免费一区二区| 欧美大黄免费观看| 欧美wwww| 精选一区二区三区四区五区| 性色一区二区| 扒开jk护士狂揉免费| 欧美日韩一区二区精品| 懂色av中文在线| 国产在线精品一区免费香蕉 | 97在线观看视频免费| 制服丝袜激情欧洲亚洲| 99色在线观看| 亚洲一区二区三区色| 成人免费毛片app| 日本a级c片免费看三区| 久久视频精品在线| 日本精品影院| 日韩a一级欧美一级| 日韩欧美高清视频| 超碰在线观看免费| 欧美一二三区| 国产精品99久久久久久有的能看| 国产精品视频123| 九九九久久国产免费| 欧美精品一区二区三区中文字幕 | 久久久久五月天| 91亚洲成人| 久久久久久久久久久久|