青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
數據加載中……

網格實踐: 在網格中實現 SOA 和 Web 服務-----使用 GT4 和 Globus Resource Allocation Manager

保持與 Globus Toolkit 的同步更新對于維持最新的網格技巧來說非常重要。本文將介紹 Globus Toolkit 的版本 4,在 Service-Oriented Architecture(SOA)和 Web 服務領域中展示這個工具包,并詳細介紹 Grid Resource Allocation Manager 組件(GRAM),以及為網格作業提交、監視和控制例子創造條件的支持服務。

在本文中,我將在 Service-Oriented Architecture(SOA)和 Web 服務領域概要介紹 Globus Toolkit 4 的內容。重點介紹這個工具包中的 Grid Resource Allocation Manager(GRAM)組件(以及支持服務)—— 這是一組核心服務,可以幫助您在特定的資源上啟動作業、檢查狀態并獲取結果的實際操作。通過這個重點的介紹,我們將設置提交網格作業的一個例子中的步驟。網格作業的例子開始是以一個非常基本的例子形式出現的,然后逐漸向其中引入一些新的概念和特性,以支持更加復雜的作業 —— 最后通過 Globus GRAM 將多個作業提交給調度器。

不過首先讓我們來討論一下有關 SOA 和網格的問題。

SOA 和網格

SOA 是最近的一個熱點問題。盡管這個概念已經并不新鮮,但是它卻重新點燃了 Web 服務的活力。Web 服務可以通過一個使用標準協議仔細進行定義的接口為遠程用戶提供對程序的訪問。高級的服務可以在現有的服務之上進行構建,應用程序可以通過將一系列 Web 服務連接在一起而進行開發。最后,我們還有一個非常有用的重用方法。

如果應用程序提供了一個通用的可重用服務,并且它是無狀態的,需要少量的輸入和輸出數據,那么這個應用程序就應該打包為一個 Web 服務。為了增加重用性,甚至還有一種發現并調用現有服務的機制。這種方法對于在分布式環境中提供對常用應用程序的訪問來說非常有效,因為它是基于標準協議的,例如 SOAP over HTTP。

在將 SOA 應用到網格實現上時,有一些常見的應用程序應該以 Web 服務的形式提供。然而,很多常見的應用程序都是特定于網格實現類型的,無論研究、科學方面的網格,還是教育網格。如果我們希望在這些應用程序域之間使用一些可重用的服務,那么應該區分任何網格實現中所需要的服務:

  • 安全性
  • 執行管理
  • 通知
  • 復制
  • 資源發現
  • 監視

如果我們將網格實現中所需要的服務進行合并,就會得到一個基本的網格基礎設施,我們稱之為“面向服務的基礎設施”(Service-Oriented Infrastructure)。







GRAM 功能和服務

這種環境中的 Web 服務為支持通用的作業提交方法提供了一個基礎,當您希望在相關的輸入數據之間提供可執行文件時,可能要在產生輸出數據的同時訪問這些數據,然后在執行過程中與作業進行交互,此時這種方法非常有效。這看起來可能有些超前,但是現在的確已經有了提供這種功能的工具和技術。

Globus Toolkit 4.0 就是這樣一種工具。它對一組 Web 服務進行了打包,這些服務為我們提供了一個面向服務的基礎設施。應用程序關注的是某個具體的問題領域,而 Globus Toolkit 關注的則是整個基礎設施。Globus Web 服務可以幫助您對分布式基礎設施組件進行訪問和管理。

Globus Toolkit 的 GRAM 組件提供了一組 Web 服務,它們采用了 WS-Resource Framework,其設計目標是幫助您在網格環境中提交作業和管理作業。GRAM 可以用于那些需要信任證書、可靠執行以及協調文件步驟的作業。GRAM 可以幫助實現信任證書的管理,從而提交作業,監視作業的進展狀況,控制作業的執行情況,并分階段地處理相關的數據。不同的信任證書可以用來代表不同的功能。GRAM 提供了一個可靠的執行環境,并集成了多個專門用來在復雜環境中對作業執行管理進行優化的調度器。GRAM 和支持服務提供了文件分段傳輸的功能,甚至還提供了在作業運行時訪問輸出數據文件的功能,從而有效地實現對輸出數據的利用。

