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

Openstack源碼閱讀的正確姿勢

開發 開發工具 OpenStack
最開始容器服務也是由Nova提供支持的,作為Nova的driver之一來實現,而后遷移到Heat,到現在已經分離成獨立的項目Magnum,后來Magnum主要提供容器編排服務,單純的容器服務由Zun項目負責。最開始Openstack并沒有認證功能,從E版開始才加入認證服務Keystone,至此Openstack 6個核心服務才終于聚齊了。

1. 談談Openstack的發展歷史

OpenStack是一個面向IaaS層的云管理平臺開源項目,用于實現公有云和私有云的部署及管理。最開始Openstack只有兩個組件,分別為提供計算服務的Nova項目以及提供對象存儲服務的Swift,其中Nova不僅提供虛擬機服務,還包含了網絡服務、塊存儲服務、鏡像服務以及裸機管理服務。之后隨著項目的不斷發展,從Nova中拆分成多個獨立的項目各自提供不同的服務,如拆分為Cinder項目提供塊存儲服務,拆分為Glance項目,提供鏡像服務,nova-network則是neutron的前身,裸機管理也從Nova中分離出來為Ironic項目。最開始容器服務也是由Nova提供支持的,作為Nova的driver之一來實現,而后遷移到Heat,到現在已經分離成獨立的項目Magnum,后來Magnum主要提供容器編排服務,單純的容器服務由Zun項目負責。最開始Openstack并沒有認證功能,從E版開始才加入認證服務Keystone,至此Openstack 6個核心服務才終于聚齊了。

  • Keystone 認證服務。
  • Glance 鏡像服務。
  • Nova 計算服務。
  • Cinder 塊存儲服務。
  • Neutorn 網絡服務。
  • Swift 對象存儲服務。

E版之后,在這些核心服務之上,又不斷涌現新的服務,如面板服務Horizon、服務編排服務Heat、數據庫服務Trove、文件共享服務Manila、大數據服務Sahara以及前面提到的Magnum等,這些服務幾乎都依賴于以上的核心服務。比如Sahara大數據服務會先調用Heat模板服務,Heat又會調用Nova創建虛擬機,調用Glance獲取鏡像,調用Cinder創建數據卷,調用Neutron創建網絡等。還有一些項目圍繞Openstack部署的項目,比如Puppet-openstack、Kolla、TripleO、Fuel等項目。

截至現在(2016年11月27日),Openstack已經走過了6年半的歲月,***發布的版本為第14個版本,代號為Newton,Ocata版已經處在快速開發中。

Openstack服務越來越多、越來越復雜,并且不斷變化發展。以Nova為例,從最開始使用nova-conductor代理數據庫訪問增強安全性,引入objects對象模型來支持對象版本控制,現在正在開發Cell項目來支持大規模的集群部署以及將要分離的Nova-EC2項目,截至到現在Nova包含nova-api、nova-conductor、nova-scheduler、nova-compute、nova-cell、nova-console等十多個組件。這么龐大的分布式系統需要深刻理解其工作原理,理清它們的交互關系非常不容易,尤其對于新手來說。

2.工欲善其事,必先利其器

由于Openstack使用python語言開發,而python是動態類型語言,參數類型不容易從代碼中看出,因此首先需要部署一個allinone的Openstack開發測試環境,建議使用RDO部署:Packstack quickstart,當然樂于折騰使用devstack也是沒有問題的。

其次需要安裝科學的代碼閱讀工具,圖形界面使用pycharm沒有問題,不過通常在虛擬機中是沒有圖形界面的,***vim,需要簡單的配置使其支持代碼跳轉和代碼搜索,可以參考我的vim配置GitHub - int32bit/dotfiles: A set of vim, zsh, git, and tmux configuration files

掌握python的調試技巧,推薦pdb、ipdb、ptpdb,其中ptpdb***用,不過需要手動安裝。打斷點前需要注意代碼執行時屬于哪個服務組件,nova-api的代碼,你跑去nova-compute里打斷點肯定沒用。另外需要注意打了斷點后的服務必須在前端運行,不能在后臺運行,比如我們在nova/compute/manager.py中打了斷點,我們需要kill掉后臺進程:

  1. systemctl stop openstack-nova-compute 

然后直接在終端運行nova-compute即可。

  1. su -c 'nova-compute' nova 

3 .教你閱讀的正確姿勢

