婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)

基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)

熱門標(biāo)簽:百度地圖標(biāo)注公司位置要多少錢 地圖標(biāo)注黃河的位置 濮陽好的聯(lián)通400電話申請 400電話號碼辦理多少錢 承德地圖標(biāo)注公司 靈圖uu電子寵物店地圖標(biāo)注 地圖標(biāo)注如何改成微信號 虛假地圖標(biāo)注 山東企業(yè)外呼系統(tǒng)公司

 這段時間正在學(xué)習(xí)Redis和容器相關(guān)的內(nèi)容,因此想通過docker搭建一套redis主從系統(tǒng)來加深理解。看這篇文章可能你需要一定的docker基礎(chǔ),以及對redis主從和哨兵機制有所了解。

這次實驗準(zhǔn)備了三臺云主機,系統(tǒng)為Debian,ip分別為:

35.236.172.131 ,
35.201.200.251,
34.80.172.42。

首先分別在這三臺主機上安裝docker,然后每臺主機上啟動一個redis容器,運行redis-server服務(wù),其中35.236.172.131作為master,另外兩臺機器作為slave,最后在三臺主機上再分別啟動一個redis容器,運行redis-sentinel。為什么還是redis容器呢?因為sentinel實際上還是一個redis-server,只不過是以sentinel模式執(zhí)行,只能處理sentinel需要的一些命令。

安裝docker

docker的安裝有很多種方法,這里就不介紹了。本次使用腳本安裝docker,Debian系統(tǒng)腳本安裝如下,其他系統(tǒng)可以參考Docker官網(wǎng)的安裝方法:

https://docs.docker.com/install/linux/docker-ce/debian/

不過下面的命令在官網(wǎng)命令的基礎(chǔ)上修改鏡像源為阿里云,因為國內(nèi)鏡像往往會快一些。

腳本安裝docker

在物理主機或者云虛擬主機上運行下面的命令就可以完成docker安裝了,當(dāng)然我是在Debian系統(tǒng)上,其他系統(tǒng)相應(yīng)參考官網(wǎng)上的方法。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

啟動docker CE

docker是以客戶端和服務(wù)器模型運行的,因此需要先運行docker的服務(wù)器,服務(wù)器以daemon的形式運行。docker CE是docker的社區(qū)版本。

$ sudo systemctl enable docker
$ sudo systemctl start docker

驗證docker是否安裝成功

下面的這條命令是從docker的官方倉庫拉取一個名為hello-world的鏡像,并通過這個鏡像啟動一個容器。

$ docker run hello-world

如果運行結(jié)果如下,出現(xiàn)了Hello from Docker!,說明docker安裝成功了

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Downloaded newer image for hello-world:latest
 
Hello from Docker!
This message shows that your installation appears to be working correctly.
 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
  (amd64)
 3. The Docker daemon created a new container from that image which runs the
  executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
  to your terminal.
 
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
 
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
 
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

啟動容器搭建主從

docker安裝成功后,可以開始部署redis服務(wù)了。先從docker官方公共倉庫拉取redis鏡像,然后修改redis服務(wù)的配置文件,最后啟動容器,啟動redis服務(wù)器。在多臺機器上運行redis服務(wù)器,并建立主從關(guān)系。

redis的主從是實現(xiàn)redis集群和redis哨兵高可用的基礎(chǔ),redis的主從結(jié)構(gòu)使從可以復(fù)制主上的數(shù)據(jù),如果從與主之間網(wǎng)絡(luò)斷開,從會自動重連到主上。

獲取Redis鏡像

下面的命令會拉取最新的官方版本的redis鏡像

$ docker pull redis

查看鏡像

$ docker image ls
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
redis        latest       bb0ab8a99fe6    7 days ago     95MB
hello-world     latest       fce289e99eb9    6 months ago    1.84kB

獲取并修改redis配置文件

