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

Redis 高可用篇:你管這叫 Sentinel 哨兵集群原理

開發 前端 Redis
哨兵是 Redis 的一種運行模式,它專注于對 Redis 實例(主節點、從節點)運行狀態的監控,并能夠在主節點發生故障時通過一系列的機制實現選主及主從切換,實現故障轉移,確保整個 Redis 系統的可用性。

[[390831]]

概要我們知道「主從復制是高可用的基石」,從庫宕機依然可以將請求發送給主庫或者其他從庫,但是 Master 宕機,只能響應讀操作,寫請求無法再執行。

所以主從復制架構面臨一個嚴峻問題,主庫掛了,無法執行「寫操作」,無法自動選擇一個 Slave 切換為 Master,也就是無法故障自動切換。

深夜與女朋友么么噠……(此處省略 10000 字),突然宕機,總不能提起褲子從床上爬起來手工進行主從切換,再通知其他程序員把地址重新改成新主庫上線。

如此一折騰自己已被女友切換成前男友了,萬萬使不得。所以我們必須有一個高可用的方案,為此,Redis 官方提供一個高可用方案——哨兵(Sentinel)。

Redis 哨兵集群原理

開篇寄語

技術的迭代非常的快,但是從技術中沉淀下來的思維卻是受益終生的。所以不要擔心什么中年危機,那些擔心中年危機的人通常很難成長起來。只要我們成長,只要我們的認知在不斷突破,就不用擔心中年危機,這個世界始終是需要那些優秀人才的。

什么是哨兵(Sentinel)“

65 哥:碼哥,雖然我沒女朋友,但是,未雨綢繆我要掌握這個哨兵模式,防止當深夜與女朋友么么噠被打擾,你快說說哨兵的實現原理吧。

”搭建實例采用三個哨兵形成集群,三個數據節點(一主兩從)方式搭建,如下圖所示:

Redis哨兵集群

哨兵集群的搭建演示就不在這里贅述了,需要的讀者朋友可點擊左下角的「閱讀原文」查看。

65 哥你聽過「武當派」創始人張三瘋么?Redis 主從架構就好比一個武當,掌門人就是 Master。掌門人如果掛了,需要從武當七俠里面選舉能人擔當掌門人。這就需要一個部門能監控掌門人的生死和武當其他弟子的生命狀態,并且能夠通過投票從武當弟子中選舉一個能者擔任新掌門,接著再舉行新聞發布會向世界宣布新掌門的信息。這個「部門」就是哨兵。

哨兵在選舉新掌門會遇到以下幾個問題:

  1. 如何判斷掌門真的掛了,有可能假死;
  2. 到底選擇哪一個武當子弟作為新掌門?
  3. 通過新聞發布會將新掌門的相關信息通知到所有武當弟子(slave 和 master)和整個武林(客戶端)。

哨兵部門主要負責的任務是:監控整個武當、選擇新掌門,通知整個武當和整個武林。

哨兵機制的主要任務

哨兵是 Redis 的一種運行模式,它專注于對 Redis 實例(主節點、從節點)運行狀態的監控,并能夠在主節點發生故障時通過一系列的機制實現選主及主從切換,實現故障轉移,確保整個 Redis 系統的可用性。結合 Redis 的 官方文檔:https://redis.io/topics/sentinel,可以知道 Redis 哨兵具備的能力有如下幾個:

  • 監控:持續監控 master 、slave 是否處于預期工作狀態。
  • 自動切換主庫:當 Master 運行故障,哨兵啟動自動故障恢復流程:從 slave 中選擇一臺作為新 master。
  • 通知:讓 slave 執行 replicaof ,與新的 master 同步;并且通知客戶端與新 master 建立連接。

哨兵也是一個 Redis 進程,只是不對外提供讀寫服務,通常哨兵要配置成單數,為啥呢?且聽「碼哥字節」慢慢分析。

65 哥:那到底「哨兵」這個神秘部門是如何實現這三個能力的?

我們先從全局觀看哨兵,簡要的了解整個運作流程,接著再針對每一個任務詳細分析。首先從監控開始…...

監控

