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

云原生下,如何實現高可用的MySQL?

開發 開發工具 云原生
MySQL 作為當前比較受歡迎的關系型數據庫(RDS),在云原生浪潮中仍然面臨諸多挑戰。如何用 Cloud Native 的設計原則,通過沙箱隔離、計算和數據的完全分離,實現低成本、可擴展、高可用的 Cloud RDS 方案?

MySQL 作為當前比較受歡迎的關系型數據庫(RDS),在云原生浪潮中仍然面臨諸多挑戰。如何用 Cloud Native 的設計原則,通過沙箱隔離、計算和數據的完全分離,實現低成本、可擴展、高可用的 Cloud RDS 方案?阿里云數據庫團隊的姜杉彪(孟宇)同學將介紹一種云原生分布式 MySQL 高可用數據庫方案,分享其中的關鍵技術,并對云原生場景下傳統數據庫的發展趨勢做簡要分析。

云時代的到來,無論傳統行業還是互聯網行業,業務越來越多樣,迭代速度越來越快,使得整體數據量大幅提升。

近兩年,隨著 Docker + Kubernetes 等技術的興起,大家都將業務往容器化遷移,團隊的技術也在往云原生方向演進。早期的 Kubernetes 著重解決 Stateless 和 Share Nothing 的應用部署場景,然而在如今愈發復雜的應用場景中經常會遇到有狀態保存的需求。

從 Kubernetes 1.9 開始,針對有狀態服務的資源類型 Statefulset 進入 GA,而且 Kubernetes 1.14 版本 Local Volume、CSI 等存儲功能也進入 GA 階段,Kubernetes 對有狀態服務的支持得到全面加強,這使得很多數據存儲型基礎中間件往 Kubernetes 遷移成為可能。

MySQL 作為當前比較受歡迎的開源關系型數據庫(RDS),集可靠、易用、功能豐富、適用范圍廣等特點于一身,使其成為關系型數據庫的主要選擇。雖然備受關注,但 MySQL 在云原生浪潮中卻也面臨著諸多挑戰。如何用 Cloud Native 的設計原則,通過沙箱隔離、計算和數據的完全分離,實現低成本、可擴展、高可用的 Cloud RDS 方案?

本文介紹一種云原生分布式 MySQL 高可用數據庫方案(下稱“SlightShift MySQL 高可用方案”),并對云原生場景下傳統數據庫的發展趨勢做簡要分析。

??

??

 

一 需求&挑戰

在考慮云原生場景下的 MySQL 高可用架構時,主要有如下幾個方面的挑戰:

  • 故障轉移:主庫發生宕機時,集群能夠自動選主并快速轉移故障,且轉移前后數據一致。
  • 敏捷彈性伸縮:基于副本的彈性橫向擴展,擴縮容過程不中斷業務訪問。
  • 數據安全性:數據定時冷備/實時熱備,以便故障恢復和數據遷移。
  • 數據強一致性:用作備份/只讀副本的Slave節點數據應該和主節點數據保持實時或半實時一致。

二 目標&關鍵考慮點

SlightShift MySQL 高可用方案要達到的目標:

  • SLA保障:一年內可接受最高 52.56 分鐘服務不可用(99.99%)。
  • 故障轉移:主庫出現異常時主從切換耗時 < 2min。
  • 彈性擴展:從庫理論可無限擴展,擴展從庫耗時 < 2min。
  • 冷備恢復:MySQL集群出現不可恢復性問題時,從冷備恢復耗時 < 10min。

除以上目標外,在技術架構設計時還需重點考慮以下關鍵點:

  • 高可用
  • 應用接入成本
  • 資源占用量
  • 可擴展性
  • 可維護性

三 架構設計

該 MySQL 高可用方案使用一主多從的復制結構,主從數據復制采用半同步復制,保證了數據一致性和讀寫效率,理論上從庫可無限擴展。

??

??

 

在數據引擎上層添加了仲裁器,使用 Raft 分布式一致性算法實現自動化選主和故障切換。

路由層使用 ProxySQL 作為 SQL 請求代理,能夠實現讀寫分離、負載均衡和動態配置探測。

監控告警方面,采用 Prometheus-Operator 方案實現整個 MySQL 高可用系統的資源監控告警。

