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

如何構建高可用ZooKeeper集群

開發 架構
ZooKeeper 是 Apache 的一個頂級項目,為分布式應用提供高效、高可用的分布式協調服務,提供了諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知和分布式鎖等分布式基礎服務。

ZooKeeper 是 Apache 的一個***項目,為分布式應用提供高效、高可用的分布式協調服務,提供了諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知和分布式鎖等分布式基礎服務。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的穩定性,被廣泛地應用于諸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系統中。

本文的目標讀者是對 ZooKeeper 有一定了解的技術人員,將從 ZooKeeper 運行模式、集群組成、容災和水平擴容四方面逐步深入,最終構建出高可用的 ZooKeeper 集群。

一、運行模式

Zookeeper 有三種運行模式:單機模式、偽集群模式和集群模式。

1.1 單機模式

這種模式一般適用于開發測試環境,一方面我們沒有那么多機器資源,另外就是平時的開發調試并不需要極好的穩定性。

在 Linux 環境下運行單機模式需要執行以下步驟:

1. 準備 Java 運行環境

安裝 Java 1.6 或更高版本的 JDK,并配置好 Java 相關的環境變量 $JAVA_HOME 。

2. 下載 ZooKeeper 安裝包

下載地址:http://zookeeper.apache.org/releases.html。選擇***的 stable 版本并解壓到指定目錄,我們用 $ZK_HOME 表示該目錄。

3. 配置 zoo.cfg

***使用 ZooKeeper,需要將 $ZK_HOME 下的 zoo_sample.cfg 文件重命名為 zoo.cfg,并進行以下配置

1
2
3
4
5
6
tickTime=2000    ##Zookeeper最小時間單元,單位毫秒(ms),默認值為3000
dataDir=/var/lib/zookeeper    ##Zookeeper服務器存儲快照文件的目錄,必須配置
dataLogDir=/var/lib/log     ##Zookeeper服務器存儲事務日志的目錄,默認為dataDir
clientPort=2181    ##服務器對外服務端口,一般設置為2181
initLimit=5    ##Leader服務器等待Follower啟動并完成數據同步的時間,默認值10,表示tickTime的10倍
syncLimit=2    ##Leader服務器和Follower之間進行心跳檢測的***延時時間,默認值5,表示tickTime的5倍

4. 啟動服務

使用 $ZK_HOME/bin 目錄下的 zkServer.sh 腳本進行服務的啟動。

1.2 集群模式

一個 ZooKeeper 集群通常由一組機器組成,一般 3 臺以上就可以組成一個可用的 ZooKeeper 集群了。

組成 ZooKeeper 集群的每臺機器都會在內存中維護當前的服務器狀態,并且每臺機器之間都會互相保持通信。

重要的一點是,只要集群中存在超過一半的機器能夠正常工作,那么整個集群就能夠正常對外服務。

ZooKeeper 的客戶端程序會選擇和集群中的任意一臺服務器創建一個 TCP 連接,而且一旦客戶端和服務器斷開連接,客戶端就會自動連接到集群中的其他服務器。

那么如何運行 ZooKeeper 集群模式呢?首先假如我們有三臺服務器,IP 分別為 IP1、IP2 和 IP3,則需要執行以下步驟:

1. 準備 Java 運行環境(同上)

2. 下載 ZooKeeper 安裝包(同上)

3. 配置 zoo.cfg

1
2
3
4
5
6
7
8
9
tickTime=2000
dataDir=/var/lib/zookeeper
dataLogDir=/var/lib/log
clientPort=2181
initLimit=5
syncLimit=2
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888

可以看到,相比于單機模式,集群模式多了 server.id=host:port1:port2 的配置。

其中,id 被稱為 Server ID,用來標識該機器在集群中的機器序號(在每臺機器的 dataDir 目錄下創建 myid 文件,文件內容即為該機器對應的 Server ID 數字)。host 為機器 IP,port1 用于指定 Follower 服務器與 Leader 服務器進行通信和數據同步的端口,port2用于進行 Leader 選舉過程中的投票通信。

4. 創建 myid 文件