學習Openstack的***步驟是:

  • 看文檔
  • 部署allineone
  • 使用之
  • 折騰之、怒斥之
  • 部署多節點
  • 深度使用、深度吐槽
  • 閱讀源碼
  • 混社區,參與社區開發

閱讀源碼的首要問題就是就要對代碼的結構了然于胸,需要強調的是,Openstack項目的目錄結構并不是根據組件劃分的,而是根據功能劃分的,以Nova為例,compute目錄并不是一定在nova-compute節點上運行的代碼,而主要是和compute相關(虛擬機操作相關)的功能實現,同樣的,scheduler目錄代碼并不全在scheduler服務節點運行,但主要是和調度相關的代碼。好在目錄結構并不是完全混亂的,它是有規律的。

通常一個服務的目錄都會包含api.py、rpcapi.py、manager.py,這個三個是最重要的模塊。

  • api.py: 通常是供其它組件調用的庫。換句話說,該模塊通常并不會由本模塊調用。比如compute目錄的api.py,通常由nova-api服務的controller調用。
  • rpcapi.py:這個是RPC請求的封裝,或者說是RPC實現的client端,該模塊封裝了RPC請求調用。
  • manager.py: 這個才是真正服務的功能實現,也是RPC的服務端,即處理RPC請求的入口,實現的方法通常和rpcapi實現的方法對應。

前面提到Openstack項目的目錄結構是按照功能劃分的,而不是服務組件,因此并不是所有的目錄都能有對應的組件。仍以Nova為例:

  • cmd:這是服務的啟動腳本,即所有服務的main函數。看服務怎么初始化,就從這里開始。
  • db: 封裝數據庫訪問,目前支持的driver為sqlalchemy。
  • conf:Nova的配置項聲明都在這里。
  • locale: 本地化處理。
  • image: 封裝Glance調用接口。
  • network: 封裝網絡服務接口,根據配置不同,可能調用nova-network或者neutron。
  • volume: 封裝數據卷訪問接口,通常是Cinder的client封裝。
  • virt: 這是所有支持的hypervisor驅動,主流的如libvirt、xen等。
  • objects: 對象模型,封裝了所有實體對象的CURD操作,相對以前直接調用db的model更安全,并且支持版本控制。
  • policies: policy校驗實現。
  • tests: 單元測試和功能測試代碼。

根據進程閱讀源碼并不是什么好的實踐,因為光理解服務如何初始化、如何通信、如何發送心跳等就不容易,各種高級封裝太復雜了。而我認為比較好的閱讀源碼方式是追蹤一個任務的執行過程,比如追蹤啟動一臺虛擬機的整個流程。

不管任何操作,一定是先從API開始的,RESTFul API是Openstack服務的唯一入口,也就是說,閱讀源碼就從api開始。而api組件也是根據實體劃分的,不同的實體對應不同的controller,比如servers、flavors、keypairs等,controller通常對應有如下方法:

  • index: 獲取資源列表,一般對應RESTFul API的URL為“GET /resources”,如獲取虛擬機的列表API為“GET /servers”。
  • get: 獲取一個資源,比如返回一個虛擬機的詳細信息API為”GET /servers/uuid“。
  • create: 創建一個新的資源,通常對應為POST請求。比如創建一臺虛擬機為 “POST /servers”, 當然POST的數據為虛擬機信息。
  • delete: 刪除指定資源,通常對應DELETE請求,比如刪除一臺虛擬機為“DELETE/servers/uuid”。
  • update: 更新資源信息,通常對應為PUT請求,比如更新虛擬機資源為”PUT /servers/uuid,body為虛擬機數據。

了解了代碼結構,找到了入口,再配合智能跳轉,閱讀源碼勢必事半功倍。如果有不明白的地方,隨時可以加上斷點單步調試。

4.案例分析

接下來以創建虛擬機為例,根據組件劃分,一步步分析整個工作流程以及操作序列。請再次回顧下api.py、rpcapi.py、manager.py以及api下的controller結構,否則閱讀到后面會越來越迷糊。

S1 nova-api

入口為nova/api/openstack/compute/servers.py的create方法,該方法檢查了一堆參數以及policy后,調用compute_api的create方法,這里的compute_api即前面說的nova/compute/api.py模塊的API。

compute_api會創建數據庫記錄、檢查參數等,然后調用compute_task_api的build_instances方法,compute_task_api即conductor的api.py。

