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

知乎容器平臺演進及與大數據融合實踐

原創
開發 架構 開發工具
本文作者將結合知乎在生產環境集群中所遇到的問題,和大家交流容器使用方式和注意事項,以及在大數據處理和容器技術融合方面所做的嘗試探索。

【51CTO.com原創稿件】2018 年 5 月 18-19 日,由 51CTO 主辦的全球軟件與運維技術峰會在北京召開。

在“開源與容器技術”分論壇上,來自知乎的計算平臺負責人張阜興發表了題為“知乎容器平臺演進及與大數據融合實踐”的精彩演講。

本文將按照如下三個部分展開討論:

  • 知乎容器平臺的演進歷程
  • 容器平臺維護踩過的坑
  • 容器與大數據的融合實踐

知乎容器平臺的演進歷程

知乎容器平臺的演進歷程大致可以分成三個階段:

  • 2015 年 9 月,我們的容器平臺正式在生產環境中上線應用。
  • 到了 2016 年 5 月,我們已經將 90% 的業務遷移到了容器平臺之上。
  • 如今,除了業務容器之外,包括 HBase、Kafka 等多個基礎組件都已遷至容器平臺。

總的節點數達到了 2 千多個,而容器數則達到了 3 萬多個。可以說知乎基本已經 All in 容器平臺之上。

在容器平臺整體演進的過程中,我們總結了五個要點:

  • 從 Mesos 到 Kubernetes 的技術選型變化。
  • 從單集群到多集群混合云的架構調整。
  • 從滾動部署到部署與發布相分離的使用優化。
  • 在容器使用上,從無狀態到有狀態,引入持久化的存儲。
  • 在容器網絡上,從 NAT 轉換成 Underlay IP 模式。

從 Mesos 到 Kubernetes

早在 2015 年,我們就已經開始在生產環境中使用容器平臺了。由于那時 Kubernetes 剛被發布,且不成熟,因此我們當時選用的是 Mesos 技術方案。

Mesos 的優勢如下:

  • 非常穩定。
  • 在架構設計中,由于大部分狀態是由 Mesos 的 Slave 向 Master 去匯報,因此 Master 的負載較輕。
  • 單集群所能容納的容器規模較大(官方稱:單個集群可容納 5000 個節點)。

Mesos 的劣勢:由于是單獨開發一套 Framework,因此開發的成本較高。我們最開始采用的就是自研 Framework。

Kubernetes 的優勢如下:

  • 有強大的社區支持。
  • 功能較為完善,包含有 Pods、Deployment 等概念。
  • 由于功能完善,接入使用成本較低。

Kubernetes 的劣勢:由于它將所有的狀態都放入 Etcd 中進行存儲,因此單集群的規模沒有 Mesos 那么大。官方稱:在將 Etcd 升級到 V3 版本之后,才能達到 5000 個節點。

在運行之初,我們使用的是一些簡單的無狀態容器。后來隨著 Proxy、Kafka 等基礎組件的引入,針對每一套組件都需要開發一套 Framework 的接入成本太高。

因此在后續的實踐過程中,我們直接采用了 Kubernetes,通過資源調度層,統一進行資源的調度和管理。

從單集群到混合云

在生產環境中,我們有著如下實際需求:

  • 對于 Mesos 或 Kubernetes 的任意參數變更,都需要在灰度集群上去先進行驗證。只有驗證通過之后,才能大規模地部署到生產環境之中。

因此,我們需要有一個線上與線下相似的環境,它們的區別僅在于測試的集群規模略小于實際運行的集群。

  • 對于 Kubernetes 的單個集群來說,容量是有限的,所以需要通過實施多集群方案來對容量進行水平擴展。
  • 可容忍單集群級別的故障。
  • 需要采用混合云的架構。由于公有云的集群池比較大,它既能夠大幅提升彈性資源池的容量,又能夠抵御突發的擴容需求。

計費模式較為靈活,可按需計費,并“廉價”地實現一些臨時性的活動所帶來的計算資源的消耗。

在混合云架構的實現過程中,我們曾調研過 Kubernetes 的 Federation 方案,但是發現它存在如下兩點不足:

  • 由于尚不成熟,目前官方并不推薦運行在生產環境之中。
  • 組件過多,在部署和管理上較為繁瑣。

因此我們采用了自行研發的管理方案,其特點是:

  • 每一組業務容器都會同時在多個集群上創建 Deployment。
  • 這些 Deployment 的配置,包括:容器版本、CPU / 內存資源的配額,都是完全相同的,唯一不同的只是容器的數量,它們會根據不同的集群大小做出相應的調整。

從滾動部署到部署發布分離