Sentinel 只是武當弟子中的特殊部門,在默認情況下,Sentinel 通過飛鴿傳書以每秒一次的頻率向所有武當弟子、掌門與哨兵(包括 Master、Slave、其他 Sentinel 在內)發送 PING 命令,如果 slave 沒有在在規定時間內響應「哨兵」的 PING 命令,「哨兵」就認為這哥們可能嗝屁了,就會將他記錄為「下線狀態」;

假如 master 掌門沒有在規定時間響應 「哨兵」的 PING 命令,哨兵就判定掌門下線,開始執行「自動切換 master 掌門」的流程。

PING 命令的回復有兩種情況:

  1. 有效回復:返回 +PONG、-LOADING、-MASTERDOWN 任何一種;
  2. 無效回復:有效回復之外的回復,或者指定時間內返回任何回復。

65 哥:哨兵如何判斷「掌門」嗝屁呢?掌門詐尸咋辦?

為了防止掌門「假死」,「哨兵」設計了「主觀下線」和「客觀下線」兩種暗號。

主觀下線

哨兵利用 PING 命令來檢測掌門、 slave 的生命狀態。如果是無效回復,哨兵就把這個哥們標記為「主觀下線」。檢測到的是武當小弟,也就是 slave 角色。那么就直接標記「主觀下線」。

因為 master 掌門還在,slave 的嗝屁對整個武當影響不大。依然可以對外開會,比武論劍、吃香喝辣…...

如果檢測到是 master 掌門完蛋,這時候哨兵不能這么簡單的標記「主觀下線」,開啟新掌門選舉。

因為有可能出現誤判,掌門并沒有嗝屁,一旦啟動了掌門切換,后續的選主、通知開發布會,slave 花時間與新 master 同步數據都會消耗大量資源。

所以「哨兵」要降低誤判的概率,誤判一般會發生在集群網絡壓力較大、網絡擁塞,或者是主庫本身壓力較大的情況下。

既然一個人容易誤判,那就多個人一起投票判斷。哨兵機制也是類似的,采用多實例組成的集群模式進行部署,這就是哨兵集群。引入多個哨兵實例一起來判斷,就可以避免單個哨兵因為自身網絡狀況不好,而誤判主庫下線的情況。

同時,多個哨兵的網絡同時不穩定的概率較小,由它們一起做決策,誤判率也能降低。

客觀下線

判斷 master 是否下線不能只有一個「哨兵」說了算,只有過半的哨兵判斷 master 已經「主觀下線」,這時候才能將 master 標記為「客觀下線」,也就是說這是一個客觀事實,掌門真的嗝屁了,華佗再世也治不好了。

只有 master 被判定為「客觀下線」,才會進一步觸發哨兵開始主從切換流程。

客觀下線

主觀下線與客觀下線的區別

簡單來說,主觀下線是哨兵自己認為節點宕機,而客觀下線是不但哨兵自己認為節點宕機,而且該哨兵與其他哨兵溝通后,達到一定數量的哨兵都認為該哥們嗝屁了。

這里的「一定數量」是一個法定數量(Quorum),是由哨兵監控配置決定的,解釋一下該配置:

  1. # sentinel monitor <master-name> <master-host> <master-port> <quorum> 
  2. # 舉例如下: 
  3. sentinel monitor mymaster 127.0.0.1 6379 2 

這條配置項用于告知哨兵需要監聽的主節點:

  • sentinel monitor:代表監控。
  • mymaster:代表主節點的名稱,可以自定義。
  • 192.168.11.128:代表監控的主節點 ip,6379 代表端口。
  • 2:法定數量,代表只有兩個或兩個以上的哨兵認為主節點不可用的時候,才會把 master 設置為客觀下線狀態,然后進行 failover 操作。

「客觀下線」的標準就是,當有 N 個哨兵實例時,要有 N/2 + 1 個實例判斷 master 為「主觀下線」,才能最終判定 Master 為「客觀下線」,其實就是過半機制。

自動切換主庫

65 哥:既然判斷 master 客觀下線了,那就要從選出一個新掌門人了吧。

「哨兵」的第二個任務,選擇新 master 掌門。需要從武當弟子中按照一定規則選擇一個牛逼人物作為新掌門,完成選任掌門后,新 master 帶領眾弟子一起吃香喝辣。

按照一定的 「篩選條件」 + 「打分」 策略,選出「最強王者」擔任掌門,也就是通過一些條件海選過濾一些「無能之輩」,接著將通過海選的靚仔全都打分排名,將最高者選為新 master。