在 dataDir 目錄下創建名為 myid 的文件,在文件***行寫上對應的 Server ID。

5. 按照相同步驟,為其他機器配置 zoo.cfg 和 myid文件

6. 啟動服務

1.3 偽集群模式

這是一種特殊的集群模式,即集群的所有服務器都部署在一臺機器上。當你手頭上有一臺比較好的機器,如果作為單機模式進行部署,就會浪費資源,這種情況下,ZooKeeper允許你在一臺機器上通過啟動不同的端口來啟動多個 ZooKeeper 服務實例,以此來以集群的特性來對外服務。

這種模式下,只需要把 zoo.cfg 做如下修改:

1
2
3
4
5
6
7
8
9
tickTime=2000
dataDir=/var/lib/zookeeper
dataLogDir=/var/lib/log
clientPort=2181
initLimit=5
syncLimit=2
server.1=IP1:2888:3888
server.2=IP1:2889:3889
server.3=IP1:2890:3890

二、集群組成

要搭建一個高可用的 ZooKeeper 集群,我們首先需要確定好集群的規模。

關于 ZooKeeper 集群的服務器組成,相信很多對 ZooKeeper 了解但是理解不夠深入的讀者,都存在或曾經存在過這樣一個錯誤的認識:為了使得 ZooKeeper 集群能夠順利地選舉出 Leader,必須將 ZooKeeper 集群的服務器數部署成奇數。這里我們需要澄清的一點是:任意臺 ZooKeeper 服務器都能部署且能正常運行。

那么存在于這么多讀者中的這個錯誤認識是怎么回事呢?其實關于 ZooKeeper 集群服務器數,ZooKeeper 官方確實給出了關于奇數的建議,但絕大部分 ZooKeeper 用戶對于這個建議認識有偏差。在本書前面提到的“過半存活即可用”特性中,我們已經了解了,一個 ZooKeeper 集群如果要對外提供可用的服務,那么集群中必須要有過半的機器正常工作并且彼此之間能夠正常通信。基于這個特性,如果想搭建一個能夠允許 N 臺機器 down 掉的集群,那么就要部署一個由 2*N+1 臺服務器構成的 ZooKeeper 集群。因此,一個由 3 臺機器構成的 ZooKeeper 集群,能夠在掛掉 1 臺機器后依然正常工作,而對于一個由 5 臺服務器構成的 ZooKeeper 集群,能夠對 2 臺機器掛掉的情況進行容災。注意,如果是一個由6臺服務器構成的 ZooKeeper 集群,同樣只能夠掛掉 2 臺機器,因為如果掛掉 3 臺,剩下的機器就無法實現過半了。

因此,從上面的講解中,我們其實可以看出,對于一個由 6 臺機器構成的 ZooKeeper 集群來說,和一個由 5 臺機器構成的 ZooKeeper 集群,其在容災能力上并沒有任何顯著的優勢,反而多占用了一個服務器資源。基于這個原因,ZooKeeper 集群通常設計部署成奇數臺服務器即可。

三、容災

所謂容災,在 IT 行業通常是指我們的計算機信息系統具有的一種在遭受諸如火災、地震、斷電和其他基礎網絡設備故障等毀滅性災難的時候,依然能夠對外提供可用服務的能力。

對于一些普通的應用,為了達到容災標準,通常我們會選擇在多臺機器上進行部署來組成一個集群,這樣即使在集群的一臺或是若干臺機器出現故障的情況下,整個集群依然能夠對外提供可用的服務。

而對于一些核心應用,不僅要通過使用多臺機器構建集群的方式來提供服務,而且還要將集群中的機器部署在兩個機房,這樣的話,即使其中一個機房遭遇災難,依然能夠對外提供可用的服務。

上面講到的都是應用層面的容災模式,那么對于 ZooKeeper 這種底層組件來說,如何進行容災呢?講到這里,可能多少讀者會有疑問,ZooKeeper 既然已經解決了單點問題,那為什么還要進行容災呢?

3.1 單點問題

單點問題是分布式環境中最常見也是最經典的問題之一,在很多分布式系統中都會存在這樣的單點問題。