redis官方提供了一個配置文件樣例,通過wget工具下載下來。我用的root用戶,就直接下載到/root目錄里了。

$ wget http://download.redis.io/redis-stable/redis.conf

打開下載下來的文件后,可以看到配置有很多。我只是搭建服務(wù)進行試驗所以只修改必要的幾項。如果要運用到線上,那必須所有的配置都按需求進行修改。

其中redis服務(wù)器的master和slave角色使用的配置文件還會有些不同,下面分別進行說明。

對于master而言,配置文件修改以下幾項

# 注釋這一行,表示Redis可以接受任意ip的連接
# bind 127.0.0.1 
 
# 關(guān)閉保護模式
protected-mode no 
 
# 讓redis服務(wù)后臺運行
daemonize yes 
 
# 設(shè)定密碼(可選,如果這里開啟了密碼要求,slave的配置里就要加這個密碼. 只是練習(xí)配置,就不使用密碼認證了)
# requirepass masterpassword 
 
# 配置日志路徑,為了便于排查問題,指定redis的日志文件目錄
logfile "/var/log/redis/redis.log"

對于slave而言,配置文件修改以下幾項:

# 注釋這一行,表示Redis可以接受任意ip的連接
# bind 127.0.0.1 
 
# 關(guān)閉保護模式
protected-mode no 
 
# 讓redis服務(wù)后臺運行
daemonize yes 
 
# 設(shè)定密碼(可選,如果這里開啟了密碼要求,slave的配置里就要加這個密碼)
requirepass masterpassword 
 
# 設(shè)定主庫的密碼,用于認證,如果主庫開啟了requirepass選項這里就必須填相應(yīng)的密碼
masterauth <master-password>
 
# 設(shè)定master的IP和端口號,redis配置文件中的默認端口號是6379
# 低版本的redis這里會是slaveof,意思是一樣的,因為slave是比較敏感的詞匯,所以在redis后面的版本中不在使用slave的概念,取而代之的是replica
# 將35.236.172.131做為主,其余兩臺機器做從。ip和端口號按照機器和配置做相應(yīng)修改。
replicaof 35.236.172.131 6379
 
# 配置日志路徑,為了便于排查問題,指定redis的日志文件目錄
logfile "/var/log/redis/redis.log"

啟動容器

分別在主機和從機上按照上面的方法建立好配置文件,檢查無誤后就可以開始啟動容器了。

我們在三臺機器上分別將容器別名指定為redis-1, redis-2, redis-3,這樣便于區(qū)分與說明,docker通過--name參數(shù)來指定容器的別名。redis-1是master上容器的別名,redis-2和redis-3是兩個slave上的別名。

下面以運行redis-3容器為例說明容器的啟動過程。另外兩臺機器上的容器redis-1和redis-2操作是相同的,只是要注意master的配置文件和slave不同。不過首先要啟動主服務(wù)器,也就是redis-1容器。然后再啟動redis-2和redis-3。

# 首先以后臺模式運行容器
$ docker run -it --name redis-3 -v /root/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash
# 容器成功啟動后,會打印一個長串的容器ID
a3952342094dfd5a56838cb6becb5faa7a34f1dbafb7e8c506e9bd7bb1c2951b
# 通過ps命令查看容器的狀態(tài),可以看到redis-3已經(jīng)啟動
$ docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
a3952342094d    redis        "docker-entrypoint.s…"  8 minutes ago    Up 8 minutes    0.0.0.0:6379->6379/tcp  redis-3

上面已經(jīng)啟動了容器,接下來進入容器里啟動redis服務(wù)器。

# 以交互模式進入容器redis-3
$ docker exec -it redis-3 bash
 
# 創(chuàng)建日志文件目錄
$ mkdir /var/log/redis/
$ touch /var/log/redis/redis.log
 
# 啟動redis服務(wù)器,如果沒有任何輸出,就說明成功了
$ redis-server /usr/local/etc/redis/redis.conf
 
