亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

詳解基于docker-swarm搭建持續集成集群服務

2024-09-01 13:55:56
字體:
來源:轉載
供稿:網友

前言

本文只為自己搭建過程中的一些簡單的記錄。如果實踐中有疑問,可以一起探討。 

為了能在本機(macOS)模擬集群環境,使用了vb和docker-machine。整體持續集成的幾個機器設施如下:

1、服務節點:三個manager節點,一個worker節點。manager需要占用更多的資源,manager配置盡量高一些。swarm的manager節點的容錯率是 (N-1)/2 。N是manager節點數。也就是如果有3個manager,那就能容忍一個manager節點掛掉。官方的算法說明:Raft consensus in swarm mode。

2、本地的鏡像倉庫 registry:用來存儲所有需要部署的服務docker鏡像。 

https://docs.docker.com/registry/deploying/

因為使用swarm機制,所以不需要在服務間通信問題考慮服務發現以及負載均衡的問題(代替原有的consul®istor方式)。

3、構建鏡像的運維節點 ops: 

也即運維機器。一個獨立的節點即可。主要負責build鏡像,push鏡像。在ops里可以構建gitlab的私庫。維護構建腳本。機器所需配置不高,對網絡寬帶還是盡量多一些。

用docker-machine 模擬集群環境

創建registry節點

docker-machine create -d virtualbox --virtualbox-memory "512" registry 

–engine-registry-mirror 這個參數是可以設置一些加速倉庫的地址。

創建manager,worker節點

manager

 

復制代碼代碼如下:
docker-machine create -d virtualbox --virtualbox-memory "800"  manager1
    

 

worker:

docker-machine create -d virtualbox --virtualbox-memory "800" worker1 docker-machine create -d virtualbox --virtualbox-memory "800" worker2 docker-machine create -d virtualbox --virtualbox-memory "800" worker3 

創建ops 節點

docker-machine create -d virtualbox --virtualbox-memory "512" ops 

查看機器列表狀態

docker-machine ls 

創建registry服務

登錄到registry機器上。

docker-machine ssh registry

創建一個registry服務。

docker run -d -p 5000:5000 --restart=always --name registry / -v `pwd`/data:/var/lib/registry / registry:2

命令設置了-v volumn選項,這樣在每次容器服務重啟的時候,不會丟失已經pull的鏡像數據。registry,mysql等存儲類型的容器,建議設置一下volumn.如果為了更好的擴展,也可以將鏡像倉庫備份到其他driver里,如阿里云的OSS. 

運行docker ps就可以看到一個啟動好的registry服務。當然,為了更好的擴展,也可以掛載在自己的域名下,重新run 的時候添加認證信息。 

為了更方便管理容器,可以使用docker-compose 組件。安裝:

 

復制代碼代碼如下:
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 

 

也可以寫好compose文件之后直接啟動:

docker-compose up -d

本地倉庫push鏡像

現在可以嘗試拉一個鏡像,然后tag到本地的registry倉庫,如

 

復制代碼代碼如下:
docker pull lijingyao0909/see:1.0.3 && docker tag lijingyao0909/see:1.0.3 localhost:5000/see:1.0.3

 

然后再執行push 命令:

docker push localhost:5000/see:1.0.3

這個鏡像就push到了registry服務中,最直接的方式可以通過查看本地的volumn目錄,如本例中的 data目錄查看到鏡像數據。 
如果為了更方便的可視化管理registry,也可以試用下registry UI 相關的鏡像如hyper/docker-registry-web。

 

復制代碼代碼如下:
docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web

 

然后訪問 hostname:5000/registory/index可以看到簡單的鏡像列表UI。

https 問題

在本地測試時如果執行以上步驟,在push,或者在其他vb中pull鏡像時遇到以下問題: 

Error response from daemon: Get https://registry:5000/v1/_ping: dial tcp 218.205.57.154:5000: i/o timeout 

處理方式是,修改registry的認證,如下先修改“/var/lib/boot2docker/profile”:

sudo vi /var/lib/boot2docker/profile

添加