運維管控方面,引入 Kubernetes Operator 的管控模型來實現 DB-Operator,能夠做到聲明式配置、集群狀態管理以及On Demand(按需創建)。另外,可以在 MySQL 控制臺上進行 MySQL 的基礎運維,例如:數據庫管理、表管理、SQL查詢,索引變更、配置變更、數據備份&恢復等。

四 關鍵技術

狀態持久化

容器技術誕生后,大家很快發現用它來封裝“無狀態應用”(Stateless Application)非常好用。但如果想要用容器運行“有狀態應用”,其困難程度就會直線上升。

對于 MySQL 等存儲型分布式應用,它的多個實例之間往往有依賴關系,比如:主從關系、主備關系。各個實例往往都會在本地磁盤上保存一份數據,當實例被殺掉,即便重建出來,實例與數據之間的對應關系也已經丟失,從而導致應用失敗。

這種實例之間有不對等關系,以及實例對外部數據有依賴關系的應用,被稱為“有狀態應用”(Stateful Application)。

Kubernetes 集群中使用節點本地存儲資源的方式有 emptyDir、hostPath、Local PV 等幾種方式。其中,emptyDir 無法持久化數據,hostPath 方式需要手動管理卷的生命周期,運維壓力大。

因此在MySQL場景中,出于性能和運維成本考慮需要使用本地存儲,Local PV 是目前為止唯一的選擇。

 

 


 

??

??

 

Local PV 利用機器上的磁盤來存放業務需要持久化的數據,和遠端存儲類似,Pod 的數據和生命周期是互相獨立的,即使業務 Pod 被刪除,數據也不會丟失。

同時,和遠端存儲相比,本地存儲可以避免網絡 IO 開銷,擁有更高的讀寫性能,所以分布式文件系統和分布式數據庫這類對 IO 要求很高的應用非常適合本地存儲。

不同于其他類型的存儲,Local PV 本地存儲強依賴于節點。換言之,在調度 Pod 的時候還要考慮到這些 Local PV 對容量和拓撲域的要求。

MySQL 在使用 Local PV 時,主要用到兩個特性:延遲綁定機制和 volume topology-aware scheduling。延遲綁定機制可以讓 PVC 的綁定推遲到有 MySQL Pod 使用它并且完成調度后,而 volume topology-aware scheduling 則可以讓 Kubernetes 的調度器知道卷的拓撲約束,也就是這個存儲卷只能在特定的區域或節點上使用(訪問),讓調度器在調度 Pod 的時候必須考慮這一限制條件。

另外,MySQL 使用的 Local PV 還需通過 nodeAffinity 將 Pod 調度到正確的 Node 上。

下面展示了 MySQL 使用 Local PV 的簡單配置示例:

--- 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
creationTimestamp: null
name: local-storage
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Delete
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: "yes"
creationTimestamp: null
labels:
app: slightshift-mysql
mysql-node: "true"
name: data-slightshift-mysql-0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: local-volume-storage
volumeName: mysqlha-local-pv-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
helm.sh/hook: pre-install,pre-upgrade
helm.sh/resource-policy: keep
volume.alpha.kubernetes.io/node-affinity: '{ "requiredDuringSchedulingIgnoredDuringExecution":
{ "nodeSelectorTerms": [ { "matchExpressions": [ { "key": "kubernetes.io/hostname",
"operator": "In", "values": ["yz2-worker004"] } ]} ]} }'
labels:
pv-label: slightshift-mysql-data-pv
type: local
name: slightshift-mysql-data-pv-0
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 500Gi
local:
path: /var/lib/ali/mysql
persistentVolumeReclaimPolicy: Retain
storageClassName: pxc-mysql-data

以上是 Local PV 的基礎用法,而 MySQL 還需考慮節點的彈性伸縮,這就要求底層存儲也能夠隨著 MySQL 實例伸縮來動態配置。這里提出兩種解決方案:

在 Kubernetes 集群中引入 LVM Manager,以 DaemonSet 形式運行,負責管理每個節點上的磁盤,匯報節點磁盤容量和剩余容量、動態創建 PV 等;再引入 local storage scheduler 調度模塊,負責為使用本地存儲的 Pod 選擇合適(有足夠容量)的節點。

使用開源方案 OpenEBS:iSCSI 提供底層存儲功能,OpenEBS 管理 iSCSI(目前只支持PV的 ReadWriteOnce 訪問模式)。

自動化選主