如圖所示:

新master選擇

網絡經常斷開的靚仔也不可取,你想,即使變成 master,可是很快網絡出了故障,又得重新選擇新 master,這不鬧著玩么,得排除掉!

篩選條件

65 哥:那都有哪些篩選條件呀?

從庫當前在線狀態,下線的直接丟棄;

評估之前的網絡連接狀態 down-after-milliseconds \* 10:如果從庫總是和主庫斷連,而且斷連次數超出了一定的閾值(10 次),我們就有理由相信,這個從庫的網絡狀況并不是太好,就可以把這個從庫篩掉了。

打分

過濾掉不合適的 slave 之后,則進入打分環節。打分會按照三個規則進行三輪打分,規則分別為:

  1. slave 優先級,通過 slave-priority 配置項,給不同的從庫設置不同優先級(后臺有人沒辦法),優先級高的直接晉級為新 master 掌門。
  2. slave_repl_offset與 master_repl_offset進度差距(誰的武功與之前掌門的功夫越接近誰就更牛逼),如果都一樣,那就繼續下一個規則。其實就是比較 slave 與舊 master 復制進度的差距;
  3. slave runID,在優先級和復制進度都相同的情況下,ID 號最小的從庫得分最高,會被選為新主庫。(論資排輩,根據 runID 的創建時間來判斷,時間早的上位);

通知

65 哥:為啥還要召開新聞發布會呢?

重新選舉新 master 掌門這種事情,何等大事,怎能不告知天下。再者其他 slave 弟子也要知道新掌門是誰,一起追隨新掌門吃香喝辣大保健。

最后一個任務,「哨兵」將新 「master 掌門」的連接信息發送給其他 slave 武當弟子,并且讓 slave 執行 replacaof 命令,和新「master 掌門」建立連接,并進行數據復制學習新掌門的所有武功。

除此之外,「哨兵」還需要將新掌門的連接信息通知整個武林(客戶端),使得讓所有想拜訪、討教的人能找到新任掌門,這樣諸多事宜才能交給新掌門做決定(將讀寫請求轉移到新 master)。

哨兵的主要任務與實現目標

哨兵執行任務與目標

哨兵集群工作原理

「哨兵」部門并不是一個人,多個人共同組成一個「哨兵集群」,即使有一些「哨兵」被老王打死了,其他的「哨兵」依然可以共同協作完成監控、新掌門選舉以及通知 slave 、master 以及每一個武林人士(客戶端)。

在配置哨兵集群的時候,哨兵配置中只設置了監控的 master IP 和 port,并沒有配置其他哨兵的連接信息。

  1. sentinel monitor <master-name> <ip> <redis-port> <quorum> 

哨兵之間是如何知道彼此的?如何知道 slave 并監控他們的?由哪一個「哨兵」執行主從切換呢?

帶著這些問題,跟著「碼哥字節」一起追本溯源,深入哨兵集群心臟。

pub/sub 實現哨兵間通信和發現 slave

65 哥:哨兵之間是如何知道彼此的?

哨兵之間可以相互通信約會搞事情,主要歸功于 Redis 的 pub/sub 發布/訂閱機制。

哨兵與 master 建立通信,利用 master 提供發布/訂閱機制發布自己的信息,比如身高體重、是否單身、IP、端口……

master 有一個 __sentinel__:hello 的專用通道,用于哨兵之間發布和訂閱消息。這就好比是 __sentinel__:hello 微信群,哨兵利用 master 建立的微信群發布自己的消息,同時關注其他哨兵發布的消息。

Redis pub/sub 機制

當多個哨兵實例都在主庫上做了發布和訂閱操作后,它們之間就能知道彼此的 IP 地址和端口,從而相互發現建立連接。

Redis 通過頻道的方式對消息進行分別管理,這里的頻道其實就是不同的微信群。比如“碼哥字節讀者技術群”就是專門分享技術的群。朋友們可以關注公眾號,后臺回復“加群”,一起成長。

65 哥:哨兵之間雖然建立連接了,但是還需要和 slave 建立連接,不然沒法監控他們呀,如何知道 slave 并監控他們的?

