校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 基于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í)配置,就不使用密碼認(rèn)證了)
# 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è)定主庫的密碼,用于認(rèn)證,如果主庫開啟了requirepass選項這里就必須填相應(yīng)的密碼
masterauth <master-password>
 
# 設(shè)定master的IP和端口號,redis配置文件中的默認(rèn)端口號是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)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩欧美色电影| 97精品国产露脸对白| 日韩av在线发布| 视频在线观看一区二区三区| 亚洲精品欧美激情| 婷婷综合久久一区二区三区| 视频一区二区不卡| 日本特黄久久久高潮 | 黑人巨大精品欧美黑白配亚洲| 亚洲成在人线在线播放| 午夜欧美一区二区三区在线播放| 午夜视黄欧洲亚洲| 韩国一区二区在线观看| 丁香另类激情小说| 色一情一乱一乱一91av| 日韩小视频在线观看专区| 国产色产综合产在线视频| 国产精品久久综合| 亚洲一区在线免费观看| 男女男精品网站| 91免费国产在线观看| 欧美一区二区三区小说| 中文字幕制服丝袜成人av| 水野朝阳av一区二区三区| 国产很黄免费观看久久| 欧美丰满一区二区免费视频| 中文字幕第一区第二区| 日韩福利视频网| 欧美在线视频你懂得| 久久久久成人黄色影片| 首页国产丝袜综合| 99国内精品久久| 国产日本欧美一区二区| 九九精品视频在线看| 在线综合+亚洲+欧美中文字幕| 中文字幕色av一区二区三区| 国内精品免费**视频| 久久综合九色欧美综合狠狠| 日本不卡中文字幕| 欧美一区二区大片| 肉肉av福利一精品导航| 欧美精品在线视频| 日韩av一区二区在线影视| 欧美一区国产二区| 美女高潮久久久| 精品欧美乱码久久久久久1区2区| 日韩不卡一二三区| 日韩视频免费观看高清完整版| 免费不卡在线视频| 精品国产乱码久久久久久免费| 免费人成精品欧美精品| 日韩精品一区二区三区蜜臀 | 欧美日韩国产天堂| 婷婷开心久久网| 久久久久久综合| 91麻豆免费在线观看| 亚洲一区二区三区在线| 91精品国产一区二区三区香蕉| 五月综合激情网| 久久精品在线观看| 欧美伊人久久久久久午夜久久久久| 一区二区欧美精品| 精品88久久久久88久久久| 99九九99九九九视频精品| 亚洲国产人成综合网站| 久久精品视频在线免费观看| 在线精品视频小说1| 国产乱一区二区| 亚洲一区二区三区不卡国产欧美| 精品日韩一区二区| 日本精品一级二级| 国产精品影视在线| 激情综合色综合久久综合| 亚洲精品乱码久久久久久| 久久久久99精品一区| 日韩久久久精品| 欧美日韩视频专区在线播放| av电影天堂一区二区在线 | 欧美日韩一区在线| 成人av片在线观看| 国产一区二区三区免费看 | 欧美美女一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩一区二区三| 欧美日韩一二区| 欧美视频在线播放| 欧美在线观看视频一区二区| 日本精品一级二级| 欧美日本精品一区二区三区| 91麻豆免费视频| 欧美午夜在线一二页| 韩国三级中文字幕hd久久精品| 亚洲成人一区二区在线观看| 亚洲精品国产视频| 一区二区三区四区在线免费观看 | 日韩一区二区中文字幕| 欧美亚洲国产bt| 一本色道a无线码一区v| 国产成人激情av| 成人a级免费电影| 91免费观看视频在线| 99热精品国产| 色欲综合视频天天天| 国产不卡视频一区二区三区| 大胆亚洲人体视频| 国产一区二区三区| 91伊人久久大香线蕉| 欧美在线不卡一区| 日韩三级高清在线| 国产欧美日韩亚州综合 | 久久综合999| 国产精品国产三级国产aⅴ中文| 国产欧美一区二区精品秋霞影院| 中文字幕日韩一区二区| 亚洲va欧美va国产va天堂影院| 亚洲国产欧美一区二区三区丁香婷| 亚洲mv在线观看| 精品一二三四区| 欧美日韩在线亚洲一区蜜芽| 日韩三区在线观看| 一区二区成人在线视频| 日韩av一区二区三区四区| 国产成人精品一区二| 日本精品一区二区三区高清 | 欧美一区二区三区不卡| 国产精品久久久久婷婷| 日韩激情一二三区| 成人a级免费电影| 国产亚洲成年网址在线观看| 亚洲第一电影网| 成+人+亚洲+综合天堂| wwwwxxxxx欧美| 日韩和欧美的一区| 欧美在线视频不卡| 一级做a爱片久久| 99re热这里只有精品视频| 91精品国产欧美一区二区18| 亚洲乱码国产乱码精品精98午夜 | 精品99999| 国产综合久久久久影院| 26uuu久久综合| 国产一区二区三区国产| 欧美激情一区二区三区全黄| 国产精品1024久久| 国产精品区一区二区三| av网站免费线看精品| 亚洲欧洲av另类| 在线观看不卡一区| 日韩av一级电影| 国产亚洲欧洲一区高清在线观看| 久久精品国产亚洲一区二区三区| 91精品国产手机| 国产91丝袜在线18| 亚洲精品久久久久久国产精华液| 在线观看国产一区二区| 视频精品一区二区| 久久一区二区三区国产精品| 国产不卡免费视频| 亚洲精品视频在线看| 56国语精品自产拍在线观看| 日韩av高清在线观看| 日韩理论片一区二区| 欧美一级片在线| 波多野结衣欧美| 婷婷六月综合亚洲| 国产精品电影院| 精品国产露脸精彩对白| 欧美色偷偷大香| 成人激情黄色小说| 麻豆精品在线播放| 亚洲码国产岛国毛片在线| 久久美女艺术照精彩视频福利播放 | 欧美性xxxxx极品少妇| 狠狠色狠狠色综合| 石原莉奈一区二区三区在线观看| 国产精品福利一区二区三区| 日韩精品一区二区三区在线| 欧美吞精做爰啪啪高潮| 99久久精品免费| 成人免费av在线| 国产美女主播视频一区| 国内精品伊人久久久久av一坑| 亚洲影院在线观看| 一区二区三区自拍| 精品成人一区二区三区四区| 日本高清不卡aⅴ免费网站| 成人小视频在线| 久久激情综合网| 久久99久久精品欧美| 亚洲午夜电影网| 亚洲成av人**亚洲成av**| 亚洲v精品v日韩v欧美v专区| 亚洲成人午夜电影| 喷水一区二区三区| 国内久久婷婷综合| 99久久精品久久久久久清纯| 91免费在线视频观看| 欧美精品九九99久久| 亚洲精品在线三区| 亚洲色图视频网|