我們優化了部署與發布的流程,從原先的滾動部署模式轉換成了部署與發布相分離的模式。

在此,我們來區分一下部署與發布這兩個概念:

  • 部署,是分發代碼的配置,啟動諸如 Web Service 進程之類的服務實例。
  • 發布,是指把一組服務實例注冊到負載均衡、或者其他流量分發系統上,使其能夠對外接收流量。

如上圖下方的流程所示,上線的基本流程為:內網流量測試→金絲雀流量測試→生產環境全量。

那么在每一個階段,我們都需要去觀察線上業務的指標,一旦出現異常,我們就需要及時地進行回滾操作。

我們來深入分析一下滾動部署方式的優缺點。

優點如下:

  • 每次先升級一部分的容器實例,然后再迭代運行。
  • 能夠保證在升級過程中服務的不中斷,而瞬時產生的***資源消耗是受限制的。

缺點如下:

  • 在滾動部署的過程中,我們無法做到:先部署 10%→停下來→再部署 20%→再停下來→接著部署 50%,因此無法靈活地控制進度,也不能對應到前面所提到的各個發布階段。
  • 如果每個發布的階段都采用獨立的滾動部署方式,那么整體部署速度將會比較緩慢。
  • 在滾動部署過程中,舊的容器實例會被立刻銷毀。一旦此時線上指標出現問題,而我們的觀察卻有所滯后,那么所涉及到的“銷毀新實例和啟動舊實例”,回滾速度會比較緩慢。

針對上述問題,我們在設計上采用了“部署與發布相分離”的模式。

例如:我們在上線時,先在后臺啟動一組新的業務容器實例,當容器實例達到并滿足了內網發布的數量要求時,我們就把它注冊到內網之中,然后將舊的實例從內網流量分發的系統中“反注冊掉”。

如此,新的實例就能夠在內網中被發布與驗證。在后臺繼續啟動新的容器實例的同時,也避免了用戶能感知到容器啟動實例的時間。

我們實現了內部用戶在驗證完畢的時刻,下一個階段的部署就在數秒內直接升級完畢了。

另外,由于我們舊的容器實例并非立刻被銷毀掉,而是要等到在生產環境發布完成的一段安全時期之后,再按照類似于金絲雀的策略將舊的一組容器完全銷毀掉。

因此,在金絲雀發布的過程中,如果線上出現任何問題,我們就能夠立刻把舊的實例重新注冊回來,以實現秒級回滾。

從無狀態到有狀態

在容器的使用模式上,我們最初部署的是一些無狀態的業務 Web 容器。但是隨著其他基礎組件被遷移到了該容器平臺之上,我們引入了持久化存儲,以提供服務支持。

因此在生產環境中,我們用到了如下典型的持久化存儲方式:

  • HostPath。主要是配合 DaemonSet 進行使用。因為 HostPath 本身就能夠保證在每一個 Node 上只啟動一個 Pod 實例,因此不出現多個 Pod 同時使用同一個 HostPath,進而導致產生路徑沖突的問題。

例如,我們讓 Consul Agent 采用 DaemonSet 部署,那么由于 Consul Service 在注冊的時候需要持久化到本地存儲目錄之中,因此就很適合于用這種方式去實現。

  • Local。***版的 Kubernetes 已經能夠支持 Local Volume 了。優勢在于:因為使用的是本地的磁盤,它相對于網絡存儲有著較高的 IOPS,且延時較低。

所以對于諸如 MySQL 和 Kafka 之類的有著高 IOPS、低延時的存儲類應用來說,是非常合適的。

  • NFS。我們通過將分布式文件系統的 Fuse 接口映射到容器之中,以保證業務能夠從分布式文件系統上去讀取各種數據文件。

從 NAT 到 Underlay IP

在容器網絡的模式上,我們最早采用的是 iptable 所實現的 NAT 模式。該模式實現起來較為方便,不需要對現有網絡予以調整。

但是它存在一定的性能損耗問題,這對于我們早期的那些業務容器來說尚可接受。

到了后期,需要將一些大流量的高速網絡應用,如 Ngix、Haproxy 放到容器里時,我們對這種性能開銷就無法容忍了。

因此我們結合自身機房的網絡實際,在 Kubernetes 方案上選用了 Underlay IP,這種簡單互聯的網絡模式,以保證容器的 IP 與所在物理機的 IP 是完全對等的。

由于不存在 Overlay 的封包 / 解包處理,因此性能幾乎沒有損耗。通過實測,我們覺得性能非常好,所以將各種大流量的分發應用都放在了此容器里。

另外,由于 IP 模式具有良好的業務對應關系,因此我們可以方便地去定位網絡連接的來源和故障。