具體地說,單點問題是指在一個分布式系統中,如果某一個組件出現故障就會引起整個系統的可用性大大下降甚至是處于癱瘓狀態,那么我們就認為該組件存在單點問題。

ZooKeeper 確實已經很好地解決了單點問題。我們已經了解到,基于“過半”設計原則,ZooKeeper 在運行期間,集群中至少有過半的機器保存了***的數據。因此,只要集群中超過半數的機器還能夠正常工作,整個集群就能夠對外提供服務。

3.2 容災

解決了單點問題,是不是該考慮容災了呢?答案是否定的,在搭建一個高可用的集群的時候依然需要考慮容災問題。正如上面講到的,如果集群中超過半數的機器還在正常工作,集群就能夠對外提供正常的服務。

那么,如果整個機房出現災難性的事故,這時顯然已經不是單點問題的范疇了。

在進行 ZooKeeper 的容災方案設計過程中,我們要充分考慮到“過半原則”。也就是說,無論發生什么情況,我們必須保證 ZooKeeper 集群中有超過半數的機器能夠正常工作。因此,通常有以下兩種部署方案。

3.3.1 雙機房部署

在進行容災方案的設計時,我們通常是以機房為單位來考慮問題。在現實中,很多公司的機房規模并不大,因此雙機房部署是個比較常見的方案。但是遺憾的是,在目前版本的 ZooKeeper 中,還沒有辦法能夠在雙機房條件下實現比較好的容災效果——因為無論哪個機房發生異常情況,都有可能使得 ZooKeeper 集群中可用的機器無法超過半數。當然,在擁有兩個機房的場景下,通常有一個機房是主要機房(一般而言,公司會花費更多的錢去租用一個穩定性更好、設備更可靠的機房,這個機房就是主要機房,而另外一個機房則更加廉價一些)。我們唯一能做的,就是盡量在主要機房部署更多的機器。例如,對于一個由 7 臺機器組成的 ZooKeeper 集群,通常在主要機房中部署 4 臺機器,剩下的 3 臺機器部署到另外一個機房中。

3.3.2 三機房部署

既然在雙機房部署模式下并不能實現好的容災效果,那么對于有條件的公司,選擇三機房部署無疑是個更好的選擇,無論哪個機房發生了故障,剩下兩個機房的機器數量都超過半數。假如我們有三個機房可以部署服務,并且這三個機房間的網絡狀況良好,那么就可以在三個機房中都部署若干個機器來組成一個 ZooKeeper 集群。

我們假定構成 ZooKeeper 集群的機器總數為 N,在三個機房中部署的 ZooKeeper 服務器數分別為 N1、N2 和 N3,如果要使該 ZooKeeper 集群具有較好的容災能力,我們可以根據如下算法來計算 ZooKeeper 集群的機器部署方案。

1. 計算 N1

如果 ZooKeeper 集群的服務器總數是 N,那么:

1
N1 = (N-1)/2

在 Java 中,“/” 運算符會自動對計算結果向下取整操作。舉個例子,如果 N=8,那么 N1=3;如果 N=7,那么 N1 也等于 3。

2. 計算 N2 的可選值

N2 的計算規則和 N1 非常類似,只是 N的取值是在一個取值范圍內:

1
N2 的取值范圍是 1~(N-N1)/2

即如果 N=8,那么 N1=3,則 N2 的取值范圍就是 1~2,分別是 1 和 2。注意,1 和 2 僅僅是 N2 的可選值,并非最終值——如果 N2為某個可選值的時候,無法計算出 N3 的值,那么該可選值也無效。

3. 計算 N3,同時確定 N2 的值

很顯然,現在只剩下 N3 了,可以簡單的認為 N3 的取值就是剩下的機器數,即:

1
N3 = N - N1 - N2

只是 N3 的取值必須滿足 N3 < N1+N2。在滿足這個條件的基礎下,我們遍歷步驟 2 中計算得到的 N2 的可選值,即可得到三機房部署時每個機房的服務器數量了。