GRAM 調度器

當您提交一個作業時,GRAM 創建一個 ManagedJob 對象,并返回其句柄。然后您就可以使用這個句柄與這個作業進行交互,這實際上是一個 WS-Addressing Endpoint Reference(EPR)。稍后我們將討論一個典型的交互過程,并給出幾個例子;但是首先讓我們來了解一下支持作業執行所使用的基礎設施。

網格作業可能會消耗大量的計算周期,因此一個網格環境通常會包含很多資源集群。這些集群通常是由一個調度器進行控制的。調度器負責對資源的使用進行優化,從而按照定義好的策略來有效地執行作業。有很多調度器可以使用,其中包括 Load Sharing Facility、Condor 和 Portable Batch System。

GRAM 使用調度器適配器將作業描述語法轉換成調度器可以執行的命令。除了為調度器提供一個接口之外,GRAM 還包含了一種派生新的 UNIX? 進程來啟動作業的機制。這適用于小型的串行作業,它們在運行時不需要集群資源,也不需要共享內存或消息傳遞。在后面的例子中,我們就會使用這個簡單的派生進程。

派生進程使用一個 Fork Starter 程序來啟動并監視針對 GRAM 的作業進程。它還記錄了一些數據,例如啟動時間、結束時間以及該作業的退出代碼。當提交作業時,事件會被寫入日志文件中。當有重要的事件發生時,會繼續在后面添加日志。這些調度器日志文件是由稱為 Scheduler Event Generator (SEG)的進程進行監視的,它會讓 GRAM 通過監聽相關的事件并與其通信,來保持與作業狀態的同步。

GRAM 支持服務

GRAM 提供了作業和執行管理服務來提交、監視和控制作業,但是這都依賴于用來傳輸文件和管理證書所使用的支持服務。GridFTP 所提供的文件服務用來幫助 GRAM 實現對輸入和輸出文件的分段傳輸。證書管理服務處理證書對其他服務和所需要的分布式網格資源的委托。







GRAM 作業提交

現在我們已經基本了解了這些功能和支持服務,接下來讓我們討論一下實際的作業提交系統。

作業提交的基礎知識

可以使用應用程序編程接口(API)或者通過命令行工具,以編程的方式提交作業。命令行工具是用來測試 Globus 安裝的一種簡單方法,因此我們首先介紹一下這種方法。

globusrun-ws 命令行工具取代了 managed-job-globusrun 命令,它用來提交、監視和控制作業。它可以協調文件的分段傳輸、證書委托和身份驗證問題。信息可以使用命令行選項進行指定,也可以包含在一個基于 XML 的對象描述文件中。globusrun-ws 命令是同步執行的,因此作業在提交時并不會返回控制權。相反,它會通過顯示作業的狀態,以交互方式提供一些反饋。基于這些狀態信息,您可以選擇使用 Ctrl C 來取消某個作業。

作業提交的前提條件

所有的用戶都必須通過身份驗證并具有有效的證書才可以提交作業。這個作業可能需要將證書委托給他人來執行遠程操作,例如分段傳輸文件。

下面的例子假設已經使用 grid-proxy-init 命令生成了一個有效的代理。然而,證書也可以通過作業請求進行傳輸,或者上傳到 Delegation 服務中。清單 1 是提交一個簡單作業(用來獲取日期)的例子。-c 選項指定要運行 /bin/date 命令。


清單 1. 提交作業來獲取日期
												
																		
[globust@gt4-test ~]$ grid-proxy-init
Your identity: /C=US/O=UTAustin/OU=TACC/CN=Globus User/UID=globust
Enter GRID pass phrase for this identity:
Creating proxy .............................................. Done
Your proxy is valid until: Thu May 19 23:35:47 2005

[globust@gt4-test ~]$ globusrun-ws -submit -c /bin/date
Submitting job...Done.
Job ID: uuid:254e353e-c884-11d9-9304-0011435a15ac
Termination time: 05/20/2005 16:36 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job...Done.

												
										

作業描述文件

在命令行中指定多個作業參數可能會是一件令人討厭的事情。當有多個參數與一個作業相關時,可以使用作業描述文件。

作業是使用 -f 選項提交的,后面跟著作業描述文件名。在作業描述文件中可以使用變量。在提交作業時,GRAM 會處理作業描述文件,并替換變量的值。