例如:倘若在 MySQL 側發現有大量的連接產生,你將如何定位這些連接的來源呢?

按照原有的端口映射方式,你可能只能定位到是來自于某臺機器,但是往往一臺機器上會被部署了多個業務應用,因此也就沒法精確地定位到是由哪個業務方所導致的。

如今,采用了 IP 方式之后,你就可以很方便地根據 IP 地址來判定對應的是哪個業務容器了。

同時,在具體的實踐過程中,我們還給每一臺機器分配了一個固定的網段(如一個 C 類網段),然后通過 Kubelet 的 CNI 插件,即 APAM,來負責每臺機器 IP 地址的創建、分配和釋放。

容器平臺維護踩過的坑

由于我們在生產環境中大規模地使用了容器平臺,可見容器平臺已經成為了我們基礎組件中的基礎組件。

那么它一旦出現問題,將會對我們的生產環境造成重大的故障。下面給大家分享一些我們曾經在生產環境中踩過的坑。

K8S Events

一次半夜三更,我們的 API Server 突然全部無法訪問了。通過調查,我們發現原因就在于 K8S Events。

眾所周知,K8S Events 就像 Log 一樣記錄著 K8S 集群里發生的任何變更事件。

如果你沒有進行額外配置的話,它會根據默認模式將這些變化全部記錄到線上的同一個 Etcd 里。

同時,K8S 為這些 Events 配置了相應的過期策略 TTL,以保證在經過一段時間后,該 Events 會被自動回收掉,從而釋放 Etcd 的存儲空間。

該設計看似合理,但是在 Etcd 實現 TTL 時,卻采用的是遍歷的方式,因此實現效率比較低下。

隨著集群規模的逐漸變大,集群上會出現頻繁的發布、部署與變更,這就會導致 Etcd 的負載逐漸增大,直至最終造成 Etcd 無法再選舉出一個 Leader,而整個 K8S 集群就此崩潰。

針對上述事故,其實 K8S 也意識到了,它為我們提供了一項可以將 Events 記錄到某個單獨 Etcd 集群中的配置。

不過,針對該單獨的 Etcd 集群,我們是不需要進行高可用存儲的,因此我們就直接使用了單節點的 Etcd,而并沒有采用 Raft 方式去組建具有更好性能的集群。

另一方面,我們意識到 K8S 所給定的諸如“每隔三個小時就回收掉 Events”的 TTL 機制過于精確。

因此我們自行實現了一種過期清理策略,即:固定在每天晚低峰的時候,再將整個 Events 的 Etcd 集群清空。

K8S Eviction

除了上面提到的“由于 API Server不響應,所導致的整個 K8S 集群失控”故障,我們也碰到過“所有生產環境中的 Pods 全部給直接刪掉”的坑。

在所有 API Server 都“掛掉”的極端情況下,如果你沒有及時去處理,并超過了一段時間(如五分鐘),那么在 K8S 1.5 之前的版本中,Controller Manager 會認為這些集群的 Node 都已與之失聯,并開始進行 Eviction。

即:將這些不健康 Node 上的所有 Pods 全都 terminate 掉了。此時,如果你恢復了 API Server,那么所有的 Kubelet 會根據命令,將運行在自己上面的 Pods 全部刪掉。

當然,在 K8S 1.5 之后的官方版本中,已經增加了一項“-unhealthy-zone-threshold”的配置。

例如:一旦它發現有超過 30% 的 Node 處于失聯狀態,就會認為該大規模故障必有其他原因,因此禁用且不再執行 Controller Manager 激進的驅逐(Eviction)策略。

Docker 容器端口泄露

另外我們也曾經在生產環境中發現“port is already allocated(端口已經被使用)”的現象。

我們檢查后發現:容器雖然已經釋放了端口,但是它的 Proxy 還在占用該端口。

通過進一步檢查 Docker Daemon 的代碼,我們得知:Docker Daemon 從分配使用某個端口,直到將該端口記錄到自己的內部持久化存儲中,該過程并非“原子性”。

如果 Docker Daemon 在中間階段退出,那么它在重啟恢復的內部存儲過程中,會忽略掉已經分配的端口,從而導致了容器端口的泄露。

針對該問題,我們已向官方提交了帶有對應解決方案的 Issue。

TCP Connection Reset

我們在 Docker NAT 網絡模式下也遇到過 TCP Connection Reset 的問題。

如上圖所示,該系統默認的配置對于網絡數據包可能出現的亂序情況過于敏感和嚴格。

在我們的系統訪問公網的過程中,如果網絡環境較差,且出現的亂序包超過了 TCP 窗口,那么系統就會根據該配置直接將這些連接進行 Reset。因此,我們直接將其關閉掉,就可以解決此問題了。

