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

Redis Sentinel-深入淺出原理和實戰

存儲 存儲軟件 Redis
本篇博客會簡單的介紹Redis的Sentinel相關的原理,同時也會在最后的文章給出「硬核的」實戰教程,讓你在了解原理之后,能夠實際上手的體驗整個過程。

[[356563]]

本文轉載自微信公眾號「SH的全棧筆記」,作者SH 。轉載本文請聯系SH的全棧筆記公眾號。 

本篇博客會簡單的介紹Redis的Sentinel相關的原理,同時也會在最后的文章給出「硬核的」實戰教程,讓你在了解原理之后,能夠實際上手的體驗整個過程。

之前的文章聊到了Redis的主從復制,聊到了其相關的原理和缺點,具體的建議可以看看我之前寫的文章Redis的主從復制。

總的來說,為了滿足Redis在真正復雜的生產環境的高可用,僅僅是用主從復制是明顯不夠的。例如,當master節點宕機了之后,進行主從切換的時候,我們需要人工的去做failover。

同時在流量方面,主從架構只能通過增加slave節點來擴展讀請求,「寫能力」由于受到master單節點的資源限制是無法進行擴展的。

這也是為什么我們需要引入Sentinel。

Sentinel

功能概覽

Sentinel其大致的功能如下圖。

Sentinel

 

Sentinel是Redis高可用的解決方案之一,本身也是分布式的架構,包含了「多個」Sentinel節點和「多個」Redis節點。而每個Sentinel節點會對Redis節點和其余的Sentinel節點進行監控。

當其發現某個節點不可達時,如果是master節點就會與其余的Sentinel節點協商。當大多數的Sentinel節點都認為master不可達時,就會選出一個Sentinel節點對master執行故障轉移,并通知Redis的調用方相關的變更。

相對于「主從」下的手動故障轉移,Sentinel的故障轉移是全自動的,「無需」人工介入。

Sentinel自身高可用

666,那我怎么知道滿足它自身的高可用需要部署多少個Sentinel節點?

因為Sentinel本身也是分布式的,所以也需要部署多實例來保證自身集群的高可用,但是這個數量是有個最低的要求,最低需要「3個」。

我去,你說3個就3個?我今天偏偏就只部署2個

你別杠...等我說了為什么就必須要3個...

因為哨兵執行故障轉移需要「大部分」的哨兵都同意才行,如果只有兩個哨兵實例,正常運作還好,就像這樣。

 

如果哨兵所在的那臺機器由于機房斷電啊,光纖被挖啊等極端情況整個掛掉了,那么另一臺哨兵即使發現了master故障之后想要執行故障轉移,但是它無法得到任何「其余哨兵節點」的同意,此時也「永遠」無法執行故障轉移,那Sentinel豈不是成了一個擺設?

所以我們需要至少3個節點,來保證Sentinel集群自身的高可用。當然,這三個Sentinel節點肯定都推薦部署到「不同的」機器上,如果所有的Sentinel節點都部署到了同一臺機器上,那當這臺機器掛了,整個Sentinel也就不復存在了。

redis-sentinel-success

 

quorum&majority

大部分?大哥這可是要上生產環境,大部分這個數量未免也太敷衍了,咱就不能專業一點?

前面提到的大部分哨兵同意涉及到兩個參數,一個叫quorum,如果Sentinel集群有quorum個哨兵認為master宕機了,就「客觀」的認為master宕機了。另一個叫majority...

等等等等,不是已經有了一個叫什么quorum的嗎?為什么還需要這個majority?

你能不能等我把話說完...

quorum剛剛講過了,其作用是判斷master是否處于宕機的狀態,僅僅是一個「判斷」作用。而我們在實際的生產中,不是說只「判斷」master宕機就完了, 我們不還得執行「故障轉移」,讓集群正常工作嗎?

同理,當哨兵集群開始進行故障轉移時,如果有majority個哨兵同意進行故障轉移,才能夠最終選出一個哨兵節點,執行故障轉移操作。