# 在容器里啟動一個redis客戶端
$ redis-cli 
 
# 執(zhí)行info命令,查看服務(wù)器狀態(tài)
127.0.0.1:6379> info
...
# 如果是主,這里的role的值會是master,如果是從,這里的role的值會是slave
role:slave
# 對于slave,還要查看master_link_status這個屬性值。slave上這個屬性值為up就說明主從復(fù)制是OK的,否者就有問題。如果從機狀態(tài)不為up,首先排查主機的端口是否被限,然后查看redis日志排查原因
master_link_status:up
...
 
# 最后退出容器
$ exit

驗證主從復(fù)制

主從搭建成功后,可以通過在master上寫入一個key-value值,查看是否會同步到slave上,來驗證主從同步是否能成功。

# 以交互模式進入容器redis-1中
$ docker exec -it redis-1 bash

運行一個redis-cli,向test_key寫入一個值

$ redis-cli
127.0.0.1:6379> set test_key hello-world
OK

在任意slave機器上進入容器,也運行一個redis-cli,查詢這個key的值。如果能查詢到這個值,且與主機上的值相同,說明主從同步成功。經(jīng)測試,主動同步成功。

127.0.0.1:6379> get test_key 
"hello-world"

添加哨兵

主從結(jié)構(gòu)搭建成功了,系統(tǒng)的可用性變高了,但是如果主發(fā)生故障,需要人工手動切換從機為主機。這種切換工作不僅浪費人力資源,更大的影響是主從切換期間這段時間redis是無法對外提供服務(wù)的。因此,哨兵系統(tǒng)被開發(fā)出來了,哨兵可以在主發(fā)生故障后,自動進行故障轉(zhuǎn)移,從從機里選出一臺升級為主機,并持續(xù)監(jiān)聽著原來的主機,當(dāng)原來的主機恢復(fù)后,會將其作為新主的從機。

哨兵先監(jiān)聽主,通過對主發(fā)送info命令,獲取到從的信息,然后也會監(jiān)聽到從。另外哨兵都會像主訂閱__sentinel__:hello頻道,當(dāng)有新的哨兵加入時,會向這個頻道發(fā)送一條信息,這條信息包含了該哨兵的IP和端口等信息,那么其他已經(jīng)訂閱了該頻道的哨兵就會收到這條信息,就知道有一個新的哨兵加入。

這些哨兵會與新加入和哨兵建立連接,選主是需要通過這個連接來進行投票。這個關(guān)系可以用下面這個圖來描述

獲取并修改sentinel配置文件

通過wget命令獲取sentinel的配置文件

wget http://download.redis.io/redis-stable/sentinel.conf

修改配置文件以下幾項

# 讓sentinel服務(wù)后臺運行
daemonize yes 
 
# 修改日志文件的路徑
logfile "/var/log/redis/sentinel.log"
 
# 修改監(jiān)控的主redis服務(wù)器
# 最后一個2表示,兩臺機器判定主被動下線后,就進行failover(故障轉(zhuǎn)移)
sentinel monitor mymaster 35.236.172.131 6379 2

啟動容器

與啟動redis容器類似,啟動一個別名為sentinel的容器

$ docker run -it --name sentinel -p 26379:26379 -v /root/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d redis /bin/bash

運行哨兵

# 進入容器
$ docker exec -it sentinel bash
 
# 創(chuàng)建日志目錄和文件
$ mkdir /var/log/redis
$ touch /var/log/redis/sentinel.log
 
# 啟動哨兵
redis-sentinel /usr/local/etc/redis/sentinel.conf 
 
# 查看日志,哨兵成功監(jiān)聽到一主和兩從的機器
18:X 11 Jul 2019 13:25:55.416 # +monitor master mymaster 35.236.172.131 6379 quorum 2
18:X 11 Jul 2019 13:25:55.418 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 13:25:55.421 * +slave slave 34.80.172.42:6379 34.80.172.42 6379 @ mymaster 35.236.172.131 6379