下面介紹一些我們在容器技術與大數據應用融合方面所做過的嘗試與實踐。

容器與大數據的融合實踐

基于 Kubernetes 的大數據融合

在大數據的場景下,我們使用兩條處理路徑,實現了容器平臺和大數據組件的融合。如上圖所示,左邊綠色的是實時處理,右邊灰色的是批處理。

由于出發點的不同,這些組件的設計思想有著較大的差異:

批處理,主要是運行 ETL 任務,包括數據倉庫的構建、離線分析等,因此它追求的是數據吞吐率和資源利用率,而對于時延本身并不敏感。

例如:一個 Map-Reduce 任務需要運行 1~2 個小時,這是非常正常的。并且它被設計為具有高容錯性。

例如:某個 Map-Reduce 任務“掛掉”了,你完全可以通過上層的 Ozzie 或 Azkaban 對整個任務(job)進行重試。只要最終完成了重啟,這些對于上層業務都將是“無感”的。

實時處理,對于時延較為敏感,且對于組件的可用性也要求比較高。一旦其中的任何節點“掛掉”或重啟,都會導致數據“落地”(運營指標)的延遲,以及數據展示的失敗。因此它的組件要求機器的負載不能太高。

當然,我們在對大數據生產環境的維護過程中,也經常遇到如下各種問題:

由于某個業務的變更,伴隨著 Kafka 寫入的流量出現猛增,也會拉高 Kafka 整個集群的負載。那么如果無法恢復的話,就會導致集群的癱瘓,進而影響整個生產環境。

我們治理的思路是:按照業務方將集群予以劃分和隔離。

我們按照業務方將集群劃分出幾十套,那么面對這么多的集群所帶來的成本,又該如何統一進行配置與部署管理呢?

我們通過使用 K8S 模板,方便地實現了一鍵搭建出多種相同的運行環境。

由于每個業務方使用量的不同,會造成那些業務方使用量較小的應用,也需要被分配多臺機器,且需要維護該集群的高可用性,從而帶來了大量的資源浪費。

我們的解決方案是:運用容器來實現細粒度的資源分配和配置。例如:對于這些較小的業務,我們僅分配一個配有單 CPU、單磁盤和 8G 內存的容器,而不是一整臺物理機。

基于 Kubernetes 的 Kafka 集群平臺

由于 Kafka 的性能瓶頸主要存在于磁盤存儲的 IOPS 上,我們通過如下的合理設計,實現了資源的分配管理。

具體方案是:以單塊磁盤為資源單位,進行細粒度分配,即:用單個 Broker 去調度一塊物理磁盤。

如此劃分資源的好處在于:

  • 它本身就能對 IOPS 和磁盤容量予以隔離。
  • 對于幾個 T 的硬盤而言,資源的劃分粒度較細,而不像物理機那樣動輒幾十個 T。因此資源的利用率會有所提升,而且更適合于小型應用。
  • 我們利用 Kafka 自身的 Replica 實現了數據的高可用性。不過容器與物理機在具體實現策略上有所區別:原來我們將 Broker 部署到一臺機器之上,如今將 Broker 部署在一個容器里。

此時容器就變成了原來的物理機,而包含容器的物理機就相當于原來物理機所在的物理機架。

同時,我們也對控制 Replica 副本的分布策略進行了調整。我們把 Broker 的機架式感知,改成按機器予以處理,這樣就避免了出現相同 topic 的副本被放在同一臺機器上的 Broker 的情況。

  • 采用了容器方式之后,故障的處理也變得相對簡單。

由于采取的是單塊硬盤的模式,因此一旦出現任何一塊硬盤的故障,運維人員只需將故障盤更換下來,通過 Kafka 的 Replication 方案,從他處將數據拷貝過來便可,而不需要其他部門人員的介入。

在創建流程方面,由于當時 K8S 并不支持 LocalPV,因此我們采用了自定義的第三方資源接口,自己實現了類似于如今生產環境中 Local Volume 的機制。

其流程為:我們靜態地根據磁盤的資源創建 LocalPV,而在平臺創建 Kafka 集群時,動態地創建 LocalPVC。

此時調度器就可以根據其 LocalPVC 和現有的 LocalPV 資源去創建 RC,然后在對應的節點上去啟動 Broker。

當然,目前 K8S 已有了類似的實現方式,大家可以直接使用了。

容器與 HBase 融合

我們的另一個實踐案例是將 HBase 平臺放到了容器之中。具體需求如下:

  • 根據業務方去對 HBase 集群予以隔離。
  • 由于 HBase 的讀寫都是發生在 Region Server 節點上,因此需要對 Region Server 予以限制。
  • 由于存在著大、小業務方的不同,因此我們需要對資源利用率予以優化。