SlightShift MySQL 高可用架構基于 Raft 強一致協議實現分布式 MySQL 自動化選主。

??

??

 

Raft 使用心跳來觸發選主,當 MySQL Server 啟動時狀態是 follower。當 server 從 leader 或者 candidate 接收到合法的RPC時,它會保持在 follower 狀態,leader 會發送周期性的心跳來表明自己是 leader。

當一個 follower 在 election timeout 時間內沒有接收到通信,那么它會開始選主。

選主的步驟如下:

  • 增加 current term。
  • 轉成 candidate 狀態。
  • 選自己為主,然后把選主RPC并行地發送給其他的 server。
  • candidate 狀態會繼續保持,直到下述三種情況出現。

candidate 會在下述三種情況下退出:

  • server 本身成為 leader。
  • 其他的 server 選為 leader。
  • 一段時間后,沒有 server 成為 leader。

故障轉移

在正常運行的主從復制環境中,故障轉移(Failover)模塊會監聽集群狀態,當 Master 發生故障時會自動觸發故障轉移。

故障轉移的第一步是自動化選主,自動化選主的邏輯在上面已介紹過;其次是數據一致性保障,需最大化保證 Dead Master的 數據被同步到 New Master。

??

??

 

在將 Master 切換到 New Master 之前,部分 slave 可能還未接收到最新的 relay log events,故障轉移模塊也會從最新的 slave 自動識別差異的 relay log events,并 apply 差異的 event 到其他 slaves,以此保證所有 slave 的數據都是一致的。

關于代理層,ProxySQL 會實時探測 MySQL 實例的可讀寫配置,當 MySQL 實例的可讀寫配置發生變化時,ProxySQL 會自動調整MySQL 實例的讀寫分組配置,最終保證在 Failover 之后讀寫分離能正確運行。

??

??

 

SlightShift MySQL 自動故障轉移的步驟如下:

  • HA-Manager 偵測到 Master Server 連接異常,啟動 Failover。
  • 嘗試關閉 Dead Master 以避免腦裂(此步驟可選)。
  • 獲取最新數據 slave 的 end_log_pos,并從 Dead Master 同步 bin-log,最終保證所有 slave 的 end_log_pos 一致。
  • 使用 raft 分布式算法選舉 New Master。
  • 將 Master 切換到 New Master。
  • 回調 ProxySQL 代碼服務,剔除 Dead Master 配置。
  • ProxySQL 網關檢測到各個 MySQL 實例的可讀寫配置變化,調整讀寫分離配置。
  • 通知切換結果(郵件、釘釘群機器人)。

SlightShift MySQL 能做到秒級故障轉移,5-10秒監測到主機故障,5-10秒 apply 差異 relay logs,然后注冊到新的 master,通常10-30秒即可 total downtime。另外,可在配置文件里配置各個 slave 當選為 New Master 的優先級,這在多機房部署 MySQL 場景下很實用。

故障自動恢復

宕機的 Master 節點恢復時:

  • 如果恢復的節點重新創建 Mysql Pod 并加入集群,Sentinel 會配置新 Pod 為 Slave,通過獲取當前 Master Mysql 的 log file 和 Position 來實現新加入 Slave 的數據同步。
  • 如果恢復的節點中 Mysql Pod 依然存在且可用,Sentinel 此時會發現2個 Label 為 master 的 Pod。Sentinel 會依然使用宕機期間選擇的新 Master,且把恢復的 Master 強制設置為Slave,并開啟只讀模式。

宕機的 Slave 節點恢復時:

  • 如果恢復節點重新創建 Mysql Pod 并加入集群,Sentinel會配置新 Pod 為Slave,通過獲取當前 Master Mysql 的 log file 和 Position 來實現新加入 Slave 的數據同步。
  • 如果恢復的節點中 Mysql Pod 依然存在且可用,調度器不會執行操作,proxysql-service 會監測到新加入的 Slave,并將其加入到 endpoints 列表。

狀態管理

狀態管理并非新鮮話題,它為中心化系統分發一致的狀態,確保分布式系統總是朝預期的狀態收斂,是中心化系統的基石之一 。

MySQL 服務由一個 Master 節點和多個從 Master 上異步復制數據的 Slave 節點組成,即一主多從復制模型。其中,Master 節點可用來處理用戶的讀寫請求,Slave 節點只能用來處理用戶的讀請求。