的確,哨兵之間建立連接形成集群還不夠,還需要跟 slave 建立連接,不然沒法監控他們,無法對主從庫進行心跳判斷。

除此之外,如果發生了主從切換也得通知 slave 重新跟新 master 建立連接執行數據同步。關于主從架構數據同步原理可移步《Redis 高可用篇:你管這叫主從架構數據一致性同步》。

關鍵還是利用 master 來實現,哨兵向 master 發送 INFO 命令, master 掌門自然是知道自己門下所有的 salve 小弟的。所以 master 接收到命令后,便將 slave 列表告訴哨兵。

哨兵根據 master 響應的 slave 名單信息與每一個 salve 建立連接,并且根據這個連接持續監控哨兵。

如圖所示,哨兵 2 向 Master 發送 INFO 命令,Master 就把 slave 列表返回給哨兵 2,哨兵 2 便根據 slave 列表連接信息與每一個 slave 建立連接,并基于此連接實現持續監控。

剩下的哨兵也同理基于此實現監控。

INFO命令獲取slave信息

選擇哨兵執行主從切換

65 哥:master 嗝屁了以后,哨兵這么多,那到底讓哪一個哨兵來執行新 master 切換呢?

這個跟哨兵判斷 master “客觀下線”類似,也是通過投票的方式選出來的。

任何一個哨兵判斷 master “主觀下線”后,就會給其他哨兵基友發送 is-master-down-by-addr 命令,好基友則根據自己跟 master 之間的連接狀況分別響應 Y 或者 N ,Y 表示贊成票, N 就是反對。

 

如果某個哨兵獲得了大多數哨兵的“贊成票”之后,就可以標記 master 為 “客觀下線”,贊成票數是通過哨兵配置文件中的 quorum 配置項設定。

  1. sentinel monitor <master-name> <ip> <redis-port> <quorum> 

比如一共 3 個哨兵組成集群,那么 quorum 就可以配置成 2,當一個哨兵獲得了 2 張贊成票,就可以標記 master “客觀下線”,當然這個票包含自己的那一票。

獲得多數贊成票的哨兵可以向其他哨兵發送命令,申明自己想要執行主從切換。并讓其他哨兵進行投票,投票過程就叫做 “Leader 選舉”。

想要成為 “Leader”沒那么簡單,得有兩把刷子。需要滿足以下條件:

  1. 獲得其他哨兵基友過半的贊成票;
  2. 贊成票的數量還要大于等于配置文件的 quorum 的值。

如果哨兵集群有 2 個實例,此時,一個哨兵要想成為 Leader,必須獲得 2 票,而不是 1 票。所以,如果有個哨兵掛掉了,那么,此時的集群是無法進行主從庫切換的。因此,通常我們至少會配置 3 個哨兵實例。

這也是為啥哨兵集群部署成單數的原因,雙數的話多余浪費。

選舉流程如下圖所示:

Redis哨兵執行主從切換

通過 pub/sub 實現客戶端事件通知

65 哥:新 master 選出來了,要怎么公示天下呢?

當然是召開新聞發布會呀,邀請消息相關類型的媒體報道傳播,感興趣的人自然就去關注訂閱相關事件,并根據事件做出行動。

在 Redis 也是類似,通過 pub/sub 機制發布不同事件,讓客戶端在這里訂閱消息。客戶端可以訂閱哨兵的消息,哨兵提供的消息訂閱頻道有很多,不同頻道包含了主從庫切換過程中的不同關鍵事件。

也就是在不同的“微信群”發布不同的事件,讓對該事件感興趣的人進群即可。

master 下線事件

  • +sdown:進入“主觀下線”狀態;
  • -sdown:退出“主觀下線”狀態;
  • +odown:進入“客觀下線”狀態;
  • -odown:退出“客觀下線”狀態;

slave 重新配置事件

  • +slave-reconf-sent:哨兵發送 replicaof 命令重新配置從庫;
  • +slave-reconf-inprog:slave 配置了新 master,但是尚未進行同步;
  • +slave-reconf-done:slave 配置了新 master,并與新 master 完成了數據同步;

新主庫切換

+switch-master:master 地址發生了變化。

知道了這些頻道之后,就可以讓客戶端從哨兵這里訂閱消息了。客戶端讀取哨兵的配置文件后,可以獲得哨兵的地址和端口,和哨兵建立網絡連接。