DOCKER_OPTS="--insecure-registry <host-name>:5000"DOCKER_OPTS="--insecure-registry registry:5000"

因為registry的hostname就是 registry。所以執行docker ifno命令可以看到:

Insecure Registries: registry:5000 127.0.0.0/8 

同時,在其他的worker機器,manager機器也需要修改–insecure-registry屬性,才可以pull私庫的鏡像。修改之后需重新restart vb。 

重啟后,在manager重新嘗試pull

docker pull registry:5000/see:1.0.3 

 可以看到成功連接倉庫并拉取鏡像。注意,本示例使用的是機器名,registry,而不是IP地址。所以,在拉取鏡像的時候,需在各自的vb 的etc/hosts文件配置ip和機器名的映射。用機器名的方式比較操作易記。當然最好的方式還是通過域名訪問倉庫。

參考資源

部署registry服務

創建ops服務

swarm的服務集群會直接從registry上pull鏡像,直接啟動應用的service服務。服務的鏡像直接打在registry倉庫中,但是源碼可以維護在ops機器上。前面創建的ops的virtual-box,可以部署gitlab服務。啟動參數可以參考Deploy GitLab Docker images

先pull一個gitlab鏡像

docker run --detach / --hostname gitlab.lijingyao.com / --publish 443:443 --publish 80:80 --publish 22:22 / --name gitlab / --restart always / --volume `pwd`/gitlab/config:/etc/gitlab / --volume `pwd`/gitlab/logs:/var/log/gitlab / --volume `pwd`/gitlab/data:/var/opt/gitlab / gitlab/gitlab-ce:8.14.4-ce.0

使用git私庫

因綁定了80端口,啟動gitlab后訪問:http://machine-host/

第一次進入gitlab會自動跳轉到重置密碼??梢栽O置一個新的密碼,這個是root賬號的密碼。后續就可以注冊其他git用戶使用了。 
這里,如果申請了域名服務,或者本地綁定gitlab.lijingyao.com 到這個virtualbox的ip地址,就可以直接訪問gitlab.lijingyao.com地址。在實際生產環境有固定公網ip,自己的dns服務,就不需要綁定host。這里只是本地測試,所以暫時就通過綁定host的方式。

swarm

本例中的服務是一個簡單的springboot 和gradle的工程,服務鏡像可以在docker hub pull,see service image。打包好鏡像后,直接在gradle task中push到registry倉庫中。在本地環境可以直接在工程目錄里執行。gradle task然后push到vb的registry中,再在registry 倉庫pull鏡像即可?,F在開始準備初始化swarm 集群。 

現在整個vb 集群的機器,查看如下:

$docker-machine lsNAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER ERRORShaproxy -  virtualbox Running tcp://192.168.99.103:2376   v1.12.3 manager1 -  virtualbox Running tcp://192.168.99.100:2376   v1.12.3 ops  -  virtualbox Running tcp://192.168.99.106:2376   v1.12.3 registry -  virtualbox Running tcp://192.168.99.107:2376   v1.12.3 worker1 -  virtualbox Running tcp://192.168.99.101:2376   v1.12.3 worker2 -  virtualbox Running tcp://192.168.99.102:2376   v1.12.3 worker3 -  virtualbox Running tcp://192.168.99.105:2376   v1.12.3 

然后用docker-machine ssh manager1登陸到manager1機器上。

初始化swarm manager節點

在manager1 機器上初始化swarm,這個初始化的機器就是swarm的manager.執行:

 docker swarm init --advertise-addr 192.168.99.100

會看到以下執行輸出:

Swarm initialized: current node (03x5vnxmk2gc43i0d7xpycvjg) is now a manager.To add a worker to this swarm, run the following command: docker swarm join / --token SWMTKN-1-5ru6lyco3upj7oje6hidug3erqczok84wk7bekzfaca4uv51r9-22bcjhkbxnclmw3nl3ui8601l / 192.168.99.100:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

這個生成的token值,是其他swarm集群節點join到整個swarm的key。如果忘記了token,可以在manager1上執行:

$docker swarm join-token manager 