為了部署這樣的有狀態服務,除了 StatefulSet 之外,還需要使用許多其它類型的 k8s 資源對象,包括 ConfigMap、Headless Service、ClusterIP Service 等。正是它們間的相互配合,才能讓 MySQL 這樣的有狀態服務有條件運行在 k8s 之上。

在 MySQL 集群中,狀態轉移最常發生在 Master 發生故障,集群進行故障轉移期間。當 Master 發生故障宕機時會自動觸發選主邏輯,選主結束后會進行故障切換,直至 New Master 正常提供讀寫服務,故障轉移過程是需要時間的,在故障轉移過程中 MySQL 服務會處于不可寫狀態。

在故障轉移期間,Dead Master 實例會被 k8s 集群自動拉起,Dead Master 被拉起后會認為自己是合法的 Master,這樣會造成集群中同時存在兩個 Master,寫請求很可能會被隨機分配到兩個 Master 節點,從而造成腦裂問題。

為了解決這種場景下的腦裂問題,我們引入了 InitContainer 機制,再配合 Sentinel 就能很好的解決該問題。

InitContainer,顧名思義,在容器啟動的時候會先啟動一個或多個容器去完成一些前置性工作,如果有多個,Init Container將按照指定的順序依次執行,只有所有的 InitContainer 執行完后主容器才會啟動。

我們在每一個 MySQL 的實例中都加入了 InitContainer,在 Dead Master 被 k8s 自動拉起之后,InitContainer 會自動檢測集群中是否處于 Failover 階段,如果處于Failover 階段會進入 Sleep 輪詢狀態,直至 Failover 結束。

??

??

 

當 Failover 結束后,Sentinel 檢測到 Dead Master 被拉起,會自動將 Dead Master 設置為 New Master 的 Slave 節點,以此來完成一次完整的 Failover 過程,并避免集群出現腦裂問題。

聲明式運維

我們在使用 k8s 時,一般會通過 k8s 的 Resource 滿足應用管理的需求:

  • 通過 Deployment、StatefulSet 等 workload 部署服務。
  • 通過 Service、Ingress 管理對服務的訪問。
  • 通過 ConfigMap、Secrets 管理服務的配置。
  • etc.

上述 Resource 表征 User 的期望,kube-controller-mananger 中的 Controller 會監聽 Resource Events 并執行相應的動作,來實現 User 的期望。

這種操作方式給應用管理帶來了很大的便利,User 可以通過聲明式的方式管理應用,不用再關心如何使用傳統的 HTTP API、RPC 調用等。

Controller 會通過各種機制來確保實現 User 的期望,如通過不斷檢測 Object 的狀態來驅使 Object 當前狀態符合用戶期望,這種運維模式我們稱之為聲明式運維。

但如果僅僅使用 k8s 提供的基礎類型,對于 MySQL 這類復雜應用來說運維成本依然很高。如果能將聲明式運維的模式進行擴展延伸到 MySQL 應用,會極大程度降低 MySQL 應用的部署和運維成本。

??

??

 

為了解決這個問題,slightshift-mysql-operator 應運而生。

slightshift-mysql-operator 本質上是 Resource + Controller:

  • Resource
  • 自定義資源(CRD, Custom Resource Definitions),為 User 提供一種聲明式的方式描述對服務的期望。
  • Controller

實現 Resource 中 User 的期望。

  • slightshift-mysql-operator 通過組合 k8s 中已有的概念,極大降低了部署和運維 MySQL 的成本:

User 通過類似使用 Deployment 的方式描述對 MySQL 的需求

在 k8s 上部署 MySQL 應用的姿勢與 k8s 官方資源的操作方式相同。

由 slightshift-mysql-operator 的 Controller 監聽、處理事件請求

  • 監聽 Resource Events。
  • 針對不同類型 (ADD/UPDATE/DELETE) 的 Events 執行相應的動作。
  • 不斷檢測 Object 的狀態來執行動作,驅使服務的狀態符合 User 期望。

??

??

 

slightshift-mysql-operator 的設計理念:

  • 聲明式配置:提升可讀性和運維效率,降低運維成本。
  • 最終一致性:動態調整集群狀態實現最終一致性。

??

??

 