同時,由于數據都是被存放到 HDFS 上之后,再加載到內存之中,因此我們可以在內存里通過 Cache 進行高性能的讀寫操作。

可見,Region Server 的性能瓶頸取決于 CPU 與內存的開銷。

因此我們將每個 HBase Cluster 都放到了 Kubernetes 的 Namespace 里,然后對 HBase Master 和 Region Server 都采用 Deployment 部署到容器中。

其中 Master 較為簡單,只需通過 Replication 來實現高可用性;而 Region Server 則針對大、小業務方進行了資源限制。

例如:我們給大的業務方分配了 8 核 + 64G 內存,而給小的業務方只分配 2 核 + 16G 內存。

另外由于 ZooKeeper 和 HDFS 的負載較小,如果直接放入容器的話,則會涉及到持久化存儲等復雜問題。

因此我們讓所有的 HBase 集群共享相同的 ZooKeeper 和 HDFS 集群,以減少手工維護 ZooKeeper 和 HDFS 集群的開銷。

容器與 Spark Streaming 融合

不同于那些需要大量地讀寫 HDFS 磁盤的 Map-Reduce 任務,Spark Streaming 是一種長駐型的任務。

它在調度上,不需要去優化處理大數據在網絡傳輸中的開銷,也不需要對 HDFS 數據做 Locality。

然而,由于它被用來做實時處理計算,因此對機器的負載較為敏感。如果機器的負載太高,則會影響到它處理的“落地”時延。

而大數據處理集群的本身特點就是追求高吞吐率,因此我們需要將 Spark Streaming 從大數據處理的集群中隔離出來,然后將其放到在線業務的容器之中。

在具體實踐上,由于當時尚無 Spark 2.3,因此我們自己動手將 YARN 的集群放到了容器之中。

即:首先在 Docker 里啟動 YARN 的 Node Manager,將其注冊到 Resource Manager 之上,以組成一個在容器里運行的 YARN 集群。

然后我們再通過 Spark Submit 提交一項 Spark Streaming 任務到該集群處,讓 Spark Streaming 的 Executor 能夠運行在該容器之中。

如今,Spark 2.3 之后的版本,都能支持對于 Kubernetes 調度器的原生使用,大家再也不必使用 YARN,而可以直接通過 Kubernetes 使得 Executor 運行在容器里了。

大數據平臺的 DevOps 管理

在大數據平臺的管理方面,我們踐行了 DevOps 的思想。例如:我們自行研發了一個 PaaS 平臺,以方便業務方直接在該平臺上自助式地對資源進行申請、創建、使用、擴容、及管理。

根據 DevOps 的思想,我們定位自己為工具開發的平臺方,而非日常操作的運維方。

我們都通過該 PaaS 平臺的交付,讓業務方能夠自行創建、重啟、擴容集群。

此舉的好處在于:

  • 減少了溝通的成本,特別是在公司越來越大、業務方之間的溝通越來越復雜之時。
  • 業務便捷且有保障,他們的任何擴容需求,都不需要聯系我們,而直接可以在該平臺上獨立操作完成。
  • 減輕了日常工作的負擔,我們能夠更加專注于技術本身,專注于如何將該平臺的底層技術做得更好。

由于業務本身對于像 Kafka、HBase 之類系統的理解較為膚淺,因此我們需要將自己積累的對于集群的理解和經驗,以一種專家的視角呈現給他們。

作為 DevOps 實踐中的一環,我們在該大數據平臺上提供了豐富的監控指標。

圖中以 Kafka 為例,我們提供的監控指標包括 Topic Level、Broker Level,和 Host Level。

可見,我們旨在將 Kafka 集群變成一個“白盒”,一旦發生故障,業務方就能直接通過我們所定制的報警閾值,在指標界面上清晰地看到各種異常,并能及時自行處理。

總結

從實踐經驗來看,我們的基本思路是:

  • 按業務方進行集群隔離。
  • 利用 K8S 進行多集群部署和管理。
  • 利用 Docker 進行資源隔離和監控。
  • 利用 Docker 實現更細粒度資源分配。
  • 運用 DevOps 實現運維管理。

后續,我們將嘗試更多的基礎設施組件,利用 K8S 去實現集群的隔離,實現更細粒度的資源分配和進程級的資源監控。

通過更好地在生產環境中實施管理和維護,以及提升資源的利用率,我們將為業務提供更穩定的 PaaS 平臺服務,并最終實現數據中心的資源統一。