來查看目前的token值。官方建議至少6個月更換以下token。更換命令:

$docker swarm join-token --rotate worker 

添加worker節點

分別登錄 worker1,worker2,worker3,執行join命令。 

在join之前,先查看下docker 網絡設施。執行

$ docker network lsNETWORK ID   NAME    DRIVER    SCOPE4b7fe1416322  bridge    bridge    local    06ab6f3352b0  host    host    local    eebd5c8e0d5d  none    null    local 

按照manager1 初始化之后的命令,執行:

docker swarm join / --token SWMTKN-1-5ru6lyco3upj7oje6hidug3erqczok84wk7bekzfaca4uv51r9-22bcjhkbxnclmw3nl3ui8601l / 192.168.99.100:2377

此時在任何worker節點再執行docker network ls 即可看到多了一個overlay的覆蓋范圍為swarm的網絡通道。 

三個worker都加入之后,在manager1 上即可看到manager的node節點情況

docker node lsID       HOSTNAME STATUS AVAILABILITY MANAGER STATUS03x5vnxmk2gc43i0d7xpycvjg * manager1 Ready Active  Leader  2y5wrndibe8c8sqv6851vrlgp worker1 Ready Active  Reachabledwgol1uinkpsybigc1gm5jgsv worker2 Ready Active  etgyky6zztrapucm59yx33tg1 worker3 Ready Active  Reachable

manager status的Reachable狀態表示該節點也是manager節點。這是因為我們在worker1,worker3分別執行了

docker node promote worker1docker node promote worker3

worker1,worker3此時也可以執行swarm命令,在manager1關停時,就會選舉其中之一作為新的leader。如果要去除node的manager狀態,可以通過demote命令去除。執行后,worker節點就變成普通的任務節點。

docker node demote worker1 worker3 

swarm節點的其他狀態

swarm節點可以設置drain狀態,drain狀態的節點不會執行任何service。 

將某個node設置不可用:

docker node update --availability drain worker1 

Pause,Drain,Active三個狀態,pause標識有任務運行,不接受新任務。 

如果要將worker1 節點去除swarm中心,現在需被移除的節點(worker1)執行:docker swarm leave 然后在manager上執行:docker node rm worker1,即可移除一個swarm節點。

創建swarm服務

本例中使用swarm部署一個基于springboot的rest api服務。倉庫的地址:springboot-restful-exam,創建的服務name是deftsee,綁定80端口,并且擴展4個運行容器服務。

docker service create / --replicas 4 / --name deftsee / --update-delay 10s / --publish 8080:80 / lijingyao0909/see:1.0.3

服務創建之后,可以查看服務節點的狀態

docker@manager1:~$ docker service lsID   NAME  REPLICAS IMAGE     COMMANDa6s5dpsyz7st deftsee 4/4  lijingyao0909/see:1.0.3 

REPLICAS 代表服務的運行容器數,如果是0/4就代表所有服務都沒有起來。詳細查看各個節點運行狀態可以用docker service ps servicename

docker@manager1:~$ docker service ps deftseeID       NAME  IMAGE     NODE  DESIRED STATE CURRENT STATE   ERROR8lsdkf357lk0nmdeqk7bi33mp deftsee.1 lijingyao0909/see:1.0.3 worker2 Running  Running 5 minutes ago cvqm5xn7t0bveo4btfjsm04jp deftsee.2 lijingyao0909/see:1.0.3 manager1 Running  Running 7 minutes ago 6s5km76w2vxmt0j4zgzi4xi5f deftsee.3 lijingyao0909/see:1.0.3 worker1 Running  Running 5 minutes ago 4cl9vnkssedpvu2wtzu6rtgxl deftsee.4 lijingyao0909/see:1.0.3 worker3 Running  Running 6 minutes ago 

可以看到任務被平分到所有的四個任務節點運行。下面再擴容deftsee服務

