<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      分布式緩存 Redis 集群搭建

      Redis 集群簡介

      Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存儲方案。完全去中心化,由多個節點組成,所有節點彼此互聯。Redis 客戶端可以直接連接任何一節點獲取集群中的鍵值對,不需要中間代理,如果該節點不存在用戶所指定的鍵值,其內部會自動把客戶端重定向到鍵值所在的節點。

      Redis 集群是一個網狀結構,每個節點都通過 TCP 連接跟其他每個節點連接。在一個有 N 個節點的集群中,每個節點都有 N-1 個流出的 TCP 連接,和 N-1 個流入的連接,這些 TCP 連接會永久保持。

      Redis Cluster 同其他分布式存儲系統一樣,主要具備以下兩個功能:

      數據分區
      Redis 集群會將用戶數據分散保存至各個節點中,突破單機 Redis 內存最大存儲容量。集群引入了 哈希槽slot的概念,其搭建完成后會生 16384 個哈希槽slot,同時會根據節點的數量大致均等的將 16384 個哈希槽映射到不同的節點上。當用戶存儲key-value時,集群會先對key進行 CRC16 校驗然后對 16384 取模來決定key-value放置哪個槽,從而實現自動分割數據到不同的節點上。

      數據冗余
      Redis 集群支持主從復制和故障恢復。集群使用了主從復制模型,每個主節點master應至少有一個從節點slave。假設某個主節點故障,其所有子節點會廣播一個數據包給集群里的其他主節點來請求選票,一旦某個從節點收到了大多數主節點的回應,那么它就贏得了選舉,被推選為主節點,負責處理之前舊的主節點負責的哈希槽。

      關于 Redis Cluster 詳細介紹以及實現原理請參見 Redis Cluster 教程Redis Cluster 規范,在此不再贅述。

      下載 & 安裝 Redis

      實驗環境信息
      Linux 版本:CentOS Linux release 7.4.1708
      Redis 版本:5.0.3

      先在服務器或虛擬機中安裝一個單機 Redis,如果已安裝可以跳過本節,未安裝過的正好學習下。

      進入 Redis 待安裝目錄。

      cd /usr/local
      

      下載、解壓 Redis 源代碼壓縮包。

      wget http://download.redis.io/releases/redis-5.0.3.tar.gz
      tar -zxvf redis-5.0.3.tar.gz
      

      然后進入解壓后的目錄并使用 make 命令執行編譯安裝 Redis。

      cd redis-5.0.3
      make && make install
      

      不要高興,因為你極有可能會遇到因為 GCC 編譯器未安裝導致編譯失敗的情況。不要著急,請順序執行如下命令。

      yum -y install gcc
      make distclean 
      make && make install
      

      Redis 基于 C 語言開發,故編譯源碼需要 GCC(Linux下的一個編譯器,這里需要用來編譯.c文件)的支持。如機器上未安裝需要先執行命令yum -y install gcc安裝 GCC 編譯工具,然后make distclean清除之前生成的文件,最后make && make install重新編譯安裝。

      最終出現類似下文輸出則表示 Redis 安裝成功。

      ......
      Hint: It's a good idea to run 'make test' ;)
      
          INSTALL install
          INSTALL install
          INSTALL install
          INSTALL install
          INSTALL install
      make[1]: 離開目錄“/usr/local/redis-5.0.3/src”
      

      如果源碼編譯無誤且執行結果正確,make install命令會將程序安裝至系統預設的可執行文件存放路徑,一般是/usr/local/bin目錄,可以通過如下終端輸出確認。當然,也可以使用make install PREFIX=<path>命令安裝到指定路徑。

      [root@localhost bin]# cd /usr/local/bin
      [root@localhost bin]# ls -l
      總用量 32672
      -rwxr-xr-x. 1 root root 4367328 3月   6 06:11 redis-benchmark
      -rwxr-xr-x. 1 root root 8092024 3月   6 06:11 redis-check-aof
      -rwxr-xr-x. 1 root root 8092024 3月   6 06:11 redis-check-rdb
      -rwxr-xr-x. 1 root root 4802696 3月   6 06:11 redis-cli
      lrwxrwxrwx. 1 root root      12 3月   6 06:11 redis-sentinel -> redis-server
      -rwxr-xr-x. 1 root root 8092024 3月   6 06:11 redis-server
      

      至此,單機 Redis 安裝完成。

      搭建 Redis 集群

      進入正題。

      依據 Redis Cluster 內部故障轉移實現原理,Redis 集群至少需要 3 個主節點,而每個主節點至少有 1 從節點,因此搭建一個集群至少包含 6 個節點,三主三從,并且分別部署在不同機器上。

      條件有限,測試環境下我們只能在一臺機器上創建一個偽集群,通過不同的 TCP 端口啟動多個 Redis 實例,組成集群。

      目前 Redis Cluster 的搭建有兩種方式:

      1. 手動方式搭建,即手動執行 cluster 命令,一步步完成搭建流程。
      2. 自動方式搭建,即使用官方提供的集群管理工具快速搭建。

      兩種方式原理一樣,自動搭建方式只是將手動搭建方式中需要執行的 Redis 命令封裝到了可執行程序。生產環境下推薦使用第二種方式,簡單快捷,不易出錯。不過本文實戰演示兩種方式都會提及。

      手動方式搭建

      啟動節點

      搭建集群的第一步就是要先把參與搭建集群的每個節點啟動起來。

      由于我們這是在一臺機器上模擬多個節點,可以預先規劃下各個節點的屬性:

      節點編號 IP 地址 TCP 端口 節點類型 從節點 啟動配置
      A 127.0.0.1 7001 D /usr/local/redis-cluster/7001/redis.conf
      B 127.0.0.1 7002 E /usr/local/redis-cluster/7002/redis.conf
      C 127.0.0.1 7003 F /usr/local/redis-cluster/7003/redis.conf
      D 127.0.0.1 8001 / /usr/local/redis-cluster/8001/redis.conf
      E 127.0.0.1 8002 / /usr/local/redis-cluster/8002/redis.conf
      F 127.0.0.1 8003 / /usr/local/redis-cluster/8003/redis.conf

      根據上述規劃,可以先通過如下命令創建各個節點啟動配置文件的存放目錄。

      mkdir /usr/local/redis-cluster
      cd redis-cluster
      mkdir -p 7001 7002 7003 8001 8002 8003
      

      順序執行如下行命令,進入 Redis 源碼包目錄并將默認配置文件redis.conf分別復制到六個節點配置存放目錄中,作為各自節點啟動配置文件。

      cd /usr/local/redis-5.0.3
      cp redis.conf /usr/local/redis-cluster/7001 
      cp redis.conf /usr/local/redis-cluster/7002
      cp redis.conf /usr/local/redis-cluster/7003 
      cp redis.conf /usr/local/redis-cluster/8001
      cp redis.conf /usr/local/redis-cluster/8002 
      cp redis.conf /usr/local/redis-cluster/8003
      

      接下來需要分別修改每個節點的配置文件。下面貼的是節點 A 的配置文件/usr/local/redis-cluster/7001/redis.conf中啟用或修改的一些必要參數。其他節點 B、C、D、E、F 參照修改,注意把涉及端口的地方修改成各自節點預先規劃的即可。

      bind 192.168.83.128                    # 設置當前節點主機地址       
      port 7001                              # 設置客戶端連接監聽端口     
      pidfile /var/run/redis_7001.pid        # 設置 Redis 實例 pid 文件       
      daemonize yes                          # 以守護進程運行 Redis 實例     
      cluster-enabled yes                    # 啟用集群模式
      cluster-node-timeout 15000             # 設置當前節點連接超時毫秒數
      cluster-config-file nodes-7001.conf    # 設置當前節點集群配置文件路徑
      

      完成上述工作就可以通過如下幾組命令啟動待搭建集群中的 6 個節點了。

      /usr/local/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
      /usr/local/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
      /usr/local/bin/redis-server /usr/local/redis-cluster/7003/redis.conf
      /usr/local/bin/redis-server /usr/local/redis-cluster/8001/redis.conf
      /usr/local/bin/redis-server /usr/local/redis-cluster/8002/redis.conf
      /usr/local/bin/redis-server /usr/local/redis-cluster/8003/redis.conf
      

      最后通過ps -ef|grep redis命令確認各個節點服務是否已經正常運行。

      [root@localhost bin]# ps -ef|grep redis
      root       5613      1  0 04:25 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:7001 [cluster]
      root       5650      1  0 04:26 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:7002 [cluster]
      root       5661      1  0 04:26 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:7003 [cluster]
      root       5672      1  0 04:27 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:8001 [cluster]
      root       5681      1  0 04:27 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:8002 [cluster]
      root       5690      1  0 04:27 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:8003 [cluster]
      root       5731   1311  0 04:28 pts/0    00:00:00 grep --color=auto redis
      

      如上輸出可以看出上面規劃的 6 個節點都成功啟動。

      節點握手

      雖然上面 6 個節點都啟用了群集支持,但默認情況下它們是不相互信任或者說沒有聯系的。節點握手就是在各個節點之間創建鏈接(每個節點與其他節點相連),形成一個完整的網格,即集群。

      節點握手的命令如下:

      cluster meet ip port
      

      但為了創建群集,不需要發送形成完整網格所需的所有 cluster meet 命令。只要能發送足夠的cluster meet消息,可以讓每個節點都可以通過一系列已知節點到達每個其他節點,缺失的鏈接將被自動創建。

      例如,如果我們通過cluster meet將節點 A 與節點 B 連接起來,并將 B 與 C 連接起來,則 A 和 C 會自己找到握手方式并創建鏈接。

      我們的創建的 6 個節點可以通過 redis-cli 連接到 A 節點執行如下五組命令完成握手,生產環境需要將 IP 127.0.0.1替換成外網 IP。

      cluster meet 127.0.0.1 7002
      cluster meet 127.0.0.1 7003
      cluster meet 127.0.0.1 8001
      cluster meet 127.0.0.1 8002
      cluster meet 127.0.0.1 8003
      

      如上述命令正常執行輸出結果如下。

      [root@localhost bin]# /usr/local/bin/redis-cli -p 7001
      127.0.0.1:7001> cluster meet 127.0.0.1 7002
      OK
      127.0.0.1:7001> cluster meet 127.0.0.1 7003
      OK
      127.0.0.1:7001> cluster meet 127.0.0.1 8001
      OK
      127.0.0.1:7001> cluster meet 127.0.0.1 8002
      OK
      127.0.0.1:7001> cluster meet 127.0.0.1 8003
      OK
      

      接下來可以通過 cluster nodes 命令查看節點之間 的鏈接狀態。我隨機找了兩個節點 B 和 F 測試,輸出結果如下所示。

      [root@localhost /]# /usr/local/bin/redis-cli -p 7002 cluster nodes
      61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12 127.0.0.1:7001@17001 master - 0 1552220691885 4 connected
      a8a41694f22977fda78863bdfb3fc03dd1fab1bd 127.0.0.1:8002@18002 master - 0 1552220691000 5 connected
      51987c4b5530c81f2845bb9d521daf6d3dce3659 127.0.0.1:8001@18001 master - 0 1552220690878 3 connected
      1b4b3741945d7fed472a1324aaaa6acaa1843ccb 127.0.0.1:7002@17002 myself,master - 0 1552220690000 1 connected
      19147f56e679767bcebb8653262ff7f56ca072a8 127.0.0.1:7003@17003 master - 0 1552220691000 2 connected
      ed6fd72e61b747af3705b210c7164bc68739303e 127.0.0.1:8003@18003 master - 0 1552220690000 0 connected
      [root@localhost /]# /usr/local/bin/redis-cli -p 8002 cluster nodes
      1b4b3741945d7fed472a1324aaaa6acaa1843ccb 127.0.0.1:7002@17002 master - 0 1552220700255 1 connected
      ed6fd72e61b747af3705b210c7164bc68739303e 127.0.0.1:8003@18003 master - 0 1552220703281 0 connected
      19147f56e679767bcebb8653262ff7f56ca072a8 127.0.0.1:7003@17003 master - 0 1552220700000 2 connected
      a8a41694f22977fda78863bdfb3fc03dd1fab1bd 127.0.0.1:8002@18002 myself,master - 0 1552220701000 5 connected
      61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12 127.0.0.1:7001@17001 master - 0 1552220702275 4 connected
      51987c4b5530c81f2845bb9d521daf6d3dce3659 127.0.0.1:8001@18001 master - 0 1552220701265 3 connected
      

      可以看到,節點 B 和節點 F 都已經分別和其他 5 個節點建立鏈接。

      至此,節點握手完成。

      分配槽位

      此時 Redis 集群還并沒有處于上線狀態,可以在任意一節點上執行 cluster info 命令來查看目前集群的運行狀態。

      [root@localhost ~]# /usr/local/bin/redis-cli -p 7001 cluster info
      cluster_state:fail
      ......
      

      上面輸出cluster_state:fail表示當前集群處于下線狀態。因為只有給集群中所有主節點分配好槽位(即哈希槽slot,本文第一小節有提及)集群才能上線。

      分配槽位的命令如下:

      cluster addslots slot [slot ...]
      

      根據預先規劃,這一步需要使用 cluster addslots 命令手動將 16384 個哈希槽大致均等分配給主節點 A、B、C。

      /usr/local/bin/redis-cli -p 7001 cluster addslots {0..5461}
      /usr/local/bin/redis-cli -p 7002 cluster addslots {5462..10922}
      /usr/local/bin/redis-cli -p 7003 cluster addslots {10923..16383}
      

      上面三組命令執行完畢,可以再次查看目前集群的一些運行參數。

      [root@localhost ~]# /usr/local/bin/redis-cli -p 7001 cluster info
      cluster_state:ok
      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:4
      cluster_stats_messages_ping_sent:11413
      cluster_stats_messages_pong_sent:10509
      cluster_stats_messages_meet_sent:11
      cluster_stats_messages_sent:21933
      cluster_stats_messages_ping_received:10509
      cluster_stats_messages_pong_received:10535
      cluster_stats_messages_received:21044
      

      如上輸出cluster_state:ok證明 Redis 集群成功上線。

      主從復制

      Redis 集群成功上線,不過還沒有給主節點指定從節點,此時如果有一個節點故障,那么整個集群也就掛了,也就無法實現高可用。

      集群中需要使用 cluster replicate 命令手動給從節點配置主節點。

      集群復制命令如下:

      cluster replicate node-id
      

      集群中各個節點的node-id可以用cluster nodes命令查看,如下輸出1b4b3741945d7fed472a1324aaaa6acaa1843ccb即是主節點 B 的node-id

      [root@localhost /]# /usr/local/bin/redis-cli -p 8002 cluster nodes
      1b4b3741945d7fed472a1324aaaa6acaa1843ccb 127.0.0.1:7002@17002 master - 0 1552220700255 1 connected
      ed6fd72e61b747af3705b210c7164bc68739303e 127.0.0.1:8003@18003 master - 0 1552220703281 0 connected
      19147f56e679767bcebb8653262ff7f56ca072a8 127.0.0.1:7003@17003 master - 0 1552220700000 2 connected
      a8a41694f22977fda78863bdfb3fc03dd1fab1bd 127.0.0.1:8002@18002 myself,master - 0 1552220701000 5 connected
      61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12 127.0.0.1:7001@17001 master - 0 1552220702275 4 connected
      51987c4b5530c81f2845bb9d521daf6d3dce3659 127.0.0.1:8001@18001 master - 0 1552220701265 3 connected
      

      根據預先規劃,A主D從;B主E從;C主F從。執行如下三組命令分別為從節點 D、E、F 指定其主節點,使群集可以自動完成主從復制。

      /usr/local/bin/redis-cli -p 8001 cluster replicate 61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12
      /usr/local/bin/redis-cli -p 8002 cluster replicate 1b4b3741945d7fed472a1324aaaa6acaa1843ccb
      /usr/local/bin/redis-cli -p 8003 cluster replicate 19147f56e679767bcebb8653262ff7f56ca072a8
      

      命令執行成功后,我們便算以手動方式成功搭建了一個 Redis 集群。

      最后,再來查看一下集群中的節點信息。

      [root@localhost ~]# /usr/local/bin/redis-cli -p 8002 cluster nodes
      1b4b3741945d7fed472a1324aaaa6acaa1843ccb 127.0.0.1:7002@17002 master - 0 1552233328337 1 connected 5462-10922
      ed6fd72e61b747af3705b210c7164bc68739303e 127.0.0.1:8003@18003 slave 19147f56e679767bcebb8653262ff7f56ca072a8 0 1552233327000 2 connected
      19147f56e679767bcebb8653262ff7f56ca072a8 127.0.0.1:7003@17003 master - 0 1552233325000 2 connected 10923-16383
      a8a41694f22977fda78863bdfb3fc03dd1fab1bd 127.0.0.1:8002@18002 myself,slave 1b4b3741945d7fed472a1324aaaa6acaa1843ccb 0 1552233327000 5 connected
      61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12 127.0.0.1:7001@17001 master - 0 1552233327327 4 connected 0-5461
      51987c4b5530c81f2845bb9d521daf6d3dce3659 127.0.0.1:8001@18001 slave 61e8c4ed8d1ff2a765a4dd2c3d300d8121d26e12 0 1552233326320 4 connected
      

      自動方式搭建

      Redis 3.0 版本之后官方發布了一個集群管理工具 redis-trib.rb,集成在 Redis 源碼包的src目錄下。其封裝了 Redis 提供的集群命令,使用簡單、便捷。

      不過 redis-trib.rb 是 Redis 作者使用 Ruby 語言開發的,故使用該工具之前還需要先在機器上安裝 Ruby 環境。后面作者可能意識到這個問題,Redis 5.0 版本開始便把這個工具集成到 redis-cli 中,以--cluster參數提供使用,其中create命令可以用來創建集群。

      啟動節點

      使用集群管理工具搭建集群之前,也是需要先把各個節點啟動起來的。節點的啟動方式請參見本文「手動方式創建」-「啟動節點」一節,此處不再贅述。

      集群管理工具搭建

      如果您安裝的 Redis 是 3.x 和 4.x 的版本可以使用 redis-trib.rb 搭建,不過之前需要安裝 Ruby 環境。

      先使用 yum 安裝 Ruby 環境以及其他依賴項。

      yum -y install ruby ruby-devel rubygems rpm-build
      

      確認安裝版本。

      [root@localhost redis-cluster]# ruby -v
      ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
      

      再使用 redis-trib.rb 腳本搭建集群,具體命令如下所示。

      /usr/local/redis-5.0.3/src/redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003
      

      不過,本文實驗環境使用的 Redis 版本是 5.0.3,所以我可以直接使用redis-cli --cluster create命令搭建,具體命令如下所示。

      /usr/local/bin/redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 --cluster-replicas 1
      

      主節點在前,從節點在后。其中--cluster-replicas參數用來指定一個主節點帶有的從節點個數,如上--cluster-replicas 1即表示 1 個主節點有 1 個從節點。

      命令執行成功會有類似如下輸出。

      [root@localhost bin]# redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 --cluster-replicas 1
      >>> Performing hash slots allocation on 6 nodes...
      Master[0] -> Slots 0 - 5460
      Master[1] -> Slots 5461 - 10922
      Master[2] -> Slots 10923 - 16383
      Adding replica 127.0.0.1:8001 to 127.0.0.1:7001
      Adding replica 127.0.0.1:8002 to 127.0.0.1:7002
      Adding replica 127.0.0.1:8003 to 127.0.0.1:7003
      >>> Trying to optimize slaves allocation for anti-affinity
      [WARNING] Some slaves are in the same host as their master
      M: 32f9819fc7d561bfa2b7189182200e86d9901b8a 127.0.0.1:7001
         slots:[0-5460] (5461 slots) master
      M: cca0fbfa374bc175d481e68ee9ed13b65453e967 127.0.0.1:7002
         slots:[5461-10922] (5462 slots) master
      M: 964cfa1c2dcfe36b6d3c63637f0d57ccb568354e 127.0.0.1:7003
         slots:[10923-16383] (5461 slots) master
      S: 1b47b9e6e7a79523579b8d2ddcd5e708583ed317 127.0.0.1:8001
         replicates 32f9819fc7d561bfa2b7189182200e86d9901b8a
      S: aba9330f3e70f26a8af4ced1b672fbcc7bc62d78 127.0.0.1:8002
         replicates cca0fbfa374bc175d481e68ee9ed13b65453e967
      S: 254db0830cd764e075aa793144572d5fa3a398f0 127.0.0.1:8003
         replicates 964cfa1c2dcfe36b6d3c63637f0d57ccb568354e
      Can I set the above configuration? (type 'yes' to accept): yes
      >>> Nodes configuration updated
      >>> Assign a different config epoch to each node
      >>> Sending CLUSTER MEET messages to join the cluster
      Waiting for the cluster to join
      ...
      >>> Performing Cluster Check (using node 127.0.0.1:7001)
      M: 32f9819fc7d561bfa2b7189182200e86d9901b8a 127.0.0.1:7001
         slots:[0-5460] (5461 slots) master
         1 additional replica(s)
      S: aba9330f3e70f26a8af4ced1b672fbcc7bc62d78 127.0.0.1:8002
         slots: (0 slots) slave
         replicates cca0fbfa374bc175d481e68ee9ed13b65453e967
      S: 1b47b9e6e7a79523579b8d2ddcd5e708583ed317 127.0.0.1:8001
         slots: (0 slots) slave
         replicates 32f9819fc7d561bfa2b7189182200e86d9901b8a
      S: 254db0830cd764e075aa793144572d5fa3a398f0 127.0.0.1:8003
         slots: (0 slots) slave
         replicates 964cfa1c2dcfe36b6d3c63637f0d57ccb568354e
      M: cca0fbfa374bc175d481e68ee9ed13b65453e967 127.0.0.1:7002
         slots:[5461-10922] (5462 slots) master
         1 additional replica(s)
      M: 964cfa1c2dcfe36b6d3c63637f0d57ccb568354e 127.0.0.1:7003
         slots:[10923-16383] (5461 slots) master
         1 additional replica(s)
      [OK] All nodes agree about slots configuration.
      >>> Check for open slots...
      >>> Check slots coverage...
      [OK] All 16384 slots covered.
      

      OK,搭建完成!一條命令搞定。

      posted @ 2019-03-15 14:06  Esofar  閱讀(12906)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 妖精视频yjsp毛片永久| 精品亚洲精品日韩精品| 国产精品成人一区二区三区| 67194亚洲无码| 在线a级毛片无码免费真人 | 国产97色在线 | 免费| 亚洲日韩性欧美中文字幕| 人人爽人人爽人人片av东京热 | 国产一二三五区不在卡| 国产中文三级全黄| 精品黄色av一区二区三区 | 99er热精品视频| 18av千部影片| 蜜臀av一区二区三区在线| 涩欲国产一区二区三区四区| 亚洲国产日韩一区三区| 国产成人精品久久一区二区| 国产综合久久亚洲综合| 欧美xxxx黑人又粗又大| 亚洲一二三区精品与老人| 十八禁日本一区二区三区| 亚洲色最新高清AV网站| 玩弄漂亮少妇高潮白浆| 国产强奷在线播放免费| 久久日韩精品一区二区五区| 国产成人无码免费视频麻豆| 中文字幕国产精品二区| 欧美亚洲熟妇一区二区三区| 四虎国产精品永久入口| 丁香婷婷综合激情五月色| 亚洲精品国产精品不乱码| 国产精品午夜福利91| 欧美大香线蕉线伊人久久| av午夜福利一片免费看久久| 国产精品亚洲精品日韩已满十八小| 久久三级国内外久久三级| 国产成人精品三级在线影院| 久久综合97丁香色香蕉| 美女又黄又免费的视频| 精品亚洲欧美无人区乱码| 中文字幕日韩有码国产|