同時,我們通過交給 K8S 來進行調度管理,進而實現 DCOS(數據中心操作系統)。

[[242308]]

張阜興,知乎計算平臺負責人。2012 年從中科院計算所畢業后,分別在搜狐和雅虎從事分布式存儲系統研發和云平臺建設的工作,加入知乎后從無到有推動了知乎內部容器平臺的建設,目前主要研究方向在資源調度管理以及大數據計算和存儲等。

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2018-07-03 09:57:43

容器知乎大數據

2020-12-10 15:28:29

知乎CTO平臺

2023-06-27 07:20:45

2024-09-20 08:20:20

2025-02-11 09:12:55

2017-06-16 21:00:02

Python爬蟲

2019-11-25 11:03:19

互聯網數據技術

2023-07-18 18:14:51

云原生軟件架構

2023-08-21 07:55:32

2017-09-04 15:06:23

大數據集群開源

2018-07-23 08:32:49

分布式鏡像倉庫

2020-11-19 15:01:26

京東大數據數據平臺

2023-06-09 14:14:45

大數據容器化

2020-07-10 08:50:37

大數據銀行技術

2019-05-31 12:03:06

SQLHadoop大數據

2018-11-02 15:26:03

大數據

2022-07-07 10:19:05

數據畫像

2022-08-25 22:24:19

架構電商系統

2013-04-08 10:44:54

企業IT大數據分析Hadoop

2015-12-08 10:00:18

大數據架構實踐
點贊
收藏

51CTO技術棧公眾號