然后,我們可以在客戶端執行訂閱命令,來獲取不同的事件消息。

舉個栗子:如下指令訂閱“所有實例進入客觀下線狀態的事件”

  1. SUBSCRIBE +odown 

注意事項與配置說明

發現了沒,Redis 的 pub/sub 發布訂閱機制尤其重要,有了 pub/sub 機制,哨兵和哨兵之間、哨兵和從庫之間、哨兵和客戶端之間就都能建立起連接了,各種事件的發布也是通過這個機制實現。

down-after-milliseconds

Sentinel 配置文件中的 down-after-milliseconds 選項指定了 Sentinel 判斷實例進入主觀下線所需的時間長度:如果一個實例在 down-after-milliseconds 毫秒內,連續向 Sentinel 返回無效回復,那么 Sentinel 會修改這個實例所對應數據,以此來表示這個實例已經進入主觀下線狀態。

要保證所有哨兵實例的配置是一致的,尤其是主觀下線的判斷值 down-after-milliseconds。因為這個值在不同的哨兵實例上配置不一致,導致哨兵集群一直沒有對有故障的主庫形成共識,也就沒有及時切換主庫,最終的結果就是集群服務不穩定。

down-after-milliseconds * 10

down-after-milliseconds 是我們認定主從庫斷連的最大連接超時時間。如果在 down-after-milliseconds 毫秒內,主從節點都沒有通過網絡聯系上,我們就可以認為主從節點斷連了。如果發生斷連的次數超過了 10 次,就說明這個從庫的網絡狀況不好,不適合作為新主庫。

總結

哨兵主要任務

Redis 哨兵機制是實現 Redis 不間斷服務的高可用手段之一。主從架構集群的數據同步,是數據可靠的基礎保障;主庫宕機,自動執行主從切換是服務不間斷的關鍵支撐。

Redis 哨兵機制實現了主從庫的自動切換,再也不怕跟女盆友么么噠的時候 master 宕機了:

  • 監控 master 與 slave 運行狀態,判斷是否客觀下線;
  • master 客觀下線后,選擇一個 slave 切換成 master;
  • 通知 slave 和客戶端新 master 信息。

哨兵集群原理

為了避免單個哨兵故障后無法進行主從切換,以及為了減少誤判率,又引入了哨兵集群;哨兵集群又需要有一些機制來支撐它的正常運行:

  • 基于 pub/sub 機制實現哨兵集群之間的通信;
  • 基于 INFO 命令獲取 slave 列表,幫助 哨兵與 slave 建立連接;
  • 通過哨兵的 pub/sub,實現了與客戶端和哨兵之間的事件通知。

主從切換,并不是隨意選擇一個哨兵就可以執行,而是通過投票仲裁,選擇一個 Leader,由這個 Leader 負責主從切換。

 

責任編輯:姜華 來源: 碼哥字節
相關推薦

2021-03-11 11:01:22

Redis架構數據

2021-04-29 20:10:17

安全線程存儲

2022-05-16 13:46:38

Redis高可用Sentinel

2022-05-31 08:04:03

Redis高可用集群

2021-03-31 05:57:40

集群搭建哨兵集群Redis

2018-09-11 09:33:49

Redis高可用架構

2023-09-27 06:26:07

2022-06-21 07:51:06

Redis高可用哨兵進程

2023-11-12 00:10:07

Redis高可用

2021-04-22 08:40:42

RedisCluster 集群故障轉移

2020-06-08 08:20:11

Redis高可用集群

2019-09-03 15:45:31

Redis分片集群

2024-02-27 09:48:25

Redis集群數據庫

2022-02-07 09:40:10

高可用高并發高性能

2013-03-20 10:19:17

RedisRedis-senti監控

2023-03-01 22:28:15

Redis高可用

2023-11-13 09:03:10

2021-09-23 12:14:50

Redis分布式優化

2023-04-09 19:54:52

2019-10-23 09:20:11

Redis集群主從復制
點贊
收藏

51CTO技術棧公眾號