在下面這個例子中,變量 GLOBUS_USER_HOME 對應我的主目錄。這個變量會被替換成解析后的值,這是到主目錄的實際路徑。在清單 2 中,我們提交了一個使用提交描述文件 simple_test.xml 描述的作業。這個作業使用 echo 命令將輸入參數重定向到標準輸出上。在這里,我們規定,應該將標準輸出重定向到主目錄中的 stdout 文件。


清單 2. 使用作業描述文件
												
																		
globust@gt4-test ~]$ globusrun-ws -submit -f simple_test.xml 
Submitting job...Done.
Job ID: uuid:db96c126-c884-11d9-8a94-0011435a15ac
Termination time: 05/20/2005 16:41 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job...Done.

[globust@gt4-test ~]$ cat simple_test.xml 
<job>
    <executable>/bin/echo</executable>
    <argument>Wow, we're submitting Grid Jobs!</argument>
    <stdout>${GLOBUS_USER_HOME}/stdout</stdout>
    <stderr>${GLOBUS_USER_HOME}/stderr</stderr>
</job>

												
										

批處理模式

除了同步模式之外,globusrun-ws 命令還可以使用批處理模式來提交后臺作業。

要使用批處理模式,則需要指定一個文件,其中 GRAM 應該將 Job EPR 保存到所管理的作業資源中,然后在與這個作業相關的一系列命令中指定這個文件。

在這個例子中,我們將提交與上一個例子相同的作業,但是我們使用 -batch 選項指定它應該在后臺運行。控制權會立即返回,因此您可以在這個作業運行的同時執行其他工作。后臺作業的狀態可以使用 globusrun-ws 命令的 -status 參數進行查詢,并指定 -job-epr-file,該參數可以確定與這個作業相關的 ManagedJob 對象。


清單 3. 在后臺運行清單 2 中的作業
												
																		
globust@gt4-test ~]$ globusrun-ws -submit -batch -f simple_test.xml -o st.epr
Submitting job...Done.
Job ID: uuid:db96c126-c884-11d9-8a94-0011435a15ac
Termination time: 05/20/2005 16:41 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job...Done.

[globust@gt4-test ~]$ globusrun-ws -status -job-epr-file st.epr
Submitting job...Done.

												
										

作業變量

您可以在作業描述文件中為這個作業設置環境變量,并通過指定一個 count 參數來控制該作業運行的次數。在下面這個例子中,環境變量 CONDOR_CONFIG 已經設置,以指定 condor 配置文件的位置;count 變量說明這個作業應該運行 25 次。


清單 4. 確定一個作業運行多少次
												
																		
    <environment>
        <name>CONDOR_CONFIG</name>
        <value>/usr/local/condor/condor-6.7.7/etc/condor_config</value>
    </environment>

    ...
 
    <count>25</count>

												
										

文件分段傳輸

作業描述符文件可以包括文件傳輸指令,它控制輸入和輸出文件的分段傳輸。這些指令使用了 Reliable FileTransfer(RFT)語法,在指定源 URL 和目的 URL 時可以支持第三方的文件傳輸。

RFT 服務是通過 GRAM 調用來分段傳輸輸入文件和輸出文件的。RFT 類似于一個 GridFTP 客戶端,通過持續進行傳輸來管理數據的傳輸和狀態信息。它通過支持檢查點和為崩潰的文件傳輸提供重啟功能而增強了可靠性。

除了要對輸入和輸出文件進行分段傳輸之外,GridFTP 還可以用來在作業執行期間對輸出文件進行監視。GridFTP 可以檢查輸出文件的狀態,并傳輸任何新信息,從而有效地處理輸出數據。

清單 5 給出了文件分段傳輸指令,它用來從一個遠程機器 gt4-test1 上獲取一個文件,并將其復制到 /tmp/simpleTestFile 中的本地文件系統中。


清單 5. 文件分段傳輸指令
												
																		
<fileStageIn>
     <transfer>
         <sourceUrl>gsiftp://gt4-test1:2811/tmp/simpleTestFile</sourceUrl>
         <destinationUrl>file:////tmp/simpleTestFile</destinationUrl>
     </transfer>
</fileStageIn>

												
										