docker@manager1:~$ docker service scale deftsee=6deftsee scaled to 6docker@manager1:~$ docker service ps deftseeID       NAME  IMAGE     NODE  DESIRED STATE CURRENT STATE   ERROR8lsdkf357lk0nmdeqk7bi33mp deftsee.1 lijingyao0909/see:1.0.3 worker2 Running  Running 8 minutes ago cvqm5xn7t0bveo4btfjsm04jp deftsee.2 lijingyao0909/see:1.0.3 manager1 Running  Running 10 minutes ago 6s5km76w2vxmt0j4zgzi4xi5f deftsee.3 lijingyao0909/see:1.0.3 worker1 Running  Running 8 minutes ago 4cl9vnkssedpvu2wtzu6rtgxl deftsee.4 lijingyao0909/see:1.0.3 worker3 Running  Running 9 minutes ago 71uv51uwvso4l340xfkbacp2i deftsee.5 lijingyao0909/see:1.0.3 manager1 Running  Running 5 seconds ago 4r2q7q782ab9fp49mdriq0ssk deftsee.6 lijingyao0909/see:1.0.3 worker2 Running  Running 5 seconds ago 

lijingyao0909/see:1.0.3是dockerhub的公共倉庫的鏡像,服務創建時會去pull鏡像,整體速度偏慢,所以可以結合私有倉庫,直接在registry機器上pull鏡像。服務可以直接用docker service rm deftsee移除服務,然后通過registry重建服務。

docker service create / --replicas 6 / --name deftsee / --update-delay 10s / --publish 8080:80 / registry:5000/see:1.0.4

此時登錄任何一臺worker服務,查看運行的容器鏡像:

docker@worker2:~$ docker psCONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS    NAMES89d4f588290b  registry:5000/see:1.0.4 "/bin/sh -c 'java -Dc" About a minute ago Up About a minute 8080/tcp   deftsee.1.eldpgb1aqtf9v49cxolydfjm9

如果要更新服務,可以直接通過update命令更新版本,并且服務滾動發布,通過設置*–update-delay 10s *可以改變更新時各個節點的延遲時間。

docker service update --image registry:5000/see:1.0.5 deftsee

重啟某個node的服務

關閉:docker node update –availability drain worker1 

開啟:docker node update –availability active worker1

更新服務端口

更新一個服務的端口會重啟服務(關閉原有服務,重新創建服務并啟動):

 docker service update / --publish-add <PUBLISHED-PORT>:<TARGET-PORT> / <SERVICE>docker@manager1:~$docker service update / --publish-add 8099:8080 / deftseedocker@manager1:~$ docker service ps deftseeID       NAME   IMAGE     NODE  DESIRED STATE CURRENT STATE    ERROR3xoe34msrht9eqv7eplnmlrz5 deftsee.1  registry:5000/see:1.0.4 manager1 Running  Running 39 seconds ago  eldpgb1aqtf9v49cxolydfjm9 /_ deftsee.1 registry:5000/see:1.0.4 worker2 Shutdown  Shutdown 39 seconds ago  9u4fh3mi5kxb14y6gih5d8tqv deftsee.2  registry:5000/see:1.0.4 manager1 Running  Running about a minute ago 0skgr5fx4xtt6y71yliksoft0 /_ deftsee.2 registry:5000/see:1.0.4 worker1 Shutdown  Shutdown about a minute ago 8hposdkqe92k7am084z6kt1j0 deftsee.3  registry:5000/see:1.0.4 worker3 Running  Running about a minute ago c5vhx1wx0q8mxaweaq0mia6n7 /_ deftsee.3 registry:5000/see:1.0.4 manager1 Shutdown  Shutdown about a minute ago 9se1juxiinmetuaccgkjc3rr2 deftsee.4  registry:5000/see:1.0.4 worker1 Running  Running about a minute ago 4wofho0axvrjildxhckl52s41 /_ deftsee.4 registry:5000/see:1.0.4 worker3 Shutdown  Shutdown about a minute ago 

服務驗證和網絡

例子中的服務啟動后,可以直接通過ip:port訪問。如http://192.168.99.100:8099/see,可以看到服務請求會分發到各個運行的節點中。也就是swarm的overlay網絡層,各個節點的網絡是互通的,swarm做了load balance,在swarm的lb的基礎上也可搭建自己定義的overlay網絡,創建的這個overlay 網絡,所有節點都可以和這個network互通。但是在服務創建的時候需要制定network選項。