主觀宕機&客觀宕機

你剛剛是不是提到了「客觀宕機」?笑死,難不成還有主觀宕機這一說?

 

Sentinel中認為一個節點掛了有兩種類型:

  • Subjective Down,簡稱「sdown」,主觀的認為master宕機
  • Objective Down,簡稱「odown」,客觀的認為master宕機

當一個Sentinel節點與其監控的Redis節點A進行通信時,發現連接不上,此時這個哨兵節點就會「主觀」的認為這個Redis數據A節點sdown了。為什么是「主觀」?我們得先知道什么叫主觀

未經分析推算,下結論、決策和行為反應,暫時不能與其他不同看法的對象仔細商討,稱為主觀。

❞簡單來說,因為有可能「只是」當前的Sentinel節點和這個A節點的網絡通信有問題,其余的Sentinel節點仍然可以和A正常的通信。

sentinel-sdown

 

這也是為什么我們需要引入「odown」,當大于等于了「quorum」個Sentinel節點認為某個節點宕機了,我們就「客觀」的認為這個節點宕機了。

當Sentinel集群客觀的認為master宕機,就會從所有的Sentinel節點中,選出一個Sentinel節點,來最終執行master的故障轉移。

那這個「故障轉移」具體要執行些什么操作呢?我們通過一個圖來看一下。

 

通知調用的客戶端master發生了變化

通知其余的原slave節點,去復制Sentinel選舉出來的新的master節點

如果此時原來的master又重新恢復了,Sentinel也會讓其去復制新的master節點。成為一個新的slave節點。

硬核教程

硬核教程旨在用最快速的方法,讓你在本地體驗Redis主從架構和Sentinel集群的搭建,并體驗整個故障轉移的過程。

前置要求

  1. 安裝了docker
  2. 安裝了docker-compose

準備compose文件

首先需要準備一個目錄,然后分別建立兩個子目錄。如下。

  1. $ tree . 
  2. ├── redis 
  3. │   └── docker-compose.yml 
  4. └── sentinel 
  5.     ├── docker-compose.yml 
  6.     ├── sentinel1.conf 
  7.     ├── sentinel2.conf 
  8.     └── sentinel3.conf 
  9.  
  10. 2 directories, 5 files 

搭建Redis主從服務器

redis目錄下的docker-compose.yml內容如下。

  1. version: '3' 
  2. services: 
  3.   master: 
  4.     image: redis 
  5.     container_name: redis-master 
  6.     ports: 
  7.       - 6380:6379 
  8.   slave1: 
  9.     image: redis 
  10.     container_name: redis-slave-1 
  11.     ports: 
  12.       - 6381:6379 
  13.     command:  redis-server --slaveof redis-master 6379 
  14.   slave2: 
  15.     image: redis 
  16.     container_name: redis-slave-2 
  17.     ports: 
  18.       - 6382:6379 
  19.     command: redis-server --slaveof redis-master 6379 

以上的命令,簡單解釋一下slaveof

就是讓兩個slave節點去復制container_name為redis-master的節點,這樣就組成了一個簡單的3個節點的主從架構

然后用命令行進入當前目錄,直接敲命令docker-compose up即可,剩下的事情交給docker-compose去做就好,它會把我們所需要的節點全部啟動起來。

此時我們還需要拿到剛剛我們啟動的master節點的IP,簡要步驟如下:

1.通過docker ps找到對應的master節點的containerID

  1. $ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9f682c199e9b redis "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:6381->6379/tcp redis-slave-12572ab587558 redis "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:6382->6379/tcp redis-slave-2f70a9d9809bc redis "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:6380->6379/tcp redis-master 

也就是f70a9d9809bc。

2.通過docker inspect f70a9d9809bc,拿到對應容器的IP,在NetworkSettings -> Networks -> IPAddress字段。