除了對文件進行分段傳輸之外,還可以使用 <fileCleanUp> 指令自動刪除文件,如清單 6 所示:


清單 6. 自動清除文件
												
																		
<job>
     <fileCleanUp>
        <deletion>
            <file>file:////tmp/simpleTestFile</file>
        </deletion>
    </fileCleanUp>
</job>

												
										

多作業支持

作業描述 XML 模式支持多作業 的概念,即由多個作業或子作業組成的作業。這種方法可以用來將一組相關的作業綁定在一起,并將其一次提交給 GRAM。

GRAM 使用一個集中地點來對多作業環境中的各個進程進行同步。這用于那些在完成其他計算之前需要在執行過程中的某個特定地方集中的并行作業。

作業描述符文件中的每個子作業都必須為工廠指定一個端點。這允許并行地向多個主機提交作業。

下面這個例子為一個由兩個子作業做成的作業使用了一個多作業的描述文件 —— 一個作業用來獲取日期,另外一個作業使用 echo 命令將輸入參數傳遞給標準輸出。第一個子作業的輸出被發送到主目錄中的 stdout.p1 文件中,第二個子作業的輸出被發送到 stdout.p2 文件中。


清單 7. 兩個作業,只花一份錢
												
																		
<?xml version="1.0" encoding="UTF-8"?>
<multiJob xmlns:gram="http://www.globus.org/namespaces/2004/10/gram/job" 
     xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
    <factoryEndpoint>
        <wsa:Address>
            https://localhost:8443/wsrf/services/ManagedJobFactoryService
        </wsa:Address>
        <wsa:ReferenceProperties>
            <gram:ResourceID>Multi</gram:ResourceID>
        </wsa:ReferenceProperties>
    </factoryEndpoint>
    <directory>${GLOBUS_LOCATION}</directory>
    <count>1</count>

    <job>
        <factoryEndpoint>
            <wsa:Address>https://localhost:8443/wsrf/services/ManagedJ
            obFactoryService</wsa:Address>
            <wsa:ReferenceProperties>
                <gram:ResourceID>Fork</gram:ResourceID>
            </wsa:ReferenceProperties>
        </factoryEndpoint>
        <executable>/bin/date</executable>
        <stdout>${GLOBUS_USER_HOME}/stdout.p1</stdout>
        <stderr>${GLOBUS_USER_HOME}/stderr.p1</stderr>
        <count>2</count>
    </job>

    <job>
        <factoryEndpoint>
            <wsa:Address>https://localhost:8443/wsrf/services/ManagedJ
            obFactoryService</wsa:Address>
            <wsa:ReferenceProperties>
                <gram:ResourceID>Fork</gram:ResourceID>
            </wsa:ReferenceProperties>
        </factoryEndpoint>
        <executable>/bin/echo</executable>
        <argument>Hello World!</argument>        
        <stdout>${GLOBUS_USER_HOME}/stdout.p2</stdout>
        <stderr>${GLOBUS_USER_HOME}/stderr.p2</stderr>
        <count>1</count>
    </job>

</multiJob>

												
										







調度器

上面我們簡要介紹了網格是如何包含在調度器的控制之下進行操作的集群資源。調度器會對吞吐量進行性能和效率的優化。

GRAM 使用實現 GRAM WS 適配器插件 API 的適配器來對調度器進行協調。這些調度器的安裝和配置應該在安裝或配置 Globus Toolkit 之前完成。

GRAM 調度器適配器包含在 Globus PBS (Portable Batch System)的發行版、 Condor 和 Platform Load Sharing Facility (LSF)中。 Globus 文檔介紹了 PBS 的設置步驟,因此我們下面將介紹一下 Condor 和 Platform LSF。我們假設您已經正確安裝并配置了 Globus(這包括導出的環境變量,例如 ANT_HOMEJAVA_HOMEGLOBUS_LOCATION)。在 Globus 的安裝目錄中,執行下面的命令:

												
														% configure -prefix=$GLOBUS_LOCATION -enable-wsgram-lsf -enable-wsgram-condor
% make
% make install

												
										

假設這個步驟成功完成了,那么在 $GLOBUS_LOCATION/etc 目錄中,每個調度器都會有一個 gram-service,如清單 8 所示:


清單 8. 創建一個 gram-service 監聽
												
																		
[mausolf@gt4-test etc]$ pwd
/usr/local/globus/globus-4.0.0/etc
 [mausolf@gt4-test etc]$ ls gram-service-*
gram-service-Condor:
jndi-config.xml

gram-service-Lsf:
jndi-config.xml

gram-service-Fork:
jndi-config.xml

gram-service-Multi:
jndi-config.xml

												
										

jobType

在提交作業時,您可以使用 jobType 指令指定使用哪一個調度器。在 jobType 中指定的名稱必須與 JNDI 配置文件中這個服務所使用的名稱完全匹配。

例如,在下面這個例子中,作業 jndi-config.xml (位于 $GLOBUS_LOCATION/etc/gram-service-condor 目錄中)將名稱 condor 賦予這個服務。下面這個例子使用了一個作業描述文件 simple2test.xml 將作業提交給 condor


清單 9. 指定使用哪個調度器
												
																		
<?xml version="1.0" encoding="UTF-8"?>
<job>
    <executable>/usr/local/condor/condor-6.7.7/examples/sh_loop</executable>
    <directory>${GLOBUS_USER_HOME}</directory>
    <argument>123</argument>
    <stdin>/dev/null</stdin>
    <stdout>${GLOBUS_USER_HOME}/stdout</stdout>
    <stderr>${GLOBUS_USER_HOME}/stderr</stderr>
    <jobType>condor</jobType>
</job>

												
										

可以在命令行中使用 globusrun-ws 來提交這個作業,如下所示:

												
														[globust@gt4-test ~]$ globusrun-ws -submit -batch -f simple2test.xml -o st2.epr

												
										

在這個例子中,這個作業是在后臺運行的。控制權會立即返回,您可以通過提供 job-epr-file 來獲得后臺作業的狀態,如下所示:

												
														[globust@gt4-test ~]$ globusrun-ws -status -job-epr-file st2.epr
Current job state: Done

讓我們來看一個更加真實的多作業提交系統,它可以用類似的方式提交作業。因為我們要提交多作業,所以將 jobType 指定為 Condor,然后通過 GRAM 和 Condor 來查詢其狀態。


清單 10. 為多作業指定調度器
												
																		
 [globust@gt4-test ~]$ globusrun-ws -submit -batch -f multi3test.xml -o mt3.epr
Delegating user credentials...Done.
Submitting job...Done.
Job ID: uuid:b701732a-c95f-11d9-870d-0011435a15ac
Termination time: 05/21/2005 18:48 GMT

 [globust@gt4-test ~]$ condor_q
 Submitter: gt4-test.tacc.utexas.edu : <129.114.50.64:54109> 
 : gt4-test.tacc.utexas.edu
 ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD                
 62.0   globust         5/24 11:07   0+00:00:04 R  0   0.0  sh_loop 1100      
 63.0   globust         5/24 11:07   0+00:00:00 R  0   0.0  sh_loop 1200      

2 jobs; 0 idle, 2 running, 0 held


 [globust@gt4-test ~]$ globusrun-ws -status -job-epr-file mt3.epr
Current job state: Pending 

												
										

清單 11 給出了用于清單 10 中的多作業提交的作業描述文件。所指定的可執行文件 sh_loop 是 Condor 發行版中提供的一個示例程序,它會循環一段指定的時間。之所以選擇這個例子是因為它非常簡單,而且可以指定作業的持續時間,這讓我們可以使用 Condor 和 GRAM 工具來展示查詢作業的狀態。