slightshift-mysql-operator 極大程度上降低了在 Kubernetes 集群中使用和管理 MySQL 應用的成本,User 可以通過聲明式的 CR 創建應用,Vendor 可將管理應用的專業知識封裝,對 User 透明。

slightshift-mysql-operator 在架構層面上使用分層設計,簡化了架構復雜度,同時盡可能降低了 MySQL 多個集群實例間相互干擾,實現各個實例的自治。

部署結構如下圖所示:

??

??

 

備份與恢復

為保證數據安全性,還需對數據進行定期備份,保證用戶數據在極端情況下(集群崩潰)時數據可恢復。

通過 Cronjob 對 Mysql 數據進行備份:

  • 在 Kubernetes 集群中創建 Cronjob,Cronjob 會定期進行數據備份。
  • 備份數據會被打上時間標簽,并上傳到對象存儲服務器(Ceph、Minio)。

通過創建 Job 對 Mysql 進行數據恢復:

  • 在集群中創建恢復 Job,Job 根據 SNAP_SHOT 到存儲服務器(OSS、Minio)上獲取備份數據。
  • Job 把數據恢復到 Mysql Master 實例,同時 Slave 會完成數據同步。

五 技術演進

唯有進化,才能站到食物鏈頂端。

根據 Gartner 報告預測,數據庫云平臺市場份額將會在下一個五年中翻倍,而70%的用戶將開始使用 dbPaaS 數據庫云平臺。因此,為了滿足各類應用程序對數據庫云平臺的需求,同時為了減少私有云部署中對大量不同類型數據存儲產品的運維復雜性,數據庫的架構演進將是未來十年數據庫轉型的主要方向之一。

云原生數據庫是未來數據庫發展的一個重要方向,云原生數據庫架構隨著云化要求也需要進行相應的迭代,未來在云原生數據庫架構的演進還會隨著需求的變化而持續發展。

??

??

 

六 未來展望

中間件作為構筑上層業務系統的基石和核心技術,具有高可靠性、高擴展性、強專業性等特點。

關于未來,由于中間件的這些特點,未來云原生中間件會向著規范化、構建化、松耦合和平臺化的方向發展。平臺化能夠更快速響應業務變化,為業務的橫向發展提供集中的技術解決方案。

??

??

 

從終態來看,我們想做一個企業級云原生中間件 PaaS 平臺,涵蓋基礎中間件的部署、配置、升級、伸縮、故障處理等自動化能力。

首先談談我對中間件平臺的理解,中間件平臺應該是一系列中間件解決方案集合的能力開放式技術中臺,它形成了完整、久經考驗、開放和組件化的解決方案,旨在為復雜多變的上層業務領域提供穩定可靠的計算、存儲服務。

任何一個平臺型產品的發展歷程,都不是一開始就做平臺的,而是先有業務需求,為了解決實際業務需求而積累了某些領域的知識,進而成為了這些領域的專家,最終再向平臺轉變。換句話說,平臺是一個持續積累的過程,也是一個水到渠成的過程。

??

??

 

在企業信息平臺構建過程中,有效、合理、規范化的利用中間件平臺來快速構建上層業務系統,可以為企業及時響應需求變化提供有力保障,形成企業的集約化管理,進而提升企業核心力量獲得可持續競爭的優勢。

【本文為51CTO專欄作者“阿里巴巴官方技術”原創稿件,轉載請聯系原作者】

??戳這里,看該作者更多好文??

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2021-05-12 14:11:09

云計算云原生

2022-06-02 12:56:25

容器網絡云原生

2021-09-16 10:57:20

云原生

2014-07-11 09:43:34

MySQL集群

2022-02-27 14:37:53

MySQL主備數據

2011-11-30 22:05:03

ibmdw云計算

2022-05-21 23:38:01

云原生IT企業

2023-08-25 15:11:00

2025-09-01 08:49:24

2018-06-21 08:23:35

云存儲高可用應用

2023-02-27 08:37:52

2014-08-28 09:43:38

FabricGTIDMysql

2021-08-26 00:23:14

分布式存儲高可用

2013-07-02 15:23:08

MySQL MHA故障轉移

2023-01-18 07:58:54

云原生數據采集

2021-12-29 12:52:04

云原生架構

2017-03-16 10:02:50

2025-09-17 07:23:17

2011-11-28 21:01:03

NginxKeepalived高可用

2025-07-31 04:00:00

點贊
收藏