conductor的api并沒有執行什么操作,直接調用了conductor_compute_rpcapi的build_instances方法,該方法即時conductor RPC調用api,即nova/conductor/rpcapi.py模塊,該方法除了一堆的版本檢查,剩下的就是對RPC調用的封裝,代碼只有兩行:

  1. cctxt = self.client.prepare(version=version)  
  2. cctxt.cast(context, 'build_instances', **kw) 

其中cast表示異步調用,build_instances是遠程調用的方法,kw是傳遞的參數。參數是字典類型,沒有復雜對象結構,因此不需要特別的序列化操作。

截至到現在,雖然目錄由api->compute->conductor,但仍在nova-api進程中運行,直到cast方法執行,該方法由于是異步調用,因此nova-api不會等待遠程方法調用結果,直接返回結束。

S2 nova-conductor

由于是向nova-conductor發起的RPC調用,而前面說了接收端肯定是manager.py,因此進程跳到nova-conductor服務,入口為nova/conductor/manager.py的build_instances方法。

該方法首先調用了_schedule_instances方法,該方法調用了scheduler_client的select_destinations方法,scheduler_client和compute_api以及compute_task_api都是一樣對服務的client調用(即api.py),不過scheduler沒有api.py,而是有個單獨的client目錄,實現在client目錄的__init__.py模塊,這里僅僅是調用query.py下SchedulerQueryClient的select_destinations實現,然后又很直接的調用了scheduler_rpcapi的select_destinations方法,終于又到了RPC調用環節。

毫無疑問,RPC封裝同樣是在scheduler的rpcapi中實現。該方法RPC調用代碼如下:

  1. return cctxt.call(ctxt, 'select_destinations', **msg_args) 

注意這里調用的call方法,即同步調用,此時nova-conductor并不會退出,而是堵塞等待直到nova-scheduler返回。

S3 nova-scheduler

同理找到scheduler的manager.py模塊的select_destinations方法,該方法會調用driver對應的方法,這里的driver其實就是調度算法實現,由配置文件決定,通常用的比較多的就是filter_scheduler,對應filter_scheduler.py模塊,該模塊首先通過host_manager拿到所有的計算節點信息,然后通過filters過濾掉不滿足條件的計算節點,剩下的節點通過weigh方法計算權值,***選擇權值高的作為候選計算節點返回。nova-scheduler進程結束。

S4 nova-condutor

回到scheduler/manager.py的build_instances方法,nova-conductor等待nova-scheduler返回后,拿到調度的計算節點列表,然后調用了compute_rpcapi的build_and_run_instance方法。看到xxxrpc立即想到對應的代碼位置,位于compute/rpcapi模塊,該方法向nova-compute發起RPC請求:

  1. cctxt.cast(ctxt, 'build_and_run_instance', ...) 

可見發起的是異步RPC,因此nova-conductor結束,緊接著終于輪到nova-compute登場了。

S5 nova-compute

到了nova-compute服務,入口為compute/manager.py,找到build_and_run_instance方法,該方法調用了driver的spawn方法,這里的driver就是各種hypervisor的實現,所有實現的driver都在virt目錄下,入口為driver.py,比如libvirt driver實現對應為virt/libvirt/driver.py,找到spawn方法,該方法拉取鏡像創建根磁盤、生成xml文件、define domain,啟動domain等。***虛擬機完成創建。nova-compute服務結束。

一張圖總結以上是創建虛擬機的各個服務的交互過程以及調用關系,需要注意的是,所有的數據庫操作,比如instance.save()以及update操作,如果配置use_local為false,則會向nova-conductor發起RPC調用,由nova-conductor代理完成數據庫更新,而不是由nova-compute直接訪問數據庫,這里的RPC調用過程在以上的分析中省略了。

整個流程用一張圖表示為:

【本文是51CTO專欄作者“付廣平”的原創文章,如需轉載請通過51CTO獲得聯系】

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

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

2018-01-11 15:31:39

命令Linux關機

2017-02-23 15:37:44

OptionObject容器

2016-05-09 10:41:03

算法分析開發

2015-07-03 09:55:48

陳沙克OpenStack開源云平臺

2017-07-10 13:09:45

前端Flexbox

2023-01-30 07:41:43

2021-01-08 08:10:34

MySQL表空間回收

2017-10-12 11:30:34

Spark代碼PR

2016-12-12 08:48:24

2019-12-27 15:58:57

大數據IT互聯網

2021-09-15 16:20:02

Spring BootFilterJava

2024-09-25 08:22:06

2016-10-11 16:28:11

源代碼

2019-10-30 17:06:50

AWS物聯網IoT