在另外兩臺機器上按照同樣的方法在一個容器中運行sentinel,sentinel都使用相同的配置文件。

驗證failover(故障轉(zhuǎn)移)

為了驗證哨兵機制下的自動主從切換,我們將主上的redis進程kill掉。

稍等幾秒鐘后,就有另外一臺從升級為主機,實驗時是第三臺機器,也就是redis-3升級為了主,用info命令查詢可以看到redis-3服務(wù)器的角色變成的master。說明自動主從切換成功。

127.0.0.1:6379> info
...
# Replication
role:master
...

然后重新啟動之前被kill掉的master服務(wù)器,啟動后用info命令查看,可以發(fā)現(xiàn)其變成了redis-3的從服務(wù)器。

下面這段日志,描述了35.236.172.131作為主啟動,執(zhí)行故障轉(zhuǎn)移的master sentinel選舉,執(zhí)行故障轉(zhuǎn)移,建立新的主從關(guān)系。

root@4355ca3260c5:/var/log/redis# cat sentinel.log 
17:X 11 Jul 2019 13:25:55.395 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
17:X 11 Jul 2019 13:25:55.395 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=17, just started
17:X 11 Jul 2019 13:25:55.395 # Configuration loaded
18:X 11 Jul 2019 13:25:55.398 * Running mode=sentinel, port=26379.
18:X 11 Jul 2019 13:25:55.398 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
18:X 11 Jul 2019 13:25:55.416 # Sentinel ID is 7d9a7877d4cffb6fec5877f605b975e00e7953c1
18:X 11 Jul 2019 13:25:55.416 # +monitor master mymaster 35.236.172.131 6379 quorum 2
18:X 11 Jul 2019 13:25:55.418 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 13:25:55.421 * +slave slave 34.80.172.42:6379 34.80.172.42 6379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 13:26:25.460 # +sdown slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:04:23.390 * +sentinel sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:04:25.418 * +sentinel-invalid-addr sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:04:25.418 * +sentinel sentinel 7d9a7877d4cffb6fec5877f605b975e00e7953c1 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:04:25.456 * +sentinel-address-switch master mymaster 35.236.172.131 6379 ip 172.17.0.3 port 26379 for 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3
18:X 11 Jul 2019 14:08:34.338 * +sentinel-invalid-addr sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:08:34.338 * +sentinel sentinel 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:08:36.236 * +sentinel-address-switch master mymaster 35.236.172.131 6379 ip 172.17.0.3 port 26379 for 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3
18:X 11 Jul 2019 14:11:12.151 # +sdown master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.214 # +odown master mymaster 35.236.172.131 6379 #quorum 4/2
18:X 11 Jul 2019 14:11:12.214 # +new-epoch 1
18:X 11 Jul 2019 14:11:12.214 # +try-failover master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.235 # +vote-for-leader 7d9a7877d4cffb6fec5877f605b975e00e7953c1 1
18:X 11 Jul 2019 14:11:12.235 # 7d9a7877d4cffb6fec5877f605b975e00e7953c1 voted for 7d9a7877d4cffb6fec5877f605b975e00e7953c1 1
18:X 11 Jul 2019 14:11:12.235 # 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 voted for 7d9a7877d4cffb6fec5877f605b975e00e7953c1 1
18:X 11 Jul 2019 14:11:12.235 # 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 voted for 7d9a7877d4cffb6fec5877f605b975e00e7953c1 1
18:X 11 Jul 2019 14:11:12.294 # +elected-leader master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.294 # +failover-state-select-slave master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.394 # -failover-abort-no-good-slave master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.453 # Next failover delay: I will not start a failover before Thu Jul 11 14:17:12 2019
18:X 11 Jul 2019 14:11:13.050 # +config-update-from sentinel 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:13.050 # +switch-master mymaster 35.236.172.131 6379 34.80.172.42 6379
18:X 11 Jul 2019 14:11:13.050 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 34.80.172.42 6379
18:X 11 Jul 2019 14:11:13.050 * +slave slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 11 Jul 2019 14:11:43.077 # +sdown slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 11 Jul 2019 14:11:43.077 # +sdown slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 34.80.172.42 6379
18:X 12 Jul 2019 01:54:05.142 # -sdown slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 12 Jul 2019 01:54:15.087 * +convert-to-slave slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379