51CTO技術棧公眾號

亚洲精品久久7777777| 亚洲精品视频在线看| 日韩美女视频免费看| 麻豆一区在线观看| 永久免费精品视频| 一本大道久久a久久精二百 | 秋霞综合在线视频| 91黄色免费看| av无码久久久久久不卡网站| 麻豆影视在线| 久久精品二区亚洲w码| 色综合天天综合网国产成人网| 四虎影成人精品a片| 国产精品日本一区二区不卡视频| 午夜精品久久久久久不卡8050| 日韩偷拍一区二区| 国产 欧美 自拍| 免费看欧美女人艹b| 性欧美激情精品| 亚洲天堂一级片| 国产亚洲一区二区三区不卡| 日韩欧美高清一区| 91精品国产九九九久久久亚洲| 久久久久无码精品国产sm果冻| 4438全国亚洲精品观看视频| 欧美欧美欧美欧美首页| 热久久精品国产| av福利在线导航| 亚洲精品一二三区| 亚洲午夜精品一区二区三区| 男生女生差差差的视频在线观看| 成人永久免费视频| 成人免费xxxxx在线观看| 超碰在线观看91| 亚洲一级高清| 欧美日本高清视频| 午夜激情福利网| 久久密一区二区三区| 亚洲女人被黑人巨大进入| 国产ts在线观看| 国产精品一区二区三区av | 在线黄色免费看| 亚洲成人短视频| 黑人巨大精品欧美一区二区一视频 | 日韩人妻无码精品综合区| 丁香一区二区| 精品国产电影一区二区| 不卡的一区二区| 日韩在线观看一区二区三区| 欧美精品在欧美一区二区少妇| 在线免费视频a| 亚洲电影有码| 欧美日韩精品是欧美日韩精品| 国产激情在线观看视频| 欧美电影免费观看| 在线视频观看一区| av网站在线不卡| 日韩三级一区| 日韩一区二区三区视频| 欧美高清精品一区二区| 91蝌蚪精品视频| 亚洲精品美女在线| 香蕉视频黄色在线观看| 国产成人三级| 亚洲日本欧美日韩高观看| 色欲狠狠躁天天躁无码中文字幕| 精品美女久久久| 神马久久久久久| 蜜桃久久精品成人无码av| 欧美日韩中字| 久久精品国产成人精品| 免费在线观看av网址| 亚洲精品激情| 国产精品黄色影片导航在线观看| 中文字幕第315页| 国产乱码精品一品二品| 国产日韩欧美一区二区三区四区 | 99re这里只有精品6| 国内视频一区二区| 韩国精品视频| 亚洲日本在线视频观看| 无码专区aaaaaa免费视频| a在线视频v视频| 欧美综合视频在线观看| 色婷婷一区二区三区在线观看| 中文在线综合| 国产偷国产偷亚洲清高网站| 999久久久国产| 午夜精品久久| 国产aaa精品| av中文字幕免费在线观看| 99精品偷自拍| 亚洲一区二区三区欧美| 国产高清在线a视频大全| 色综合咪咪久久| 日本高清免费在线视频| 天天躁日日躁狠狠躁欧美| 精品国产一区久久久| 日韩欧美一区二区一幕| 免费成人av资源网| 久久er99热精品一区二区三区| 9色在线视频| 黄色成人在线播放| 欧美三级理论片| 国产色噜噜噜91在线精品| 最新中文字幕亚洲| 中文字幕av免费在线观看| 老司机精品视频网站| 都市激情久久久久久久久久久| 韩国三级av在线免费观看| 亚洲一级二级在线| 天堂av8在线| 伊人成综合网yiren22| 免费不卡在线观看av| 九九热最新视频| 成人高清av在线| 亚洲欧洲一区二区福利| 婷婷电影在线观看| 日韩一级黄色片| 欧美一区二区三区粗大| 在线视频精品| 国产高清精品一区二区| 91国内在线| 欧美日韩亚洲不卡| 国产av自拍一区| 亚洲一区观看| 国产精品精品软件视频| av免费在线免费| 欧美精选午夜久久久乱码6080| 永久免费毛片在线观看| 亚洲综合欧美| 国产一区高清视频| 91超碰在线免费| 精品国产一区二区精华| 青娱乐91视频| 国产91丝袜在线播放九色| 夜夜爽99久久国产综合精品女不卡 | 麻豆视频在线免费观看| 色综合色综合色综合色综合色综合 | 国产丝袜一区| 韩国三级日本三级少妇99| 国产夫妻性生活视频| 亚洲欧美日韩精品久久久久| 国产三级三级三级看三级| 欧美人与牛zoz0性行为| 日韩av黄色在线观看| 深夜福利视频一区| 欧美性极品少妇精品网站| xxxx黄色片| 国产精品一区亚洲| 欧美日本韩国国产| 亚洲成人不卡| 中文在线资源观看视频网站免费不卡 | 国产白嫩美女无套久久| 国产亚洲精品v| 欧美精品尤物在线| 欧美日韩精品免费观看视欧美高清免费大片| 日韩成人av一区| 久久亚洲精品石原莉奈| 欧美高清在线视频| 日韩精品视频一二三| 婷婷综合五月| 亚洲一区二区三区在线免费观看| 在线中文字幕视频观看| 欧美大片在线观看一区二区| 精品在线免费观看视频| 99久久er热在这里只有精品15| 久久久999视频| 欧美日韩在线网站| 99se婷婷在线视频观看| av免费不卡国产观看| 亚洲欧美日韩天堂| 亚洲视频一区在线播放| 一级精品视频在线观看宜春院| 丰满岳乱妇一区二区| 天堂午夜影视日韩欧美一区二区| 亚洲国产欧美日韩| 57pao国产一区二区| 97热精品视频官网| 在线免费看黄| 日韩欧美中文一区| 亚洲va在线观看| 中文字幕人成不卡一区| 天天躁日日躁狠狠躁av麻豆男男| 久久精品天堂| 懂色av粉嫩av蜜臀av| 精品丝袜久久| 国产精品自拍偷拍| 成人在线免费观看黄色| 在线观看免费高清视频97| 精品人妻一区二区三区日产乱码| 天涯成人国产亚洲精品一区av| 久久精品视频18| 国产91丝袜在线观看| 激情五月婷婷久久| 亚洲激情不卡| 一区不卡字幕| 亚洲福利网站| 国产精品sss| 国内欧美日韩| 欧美中文字幕在线视频| 羞羞网站在线看| 国产一区二区三区在线观看视频| 99精品人妻无码专区在线视频区| 色哟哟国产精品免费观看| 欧美成人精品激情在线视频| 国产日本欧美一区二区| 欧美肉大捧一进一出免费视频| 久久99精品国产麻豆婷婷洗澡| 青娱乐自拍偷拍| 综合天堂久久久久久久| 亚欧洲精品在线视频免费观看| 国产精品玖玖玖在线资源| 成人激情视频网| 天堂久久午夜av| 欧美洲成人男女午夜视频| 日本天码aⅴ片在线电影网站| 最好看的2019年中文视频| 污污网站免费在线观看| 日韩免费视频一区| 91久久精品无码一区二区| 色婷婷av一区二区三区gif| 国产性一乱一性一伧一色| 亚洲欧美色一区| 999精品久久久| 中文幕一区二区三区久久蜜桃| av无码一区二区三区| 国产成人aaa| 成人性生交视频免费观看| 青青草97国产精品免费观看 | 日韩美香港a一级毛片| 日韩av不卡电影| 亚洲欧洲美洲av| 97视频在线观看播放| 岛国毛片av在线| 久久人人爽人人| wwww在线观看免费视频| 色综合久久88色综合天天看泰| 老司机福利在线视频| 日韩亚洲精品视频| 看黄网站在线观看| 日韩中文理论片| 激情视频在线观看| 久久综合久久八八| 色操视频在线| 国内自拍欧美激情| 天堂电影一区| 日本精品性网站在线观看| 韩国成人动漫| 国产精品久久久久久久久久东京| 亚洲成人av观看| 国产精品丝袜久久久久久高清| а√天堂资源国产精品| 国产日韩精品电影| 国产一区二区视频在线看| julia一区二区中文久久94| 懂色av一区二区| 蜜桃视频在线观看成人| 精品国产一级毛片| 亚洲v国产v| 亚洲人成免费网站| 亚洲熟妇无码一区二区三区| 宅男噜噜噜66国产日韩在线观看| 色综合av综合无码综合网站| 日韩avvvv在线播放| 加勒比av中文字幕| 粉嫩av一区二区三区| 极品人妻一区二区三区| 日本一区二区三区视频视频| 精品无码一区二区三区蜜臀 | 少妇高潮 亚洲精品| 成人av黄色| 97国产在线观看| 影音成人av| 亚洲一区二区三区毛片| 天堂99x99es久久精品免费| 91免费观看视频在线| 免费在线黄网站| 国产免费成人| 午夜免费看视频| 粉嫩欧美一区二区三区高清影视| 日本黄色特级片| 国产精品美女久久久久aⅴ国产馆| 欧美日韩在线观看成人| 精品久久久久久中文字幕一区奶水 | 天天综合永久入口| 中文字幕一精品亚洲无线一区 | 日韩av成人在线| 美女久久精品| 欧美午夜精品理论片a级大开眼界| 99精品在线| 日韩在线综合网| 国内精品伊人久久久久av一坑 | 中文字幕在线观看不卡| 日韩福利片在线观看| 在线观看视频91| 免费观看黄一级视频| 最近2019好看的中文字幕免费| 国产理论在线| 亚洲永久免费观看| 精品视频免费在线观看| 特级黄色录像片| 蜜臀av在线播放一区二区三区| 东京热av一区| 中文字幕一区二区三中文字幕| 日本在线视频免费观看| 91精品国产欧美一区二区| 久久精品蜜桃| 97在线免费观看| 亚洲国产视频二区| 在线观看视频黄色| 人人超碰91尤物精品国产| 91玉足脚交白嫩脚丫| 亚洲欧美日韩中文字幕一区二区三区 | 极品尤物久久久av免费看| 777一区二区| 久久久www成人免费无遮挡大片| 18精品爽视频在线观看| 欧美日韩成人综合天天影院| 欧美视频综合| 午夜精品久久久久久久99黑人 | 一本久道久久综合狠狠爱亚洲精品| 在线综合亚洲| 中文字幕一区二区人妻电影丶| 亚洲精品中文在线| 国产美女明星三级做爰| 自拍偷拍亚洲欧美| 欧美影视资讯| 五月天亚洲综合| 日韩影院精彩在线| 少妇饥渴放荡91麻豆| 亚洲成av人片在线观看| 亚洲精品911| 欧美猛少妇色xxxxx| 在线播放成人| 男插女免费视频| 国产精品一区专区| 综合五月激情网| 欧美一级国产精品| 四虎影院观看视频在线观看 | 国产99对白在线播放| 久久精品一区中文字幕| 日本中文字幕视频一区| 一区二区不卡在线视频 午夜欧美不卡'| 日韩精品欧美精品| 永久免费av无码网站性色av| 在线亚洲欧美专区二区| 国产天堂在线| 国产精品日韩专区| 国产美女精品写真福利视频| 国产高清一区视频| 亚洲国产精品第一区二区| 免费黄色三级网站| 精品高清美女精品国产区| 欧美女子与性| 国产精品高潮呻吟久久av无限| 成人系列视频| 91欧美一区二区三区| 亚洲永久精品大片| 视频一区 中文字幕| 欧美做受高潮电影o| 青青一区二区三区| 伊人精品视频在线观看| 亚洲一区二区四区蜜桃| 视频一区二区三区在线看免费看| 欧美亚洲视频在线观看| 精品国产欧美日韩| 天堂网成人在线| 同产精品九九九| 蜜桃成人在线视频| 成人欧美一区二区三区在线湿哒哒 | 日本久久一区| 国产免费一区二区视频| 久久久久久久综合| 国产又粗又长又大视频| 欧美激情视频网站| 国产欧美日韩影院| 成年人性生活视频| 欧美日韩一区二区三区在线免费观看| 国产日韩精品在线看| 91在线观看免费高清完整版在线观看| 狠狠爱成人网| 国产成人福利在线| 日韩欧美国产一区二区三区 | 国产三级在线播放| 国精产品一区二区| 麻豆精品国产传媒mv男同 | 99综合视频| 精品视频第一页| 亚洲精品福利在线观看| 亚洲男人在线| 国产91在线免费| 一区二区三区在线播| 国产高清视频在线观看| 高清不卡一区二区三区| 蜜臀av性久久久久蜜臀av麻豆 | 欧美亚洲一区二区三区| 艳妇荡乳欲伦69影片| 亚洲黄色成人网| 亚洲色图综合|