2016-01-05 11:28:20

按需付費云計算docker

2022-03-28 11:10:35

ShellBash forLinux

2019-01-02 10:49:54

Tomcat內存HotSpot VM

2017-06-19 17:43:04

網絡帶寬網絡設計

2025-03-11 00:55:00

Spring停機安全

2020-02-24 15:26:40

Python短信免費
點贊
收藏

51CTO技術棧公眾號

国产网红在线观看| 成人a v视频| 国产乱子精品一区二区在线观看| 国产欧美精品区一区二区三区| 国产精品香蕉av| 亚洲综合视频网站| 18国产精品| 欧美午夜宅男影院在线观看| 天堂va久久久噜噜噜久久va| 99国产精品99| 在线综合亚洲| 色偷偷偷亚洲综合网另类| 岛国av在线免费| 欧美黑人猛交| 国产女人18水真多18精品一级做| 91精品久久久久久久久中文字幕| 国产午夜精品一区二区理论影院| 亚洲精品合集| 欧美亚洲动漫另类| 黄色成人在线免费观看| 久久久久久久影视| 国产精一品亚洲二区在线视频| 国内精品美女av在线播放| 欧美做受xxxxxⅹ性视频| 亚洲精品777| 狠狠躁夜夜躁久久躁别揉| 亚洲毛片aa| 人妻丰满熟妇av无码区hd| 日本成人在线不卡视频| 欧美日韩高清区| 69精品无码成人久久久久久| 欧美专区一区| 欧美三日本三级三级在线播放| 国产在线视频在线| 在线免费看a| 99国产一区二区三精品乱码| 亚洲va欧美va国产综合久久| 无码人妻丰满熟妇精品| 在线免费观看欧美| 久久中文字幕在线| 制服 丝袜 综合 日韩 欧美| 风间由美一区二区av101| 欧美日韩一本到| 各处沟厕大尺度偷拍女厕嘘嘘| 岛国中文字幕在线| 国产精品免费视频观看| 免费h精品视频在线播放| 99久久免费国产精精品| 免费av网站大全久久| 欧美精品一区二区免费| 婷婷色一区二区三区| 久久影院资源站| 日韩情涩欧美日韩视频| 黄色片视频在线播放| 国产理论电影在线| 夜夜揉揉日日人人青青一国产精品| 亚洲图片欧洲图片日韩av| 性xxxfllreexxx少妇| 国产69精品久久久久毛片| 亚洲一区二区在线| 在线观看毛片网站| 蜜臀久久99精品久久久画质超高清| 热久久这里只有精品| 日韩成年人视频| 亚洲承认在线| 欧美精品第一页在线播放| 我要看黄色一级片| 婷婷综合视频| 另类美女黄大片| 欧美黑人性猛交xxx| 91精品国产乱码久久久久久 | 中文字幕一区二区三区色视频| 日本一区二区在线视频| 免费人成黄页在线观看忧物| 久久影院电视剧免费观看| 麻豆av福利av久久av| 欧美3p视频在线观看| 久久久久久99久久久精品网站| 欧美日韩高清在线一区| 狠狠色伊人亚洲综合网站l| 国产午夜精品理论片a级大结局| 国产成人精品福利一区二区三区| 成人久久久精品国产乱码一区二区| 国产不卡视频在线播放| 国产精品一区久久久| 97人妻人人澡人人爽人人精品| 久久国产精品第一页| 亚洲综合日韩在线| 亚洲精品久久久蜜桃动漫| 高清av一区二区| 久久精品国产精品青草色艺| 国产成人无码www免费视频播放| 成人亚洲一区二区一| 久久久久成人精品免费播放动漫| 久久精品蜜桃| 国产精品久久免费看| 91精品国产毛片武则天| 久草免费在线视频| 欧美亚洲高清一区| 麻豆网站免费观看| 欧美人成在线观看ccc36| 亚洲精品视频中文字幕| 欧美aaa级片| 欧美日韩一区自拍| 欧美一级bbbbb性bbbb喷潮片| 天堂网av手机版| 捆绑调教一区二区三区| 国产精品三区www17con| 可以在线观看的黄色| 亚洲视频香蕉人妖| 极品美女扒开粉嫩小泬| 国产精品久久久久77777丨| 欧美老女人第四色| 亚洲午夜久久久久久久久| 欧美午夜精彩| 欧美极品少妇xxxxⅹ喷水| 男人午夜免费视频| 国内精品久久久久影院一蜜桃| 国产亚洲福利社区| 色多多视频在线观看| 亚洲一区二区在线播放相泽| 国产自偷自偷免费一区| 国产一区二区三区免费观看在线| 精品视频在线播放| 欧美做爰爽爽爽爽爽爽| 久久激情视频| 国产精品xxxx| 亚洲视频tv| 欧美性猛交xxxx乱大交| 91福利国产成人精品播放| 中文字幕视频精品一区二区三区| 国产亚洲精品综合一区91| 久久久精品一区二区涩爱| 蜜臀久久99精品久久久久久9| 国产精品香蕉视屏| av男人的天堂在线| 欧美日韩国产中字| 先锋资源在线视频| 欧美特黄一级大片| 日本人成精品视频在线| 亚洲精品一级片| 国产精品进线69影院| 中文字幕日本最新乱码视频| 日本成人一区二区| 亚洲欧洲xxxx| 久久久久久91亚洲精品中文字幕| 国产一区二区三区在线观看免费 | 丁香六月婷婷综合| 成人综合婷婷国产精品久久蜜臀| 亚洲一区精品视频| 欧美日韩精品免费观看视欧美高清免费大片 | 天堂在线中文网官网| 日韩免费视频一区二区| 日韩激情综合网| 奇米精品一区二区三区四区| 久久久久久艹| 秋霞伦理一区| 日韩h在线观看| 日本少妇激情舌吻| 高清国产一区二区| 日本手机在线视频| 国产96在线亚洲| 国模精品视频一区二区| 亚洲欧美另类视频| 亚洲高清免费在线| xxx中文字幕| 午夜国产精品视频| 成人午夜黄色影院| 成人片在线看| 日韩精品一区二区三区视频 | 日本高清不卡一区二区三区视频| 亚洲国产99精品国自产| 国产午夜久久久| 国产麻豆9l精品三级站| 国产女人18毛片| 9l视频自拍蝌蚪9l视频成人| 欧美激情视频给我| 神马久久久久久久久久| 亚洲国产综合91精品麻豆| 男人添女人荫蒂国产| 99亚洲一区二区| 日韩高清国产一区在线观看| 中文字幕系列一区| 色婷婷综合成人| 国产aⅴ一区二区三区| 一区二区高清视频在线观看| youjizz.com国产| 美女视频一区免费观看| 五月天亚洲综合| 久久综合偷偷噜噜噜色| 久久久精品影院| 亚洲精品国产suv一区| 欧美日韩免费一区| 精品国产成人亚洲午夜福利| 国产制服丝袜一区| 久久这里只有精品8| 伊人久久大香线蕉无限次| 国产欧美在线视频| 欧美videossex| 亚洲天堂精品在线| 国产美女主播在线观看| 亚洲成人免费视| 欧美老女人性生活视频| 国产福利91精品| 十八禁视频网站在线观看| 五月精品视频| 精品国产一区二区三| 成人av集中营| 久久久久日韩精品久久久男男 | 亚洲精品自在久久| 97超碰人人模人人人爽人人爱| 黄色成人av在线| 全网免费在线播放视频入口| 国产色产综合色产在线视频 | a级片在线免费看| 在线免费av一区| 国产精品第9页| 亚洲激情在线激情| 青青草华人在线视频| 久久久蜜臀国产一区二区| 日本一卡二卡在线| 丁香激情综合国产| 可以看的av网址| 久久国产精品色| 男人添女人下面免费视频| 国产日韩欧美一区| 国产不卡一区二区视频| 一精品久久久| 亚洲天堂第一区| 国产精品伦理久久久久久| 日韩视频在线播放| 九一成人免费视频| 日本成人三级电影网站| 自拍亚洲一区| 麻豆精品传媒视频| 亚洲区小说区图片区qvod| 精品国产乱码久久久久| 国产成人精品亚洲线观看| 97人摸人人澡人人人超一碰| 懂色av色香蕉一区二区蜜桃| 成人免费xxxxx在线观看| 色综合视频一区二区三区44| 国产精品精品一区二区三区午夜版| 欧美www.| 国产精品都在这里| 素人一区二区三区| 国产女人精品视频| 日韩五码电影| 亚洲一区二区三| 日韩在线观看中文字幕| 国产成人精品免费视频大全最热 | 一本色道久久88综合亚洲精品ⅰ| 激情小说 在线视频| 亚洲天堂第一页| 91伦理视频在线观看| 日韩视频亚洲视频| av网站大全在线| 久久久久久亚洲精品| 日本不卡免费高清视频在线| 热re99久久精品国产66热| 欧美日一区二区三区| 91精品视频免费| 综合伊人久久| 久久久久久亚洲精品不卡4k岛国| 国产成人ay| 一级日韩一区在线观看| 欧美永久精品| 99热在线这里只有精品| 日韩精品午夜视频| 久久久久久久久久一区| 国产精品亚洲一区二区三区在线 | 精品久久久久中文慕人妻| 精品久久五月天| 欧美一区二区三区少妇| 日韩中文理论片| 日本不卡影院| 日韩av毛片网| 久久99成人| 欧美不卡福利| 中文字幕一区二区三三| 欧美久久久久久久久久久久久| 久久香蕉精品| 中文 日韩 欧美| 91麻豆国产在线观看| jizzjizz日本少妇| 亚洲一区二区精品视频| 99re国产在线| 欧美xxxx老人做受| 国产一级二级三级在线观看| 大胆人体色综合| 电影亚洲精品噜噜在线观看| 亚洲自拍小视频免费观看| 九九亚洲精品| 日韩欧美精品免费| 免费美女久久99| 国产伦精品一区二区三区88av| 国产视频一区不卡| 国产在线欧美在线| 欧美日韩国产大片| 天堂a√中文在线| 久久综合亚洲社区| 日韩福利一区| 不卡一区二区三区视频| 久久国产成人午夜av影院宅| 国内精品在线观看视频| 狠狠色狠狠色综合系列| 四虎国产精品成人免费入口| 亚洲午夜一区二区| 在线观看毛片视频| 亚洲欧美国产一本综合首页| 免费看电影在线| 成人激情黄色网| 欧美亚洲国产一区| 情侣黄网站免费看| 成人福利视频在线看| 国产成人av免费在线观看| 欧美视频在线一区| 青青草av免费在线观看| 久久久免费精品视频| 日本一区精品视频| 异国色恋浪漫潭| 精品在线免费视频| 欧美aaa级片| 色老汉av一区二区三区| 亚洲三级黄色片| 6080yy精品一区二区三区| 亚洲天堂av资源在线观看| 制服丝袜综合日韩欧美| 日韩成人伦理电影在线观看| 一卡二卡三卡四卡| 狠狠躁夜夜躁人人爽天天天天97| 色窝窝无码一区二区三区成人网站| 精品中文字幕乱| 国产高清视频一区二区| 国产免费色视频| 精品一区免费av| 国产精品视频一区二区在线观看| 欧美性一二三区| 777电影在线观看| 国产裸体写真av一区二区| 国产一区二区三区探花| 亚洲视频在线a| 国产欧美日韩三级| 亚洲精品国产精品乱码视色| 国产亚洲精品久久| 写真福利精品福利在线观看| 污视频在线免费观看一区二区三区| 久久中文字幕一区二区三区| 自拍偷拍中文字幕| 欧美在线免费观看视频| 国产美女性感在线观看懂色av| 国产精彩精品视频| 精品视频免费在线观看| 国产又大又黄又猛| 国产精品素人一区二区| 啪啪小视频网站| 色老头一区二区三区在线观看| 亚洲精品成人一区| 好吊色视频988gao在线观看| 成人深夜福利app| 亚洲天堂一区在线观看| 国产亚洲视频在线| **精品中文字幕一区二区三区| 国产视频在线观看网站| 26uuu欧美| 中文字幕一区2区3区| 欧美精品免费播放| 西野翔中文久久精品国产| 黄色免费网址大全| 国产精品水嫩水嫩| www.久久成人| 欧美综合在线第二页| 日韩久久综合| 一级少妇精品久久久久久久| 日韩欧美国产网站| 激情视频在线观看| 国产综合 伊人色| 麻豆国产一区二区| 国产亚洲精品久久777777| 亚洲欧美日韩国产精品| 成人国产精品一区二区网站| 福利视频一二区| 国产精品免费久久| 亚洲美女综合网| 国产久一一精品| 亚洲第一伊人| 日日碰狠狠添天天爽| 精品国产一区二区三区忘忧草 | 99国产在线视频| 免费在线成人| 欧美日韩在线视频免费| 亚洲欧美日韩中文在线| 亚洲不卡视频| 狠狠躁狠狠躁视频专区| 欧美日韩美女在线| 亚洲精品白浆| 一区二区精品视频| 91亚洲精华国产精华精华液| 国产欧美一级片| 国产精品999999|