清單 11. 清單 10 中作業所使用的作業描述符
												
																		
[globust@gt4-test ~]$ cat multi3test.xml 
<?xml version="1.0" encoding="UTF-8"?>
<multiJob xmlns:gram="http://www.globus.org/namespaces/2004/10/gram/job" 
     xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
    <factoryEndpoint>
        <wsa:Address>
            https://gt4-test.tacc.utexas.edu:8443/wsrf/services/ManagedJ
            obFactoryService
        </wsa:Address>
        <wsa:ReferenceProperties>
            <gram:ResourceID>Multi</gram:ResourceID>
        </wsa:ReferenceProperties>
    </factoryEndpoint>
    <directory>${GLOBUS_LOCATION}</directory>
    <count>1</count>

    <job>
        <factoryEndpoint>
            <wsa:Address>https://gt4-test.tacc.utexas.edu:8443/wsrf/serv
            ices/ManagedJobFactoryService</wsa:Address>
            <wsa:ReferenceProperties>
                <gram:ResourceID>Condor</gram:ResourceID>
            </wsa:ReferenceProperties>
        </factoryEndpoint>
        <executable>/home/mausolf/sh_loop</executable>
        <argument>1100</argument>        
        <stdout>${GLOBUS_USER_HOME}/stdoutM3.p1</stdout>
        <stderr>${GLOBUS_USER_HOME}/stderrM3.p1</stderr>
        <count>1</count>
    </job>

    <job>
        <factoryEndpoint>
            <wsa:Address>https://gt4-test.tacc.utexas.edu:8443/wsrf/serv
            ices/ManagedJobFactoryService</wsa:Address>
            <wsa:ReferenceProperties>
                <gram:ResourceID>Condor</gram:ResourceID>
            </wsa:ReferenceProperties>
        </factoryEndpoint>
        <executable>/home/mausolf/sh_loop</executable>
        <argument>1200</argument>        
        <stdout>${GLOBUS_USER_HOME}/stdoutM2.p2</stdout>
        <stderr>${GLOBUS_USER_HOME}/stderrM2.p2</stderr>
        <count>1</count>
    </job>

</multiJob>

												
										







結束語

本文對 Globus Toolkit 4.0 進行了簡要的介紹,并詳細介紹了 GRAM 和支持服務的內容。文中還包括幾個網格作業提交的例子,用來提供通過 GRAM 來提交作業和監視作業的經驗。在更復雜和實際的環境中,GRAM 還需要作出一個明智的決定,來確定將作業提交到哪一個資源和調度器上。這些信息可以通過 MDS(Monitoring and Discovery Service)獲得。