$docker network create / --driver overlay / --subnet 10.0.9.0/24 / --opt encrypted /   my-network$docker service create / --name deftsee / --publish 8099:80 / --replicas 4 / --network my-network / -l com.df.serviceDomain=deftsee.com / -l com.df.notify=true / lijingyao0909/see:1.0.3

–network my-network制定了服務可連接到的docker network,可以在swarm的節點創建一個name為my-network的網絡。所以也可以在swarm機制中搭建consul和haproxy的服務發現和lb機制。 

當為一個服務指定一個network的時候,swarm上執行的任務也必須都在這個指定的網絡上才能和服務互通。如果節點上沒有加入到swarm模式的node中,或者沒有運行掛載在這個指定網絡的時候,也不會和這個network互通.docker network ls也不會查出該網絡。創建服務時通過–network my-network這個標簽鏈接到這個網絡。在查看網絡時,docker network inspect my-network可以查看返回的Containers 列出的該節點的掛載容器。 

創建了一個網絡服務,有service連接到網絡時,swarm會給這個網絡下的服務(service)指定一個vip. swarm 內部的lb會自動分發服務,不需要指定每個服務端口,即在同一個network連接的容器,通過service name就可以訪問到服務。因為所有加入到這個network的容器都會通過gossip協議共享一個DNS映射(vip映射根據service name 綁定到的dns別名映射)。 

查看服務的vip網絡信息:

$docker service inspect / --format='{{json .Endpoint.VirtualIPs}}' / deftsee輸出:[{"NetworkID":"dn05pshfagohpebgonkhj5kxi","Addr":"10.255.0.6/16"}]

swarm管理

為了保持manager節點的可用性(心跳機制,leader選舉),可以將manager節點設置成不接受服務運行,節省manager節點資源,將manager節點隔離出任務環境。

docker node update --availability drain <NODE>

備份/var/lib/docker/swarm/raft 狀態

清理不可用的節點

docker node demote <NODE> docker node rm <id-node>.

節點重新加入manager re-join

$docker node demote <NODE>.$docker node rm <NODE>.$docker swarm join ...

初始化的時候指定固定ip ,init –advertise-addr。worker節點可以用動態ip 。

參考資源