懂色中文一区二区三区在线视频| 欧美一级视频精品观看| 久久大片网站| 久久免费公开视频| 日本一道高清一区二区三区| 欧美亚洲禁片免费| 久久综合亚洲精品| 精品人妻av一区二区三区| 亚洲在线观看| 精品国内自产拍在线观看| 怡红院一区二区| 国产欧美自拍| 国产精品白丝在线| 精品无码久久久久国产| 一区二区三区播放| 亚洲激情自拍| 久久精品视频播放| 国产又粗又猛又爽视频| 日本一区二区三区视频在线看| 亚洲乱码日产精品bd| 成人免费视频网址| 精品国产乱码久久久久久鸭王1| www.久久久久爱免| 色呦呦一区二区三区| 欧美少妇在线观看| 男人天堂手机在线观看| 老色鬼精品视频在线观看播放| 色噜噜亚洲精品中文字幕| 少妇精品一区二区| 亚洲国产中文在线| 欧美日韩日本国产| 特级西西444| 2019中文字幕在线视频| 91免费看片在线观看| 99国产在线视频| 91精东传媒理伦片在线观看| 日韩专区欧美专区| 青青久久aⅴ北条麻妃| 成人一级片免费看| 久久久久久爱| 欧美猛男男办公室激情| 婷婷激情四射五月天| 成人美女黄网站| 午夜视频在线观看一区二区| 水蜜桃亚洲精品| 亚洲精品18在线观看| 激情久久久久久久久久久久久久久久| 欧美成人免费小视频| 国模私拍在线观看| av在线日韩| 色婷婷国产精品| 亚洲欧美日韩不卡| 男人的天堂在线视频免费观看| 国产成人精品三级麻豆| 亚洲自拍高清视频网站| www.成人精品| 成人av中文字幕| 国产一区再线| 蜜桃视频在线观看网站| 激情五月婷婷综合网| 国产日韩精品入口| 97人妻精品一区二区三区视频| 亚洲美女网站| 97人人做人人爱| 国产精品久久久久久99| 亚洲综合好骚| 国产精品igao视频| 中文字幕 国产| 狠狠色综合色综合网络| 99在线视频首页| 农村少妇久久久久久久| 九九国产精品视频| 亚洲一区二区免费| 色呦呦免费观看| 久久精品亚洲国产奇米99| 国产精品视频入口| 欧美日韩在线中文字幕| 国产精品欧美久久久久无广告| 国精产品一区二区| 国产在线日本| 亚洲情趣在线观看| 国产v片免费观看| 神马久久资源| 欧美一区二区大片| 国产精品久久AV无码| 亚洲综合色婷婷在线观看| 亚洲а∨天堂久久精品9966| 91丨porny丨九色| 日本中文字幕视频一区| 日韩欧美国产一区二区三区| 日本护士做爰视频| 97精品国产福利一区二区三区| 亚洲天堂成人在线| 男女性高潮免费网站| 91视频综合| 国内精品视频一区| 中文字幕一区二区三区四区视频| 日韩精品成人一区二区三区| 91精品视频在线看| 五月婷婷久久久| 91视视频在线观看入口直接观看www | 成人在线爆射| 91精品国产色综合久久ai换脸| 色婷婷.com| 久久午夜影院| www.日韩av.com| 草久视频在线观看| 国内精品伊人久久久久av一坑| 国产精品中文字幕久久久| 国产成人麻豆免费观看| 丁香婷婷深情五月亚洲| 高清视频在线观看一区| 1769在线观看| 日韩欧美中文字幕在线播放| 日本少妇xxx| 精品国产一区二区三区噜噜噜 | 国产白袜脚足j棉袜在线观看| 麻豆精品在线| 一本色道久久88综合日韩精品| 鲁丝一区二区三区| 亚洲精品乱码| 岛国视频一区| 成人高清免费在线| 欧美色网一区二区| 亚洲国产无码精品| 色综合五月天| 国产成人短视频| 天堂成人在线观看| 亚洲综合免费观看高清完整版 | 欧美mv日韩mv国产网站| 免费看一级黄色| 欧美激情第10页| 成人激情视频在线观看| 成年人视频在线看| 欧洲人成人精品| 亚洲天堂久久新| 在线综合亚洲| 精品国产乱码久久久久久郑州公司| 激情视频在线观看免费| 精品久久香蕉国产线看观看gif| 久久久国产欧美| 女人av一区| 久久影院资源网| ,一级淫片a看免费| 国产精品久久久久久久久晋中| 白白操在线视频| 久久伊人久久| 欧美大片在线看免费观看| 欧美黄色一级大片| 国产亚洲女人久久久久毛片| 日韩中文字幕免费在线| 国产91久久精品一区二区| 国产不卡视频在线| 成人好色电影| 欧美日韩高清一区二区三区| 国产午夜精品理论片在线| 精品中文字幕一区二区 | 6080成人| 欧美激情一级二级| 午夜激情小视频| 日韩欧美亚洲综合| 五月天婷婷丁香网| 国产一区二区免费看| 鲁丝一区二区三区免费| 91麻豆国产福利在线观看宅福利| 色欧美88888久久久久久影院| 免费啪视频在线观看| 精品电影一区| 欧美人xxxxx| 91在线超碰| 亚洲欧美成人在线| 伊人网免费视频| 一区二区成人在线| 丝袜美腿中文字幕| 美女一区二区视频| 欧美重口乱码一区二区| 日韩黄色三级| 欧美国产在线视频| 你懂的在线观看视频网站| 欧美日韩五月天| 国产一级视频在线| 国产99久久久精品| 97xxxxx| 色喇叭免费久久综合网| 国产精品69久久| 黄色动漫在线观看| 亚洲黄色成人网| 国产无遮挡裸体免费视频| 久久午夜电影网| 亚洲欧美日韩网站| 久久精品成人| 在线观看18视频网站| 亚洲欧美成人vr| 91网在线免费观看| 免费h在线看| 免费97视频在线精品国自产拍| 国产精品51麻豆cm传媒| 亚洲午夜精品网| 国产91丝袜美女在线播放| 成人精品高清在线| 91国视频在线| 欧美va天堂在线| 99re资源| heyzo在线欧美播放| 在线播放日韩专区| 天堂在线视频免费| 欧美一区二区三区视频免费播放| 我家有个日本女人| 国产目拍亚洲精品99久久精品| 天天操天天爱天天爽| 亚洲国产精品第一区二区三区| 国产精品日韩一区二区三区 | av中文字幕观看| 91黄色免费网站| 国产精品久久久久久99| 国产婷婷一区二区| 无码一区二区精品| 国产精品亚洲专一区二区三区| 韩日视频在线观看| 亚洲欧美网站在线观看| 亚洲精品日韩成人| 香蕉久久精品日日躁夜夜躁| 成人免费视频观看视频| 亚洲精品大全| 国产乱肥老妇国产一区二| 黄网站app在线观看| 尤物tv国产一区| 99国产精品久久久久久久成人| 亚洲国产乱码最新视频 | 视频一区国产| 91在线中文字幕| 欧美天堂在线| 国产精品一区二区三区毛片淫片 | 国产免费观看久久黄| 日韩成人av电影| 日韩av电影在线免费播放| 福利影院在线看| 国内成人精品视频| wwwwxxxx在线观看| 久久久久久国产| 国精一区二区三区| 永久免费毛片在线播放不卡| 国产在线91| 国产一区二区三区久久精品| 国产在线自天天| 亚洲最新av在线| 91亚洲欧美| 中文综合在线观看| 亚洲av成人无码久久精品老人 | 亚洲国产精品综合小说图片区| 日本欧美一区二区三区不卡视频| 国产成人激情av| xxxx视频在线观看| 成人免费视频网站在线观看| 国产精品成人99一区无码| 99久久99久久精品免费观看| 911av视频| 国产一区在线观看麻豆| 久久精品一卡二卡| 精品亚洲porn| 日本黄色大片在线观看| 91丝袜美腿高跟国产极品老师 | 日韩午夜在线视频| 超碰公开在线| 国内久久久精品| 在线毛片观看| 国产精品专区h在线观看| 国产精品视频首页| 国产伦精品一区二区三区精品视频| 欧美aaaaa性bbbbb小妇| 国产精品扒开腿做| 在线免费观看亚洲| 国产精品一区二区你懂得| 神马午夜久久| 永久免费精品视频网站| 欧美日韩a区| 欧美aⅴ在线观看| 精品在线免费视频| 日韩aaaaa| 中文无字幕一区二区三区| 超碰97人人干| 亚洲欧美色综合| 日本在线免费观看| 欧洲色大大久久| 精品国产av 无码一区二区三区 | 久久久精品高清| 成人国产精品免费| 极品尤物一区二区| 国产精品嫩草影院av蜜臀| 一区二区三区久久久久| 亚洲男同1069视频| av大全在线观看| 91麻豆精品国产91久久久久| 无码国产精品96久久久久| 亚洲第一区中文99精品| 91最新在线| 97在线视频观看| 日本免费精品| av一区二区三区四区电影| 成人福利免费在线观看| 亚洲一区二区三区精品动漫| 欧美顶级大胆免费视频| 一区二区三区欧美成人| 亚洲福利专区| 91插插插影院| 国产人成一区二区三区影院| 99久久久无码国产精品不卡| 国产精品乱码人人做人人爱| 国产精品美女久久久久av爽| 3d成人动漫网站| av资源网站在线观看| 亚洲性生活视频在线观看| 中文字幕在线观看播放| 国产精品日韩在线播放| 午夜精品福利影院| 成人网站免费观看入口| 国产美女视频91| 亚洲乱妇老熟女爽到高潮的片| 成人精品国产一区二区4080| 麻豆精品国产免费| 欧美日韩免费高清一区色橹橹| 一级特黄色大片| 欧美一卡在线观看| 91在线网址| 国产精品成人aaaaa网站| 亚洲老女人视频免费| 日韩黄色片在线| 国产一区二区成人久久免费影院| 中国老熟女重囗味hdxx| 国产精品久久免费看| 国产天堂第一区| 欧美精品丝袜久久久中文字幕| 国产欧美日韩成人| 日韩中文在线中文网三级| 91tv亚洲精品香蕉国产一区| 欧美一区二区福利| 视频一区二区三区入口| 波多野结衣办公室33分钟| 色综合久久久久综合| 免费一级毛片在线观看| 欧美综合第一页| 亚洲国产最新| 噼里啪啦国语在线观看免费版高清版| 日韩av中文在线观看| theav精尽人亡av| 色综合久久久久综合| 可以在线观看的av| 在线观看久久久久久| 亚洲大胆人体大胆做受1| 91夜夜揉人人捏人人添红杏| 在线国产一区二区| www.欧美com| 亚洲va韩国va欧美va| 国产成人a v| 尤物九九久久国产精品的特点| av在线不卡免费| 国精产品99永久一区一区| 羞羞答答国产精品www一本| 性欧美13一14内谢| 欧美日韩精品久久久| 综合图区亚洲| 激情小说网站亚洲综合网 | 亚洲精品人成| 国产真实乱对白精彩久久| 精品欧美一区二区久久久| 欧美色视频在线观看| gogo在线高清视频| 国产欧美日韩精品专区| 亚洲欧美偷拍自拍| 亚洲成av人片在线观看无| 在线精品视频小说1| 香蕉国产在线视频| 国产成人久久久| 久久精品亚洲人成影院| 五月婷婷狠狠操| 久久天天做天天爱综合色| 日本在线免费观看| 伊人亚洲福利一区二区三区| 姬川优奈av一区二区在线电影| 久久久久久国产精品mv| 亚洲电影av| 东京热无码av男人的天堂| 精品三级在线观看| 高清电影一区| 日本a在线天堂| 国产人妖乱国产精品人妖| 精品人妻一区二区三区麻豆91| 一本一道久久a久久精品逆3p | 51ⅴ精品国产91久久久久久| 国产中文精品久高清在线不| 青青草精品在线| 欧美性猛交xxxx免费看久久久| 香蕉久久一区二区三区| 国产日韩在线免费| 亚洲看片一区| 美女网站视频色| 91精品国产色综合久久ai换脸| av网站在线看| 欧美区高清在线| www.亚洲在线|