現在我們以 7 臺機器為例,來看看如何分配三機房的機器分布。根據算法的步驟 1,我們首先確定 N1 的取值為 3。根據算法的步驟 2,我們確定了 N2 的可選值為 1 和 2。***根據步驟 3,我們遍歷 N2 的可選值,即可得到兩種部署方案,分別是 (3,1,3) 和 (3,2,2)。以下是 Java 程序代碼對以上算法的一種簡單實現:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Allocation {
 
    static final int n = 7;
    public static void main(String[] args){
        int n1,n2,n3;
        n1 = (n-1) / 2;
        int n2_max = (n-n1) / 2;
        for(int i=1; i<=n2_max; i++){
            n2 = i;
            n3 = n - n1 -n2;
            if(n3 >= (n1+n2)){
                continue;
            }
            System.out.println("("+n1+","+n2+","+n3+")");
        }
    }
}

四、水平擴容

水平可擴容可以說是對一個分布式系統在高可用性方面提出的基本的,也是非常重要的一個要求,通過水平擴容能夠幫助系統在不進行或進行極少改進工作的前提下,快速提高系統對外的服務支撐能力。簡單地講,水平擴容就是向集群中添加更多的機器,以提高系統的服務質量。

很遺憾的是,ZooKeeper 在水平擴容擴容方面做得并不十分***,需要進行整個集群的重啟。通常有兩種重啟方式,一種是集群整體重啟,另外一種是逐臺進行服務器的重啟。

4.1 整體重啟

所謂集群整體重啟,就是先將整個集群停止,然后更新 ZooKeeper 的配置,然后再次啟動。如果在你的系統中,ZooKeeper 并不是個非常核心的組件,并且能夠允許短暫的服務停止(通常是幾秒鐘的時間間隔),那么不妨選擇這種方式。在整體重啟的過程中,所有該集群的客戶端都無法連接上集群。等到集群再次啟動,這些客戶端就能夠自動連接上——注意,整體啟動前建立起的客戶端會話,并不會因為此次整體重啟而失效。也就是說,在整體重啟期間花費的時間將不計入會話超時時間的計算中。

4.2 逐臺重啟

這種方式更適合絕大多數的實際場景。在這種方式中,每次僅僅重啟集群中的一臺機器,然后逐臺對整個集群中的機器進行重啟操作。這種方式可以在重啟期間依然保證集群對外的正常服務。

參考文章:《從Paxos到Zookeeper  分布式一致性原理與實踐》

責任編輯:張燕妮 來源: cyfonly
相關推薦

2017-02-06 11:43:57

ZooKeeper集群

2025-09-11 10:05:00

KafkaZookeeper運維

2014-05-15 09:54:40

heartbeatlvs集群

2012-07-04 11:21:07

OpenStack

2023-12-18 09:37:37

2023-11-07 07:30:18

Hadoop高可用

2012-02-15 22:40:23

heartbeat高可用

2022-05-11 13:55:18

高可用性分布式彈性

2018-01-12 14:20:37

數據庫MySQL高可用架構

2019-08-27 15:56:44

MySQL 互聯網數據庫

2025-04-01 01:04:00

Redis集群緩存

2023-12-05 09:31:46

數據庫架構

2022-06-02 12:56:25

容器網絡云原生

2010-11-15 18:37:41

高可用的廣域網絡

2012-11-09 15:32:28

2022-05-31 08:04:03

Redis高可用集群

2014-10-09 10:04:23

CentOS集群

2024-02-27 09:48:25

Redis集群數據庫

2022-07-08 14:17:18

Kubernetes集群高可用Linux

2017-01-17 10:25:06

HBase集群運維
點贊
收藏

51CTO技術棧公眾號