然后把這個值給記錄下來,此處我的值為172.28.0.3。

搭建Sentinel集群

sentinel目錄下的docker-compose.yml內容如下。

  1. version: '3' 
  2. services: 
  3.   sentinel1: 
  4.     image: redis 
  5.     container_name: redis-sentinel-1 
  6.     ports: 
  7.       - 26379:26379 
  8.     command: redis-sentinel /usr/local/etc/redis/sentinel.conf 
  9.     volumes: 
  10.       - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf 
  11.   sentinel2: 
  12.     image: redis 
  13.     container_name: redis-sentinel-2 
  14.     ports: 
  15.     - 26380:26379 
  16.     command: redis-sentinel /usr/local/etc/redis/sentinel.conf 
  17.     volumes: 
  18.       - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf 
  19.   sentinel3: 
  20.     image: redis 
  21.     container_name: redis-sentinel-3 
  22.     ports: 
  23.       - 26381:26379 
  24.     command: redis-sentinel /usr/local/etc/redis/sentinel.conf 
  25.     volumes: 
  26.       - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf 
  27. networks: 
  28.   default
  29.     external: 
  30.       name: redis_default 

同樣在這里解釋一下命令

redis-sentinel 命令讓 redis 以 sentinel 的模式啟動,本質上就是一個運行在特殊模式的 redis 服務器。

和 redis-server 的區別在于,他們分別載入了不同的命令表,sentinel 中無法執行各種redis中特有的 set get操作。

建立三份一模一樣的文件,分別命名為sentinel1.conf、sentinel2.conf和sentinel3.conf。其內容如下:

  1. port 26379 
  2. dir "/tmp" 
  3. sentinel deny-scripts-reconfig yes 
  4. sentinel monitor mymaster 172.28.0.3 6379 2 
  5. sentinel config-epoch mymaster 1 
  6. sentinel leader-epoch mymaster 1 

可以看到,我們對于sentinel的配置文件中,sentinel monitor mymaster 172.28.0.3 6379 2表示讓它去監聽名為mymaster的master節點,注意此處的IP一定要是你自己master節點的IP,然后最后面的2就是我們之前提到的quorum。

然后命令行進入名為sentinel的目錄下,敲docker-compose up即可。至此,Sentinel集群便啟動了起來。

手動模擬master掛掉

然后我們需要手動模擬master掛掉,來驗證我們搭建的Sentinel集群是否可以正常的執行故障轉移。

命令行進入名為redis的目錄下,敲入如下命令。

  1. docker-compose pause master 

此時就會將master容器給暫停運行,讓我們等待「10秒」之后,就可以看到sentinel這邊輸出了如下的日志。

  1. redis-sentinel-2 | 1:X 07 Dec 2020 01:58:05.459 # +sdown master mymaster 172.28.0.3 6379 
  2. ...... 
  3. ...... 
  4. ...... 
  5. redis-sentinel-1 | 1:X 07 Dec 2020 01:58:06.932 # +switch-master mymaster 172.28.0.3 6379 172.28.0.2 6379 

得得得,你干什么就甩一堆日志文件上來?湊字數?你這樣鬼能看懂?

❞的確,光從日志文件一行一行的看,就算是我自己過兩周再來看,也是一臉懵逼。日志文件完整了描述了整個Sentinel集群從開始執行故障轉移到最終執行完成的所有細節,但是在這里直接放出來不方便大家的理解。

所以為了讓大家能夠更加直觀的了解這個過程,我簡單的把過程抽象了成了一張圖,大家看圖結合日志,應該能夠更容易理解。


 

sentinel-process

 

里面關鍵的步驟步驟的相關解釋我也一并放入了圖片中。

最終的結果就是,master已經從我們最開始的172.28.0.3切換到了172.28.0.2,后者則是原來的slave節點之一。此時我們也可以連接到172.28.0.2這個容器里去,通過命令來看一下其現在的情況。