posted on 2006-04-17 03:53 wsdfsdf 閱讀(428) 評論(0)  編輯 收藏 引用 所屬分類: 技術文章

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜精品久久| 欧美亚洲视频在线观看| 亚洲视频在线观看三级| 99国内精品久久久久久久软件| 亚洲高清不卡在线观看| 最新国产成人av网站网址麻豆 | 伊人成人在线| 韩国三级电影久久久久久| 一区二区在线看| 亚洲国产精品久久久久婷婷884| 亚洲国产国产亚洲一二三| 99在线热播精品免费| 性感少妇一区| 欧美国产一区二区| 亚洲午夜精品久久久久久浪潮 | 欧美日本韩国一区| 国产精品视频精品| 亚洲福利电影| 性欧美xxxx大乳国产app| 麻豆成人在线播放| 夜夜夜精品看看| 久久综合九九| 国产精品日韩精品| 亚洲国产免费| 午夜久久tv| 亚洲国产综合在线看不卡| 最新热久久免费视频| 亚洲无线观看| 欧美激情一区二区三区四区| 国产日韩欧美不卡| 亚洲视频在线一区| 欧美福利在线| 亚洲欧美日韩国产综合在线| 欧美 日韩 国产在线| 国产欧美日韩综合一区在线观看| 亚洲欧洲在线视频| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲精品乱码| 麻豆成人综合网| 国产嫩草一区二区三区在线观看| 亚洲国产1区| 久久久精品免费视频| 99在线热播精品免费99热| 久久久久久久精| 国产精品视频精品| 艳女tv在线观看国产一区| 久久精品国产一区二区三| 亚洲精品在线一区二区| 久久精品中文字幕免费mv| 欧美日韩中文在线| 日韩一区二区高清| 亚洲精品国产无天堂网2021| 99精品视频免费| 久久亚洲影院| 亚欧美中日韩视频| 国产欧美一区二区在线观看| 一区二区日韩伦理片| 亚洲福利视频三区| 久久偷窥视频| 亚洲电影欧美电影有声小说| 久久婷婷影院| 久久久亚洲国产美女国产盗摄| 国产亚洲欧美另类一区二区三区| 亚洲欧美日韩国产成人精品影院| 日韩天堂av| 国产精品va在线| 亚洲欧美日韩人成在线播放| 99riav久久精品riav| 欧美日韩一区二区视频在线 | 久久久综合激的五月天| 国产一区二区成人久久免费影院| 久久成人18免费网站| 午夜精品在线| 国内精品久久久久久久影视麻豆 | 久久综合伊人77777麻豆| 亚欧成人在线| 亚洲电影中文字幕| 亚洲激情网站免费观看| 欧美日韩在线精品一区二区三区| 亚洲一级在线| 欧美一区二区精品久久911| 在线播放中文字幕一区| 亚洲电影免费| 欧美色图五月天| 欧美在线视频不卡| 久久中文字幕一区| 中文在线资源观看网站视频免费不卡 | 亚洲美女视频在线观看| 9色精品在线| 国产日韩欧美一区二区| 久久国产精品久久w女人spa| 久久精品91久久香蕉加勒比| 亚洲精品网站在线播放gif| 亚洲美女黄色| 韩国亚洲精品| 一区二区欧美日韩视频| 国产偷久久久精品专区| 亚洲国产精品传媒在线观看 | 久久精品视频网| 夜夜嗨av一区二区三区| 午夜精品国产更新| 91久久久久久久久| 久久夜色精品| 欧美精品黄色| 日韩亚洲一区二区| 午夜精品一区二区在线观看| 亚洲国产另类久久久精品极度| 亚洲美女av电影| 激情成人综合网| 一本色道久久综合亚洲91| 国模吧视频一区| 在线视频你懂得一区| 亚洲高清在线观看一区| 亚洲专区一区| 夜夜嗨av一区二区三区四季av| 午夜日本精品| 亚洲一区二区三区四区中文| 久久综合亚洲社区| 久久精品一二三区| 国产精品久久久久av| 亚洲国产岛国毛片在线| 国一区二区在线观看| 亚洲无人区一区| 一二三区精品| 欧美成人一二三| 欧美激情亚洲综合一区| 黄色在线一区| 久久精品中文字幕一区| 久久国产乱子精品免费女| 国产精品草草| 一本高清dvd不卡在线观看| 亚洲欧洲在线一区| 欧美成人精品激情在线观看 | 亚洲国产一区二区三区a毛片 | 欧美成人黑人xx视频免费观看| 国产欧美精品va在线观看| 一本色道久久综合亚洲精品按摩| 亚洲精品一区二区三区四区高清| 美腿丝袜亚洲色图| 欧美激情按摩在线| 亚洲伦理在线免费看| 欧美激情 亚洲a∨综合| 亚洲国产精品久久久久| 亚洲精品在线免费| 欧美日韩精品一区二区天天拍小说| 亚洲福利视频二区| 一区二区三区四区国产精品| 欧美日韩视频在线一区二区| 一本综合久久| 久久精品国产精品亚洲综合| 韩国免费一区| 欧美电影免费观看网站| 亚洲精品女人| 夜夜爽www精品| 国产精品丝袜白浆摸在线| 欧美一区二区三区在线免费观看| 久久久午夜精品| 亚洲精品在线观| 欧美视频中文字幕| 性欧美暴力猛交另类hd| 免费日韩成人| 亚洲一区二区三区免费视频| 国产精品制服诱惑| 久久一综合视频| 一区二区三区日韩欧美精品| 久久福利毛片| 久久久久久噜噜噜久久久精品 | 亚洲黄一区二区| 亚洲一二三四久久| 国一区二区在线观看| 欧美国产免费| 亚洲欧美日韩一区二区三区在线| 久久综合福利| 99成人精品| 国产日韩欧美精品| 欧美另类69精品久久久久9999| 亚洲女同精品视频| 在线观看日韩av电影| 亚洲人成网站777色婷婷| 羞羞答答国产精品www一本| 在线一区二区三区四区五区| 久久手机免费观看| 99精品久久久| 欧美精品尤物在线| 欧美激情久久久久| 宅男噜噜噜66一区二区| 国产在线视频欧美| 亚洲小说区图片区| 亚洲欧洲精品天堂一级| 欧美一区亚洲二区| 黄色成人在线网址| 午夜精品福利视频| 亚洲第一偷拍| 久久亚洲午夜电影| 午夜在线观看欧美| 91久久精品国产91久久性色tv| 欧美sm重口味系列视频在线观看| 亚洲男女自偷自拍| 在线视频欧美日韩| 亚洲精品日产精品乱码不卡|