成人在线免费小视频| 欧美人与性动交α欧美精品图片| 亚洲一区亚洲| 亚洲天堂第二页| 8x拔播拔播x8国产精品| 朝桐光av一区二区三区| 一区二区精品伦理...| 久久久久亚洲综合| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 国产91亚洲精品一区二区三区| 熟女少妇a性色生活片毛片| 成人免费视频观看| 国产精品久久久久久户外露出| 91精品在线观| 黄网在线观看视频| 水蜜桃久久夜色精品一区| 日韩写真欧美这视频| 3d动漫一区二区三区| 国产免费av在线| 国产成人精品午夜视频免费| 欧美一级高清免费播放| 欧美一区二区三区粗大| 亚洲国产aⅴ精品一区二区| 亚洲国产日韩a在线播放性色| 国产呦系列欧美呦日韩呦| 国产精品suv一区| 欧美人成在线| 亚洲天堂网站在线观看视频| 天天干天天曰天天操| 国产蜜臀av在线播放| 久久你懂得1024| 91久久精品国产91久久性色tv| 成年人视频在线免费看| 最新欧美人z0oozo0| 亚洲欧美三级在线| 性一交一黄一片| 四虎成人在线| 亚洲最大的成人av| 一区二区三区偷拍| 黑人精品一区二区| 国内精品伊人久久久久av一坑 | 鲁鲁在线中文| 一区二区三区免费| 亚洲制服欧美久久| 免费国产在线视频| 9久草视频在线视频精品| 91九色国产社区在线观看| 五月天激情四射| 亚洲精选91| 欧美人在线视频| 国产一二三av| 精品日韩欧美一区| 亚洲免费福利视频| yy1111111| 亚洲日本va午夜在线电影| 欧美日韩一本到| 熟女人妇 成熟妇女系列视频| 超碰在线cao| 亚洲午夜视频在线观看| 午夜欧美性电影| 国产剧情在线观看| 97精品国产露脸对白| 国产精品二区二区三区| 风流老熟女一区二区三区| 国产乱子伦视频一区二区三区| 91精品久久久久久久久中文字幕| 亚洲视屏在线观看| 日本伊人色综合网| 国产精品va在线播放我和闺蜜| 国产精品人人人人| 免费日韩一区二区| 国产成人91久久精品| 欧美h在线观看| 免费在线欧美黄色| 欧美一区二区三区免费视| 欧美a∨亚洲欧美亚洲| 午夜在线a亚洲v天堂网2018| 欧美中文字幕第一页| 国产微拍精品一区| 久久久久久网| 国产精品亚洲第一区| 国产偷人爽久久久久久老妇app | 2024亚洲男人天堂| 午夜婷婷在线观看| 久久在线91| 国产精品视频在线播放| 11024精品一区二区三区日韩| 精品一区在线看| 99超碰麻豆| 天堂资源最新在线| 欧美中文日韩| 日韩美女在线观看| 自拍偷拍精品视频| 国产麻豆精品一区二区| 日韩电视剧免费观看网站| 国产精品久久久久久久99| 日韩精品免费视频一区二区三区| 精品欧美黑人一区二区三区| 欧美日韩人妻精品一区在线| 丝袜久久网站| 一色桃子一区二区| 黄色香蕉视频在线观看| 欧美成人亚洲| 91精品国产91久久久久久吃药 | 精品国产一区一区二区三亚瑟 | 日韩一区二区a片免费观看| 欧美一级精品| 久久天天躁狠狠躁夜夜躁2014| 欧美交换国产一区内射| 国产日韩精品视频一区二区三区 | 国产h视频在线观看| 亚洲国产精品精华液2区45| 妞干网这里只有精品| 免费看男女www网站入口在线| 欧美日韩精品二区第二页| 亚洲黄色小说在线观看| 久久91精品| 欧美日本中文字幕| 无码人妻精品一区二区三区不卡| 久久在线视频免费观看| 欧美久久久精品| 无码人妻av一区二区三区波多野| 国产福利一区二区| 欧洲一区二区日韩在线视频观看免费| 很黄的网站在线观看| 富二代精品短视频| 一区二区三区四区毛片| 老司机精品视频在线播放| 中文字幕亚洲字幕| 日本中文字幕免费观看| 九九视频精品免费| 狼狼综合久久久久综合网| 在线你懂的视频| 欧美午夜精品一区| 中文字幕在线播放视频| 午夜激情久久| 国产极品精品在线观看| 人人妻人人玩人人澡人人爽| 亚洲欧美日韩国产手机在线 | 欧美精品videosex| 欧美另类久久久品| av网站免费在线看| 久久av最新网址| 国产日韩在线一区二区三区| 精品欧美色视频网站在线观看| 欧美性猛交xxxx富婆| 国产乱淫av麻豆国产免费| 久久国产小视频| 全亚洲最色的网站在线观看| 四季av日韩精品一区| 亚洲精品免费在线观看| 热久久精品免费视频| 色爱av综合网| 九九九久久久久久| 中文字幕免费观看| 91色porny蝌蚪| 香港三级韩国三级日本三级| 超碰成人免费| 久久久亚洲天堂| 国产成a人亚洲精v品无码| ...av二区三区久久精品| 奇米视频888| 999国产精品视频| 国产日韩精品在线| 在线观看av的网站| 欧美日韩一级片在线观看| 手机毛片在线观看| 久久精品国产**网站演员| 日韩偷拍一区二区| 97精品国产99久久久久久免费| 亚洲性xxxx| 在线观看免费视频a| 中文字幕一区二区三区四区不卡| 中文字幕第38页| 五月婷婷亚洲| 99国产视频| heyzo中文字幕在线| 日韩一区二区精品在线观看| 久久久精品视频在线| 成人午夜在线视频| 欧美三级在线观看视频| 在线日韩一区| 国产区精品视频| a视频在线播放| 欧美成人官网二区| 91国产丝袜播放在线| 久久伊99综合婷婷久久伊| 国产精品无码一本二本三本色| 欧美一区二区三区高清视频| 国产精品日韩一区| 黄色网址视频在线观看| 精品精品国产高清一毛片一天堂| 日韩av男人天堂| 国产午夜精品一区二区| 91pony九色| 一本色道久久综合亚洲精品不卡| 免费久久99精品国产自| 自拍偷拍欧美日韩| 日韩中文在线中文网在线观看| 中文字幕一二区| 一区二区三区色| 欧美性xxxx图片| 蜜臀av一区二区在线观看| 男女啪啪的视频| 久久黄色影视| 国产美女精彩久久| av中文资源在线资源免费观看| 国产一区二区精品丝袜| www黄色网址| 欧美综合色免费| 久久精品视频8| 亚洲国产精品成人综合色在线婷婷| 亚洲成人av免费看| 一区二区蜜桃| 国产日韩一区二区| 欧美特黄色片| 91tv亚洲精品香蕉国产一区7ujn| 又爽又大又黄a级毛片在线视频| 亚洲高清久久网| 91午夜交换视频| 欧美性猛交xxxx免费看漫画| √天堂中文官网8在线| melody高清在线观看| 亚洲国产精品第一区二区| 精品日韩美女| 成人短视频软件网站大全app| 日韩av电影院| 蜜臀av在线| 久久久999国产| 电影在线高清| 亚洲精品福利资源站| 91激情在线观看| 欧美性xxxxx极品娇小| 中国一级片在线观看| 久久精品在这里| 在线免费看黄色片| 国产一区二区三区四| 久久这里只精品| 可以免费看不卡的av网站| 无码 制服 丝袜 国产 另类| 欧美日韩黑人| 欧美一卡2卡3卡4卡无卡免费观看水多多| 色妞ww精品视频7777| 国产精品视频成人| 日韩电影免费观| 2023亚洲男人天堂| 黄色影院在线看| 欧美老女人性生活| sese在线视频| 中文字幕精品在线| 加勒比一区二区三区在线| 日韩黄色av网站| 成人午夜免费福利| 日韩欧美精品三级| 精品国产va久久久久久久| 91.com视频| 亚洲一级特黄毛片| 色偷偷88欧美精品久久久| 成人午夜视频精品一区| 亚洲午夜激情网页| 国产真实乱人偷精品视频| 成人欧美一区二区三区黑人麻豆| 熟女人妻在线视频| 91在线porny国产在线看| 四虎精品一区二区| av一二三不卡影片| 中文乱码人妻一区二区三区视频| 国产精品影视天天线| 免费不卡av网站| 国产一区二区三区久久久| 黄色片免费网址| 国产成人在线视频免费播放| 香蕉视频色在线观看| 国产成人在线色| 国产又粗又猛又色| 26uuu国产电影一区二区| 动漫精品一区二区三区| 99免费精品视频| 熟女少妇内射日韩亚洲| 日本一区二区三区四区在线视频| 醉酒壮男gay强迫野外xx| 成人成人成人在线视频| 老熟女高潮一区二区三区| 99久久婷婷国产精品综合| aa一级黄色片| 中文字幕在线免费不卡| 欧美片一区二区| 欧美日韩亚洲精品内裤| 日本视频网站在线观看| 欧美性一二三区| av片免费播放| 亚洲精品日韩在线| 中国日本在线视频中文字幕| 欧美日韩成人在线播放| 日韩伦理在线一区| 国产精品自产拍在线观| jazzjazz国产精品久久| 欧美日韩精品久久| 日韩亚洲一区在线| 精品一二三四五区| 日韩在线a电影| 特黄特黄一级片| 久久青草欧美一区二区三区| 久久久精品成人| 亚洲成人免费观看| 丰满熟女人妻一区二区三| 日韩免费在线观看| 黄色小视频在线观看| 毛片精品免费在线观看| 日本在线啊啊| 成人黄在线观看| 精品少妇3p| 中文字幕黄色大片| 99亚洲视频| 亚洲制服中文字幕| 久久理论电影网| 国产a免费视频| 欧洲精品视频在线观看| 亚洲第九十九页| 永久免费精品影视网站| 蜜臀av在线| 国产精品扒开腿做爽爽爽男男| 成人国产在线| 久久国产一区二区| 亚洲精品一区二区在线看| 丰满人妻中伦妇伦精品app| 国产最新精品免费| 亚洲区免费视频| 亚洲成av人影院在线观看网| 一级日韩一级欧美| 亚洲欧美国内爽妇网| 国产黄a三级三级三级av在线看| 日韩av免费在线播放| 欧美日韩夜夜| 国产精品无码免费专区午夜| 久久国产婷婷国产香蕉| 国产又爽又黄无码无遮挡在线观看| 亚洲精品国产成人久久av盗摄 | 99成人在线视频| 无码aⅴ精品一区二区三区浪潮 | 国产一级做a爰片在线看免费| 欧美日免费三级在线| 欧美一级特黄aaaaaa| 久久99精品久久久久久青青91| 欧美激情三区| 欧美日韩三区四区| 老鸭窝91久久精品色噜噜导演| 国产精品无码自拍| 亚洲欧美一区二区久久| 一区二区日韩视频| 中文字幕亚洲字幕| 国产国产一区| 台湾成人av| 美女尤物国产一区| 羞羞在线观看视频| 欧美老年两性高潮| 香蕉视频在线免费看| 国产精品久久久久久久久久小说| 欧美日韩播放| 日本成人在线免费视频| 久久夜色精品国产噜噜av| 天天综合网入口| 日韩精品久久久久久福利| 松下纱荣子在线观看| 欧美日韩国产不卡在线看| 久久精品亚洲| 黄色一级片一级片| 宅男在线国产精品| 性欧美videos高清hd4k| 丁香婷婷久久久综合精品国产| 一区视频在线看| 午夜影院福利社| 精品久久久久久久久国产字幕 | 99热国产精品| 中文字幕xxxx| 久久久精品美女| 九九热hot精品视频在线播放| 黄色a级片免费| 亚洲三级久久久| 无码h黄肉3d动漫在线观看| 国产精品久久久久久久7电影| 91精品天堂福利在线观看| 亚洲国产精品无码久久久久高潮| 日本高清视频一区二区| 黄色在线观看网站| 精品亚洲欧美日韩| 久久国产精品免费| 国产精品99re| 色偷偷9999www| 久久中文资源| 国产视频1区2区3区| 亚洲成a人片在线观看中文| 在线看的av网站| 国产精选一区二区| 麻豆精品国产91久久久久久| 久久久久久免费观看| 一区二区福利视频| 超碰在线一区| 污视频网址在线观看| 欧美性生交大片免费|