role:masterconnected_slaves:1slave0:ip=172.28.0.4,port=6379,state=online,offset=18952,lag=0master_replid:f0bf5d1c843ec3ab005c5ac2b864f7ffdc6a8217master_replid2:72c43e1f9c05d4b08bea6bf9b2549997587e261cmaster_repl_offset:18952second_repl_offset:16351repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:18952

可以看到,現在的172.28.0.2這個節點的角色已經變成了「master」,與其相連接的slave節點只有1個,因為現在的「原master」還沒有啟動起來,總共存活的只有2個實例。

原master重啟啟動

接下來我們模擬原master重新啟動,來看一下會發什么什么。

還是通過命令行進入到名為redis的本地目錄,通過docker-compose unpause master來模擬原master故障恢復之后的上線。同樣我們連接到原master的機器上去。

  1. $ docker exec -it f70a9d9809bc1e924a5be0135888067ad3eb16552f9eaf82495e4c956b456cd9 /bin/sh; exit 
  2. # redis-cli 
  3. 127.0.0.1:6379> info replication 
  4. # Replication 
  5. role:slave 
  6. master_host:172.28.0.2 
  7. master_port:6379 
  8. master_link_status:up 
  9. ...... 

master斷線重連之后,角色也變成了新的master(也就是172.28.0.2這個節點)的一個slave。

然后我們也可以通過再看一下新master節點的replication情況作證。

  1. # Replication 
  2. role:master 
  3. connected_slaves:2 
  4. slave0:ip=172.28.0.4,port=6379,state=online,offset=179800,lag=0 
  5. slave1:ip=172.28.0.3,port=6379,state=online,offset=179800,lag=1 
  6. ...... 

 

原master短線重連之后,其「connected_slaves」變成了2,且「原master」172.28.0.3被清晰的標注為了slave1,同樣與我們開篇和圖中所講的原理相符合。

 

責任編輯:武曉燕 來源: SH的全棧筆記
相關推薦

2021-07-20 15:20:02

FlatBuffers阿里云Java

2022-02-25 08:54:50

setState異步React

2018-12-25 08:00:00

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2018-12-19 14:40:08

Redis高級特性

2009-07-22 16:44:06

2020-11-06 09:24:09

node

2021-08-10 14:10:02

Nodejs后端開發

2021-08-11 07:54:47

Commonjs

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構調度器

2012-05-21 10:06:26

FrameworkCocoa

2022-09-26 09:01:15

語言數據JavaScript

2023-11-12 00:10:07

Redis高可用

2022-05-06 07:19:11

DOMDiff算法

2019-11-21 09:16:14

OpenStack安全組MAC

2017-08-24 15:09:13

GAN神經網絡無監督學習

2023-01-06 12:50:46

ChatGPT

2013-09-16 09:56:29

TCP協議網絡協議send
點贊
收藏

51CTO技術棧公眾號