少妇一级淫片免费看| 亚洲色偷偷综合亚洲av伊人| 狼人综合视频| 久久九九久久九九| 亚洲最大激情中文字幕| 欧美另类视频在线观看| 欧美视频三区| 欧洲亚洲精品在线| 免费看日b视频| 可以免费看污视频的网站在线| 91精品国产调教在线观看| 欧美videos大乳护士334| 18岁视频在线观看| 欧美人体视频xxxxx| 欧美国产激情一区二区三区蜜月| 国产精品久久9| 国产亚洲精品女人久久久久久| 亚洲大奶少妇| 色av成人天堂桃色av| 日韩国产小视频| 阿v免费在线观看| 成人免费视频一区二区| 国产精品丝袜一区二区三区| 中日韩黄色大片| 欧美成人精品| www.日韩.com| www..com.cn蕾丝视频在线观看免费版 | 在线观看特色大片免费视频| 中文字幕在线不卡| 97se亚洲综合在线| 一本一道精品欧美中文字幕| 亚洲色图国产| 中文字幕精品久久久久| 日韩网站在线播放| 精品视频高潮| 欧美精品一区二区三区在线播放 | 亚洲一级黄色录像| 亚洲精品自拍| 欧美色男人天堂| 久久久天堂国产精品| 欧美自拍偷拍第一页| 国产中文字幕一区| 欧美日韩国产va另类| 成熟妇人a片免费看网站| 国产精品一区三区在线观看| 欧美美女网站色| 亚洲涩涩在线观看| 韩国三级一区| 欧美在线三级电影| 日韩精品无码一区二区三区免费| 国产理论在线观看| 亚洲欧洲日产国码二区| 一本久久a久久精品vr综合| 91最新在线| 国产精品嫩草99a| 亚洲欧美久久久久一区二区三区| 狠狠躁夜夜躁av无码中文幕| 国产二区国产一区在线观看| 亚洲www永久成人夜色| a毛片在线免费观看| 国内精品久久久久影院薰衣草| 91黑丝高跟在线| 西西44rtwww国产精品| 亚洲人metart人体| 久久99青青精品免费观看| 久久久香蕉视频| 亚洲经典视频在线观看| 欧美亚洲另类激情另类| 久草视频在线免费看| 国内精品久久久久久久97牛牛| 自拍亚洲一区欧美另类| 香蕉成人在线视频| 欧美精品国产一区| 日韩视频免费看| 欧美三级日本三级| 99亚洲一区二区| 欧美国产第一页| 男女啊啊啊视频| 石原莉奈在线亚洲二区| 91国内免费在线视频| 亚洲综合图片网| 久草热8精品视频在线观看| 99久久久精品免费观看国产| 亚洲专区在线播放| 国产成人精品免费视频网站| 久久久综合香蕉尹人综合网| 第九色区av在线| 亚洲精品日韩一| 熟女视频一区二区三区| 888av在线视频| 亚洲一区二区三区视频在线播放 | 欧美日韩国产综合一区二区 | 日韩欧美在线不卡| 欧美精品欧美极品欧美激情| 超碰在线亚洲| 国产午夜精品一区二区三区| 亚洲熟女www一区二区三区| 亚洲免费影院| 91丝袜美腿美女视频网站| 少妇人妻一区二区| 91蝌蚪porny| 亚洲国产欧美一区二区三区不卡| jizz在线观看视频| 国产精品天干天干在观线| 亚洲7777| 日韩电影免费看| 欧美精品一级二级| a级大片在线观看| 欧美精品导航| 国产日韩欧美在线视频观看| 天堂在线一二区| 亚洲免费在线观看视频| 日本免费观看网站| 久久精品国产亚洲blacked| 日韩综合中文字幕| 国产伦精品一区二区三区视频我| 日本亚洲最大的色成网站www| 国产精品欧美激情| 国产免费不卡av| 国产欧美一二三区| 国产成人无码精品久久久性色| 都市激情亚洲一区| 欧美成人一区二区三区在线观看 | 国产精品玖玖玖| 国产亚洲一本大道中文在线| 久久久久久久中文| 91亚洲精品视频在线观看| 日韩日本欧美亚洲| 亚洲天堂视频在线| 国产喷白浆一区二区三区| 亚洲一区二区三区在线观看视频| 精品美女在线观看视频在线观看| 亚洲一区二区三区四区中文字幕| aa在线免费观看| 嫩草国产精品入口| 亚洲视频在线观看| 丁香激情五月少妇| 亚洲欧美日本日韩| 欧美精品国产精品久久久| 欧美大胆a人体大胆做受| 日韩精品一区二区三区中文不卡| a毛片毛片av永久免费| 国产精品久久久久久久免费观看| 欧美激情图片区| 国产免费www| 久久婷婷国产综合国色天香| 精品人妻一区二区三区四区在线 | 亚洲一区欧美二区| 好看的日韩精品| 国产激情视频在线看| 欧美精三区欧美精三区 | 9l国产精品久久久久麻豆| 国产性生活免费视频| 亚洲成人五区| 91黑丝在线观看| 免费黄网站在线观看| 色婷婷香蕉在线一区二区| 女人又爽又黄免费女仆| 久久国产精品久久w女人spa| 99se婷婷在线视频观看| 欧洲精品二区| 亚洲激情在线观看视频免费| 中文字幕五月天| 国产成人午夜精品5599 | 欧美又黄又嫩大片a级| 天天揉久久久久亚洲精品| 日韩av片免费在线观看| 免费av一级片| 色综合久久久久综合体| 在线观看免费小视频| 紧缚奴在线一区二区三区| 国产午夜精品视频一区二区三区| 日韩美女在线| 九九九久久久久久| 国产三级小视频| 亚洲高清免费观看高清完整版在线观看 | 亚洲精品国产精品国自产网站| 99伊人成综合| 亚洲mv在线看| 亚洲开心激情| 国产精品99久久久久久久久| 久久77777| 欧美高清精品3d| 国产一级二级三级| 久久午夜老司机| 北条麻妃av高潮尖叫在线观看| 日韩超碰人人爽人人做人人添| 欧美激情在线一区| 精品成人一区二区三区免费视频| 黑人巨大精品欧美一区二区一视频 | 亚洲国产第一页| 成人一级免费视频| 一区二区日韩av| 欧美人与性囗牲恔配| 国产精品亚洲一区二区三区妖精 | 欧美精品久久天天躁| 精品国产成人亚洲午夜福利| 国产在线视频不卡二| 国产精品后入内射日本在线观看| 秋霞综合在线视频| 国产综合香蕉五月婷在线| www成人免费观看| 精品国产依人香蕉在线精品| 色视频在线观看免费| 精品久久久国产| 国内精品卡一卡二卡三| 成人激情校园春色| 不用播放器的免费av| 免费国产自线拍一欧美视频| 国产午夜精品视频一区二区三区| 国产福利一区二区精品秒拍| 国产精品高潮呻吟视频| 91超碰在线| 美女精品久久久| av女优在线| 亚洲奶大毛多的老太婆| 中文字幕第99页| 精品福利一区二区| 国产亚洲精品码| 亚洲精品视频在线看| 91禁男男在线观看| 国产日韩欧美高清| 亚洲男人在线天堂| 精品一区二区在线播放| 欧美日韩一区二区在线免费观看| 日韩av免费大片| 久久久婷婷一区二区三区不卡| 精品国产欧美日韩一区二区三区| 久久人体大胆视频| 888av在线| 一区二区三区日韩在线| 你懂的视频在线观看| 日韩电影视频免费| 欧美性受xxxx狂喷水| 日韩精品在线网站| 久久国产乱子伦精品| 色综合天天天天做夜夜夜夜做| 熟女少妇a性色生活片毛片| 国产视频一区二区在线| 人人人妻人人澡人人爽欧美一区| 国产剧情av麻豆香蕉精品| 国产福利在线免费| 久久成人麻豆午夜电影| 亚洲va在线va天堂va偷拍| 一本一本久久| 每日在线更新av| 久久国产88| 一区二区三区 欧美| 免费在线观看一区二区三区| 天天爱天天操天天干| 免费成人在线观看视频| 欧美女同在线观看| 久久精品久久综合| 一二三av在线| 国产成人福利片| 亚洲天堂网2018| 国内精品伊人久久久久av影院 | 三妻四妾的电影电视剧在线观看| 日韩中文字幕在线视频| 97超碰在线公开在线看免费| 欧美国产精品va在线观看| 在线观看免费黄色| 久久成人人人人精品欧| 草草影院在线| 国产v综合ⅴ日韩v欧美大片| 成人精品国产| 秋霞成人午夜鲁丝一区二区三区| 草莓福利社区在线| 欧美极品在线播放| 自拍偷拍亚洲视频| 国产精品午夜国产小视频| 日本成人手机在线| 国产在线精品一区| 欧洲激情综合| www.国产二区| 久久久噜噜噜久久狠狠50岁| 久久久久久蜜桃一区二区| 国产99久久久国产精品潘金网站| www.桃色.com| av欧美精品.com| 五月天免费网站| 午夜亚洲福利老司机| 精品国产www| 欧美中文字幕一区| 国产激情视频在线播放| 日韩精品极品在线观看| 污视频在线免费观看| 亚洲黄页视频免费观看| 丝袜美腿美女被狂躁在线观看| 有码中文亚洲精品| av毛片在线看| 国产成人啪精品视频免费网| 成人精品视频在线观看| 久久免费一区| 欧美不卡在线| 自拍偷拍一区二区三区四区| 蜜臀av在线播放一区二区三区| 国产精品天天av精麻传媒| 日韩va欧美va亚洲va久久| 绯色av蜜臀vs少妇| 国产日韩欧美高清在线| 天天爽天天爽天天爽| 中文字幕亚洲精品在线观看| 精品国产视频在线观看| 亚洲国产毛片aaaaa无费看| 午夜视频网站在线观看| 亚洲的天堂在线中文字幕| 男人资源在线播放| 日av在线播放中文不卡| www.成人在线视频| 精品免费二区三区三区高中清不卡| 国产精品久久久久av蜜臀| 亚洲精品免费av| 欧美综合一区| 国产成人无码一二三区视频| 日韩激情中文字幕| 漂亮人妻被黑人久久精品| 亚洲男女毛片无遮挡| 一级特黄aaa大片| 日韩麻豆第一页| 四虎影院观看视频在线观看| 国产精品视频午夜| 国产不卡一区| aaa毛片在线观看| 91在线免费视频观看| 麻豆91精品91久久久| 欧美一区中文字幕| 亚洲人妻一区二区三区| 欧美激情精品久久久| 国产亚洲观看| 吴梦梦av在线| 夜久久久久久| 特黄视频免费观看| 国产精品私房写真福利视频| 黄色片视频免费| 精品亚洲一区二区三区在线观看 | 免费观看成人网| 91色综合久久久久婷婷| www日韩精品| 亚洲国产天堂久久综合| av伦理在线| 精品国产免费人成电影在线观...| 欧洲毛片在线视频免费观看| 性生交免费视频| 国产日韩欧美在线一区| 探花国产精品一区二区| 亚洲人成网站色ww在线| 日韩pacopacomama| 色一情一乱一伦一区二区三区 | 国产精品伦一区二区三级视频| 国产精品成人aaaa在线| 欧美mv日韩mv国产网站app| 欧美1234区| 精品久久久久久综合日本| 午夜在线一区| 国产不卡在线观看视频| 欧美酷刑日本凌虐凌虐| www在线免费观看视频| 国产精品99久久久久久白浆小说| 97久久超碰| 久久成人免费观看| 久久久综合九色合综国产精品| 精品少妇久久久| 欧美高清视频一二三区| 日韩特级毛片| 久久艳妇乳肉豪妇荡乳av| 日韩激情一区二区| 国产大片免费看| 欧美日本一区二区三区四区 | 国产亚洲美州欧州综合国| 中文字幕在线观看精品| 久久亚洲私人国产精品va| 成人免费直播在线| 成人小视频在线看| 最好看的中文字幕久久| 亚洲天堂久久久久| 欧美激情第99页| 免费看成人哺乳视频网站| 国产中文字幕二区| 中文字幕av资源一区| 99视频免费看| 欧美中文字幕视频| 亚州国产精品| 992kp免费看片| 亚洲图片欧美激情| 秋霞av鲁丝片一区二区| 国产精品精品一区二区三区午夜版| 精品国产一区二区三区久久久蜜臀| 午夜肉伦伦影院| 久久久91精品国产一区二区三区| 免费看毛片网站| 欧美成人午夜视频| 免费看一区二区三区| 国产一区二区三区精彩视频| 日韩美女啊v在线免费观看| 五月激情婷婷综合| 亚洲综合中文字幕在线| 国产一区久久| 91免费在线看片| 日韩av有码在线|