Swarm mode

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产偷亚洲偷欧美偷精品| 久久久精品久久久| 久久成年人视频| 亚洲午夜小视频| 日本在线观看天堂男亚洲| 91精品国产91久久久| 欧美性感美女h网站在线观看免费| 国产亚洲精品成人av久久ww| 欧美国产高跟鞋裸体秀xxxhd| 国产亚洲精品日韩| 亚洲va久久久噜噜噜久久天堂| 在线视频欧美性高潮| 色婷婷亚洲mv天堂mv在影片| 欧美日韩aaaa| 欧美成人午夜免费视在线看片| 欧美电影在线观看高清| 中国日韩欧美久久久久久久久| 欧美最近摘花xxxx摘花| 欧美一级bbbbb性bbbb喷潮片| 97国产一区二区精品久久呦| 亚洲黄色片网站| 欧美日韩黄色大片| 亚洲日本aⅴ片在线观看香蕉| 亚洲自拍偷拍一区| 亚洲精品乱码久久久久久按摩观| 欧美黑人视频一区| 亚洲最新视频在线| 国产欧美日韩精品在线观看| 国产日韩欧美黄色| 精品欧美激情精品一区| 国模gogo一区二区大胆私拍| 日本三级久久久| 精品久久久久久久久久| 亚洲精品456在线播放狼人| 成人xxxxx| 尤物99国产成人精品视频| 国产成人久久久| 夜夜嗨av一区二区三区免费区| 中文字幕久久久| 欧美精品videos另类日本| 日韩美女写真福利在线观看| 欧美在线精品免播放器视频| 欧美性猛交xxxx黑人| 尤物九九久久国产精品的分类| 91成人在线播放| 日韩国产欧美精品在线| 日韩视频欧美视频| 国产日本欧美一区二区三区在线| 国产日本欧美在线观看| 亚洲国产精品网站| 午夜精品福利视频| 91在线免费观看网站| 91人成网站www| 久久精品亚洲国产| 色婷婷综合成人| 精品久久久久久| 国产美女精品视频| 91精品久久久久久久久久| 精品丝袜一区二区三区| 91精品国产色综合久久不卡98口| 久久久最新网址| 国产亚洲日本欧美韩国| 成人免费视频网址| 欧美日韩精品在线观看| 高清一区二区三区四区五区| 亚洲国产日韩欧美在线99| 97超级碰碰人国产在线观看| 日本精品久久电影| 国产精品福利片| 精品国偷自产在线视频99| 久久久久久尹人网香蕉| 欧美亚洲成人精品| 另类色图亚洲色图| 视频直播国产精品| 伊人青青综合网站| 91精品啪在线观看麻豆免费| 亚洲国产欧美一区二区丝袜黑人| 欧美性xxxxx极品| 国产精品三级在线| 国产成人精品免高潮费视频| 亚洲成人黄色在线观看| 欧美xxxx18性欧美| 亚洲精品第一页| 97婷婷大伊香蕉精品视频| 97avcom| 97在线观看免费高清| 精品亚洲一区二区三区在线播放| 国产精品免费观看在线| 国产精品久久久久久网站| 久久精品人人做人人爽| 亚洲欧美日本另类| 中文字幕一精品亚洲无线一区| 日韩免费观看视频| 日韩av中文字幕在线免费观看| 日韩免费在线视频| xxx欧美精品| 国产精品丝袜高跟| xvideos亚洲人网站| 国产成人精品久久二区二区91| 久久精品国产成人精品| 国产精品亚洲第一区| 亚洲精品国产精品国产自| 欧美国产日韩一区| 欧美性xxxxx极品| 疯狂做受xxxx高潮欧美日本| 69久久夜色精品国产69| 精品久久久一区| 精品国产鲁一鲁一区二区张丽| 国产欧美日韩免费| 国产伦精品免费视频| 欧美精品一区二区免费| 国产做受高潮69| 亚洲欧美日韩在线一区| 久久精品国产亚洲7777| 亚洲精品欧美日韩专区| 日韩大胆人体377p| 第一福利永久视频精品| 国产精品亚洲激情| 亚洲女同精品视频| 亚洲精品wwww| 日本伊人精品一区二区三区介绍| 国产在线观看一区二区三区| 中文字幕亚洲欧美日韩高清| 日韩中文字幕在线视频| 日韩视频永久免费观看| 九九热99久久久国产盗摄| 欧美日韩国产中文字幕| 亚洲欧美999| 亚洲人成欧美中文字幕| 日韩精品视频中文在线观看| 亚洲精品乱码久久久久久按摩观| 精品日韩中文字幕| 中文字幕精品在线| 18一19gay欧美视频网站| 成人精品久久一区二区三区| 国产亚洲精品久久久久久牛牛| 国产精品久久久91| 在线日韩第一页| 992tv成人免费视频| 欧美激情精品久久久久| 日韩视频免费中文字幕| 日韩欧美视频一区二区三区| 97视频在线观看免费高清完整版在线观看| 亚洲综合日韩中文字幕v在线| 久久99精品久久久久久琪琪| 成人午夜一级二级三级| 久久精品电影网| 欧美日韩国产一区二区三区| 最近更新的2019中文字幕| 国产精品青草久久久久福利99| 国产999精品视频| 午夜欧美不卡精品aaaaa| 久久精品国产一区二区三区| 91老司机精品视频| 久久久国产一区| 国产精品久久久久aaaa九色| 俺去亚洲欧洲欧美日韩| 91在线免费看网站| 久久久久久久一区二区| 亚洲精品一区在线观看香蕉| 国产欧美日韩专区发布| 日韩电视剧在线观看免费网站| 欧美国产日韩xxxxx| 日本一区二区在线播放|