国产在线精品一区| 欧美不卡视频一区发布| 熟妇人妻va精品中文字幕| 久久这里精品| 国产一区在线不卡| 国内免费久久久久久久久久久 | 日韩毛片在线看| 亚洲福利精品视频| 午夜小视频福利在线观看| 99v久久综合狠狠综合久久| 国产精品三级在线| 久久精品国产亚洲AV无码麻豆| 四虎884aa成人精品最新| 欧美日韩国产123区| 每日在线观看av| 欧美18一19xxx性| 成人免费高清在线| 国产精品直播网红| 久久久久久少妇| 亚洲精品电影| 亚洲午夜未满十八勿入免费观看全集| 精品人妻一区二区三| gay欧美网站| 亚洲在线免费播放| 伊人久久大香线蕉av一区| 四季av日韩精品一区| 蓝色福利精品导航| 日韩免费av一区二区| 国产一级在线观看视频| 日韩av大片在线观看| 欧美日韩麻豆| 欧美mv和日韩mv的网站| 免费看涩涩视频| 成人欧美一区二区三区的电影| 亚洲激情在线播放| 精品国产无码在线| 成年人视频在线观看免费| 9久草视频在线视频精品| 亚洲一区中文字幕在线观看| 最新中文字幕在线观看视频| 99视频一区| www.亚洲天堂| 男人舔女人下部高潮全视频| 欧洲亚洲一区二区三区| 精品久久国产老人久久综合| 日本高清久久久| 国产精品久久久久久妇女| 一本色道a无线码一区v| 浮妇高潮喷白浆视频| 国产乱妇乱子在线播视频播放网站| 国产精品久久看| 五月天亚洲综合| 高清av在线| 国产欧美va欧美不卡在线 | 亚洲肉体裸体xxxx137| 精品免费国产二区三区| 欧美69精品久久久久久不卡| 韩国一区二区三区视频| 欧美一区二区不卡视频| 亚洲一区二区三区三州| 视频在线观看免费影院欧美meiju| 91精品一区二区三区久久久久久 | 欧美精品入口蜜桃| 一区二区三区国产精华| 久久视频免费在线播放| 日本精品在线免费观看| 99久久婷婷| 久久福利网址导航| 欧美激情国产精品免费| 激情欧美丁香| 欧美在线视频观看| 97人妻精品视频一区| 日本美女视频一区二区| 国产精品日韩精品| 国产精品国产av| 国产一区在线看| 国产精品裸体一区二区三区| 神宫寺奈绪一区二区三区| 97se亚洲国产综合自在线| 久久综合毛片| 91青青在线视频| 亚洲欧美日韩成人高清在线一区| 日本一级淫片演员| sm久久捆绑调教精品一区| 日韩欧美国产骚| 日韩爱爱小视频| 欧美二区观看| 日韩国产欧美区| 色偷偷男人天堂| 欧美视频在线观看| 欧美一级淫片丝袜脚交| 91成人一区二区三区| 国产成人99久久亚洲综合精品| 国产在线精品一区二区三区| 国产露出视频在线观看| 亚洲免费资源在线播放| 777久久久精品一区二区三区| 亚洲mmav| 精品88久久久久88久久久| 亚洲精品色午夜无码专区日韩| 亚州av乱码久久精品蜜桃| 午夜精品久久久久久久99热浪潮 | 日韩你懂的在线观看| 中文在线一区二区三区| 欧美r级电影| 久久久久亚洲精品国产| 午夜视频网站在线观看| 国产成人精品三级| 午夜精品亚洲一区二区三区嫩草 | 国产成人小视频在线观看| 一级aaaa毛片| 91老司机福利 在线| 一区二区三区的久久的视频| 国产在线精彩视频| 91麻豆精品国产综合久久久久久 | 国产精品乱人伦| 日本韩国欧美在线观看| 国产精品日韩精品在线播放| 亚洲精品一区av在线播放| 日韩a级片在线观看| 日韩国产欧美三级| 国产精品青青草| 麻豆免费在线观看| 91黄视频在线| 熟妇人妻久久中文字幕| 午夜日韩在线| 国产一区欧美二区三区| 毛片在线播放网站| 婷婷中文字幕综合| 日本人妻一区二区三区| 一区二区三区毛片免费| 国产精品丝袜高跟| 青青国产在线| 欧美性开放视频| av无码一区二区三区| 激情偷拍久久| 91久久伊人青青碰碰婷婷| 免费观看在线黄色网| 91成人网在线| 魔女鞋交玉足榨精调教| 99综合在线| 久久草视频在线看| 国产一二三在线| 亚洲精品福利在线| 日本三级中文字幕| 9久草视频在线视频精品| 欧美又粗又长又爽做受| 成人av资源网址| 欧美精品激情在线观看| www.超碰在线.com| 一区二区三区欧美日韩| 爱情岛论坛亚洲自拍| 雨宫琴音一区二区三区| 亚洲自拍偷拍第一页| 国产激情在线观看| 69久久99精品久久久久婷婷| 高清国产在线观看| 秋霞午夜鲁丝一区二区老狼| 先锋在线资源一区二区三区| 日本美女久久| 色吧影院999| 99精品免费观看| 一区二区三区四区在线免费观看| 中文字幕乱码在线人视频| 国产精品sm| 国产一区二区在线观看免费播放 | 国产精品日韩欧美| 免费av网站在线观看| 欧美精品少妇一区二区三区| 欧美大片xxxx| 成人精品视频一区二区三区尤物| 99精品在线免费视频| 久久av网址| 国产精品网红福利| 国产超级va在线视频| 欧美大黄免费观看| 久久久久久少妇| 中文字幕第一区二区| 午夜一级免费视频| 极品裸体白嫩激情啪啪国产精品| 精品无人乱码一区二区三区的优势| 久九九久频精品短视频| 久久久精品久久| 亚洲欧美日韩动漫| 欧美日韩高清一区二区不卡 | av电影在线播放高清免费观看| 8v天堂国产在线一区二区| 久久久久久久国产视频| 91美女视频网站| 美女在线视频一区二区| 欧美深夜福利| 神马影院我不卡午夜| 秋霞影院一区| 日韩美女视频免费在线观看| 黄色成人在线| 亚洲免费av片| 99久久精品国产色欲| 欧美日韩午夜激情| 97精品在线播放| 97se亚洲国产综合自在线| 99国产精品久久久久久| 一本久久综合| 丰满人妻一区二区三区53号 | 亚洲人成自拍网站| 国产高潮在线观看| 欧美中文字幕亚洲一区二区va在线| 欧美成人777| 久久精品人人做人人综合| 日本少妇xxx| 免费一级片91| 大陆极品少妇内射aaaaa| 天堂美国久久| 日韩福利影院| 少妇一区二区三区| 99高清视频有精品视频| 欧美97人人模人人爽人人喊视频| 97色在线播放视频| 综合久久2o19| 久久电影一区二区| 国产精品久久久久一区二区国产| 欧美精品一区二区三区视频| 一级黄色片免费| 色94色欧美sute亚洲13| 国产成人精品亚洲男人的天堂| 中文成人综合网| 午夜在线观看一区| 91一区二区在线| jjzz黄色片| 国产剧情一区在线| 亚洲免费av一区| 奇米888四色在线精品| 日韩av资源在线| 日韩一级免费| 黄色一级片在线看| 韩国欧美一区| 91.com在线| 欧美涩涩视频| 日韩久久久久久久久久久久| 91精品国产成人观看| 亚洲国内在线| 青青草原综合久久大伊人精品 | 日本成人在线播放| 在线播放日韩欧美| 久草视频视频在线播放| 亚洲精品xxxx| 日本午夜在线视频| 日韩av在线看| 青春有你2免费观看完整版在线播放高清| 精品捆绑美女sm三区| www.日韩在线观看| 精品久久久久99| 日韩一级免费视频| 亚洲国产精彩中文乱码av在线播放 | 亚洲第一香蕉网| 91日韩精品一区| 黑人巨大精品欧美| 国产香蕉久久精品综合网| 无码人妻精品一区二区中文| 久久久久久影视| 亚洲色图第四色| 亚洲图片欧美激情| 九九热精品在线观看| 亚洲一二三区不卡| 西西44rtwww国产精品| 色先锋aa成人| 一区二区三区免费观看视频| 欧美日韩一区国产| 国产视频一区二区三| 日韩精品一区二区在线| 欧美性猛交 xxxx| 亚洲老板91色精品久久| 国产成人天天5g影院在线观看| 日韩在线欧美在线国产在线| а√中文在线8| 国内外成人免费激情在线视频网站| 成人观看网址| 国产精品久久久久久久久影视| 欧洲美女精品免费观看视频| 91在线精品播放| 国产区精品视频在线观看豆花| 蜜桃视频在线观看成人| 久久婷婷蜜乳一本欲蜜臀| 日韩精品一区二区三区电影| 亚洲日本免费| 在线观看免费视频高清游戏推荐| 国产一区二区精品在线观看| 99re这里只有| 国产精品毛片大码女人| 国产无码精品一区二区| 91国产免费看| 性生交生活影碟片| 亚洲开心激情网| 色噜噜狠狠狠综合欧洲色8| 欧美综合第一页| 国产精品久久久久久久久久辛辛| 精品国产乱码久久久久久88av| 超碰成人久久| 日本xxxxxxxxxx75| 欧美aⅴ一区二区三区视频| 国产女主播在线播放| 国产清纯白嫩初高生在线观看91| 真实国产乱子伦对白在线| 色综合久久六月婷婷中文字幕| 99草在线视频| 夜夜嗨av一区二区三区四区| 欧美hdxxxx| 91精品中国老女人| 亚洲精品合集| 精品人妻人人做人人爽| 久久精品99久久久| 最新中文字幕视频| 亚洲国产精品人人做人人爽| 一区二区视频免费观看| 精品国精品国产| 麻豆网站视频在线观看| 国产99视频在线观看| 福利电影一区| 米仓穗香在线观看| 毛片不卡一区二区| 好吊日免费视频| 亚洲国产精品嫩草影院| 国产精品无码在线播放 | 蜜桃无码一区二区三区| 一级精品视频在线观看宜春院| 成人黄色片在线观看| 精品中文字幕久久久久久| 草美女在线观看| 91精品黄色| 综合一区二区三区| 亚洲三级视频网站| 久久免费美女视频| 天天综合网入口| 亚洲精品国精品久久99热一| 日本小视频在线免费观看| 91久久久久久久久久久| 成人直播大秀| 婷婷六月天在线| 欧美极品xxx| 伊人久久中文字幕| 亚洲性线免费观看视频成熟| 国产美女高潮在线观看| 国产伦精品一区二区三区视频黑人 | 成人av网站免费观看| 免看一级a毛片一片成人不卡| 91精品国产手机| h视频在线免费观看| 成人性生交大片免费观看嘿嘿视频| 91视频久久| 肉色超薄丝袜脚交| 国产精品啊v在线| 成人动漫视频在线观看免费| 欧美韩国日本在线观看| 三上悠亚在线一区| 国产精品夫妻自拍| 国产又粗又黄又爽| 久热国产精品视频| 一区中文字幕电影| 日本阿v视频在线观看| 成人精品一区二区三区中文字幕| 久久久久久久久精| 亚洲精品狠狠操| 欧美黄色三级| 国产又大又长又粗又黄| 国产在线精品免费av| 麻豆chinese极品少妇| 精品国产乱码久久久久久久久| av男人的天堂在线观看| 麻豆成人小视频| 美国十次了思思久久精品导航 | 一区二区三区国产精品| 成人午夜免费福利| 欧美中文字幕在线| 日韩av自拍| 精品国产免费久久久久久婷婷| 无吗不卡中文字幕| 成人性生交大片免费看午夜| 成人网中文字幕| 中文精品在线| 一二三四国产精品| 日韩精品中午字幕| 小视频免费在线观看| 亚洲人一区二区| 国产成人av在线影院| 国产寡妇亲子伦一区二区三区四区| 一区二区三区动漫| 人人爱人人干婷婷丁香亚洲| 国产极品粉嫩福利姬萌白酱| 亚洲国产精品成人综合色在线婷婷| 国产视频在线免费观看| 91精品国产91久久久久久最新| 国语产色综合| 色婷婷狠狠18禁久久| 日本乱人伦aⅴ精品| av超碰免费在线| 欧美日韩一区在线观看视频| 国内成+人亚洲+欧美+综合在线| 日产精品久久久久久久| 中文字幕亚洲图片| 人人网欧美视频| 欧美激情国内自拍|