總結(jié)

redis通過主從復(fù)制來實現(xiàn)高可用,但是發(fā)生故障時需要人工進行主從切換,效率低下。哨兵機制實現(xiàn)了redis主從的自動切換,提高了redis集群的可用性,提高了redis集群的故障轉(zhuǎn)移效率。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:樂山 鷹潭 安康 福州 德宏 淮安 泰安 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)》,本文關(guān)鍵詞  基于,Docker,搭建,Redis,一主兩,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久久一区麻豆最新章节| 亚洲欧美一区二区不卡| 亚洲欧美激情插| 国产一区二区伦理| www.日韩精品| 日本一区二区三区四区| 美女一区二区在线观看| av在线一区二区三区| 日韩美女一区二区三区| 国产高清成人在线| 777亚洲妇女| 国产精品国产馆在线真实露脸| 激情欧美日韩一区二区| 欧美女孩性生活视频| 一区二区国产视频| 91丨九色丨蝌蚪富婆spa| 久久九九久精品国产免费直播| 久久精品国产一区二区三| 欧美性受xxxx黑人xyx性爽| 亚洲制服欧美中文字幕中文字幕| 99久久婷婷国产| 亚洲精品高清视频在线观看| 色婷婷综合久久久久中文一区二区| 综合婷婷亚洲小说| 欧美日韩一区三区四区| 亚洲妇女屁股眼交7| 欧洲精品一区二区| 性做久久久久久免费观看欧美| 欧美日韩精品一区二区天天拍小说| 一区二区三区高清不卡| 成人av免费在线| 亚洲一区二区3| 日韩一区二区影院| 91色porny在线视频| 国产精品嫩草久久久久| 欧美色男人天堂| 丁香六月综合激情| 一区二区三区在线高清| 欧美一区二区在线不卡| 成人激情av网| 日日嗨av一区二区三区四区| 日本一区二区视频在线观看| av在线综合网| 加勒比av一区二区| 一区二区三区在线免费播放| 2020国产成人综合网| 欧美在线观看一二区| 国产精品996| 无吗不卡中文字幕| 亚洲高清免费在线| 亚洲午夜羞羞片| 日韩高清不卡一区二区三区| 亚洲一线二线三线久久久| 综合色天天鬼久久鬼色| 夜夜亚洲天天久久| 亚洲一区视频在线观看视频| 亚洲福利视频三区| 视频一区二区三区中文字幕| 亚洲444eee在线观看| 亚洲gay无套男同| 老司机精品视频导航| 国产精品亚洲а∨天堂免在线| 国产成人综合在线观看| 92精品国产成人观看免费| 在线精品视频免费观看| 日韩三级在线观看| 国产欧美一区二区三区沐欲| 成人免费在线观看入口| 午夜不卡av免费| 极品少妇xxxx精品少妇偷拍| 国产成人精品免费| 欧美猛男超大videosgay| 精品国产91亚洲一区二区三区婷婷| 久久免费午夜影院| 亚洲日本韩国一区| 美美哒免费高清在线观看视频一区二区 | 欧美a级理论片| 国产成人精品亚洲日本在线桃色| 91成人国产精品| 久久精品一区四区| 日本欧美一区二区| 色8久久人人97超碰香蕉987| 天涯成人国产亚洲精品一区av| 韩国成人在线视频| 欧美三级日韩三级| 亚洲乱码国产乱码精品精98午夜| 国产精品一区免费视频| 日韩午夜av一区| 亚洲高清不卡在线观看| 色综合天天综合网天天狠天天| 久久在线观看免费| 美女网站色91| 91精品国产免费久久综合| 亚洲成av人片在线观看| 在线观看视频一区| 有坂深雪av一区二区精品| 91香蕉视频mp4| 综合在线观看色| 粉嫩蜜臀av国产精品网站| 日韩美女在线视频| 国产成人精品综合在线观看| 久久精品欧美一区二区三区麻豆| 极品少妇一区二区三区精品视频 | 精品日韩在线一区| 韩国三级在线一区| 国产三级一区二区| 99精品欧美一区二区三区小说| 亚洲欧洲99久久| 欧美日韩免费不卡视频一区二区三区 | 国产欧美日韩在线观看| 国产黄人亚洲片| 亚洲视频在线一区| 色嗨嗨av一区二区三区| 天天色图综合网| 久久久久久一级片| 91看片淫黄大片一级| 日本不卡高清视频| 国产精品国产三级国产有无不卡 | 在线免费观看不卡av| 国产精品18久久久久久vr| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品国产第一综合99久久 | 国产伦理精品不卡| 亚洲精选在线视频| 欧美一级欧美一级在线播放| 国产精品一区二区免费不卡| 《视频一区视频二区| 欧美日本韩国一区| 春色校园综合激情亚洲| 天堂影院一区二区| 中文成人av在线| 欧美白人最猛性xxxxx69交| 久久九九国产精品| 欧美综合久久久| 高清不卡一区二区在线| 亚洲国产人成综合网站| 中文字幕永久在线不卡| 精品电影一区二区| 欧美一区午夜视频在线观看| 一本色道久久综合精品竹菊| 国产不卡视频一区二区三区| 韩国视频一区二区| 亚洲在线视频网站| 一区二区三区在线高清| 一区二区三区欧美在线观看| 综合久久综合久久| 中文字幕一区在线观看视频| 国产精品亲子乱子伦xxxx裸| 国产精品久久久久9999吃药| 国产目拍亚洲精品99久久精品| 国产亚洲精品bt天堂精选| 久久久精品黄色| 亚洲区小说区图片区qvod| 中文字幕一区二区三区不卡| 日韩毛片视频在线看| 亚洲色图.com| 日本亚洲免费观看| 国产一区二区在线观看视频| 欧美日韩1区2区| 久久久精品日韩欧美| 一区二区久久久久| 精品在线亚洲视频| 91麻豆视频网站| 精品国产乱码久久久久久牛牛| 最新久久zyz资源站| 日韩综合在线视频| 97久久精品人人做人人爽50路| 欧美日韩国产成人在线91| 中文字幕第一区综合| 六月婷婷色综合| 欧美日韩亚洲综合一区二区三区| 久久久精品日韩欧美| 精品夜夜嗨av一区二区三区| 在线观看91视频| 亚洲精品国产第一综合99久久 | 国产精品国产三级国产专播品爱网| av不卡一区二区三区| 国产欧美日产一区| 91麻豆123| 日韩成人一区二区三区在线观看| 欧美一级欧美一级在线播放| 日本成人在线电影网| 26uuu精品一区二区三区四区在线| 日韩不卡一二三区| 精品久久五月天| 国产麻豆91精品| 成人欧美一区二区三区在线播放| 国产aⅴ综合色| 国产清纯在线一区二区www| 国产自产v一区二区三区c| 日韩精品中文字幕在线不卡尤物| 亚洲午夜久久久| 欧美日韩国产精品成人| 日韩精品91亚洲二区在线观看| 99re这里只有精品首页| 成人欧美一区二区三区黑人麻豆| 国产一区二区三区免费观看| 精品sm捆绑视频| 国产69精品久久久久毛片| 国产精品国产三级国产普通话三级 |