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

Kubernetes 集群高可用代理實踐之路

系統 Linux
本文介紹了 雙機主備方式 和 雙主機方式 兩種方案來解決代理的高可用。

前言

在 Kubernetes 集群的 高可用拓撲選項[1] 中,介紹了集群高可用的兩個方案:

  • 使用堆疊(stacked)控制平面節點,其中 etcd 節點與控制平面節點共存

  • 使用外部 etcd 節點,其中 etcd 在與控制平面不同的節點上運行

我們知道實現高可用架構的本質就是在做冗余 。

對于 Kubernetes 集群的高可用架構:

  • 應用層:Pod 的高可用性由 Kubernetes 自行保證。主要通過健康檢查和重啟策略實現 Pod 的故障自我修復能力,通過調度算法實現 Pod 分布式部署,通過副本數監控機制,保障 Pod 的實時運行副本。
  • worker node :工作節點負責運行工作負載,可以任意橫向擴展,隨時加入新節點,不需要考慮高可用架構。
  • etcd :作為集群狀態信息存儲組件,可組建 etcd 集群方式實現高可用,對于 Kubernetes 集群有 stacked etcd 和 external etcd 兩種方案。
  • control plane node :控制平面節點即 master 節點,負責與工作節點上的 kubelet 和 kube-proxy 進行通信來維護整個集群的健康工作狀態。

其中控制平面節點的三個核心組件:

  • kube-controller-manager 和 kube-scheduler :只要部署多 master 實例,即可通過自身選舉機制實現高可用。
  • kube-apiserver :apiserver 服務器是無狀態的,負責提供 Kubernetes 的 API 服務,是整個集群控制的入口。

可見,kube-apiserver 的高可用性將決定整個集群的高可用(etcd 高可用同樣極其重要,但不在本文探討范圍內)。

由于 apiserver 本質上是一個無狀態的 HTTP API 服務,因此,實現 apiserver 的高可用性,本質上就是實現 web 服務器的高可用性,可以通過為其增加可水平擴容的負載均衡器(load balancer ,簡稱 lb )。

后續用戶( kubectl 、 dashbaord 等其他客戶端)和集群內部的組件都將通過訪問 lb 來訪問 apiserver 。

這下問題就變成了 如何實現 lb 的高可用。

先來看 lb 的選型,可以采用硬件負載均衡(F5),這是最好但也是最昂貴的做法:

也可以使用代理軟件(nginx/haproxy 等[2]),采用軟件負載均衡的做法:

今天本文的分享內容便是對代理軟件高可用的實踐。

代理軟件

對于代理軟件的選型,可以根據實際需求決定,不會影響本文的高可用實踐(目前對于集群代理主流使用的是 haproxy )。

本文將以 nginx 為例,并使用 Docker 部署:

$ docker run --name nginx -d -v $PWD/default.conf:/etc/nginx/conf.d/default.conf -p 80:80 nginx

對應的 default.conf 配置示例如下:

upstream cluster {
server 192.168.19.160:8080;
server 192.168.19.160:8081;
server 192.168.19.160:8082;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://cluster;
}
}

為了方便我們后續的測試,其中代理的三個后端服務是我們模擬的三個 web 服務(實際使用時替換為集群 apiserver 即可)。

高可用的核心也是第一步就是 冗余 ,為了提升代理服務器的高可用,我們需要冗余一個實例,按照剛才的教程需要在主機 lb1 和 lb2 同時部署 nginx (也就是說有兩臺機子運行著 nginx 代理):

IP

主機名

代理端口

默認主從

192.168.19.158

lb1

80

MASTER

192.168.19.159

lb2

80

BACKUP

測試這兩個代理服務器,請求將會均衡到三個后端服務中的任意一個。

代理測試

接下來就該考慮如何實現服務器的自動故障轉移,即 lb1 掛了之后,冗余的 lb2 如何快速頂上來使用,這一功能也稱作:雙機熱備 。

雙機熱備

一圖秒懂雙機熱備[3]

所謂雙機熱備,即主機和從機通過 TCP/IP 網絡連接,正常情況下主機處于工作狀態,從機處于監視狀態,一旦從機發現主機異常,從機將會在很短的時間之內代替主機,完全實現主機的功能。

我們現在的需求很明確,即 lb1 作為主代理服務器提供給外部訪問,lb2 作為從代理服務器,一旦 lb1 發生故障,lb2 可以立即頂替上去,以實現代理的高可用。

lb1 和 lb2 是不同主機,不同 IP 的,而我們又必須對外部訪問端透明,只能有一個 IP 給到外部。

只給外部一個 IP ,這個 IP 能不能正常情況下屬于 lb1 節點,當 lb1 節點掛了之后又變成屬于 lb2 節點的呢。

這就引出了 Virtual IP (虛擬 IP,簡稱 VIP )的概念了。

我們可以創建一個 VIP 為 192.168.19.200 ,正常情況下,該 VIP 綁定到 lb1 上,一旦 lb1 發生故障,VIP 立即漂移到 lb2 。對于外部訪問端,就只需要調用 192.168.19.200 這個 VIP 就可以了,無需理會代理服務器究竟是 lb1 還是 lb2 。

這個 VIP 的漂移機制實現也有現成的工具:keepalived 。

keepalived

keepalived 是一個基于 VRRP 協議實現的 Web 服務高可用方案,可以利用其避免單點故障。

可以在 lb1 節點部署 keepalived 作為主服務器(MASTER),在 lb2 節點部署 keepalived 作為備服務器(BACKUP),對外表現為一個 VIP (默認綁定在 MASTER 所在節點)。

keepalived MASTER 會發送特定消息給 keepalived BACKUP ,當 BACKUP 收不到消息時(即 MASTER 宕機或發生故障), BACKUP 就會接管 VIP 。

  • keepalived 需要注意腦裂問題的發生,即:MASTER 和 BACKUP 同時占用了 VIP

接下來我們就利用 keepalived 來實現 雙機熱備 機制以保障代理的高可用。

  • 本文實驗機環境:CentOS Linux release 7.9.2009 (Core)

在 lb1 和 lb2 節點都部署上 keepalived :

[root@lb1 ~]# yum -y install keepalived
[root@lb2 ~]# yum -y install keepalived

lb1 節點修改 keepalived 的配置文件:

[root@lb1 ~]# cd /etc/keepalived/
[root@lb1 keepalived]# pwd
/etc/keepalived
[root@lb1 keepalived]# vi keepalived.conf

lb1 節點 keepalived.conf 內容如下:

! Configuration File for keepalived
global_defs {
# # 通知郵件服務器的配置
# notification_email {
# # 當 master 失去 VIP 的時候,會發一封通知郵件到 your-email@qq.com
# your-email@qq.com
# }
# # 發件人信息
# notification_email_from keepalived@qq.com
# # 郵件服務器地址
# smtp_server 127.0.0.1
# # 郵件服務器超時時間
# smtp_connect_timeout 30
# 唯一 id ,通常設置為 hostname
router_id lb1
}
# 檢查nginx是否存活
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 # 檢測時間間隔
weight -20 # 檢測失敗(腳本返回非0)則權重 -20
}
# 定義虛擬路由,VI_1 為虛擬路由的自定義標識符
vrrp_instance VI_1 {
state MASTER # 主節點為 MASTER ,備份節點為 BACKUP
priority 100 # 節點優先級,MASTER 比 BACKUP 高
interface ens33 # 綁定虛擬 IP 的網絡接口
virtual_router_id 101 # 虛擬路由的 id ,兩個節點設置必須一樣
advert_int 1 # 心跳報文發送間隔,默認 1s
# 默認組播模式下,keepalived 所有的信息都會向 224.0.0.18 的組播地址發送,產生眾多的無用信息,并且可能會產生干擾和沖突
# 可以使用單播模式,這是一種安全的方法,避免局域網內有大量的 keepalived 造成虛擬路由 id 的沖突
unicast_src_ip 192.168.19.158 # 配置單播的源地址,本機 IP
unicast_peer {
192.168.19.159 # 配置單播的目標地址,其它 IP
}
# 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx # 執行 Nginx 監控的服務
}
# 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.19.200 # 虛擬 ip,可以定義多個
}
}

同樣的步驟,修改 lb2 節點的 keepalived.conf 內容為:

[root@lb2 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
# # 通知郵件服務器的配置
# notification_email {
# # 當 master 失去 VIP 的時候,會發一封通知郵件到 your-email@qq.com
# your-email@qq.com
# }
# # 發件人信息
# notification_email_from keepalived@qq.com
# # 郵件服務器地址
# smtp_server 127.0.0.1
# # 郵件服務器超時時間
# smtp_connect_timeout 30
# 唯一 id ,通常設置為 hostname
router_id lb2
}
# 檢查nginx是否存活
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 # 檢測時間間隔
weight -20 # 檢測失敗(腳本返回非0)則權重 -20
}
# 定義虛擬路由,VI_1 為虛擬路由的自定義標識符
vrrp_instance VI_1 {
state BACKUP # 主節點為 MASTER ,備份節點為 BACKUP
priority 50 # 節點優先級,MASTER 比 BACKUP 高
interface ens33 # 綁定虛擬 IP 的網絡接口
virtual_router_id 101 # 虛擬路由的 id ,兩個節點設置必須一樣
advert_int 1 # 心跳報文發送間隔,默認 1s
# 默認組播模式下,keepalived 所有的信息都會向 224.0.0.18 的組播地址發送,產生眾多的無用信息,并且可能會產生干擾和沖突
# 可以使用單播模式,這是一種安全的方法,避免局域網內有大量的 keepalived 造成虛擬路由 id 的沖突
unicast_src_ip 192.168.19.159 # 配置單播的源地址,本機 IP
unicast_peer {
192.168.19.158 # 配置單播的目標地址,其它 IP
}
# 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx # 執行 Nginx 監控的服務
}
# 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.19.200 # 虛擬 ip,可以定義多個
}
}
[root@lb2 keepalived]#

在 global_defs 全局配置中,可以配置郵件通知,一旦 VIP 發生漂移(意味著主代理服務器發生了故障)就會發送郵箱通知我們去解決修復,而此時因為還有備代理服務器可以使用,不至于服務對外不可用。

整個配置的核心是在 vrrp_instance 虛擬路由的定義上,interface 指定綁定的網卡(節點 IP 所在的網卡);keepalived 默認為組播模式,我們為其更改為了單播;virtual_ipaddress 定義了需要生成的 VIP 列表(指定了 192.168.19.200)。

而 track_script 則是我們 VIP 漂移得以正常運作的關鍵,我們設定了每 2s 就去執行一次 /etc/keepalived/nginx_check.sh 腳本:

#!/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi

腳本實際就是檢測代理軟件(nginx)是否存活,如果掛了,就執行 killall keepalived 將自身停止,相當于將 VIP 讓位給備服務器。

  • 通常腳本里還會嘗試重啟一下代理軟件,如果重啟失敗,再考慮執行 kill

先給腳本執行權限,然后啟動 lb1 的 keepalived 服務:

[root@lb1 keepalived]# ls
keepalived.conf nginx_check.sh
[root@lb1 keepalived]# chmod 744 nginx_check.sh
[root@lb1 keepalived]# systemctl start keepalived
[root@lb1 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.158/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
inet 192.168.19.200/32 scope global ens33
[root@lb1 keepalived]#

啟動 lb2 的 keepalived 服務:

[root@lb2 keepalived]# ls
keepalived.conf nginx_check.sh
[root@lb2 keepalived]# chmod 744 nginx_check.sh
[root@lb2 keepalived]# systemctl start keepalived
[root@lb2 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.159/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
[root@lb2 keepalived]#

可以從 ip a 命令看到,當前 VIP 192.168.19.200 位于 lb1 節點上。

此時訪問 VIP 192.168.19.200 ,相當于訪問 lb1 節點:

接著模擬故障,模擬當 lb1 代理服務掛掉后,lb2 能不能頂替上來使用,我們可以手動停止 lb1 節點的 nginx :

[root@lb1 keepalived]# docker stop nginx
nginx
[root@lb1 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.158/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
[root@lb1 keepalived]#

此時發現,lb1 已經失去了 VIP 192.168.19.200 ,繼續看 lb2 :

[root@lb2 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.159/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
inet 192.168.19.200/32 scope global ens33
[root@lb2 keepalived]#

和預期一致,VIP 192.168.19.200 漂移到了 lb2 節點上。

再次訪問 VIP 192.168.19.200 ,服務依然可以正常調用,但是現在相當于在訪問 lb2 節點:

借助 keepalived ,我們成功實現了 nginx 代理的高可用,但是現在這種方案還是有缺陷的。

其實當前我們使用的是雙機主備方式(Active-Standby 方式),即備用服務器在正常情況下一直處于閑置狀態,這種方式不太經濟實惠。

對于雙機熱備,其實就是雙機高可用,還有另一種方案:雙主機方式(Active-Active 方式),即兩臺服務器互為主備狀態,任意一臺故障后,另一臺可以接管其流量。

雙主機方式

我們還是利用 keepalived 來實現雙主機方式。和之前的雙機主備方式不同的是,現在需要兩個 VIP 。

比如我們還是創建一個 VIP 為 192.168.19.200 ,正常情況下,該 VIP 綁定到 lb1 上;但是額外再創建一個 VIP 為 192.168.19.201 ,正常情況下,該 VIP 綁定到 lb2 上。

一旦 lb1 發生故障,VIP 192.168.19.200 立即漂移到 lb2 上;同樣的,lb2 發生故障,VIP 192.168.19.201 則立即漂移到 lb1 上。

而對于外部訪問端,我們可以適當分配,一部分客戶端調用 192.168.19.200 這個 VIP ,另一部分調用 192.168.19.201 。lb1 和 lb2 任意一個發生故障,對于外部訪問端都是可用狀態。

修改 lb1 節點的 keepalived.conf :

! Configuration File for keepalived
global_defs {
# # 通知郵件服務器的配置
# notification_email {
# # 當 master 失去 VIP 的時候,會發一封通知郵件到 your-email@qq.com
# your-email@qq.com
# }
# # 發件人信息
# notification_email_from keepalived@qq.com
# # 郵件服務器地址
# smtp_server 127.0.0.1
# # 郵件服務器超時時間
# smtp_connect_timeout 30
# 唯一 id ,通常設置為 hostname
router_id lb1
}
# 檢查nginx是否存活
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 # 檢測時間間隔
weight -20 # 檢測失敗(腳本返回非0)則權重 -20
}
# 定義虛擬路由,VI_1 為虛擬路由的自定義標識符
vrrp_instance VI_1 {
state MASTER # 主節點為 MASTER ,備份節點為 BACKUP
priority 100 # 節點優先級,MASTER 比 BACKUP 高
interface ens33 # 綁定虛擬 IP 的網絡接口
virtual_router_id 101 # 虛擬路由的 id ,兩個節點設置必須一樣
advert_int 1 # 心跳報文發送間隔,默認 1s
# 默認組播模式下,keepalived 所有的信息都會向 224.0.0.18 的組播地址發送,產生眾多的無用信息,并且可能會產生干擾和沖突
# 可以使用單播模式,這是一種安全的方法,避免局域網內有大量的 keepalived 造成虛擬路由 id 的沖突
unicast_src_ip 192.168.19.158 # 配置單播的源地址,本機 IP
unicast_peer {
192.168.19.159 # 配置單播的目標地址,其它 IP
}
# 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx # 執行 Nginx 監控的服務
}
# 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.19.200 # 虛擬 ip,可以定義多個
}
}
vrrp_instance VI_2 {
state BACKUP
priority 50
interface ens33
virtual_router_id 102
advert_int 1
unicast_src_ip 192.168.19.158
unicast_peer {
192.168.19.159
}
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.19.201
}
}

lb2 節點的 keepalived.conf :

! Configuration File for keepalived
global_defs {
# # 通知郵件服務器的配置
# notification_email {
# # 當 master 失去 VIP 的時候,會發一封通知郵件到 your-email@qq.com
# your-email@qq.com
# }
# # 發件人信息
# notification_email_from keepalived@qq.com
# # 郵件服務器地址
# smtp_server 127.0.0.1
# # 郵件服務器超時時間
# smtp_connect_timeout 30
# 唯一 id ,通常設置為 hostname
router_id lb2
}
# 檢查nginx是否存活
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 # 檢測時間間隔
weight -20 # 檢測失敗(腳本返回非0)則權重 -20
}
# 定義虛擬路由,VI_1 為虛擬路由的自定義標識符
vrrp_instance VI_1 {
state BACKUP # 主節點為 MASTER ,備份節點為 BACKUP
priority 50 # 節點優先級,MASTER 比 BACKUP 高
interface ens33 # 綁定虛擬 IP 的網絡接口
virtual_router_id 101 # 虛擬路由的 id ,兩個節點設置必須一樣
advert_int 1 # 心跳報文發送間隔,默認 1s
# 默認組播模式下,keepalived 所有的信息都會向 224.0.0.18 的組播地址發送,產生眾多的無用信息,并且可能會產生干擾和沖突
# 可以使用單播模式,這是一種安全的方法,避免局域網內有大量的 keepalived 造成虛擬路由 id 的沖突
unicast_src_ip 192.168.19.159 # 配置單播的源地址,本機 IP
unicast_peer {
192.168.19.158 # 配置單播的目標地址,其它 IP
}
# 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx # 執行 Nginx 監控的服務
}
# 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.19.200 # 虛擬 ip,可以定義多個
}
}
vrrp_instance VI_2 {
state MASTER
priority 100
interface ens33
virtual_router_id 102
advert_int 1
unicast_src_ip 192.168.19.159
unicast_peer {
192.168.19.158
}
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.19.201
}
}

其實就是在之前的基礎上增加了 VI_2 虛擬路由,創建 VIP 192.168.19.201 ,lb2 為主服務器,lb1 為備服務器。

重啟 lb1 節點的 keepalived 服務:

[root@lb1 keepalived]# systemctl restart keepalived
[root@lb1 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.158/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
inet 192.168.19.200/32 scope global ens33
[root@lb1 keepalived]#

lb2 節點的 keepalived 服務:

[root@lb2 keepalived]# systemctl restart keepalived
[root@lb2 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.159/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
inet 192.168.19.201/32 scope global ens33
[root@lb2 keepalived]#

對兩個 VIP 進行測試:

故障模擬,停止 lb2 節點的 nginx 代理服務:

[root@lb2 keepalived]# docker stop nginx
nginx
[root@lb2 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.159/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
[root@lb2 keepalived]#

查看 lb1 IP 信息,發現 VIP 192.168.19.201 已漂移到 lb1 上:

[root@lb1 keepalived]# ip a | grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.19.158/24 brd 192.168.19.255 scope global noprefixroute dynamic ens33
inet 192.168.19.200/32 scope global ens33
inet 192.168.19.201/32 scope global ens33
[root@lb1 keepalived]#

再次對兩個 VIP 進行測試,仍然處于可用狀態:

到此,我們也實現了基于雙主機方式的高可用代理方案。

總結

高可用的核心就是做 “冗余” ,有了 “冗余” 后就得考慮做自動故障轉移,使 “冗余” 的實例可以快速頂替使用。

本文介紹了 雙機主備方式 和 雙主機方式 兩種方案來解決代理的高可用。但是軟件開發沒有銀彈,因為這兩種方案都是在一個局域網內進行的,還是有很大的不可控風險,如果再繼續優化,就得考慮 同城雙活 、異地雙活 直至 異地多活 ,而這些就必須得靠強大的基礎設施能力來支撐了。

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2019-10-11 10:52:42

Web架構MongoDB

2017-01-17 10:25:06

HBase集群運維

2022-05-31 08:04:03

Redis高可用集群

2023-12-18 09:37:37

2021-03-17 10:05:42

KubernetesRedis數據庫

2021-06-17 06:29:16

kube-vip Kubernetes開源項目

2022-09-02 16:59:13

Kubernetes高可用Linux

2021-11-02 17:27:40

部署高可用Kubernetes

2017-10-09 09:12:35

攜程運維架構

2024-11-11 16:29:54

負載均衡器系統

2023-11-07 07:30:18

Hadoop高可用

2012-02-15 22:40:23

heartbeat高可用

2021-03-04 13:10:32

KubernetesRedisLinux

2015-07-17 10:25:43

kubernetesDocker集群系統

2017-02-19 19:57:05

ZooKeeper集群

2019-08-27 15:56:44

MySQL 互聯網數據庫

2017-02-06 11:43:57

ZooKeeper集群

2018-01-12 14:20:37

數據庫MySQL高可用架構

2021-09-09 07:45:25

kube-vip Kuberneteshostname

2023-11-01 07:55:44

K8sKubernetes
點贊
收藏

51CTO技術棧公眾號

99在线看视频| 中文字幕日韩av| 69sex久久精品国产麻豆| 色欲久久久天天天综合网 | 欧美精品一区二区高清在线观看| 国产免费一区二区视频| 黄网在线观看| 精品夜夜嗨av一区二区三区| 久久琪琪电影院| 中文字幕第4页| 日韩成人视屏| 在线观看视频一区二区| 8x8ⅹ国产精品一区二区二区| 神马精品久久| 国产美女av一区二区三区| 91精品国产91久久久久久久久| 91视频免费在观看| 欧美sss在线视频| 欧美日产在线观看| 国产a级片网站| 黄网站视频在线观看| 2欧美一区二区三区在线观看视频| 国产女人精品视频| 久久久久久久久久免费视频| 91精品综合| 亚洲日本成人网| 日韩大尺度视频| 久久国产三级| 色综合一个色综合| 青青视频免费在线| 成人性爱视频在线观看| 不卡一二三区首页| 亚洲已满18点击进入在线看片| 性色av免费观看| 亚洲天堂黄色| 久久在线免费视频| 女人十八毛片嫩草av| 美女毛片一区二区三区四区最新中文字幕亚洲 | 亚洲一区二区三区精品视频 | 91在线视频播放地址| 99三级在线| 国产精品国产一区二区三区四区| 久久久999| 97视频国产在线| 欧美精品久久久久性色| 亚洲精品网址| 久久这里有精品视频| 国产中文字幕久久| 日韩精品免费| 宅男66日本亚洲欧美视频| 日韩片在线观看| 久久99国产精品久久99大师| 日韩欧美国产高清| 国产探花一区二区三区| 电影一区二区三区久久免费观看| 欧美日韩中文一区| 国产又大又黄又粗的视频| 日韩大片欧美大片| 日韩欧美国产成人| av网站在线观看不卡| 182在线视频观看| 亚洲风情在线资源站| h无码动漫在线观看| 久草在线视频网站| 夜夜精品视频一区二区| 久久99久久久久久| 国产盗摄——sm在线视频| 亚洲妇熟xx妇色黄| 欧美成人免费在线观看视频| 日韩欧美精品一区二区三区| 婷婷丁香激情综合| av黄色在线网站| 成人美女大片| 欧美揉bbbbb揉bbbbb| 天堂av2020| www.成人网| 亚洲精品国产精品国自产观看浪潮| 国产精品手机在线观看| 任你躁在线精品免费| 亚洲精品一二区| 91l九色lporny| 99热国内精品永久免费观看| 欧美日韩爱爱视频| 国产香蕉在线视频| 久久国产一二区| 国产精品一区二区三区在线播放| 亚洲最新av网站| 国产成人午夜高潮毛片| 精品无人乱码一区二区三区的优势| 色播色播色播色播色播在线| 国产日韩欧美a| 新呦u视频一区二区| 免费大片黄在线| 亚洲成av人片www| 日韩精品一区二区三区不卡| 欧洲亚洲精品久久久久| 欧美变态口味重另类| 色婷婷免费视频| 日韩1区2区| 国内精品久久久久| 最新中文字幕第一页| 国产盗摄一区二区三区| 麻豆视频成人| av中文字幕在线播放| 精品成人av一区| 97超碰成人在线| 久久久久观看| 日韩在线视频网站| 日本在线观看视频网站| 免费观看30秒视频久久| 国产美女精品久久久| 2019中文字幕在线视频| 亚洲国产精品久久一线不卡| 9l视频白拍9色9l视频| 爱爱精品视频| 日韩亚洲欧美中文高清在线| 91浏览器在线观看| 国产美女视频一区| 欧美在线播放一区| 国语对白在线刺激| 6080日韩午夜伦伦午夜伦| 欧美大片免费播放器| 在线观看免费一区二区| 国产极品jizzhd欧美| 韩国av免费在线| 中文字幕制服丝袜一区二区三区| 无码人妻精品一区二区三区在线| 欧美电影在线观看一区| 国产一区二区三区视频| 天堂网一区二区三区| 国产精品18久久久久久久网站| 日本在线观看不卡| 欧美a级在线观看| 日韩欧美不卡在线观看视频| 精品手机在线视频| 视频一区二区国产| 快播亚洲色图| 精品人人视频| 亚洲国产精品国自产拍av秋霞| 黄色一级片中国| 六月婷婷色综合| 色噜噜一区二区| 亚洲不卡系列| 中文字幕国产精品| 国产日韩在线免费观看| 91视频.com| 久久无码高潮喷水| 日韩手机在线| 91极品女神在线| 黄色a在线观看| 亚洲一级电影视频| 日本人妻一区二区三区| 午夜日本精品| 91aaaa| 午夜激情在线| 精品区一区二区| 免费观看一级视频| 99久久伊人久久99| 草草久久久无码国产专区| 精品国产导航| 5566成人精品视频免费| 日本在线丨区| 欧美在线看片a免费观看| 久操视频在线观看免费| 蜜臀久久久久久久| 亚洲午夜精品久久久久久浪潮| 欧美成人毛片| 久久久精品在线观看| 国产aⅴ爽av久久久久成人| 亚洲精品高清在线| 97超碰免费在线观看| 欧美在线亚洲| 国产一区二区无遮挡| 色是在线视频| 在线成人中文字幕| 国产免费不卡视频| 亚洲成人精品在线观看| 在线观看福利片| 久久亚洲风情| 中文字幕久久综合| 综合成人在线| 欧美亚洲免费电影| 91在线看黄| 精品久久久三级丝袜| 欧美一级特黄视频| 国产精品拍天天在线| 亚洲精品乱码久久久久久9色| 亚洲成人中文| 日韩不卡av| 精品麻豆剧传媒av国产九九九| 午夜精品www| 在线观看免费版| 精品久久国产97色综合| 久久永久免费视频| 亚洲女与黑人做爰| 黄色a一级视频| 极品销魂美女一区二区三区| av网站手机在线观看| 嫩草影视亚洲| 亚洲综合日韩在线| 吉吉日韩欧美| 欧美丰满老妇厨房牲生活| 男人av在线| 欧美一卡2卡三卡4卡5免费| 国产一级在线视频| 国产精品久久网站| 国产激情视频网站| 精彩视频一区二区| 少妇高潮喷水在线观看| 99久久激情| 欧美三日本三级少妇三99| 精品999日本久久久影院| 欧美在线视频在线播放完整版免费观看| 亚洲麻豆精品| 亚洲欧美另类自拍| 亚洲av永久纯肉无码精品动漫| 91成人网在线| 日本a在线观看| 综合精品久久久| 色一情一交一乱一区二区三区| 丁香一区二区三区| 一个色综合久久| 日韩高清电影一区| 免费看黄在线看| 亚洲网色网站| 视频一区亚洲 | 国产一区二区精品在线观看| 久久久久久久久久久免费视频| 欧美jjzz| 制服丝袜综合日韩欧美| 欧美精品乱码| 免费99视频| 神马午夜久久| 国产一区不卡在线观看| 粉嫩av国产一区二区三区| 国产精品白丝jk喷水视频一区| 草草在线观看| 欧美激情精品久久久久久免费印度| 在线播放麻豆| 色琪琪综合男人的天堂aⅴ视频| 精品视频二区| 亚洲色图美腿丝袜| 日本一级在线观看| 精品一区精品二区| 亚洲色大成网站www| 亚洲成年人影院在线| 成人毛片在线免费观看| 日韩精品一区二区三区视频在线观看| 91av久久久| 欧美放荡的少妇| 97国产成人无码精品久久久| 精品视频1区2区3区| 国产裸体美女永久免费无遮挡| 91豆麻精品91久久久久久| 做爰无遮挡三级| 欧美日韩日日摸| 国产毛片毛片毛片毛片毛片| 在线电影院国产精品| 国产精品羞羞答答在线| 欧美一区二区播放| 国模无码一区二区三区| 亚洲精品第一国产综合精品| 深夜福利视频一区| 亚洲欧美日韩精品久久亚洲区| 国产在线色视频| 色综久久综合桃花网| 看女生喷水的网站在线观看| 欧美巨大黑人极品精男| 国语对白在线刺激| 欧美中文字幕视频在线观看| 国产韩日精品| 成人在线小视频| eeuss鲁片一区二区三区| 精品无码久久久久国产| 精品久久综合| 在线视频不卡国产| 国产综合亚洲精品一区二| 国产素人在线观看| 首页亚洲欧美制服丝腿| 国产精品自拍视频在线| 国产不卡免费视频| 女同毛片一区二区三区| 中文字幕精品三区| 欧美一区二区三区爽爽爽| 亚洲国产一区二区在线播放| 国产精品va无码一区二区三区| 在线精品视频一区二区| a网站在线观看| 日韩电影网在线| 免费av网站在线看| 91国内精品久久| 99久久伊人| 国产精品视频一区二区三区经| 欧美sss在线视频| 在线成人av电影| 亚洲精品婷婷| 亚洲欧美日韩三级| 9人人澡人人爽人人精品| 刘亦菲国产毛片bd| 亚洲成精国产精品女| 亚洲一级在线播放| 亚洲国产日韩欧美在线99| 日韩毛片久久久| 88xx成人精品| 久久精品一级| 欧美黑人3p| 亚洲欧美一区在线| 欧美激情精品久久久久久小说| 国产精品996| 亚洲av毛片基地| 午夜精品免费在线观看| 国产又粗又猛又爽又黄视频 | 无遮挡的视频在线观看| 亚州av一区二区| 欧一区二区三区| 在线精品日韩| 日产欧产美韩系列久久99| 日本道中文字幕| 一区二区三区毛片| 亚洲影院一区二区三区| 亚洲欧美另类人妖| 国产精品yjizz视频网| 91亚洲永久免费精品| 精品国产91| 成人av一级片| 99精品国产视频| 国产奶水涨喷在线播放| 91精品在线一区二区| 成年人在线观看网站| 136fldh精品导航福利| 岛国精品一区| 91大学生片黄在线观看| 麻豆freexxxx性91精品| 中国女人特级毛片| 色婷婷av一区二区三区大白胸| 男人天堂手机在线观看| 精品中文字幕在线观看| 宅男噜噜噜66国产精品免费| 日韩欧美一区二区三区四区五区| 免费一级欧美片在线播放| 免费不卡的av| 亚洲国产精品久久一线不卡| 黄色成人一级片| 久久久久久久久国产精品| 精品国产乱码久久久久久樱花| 亚洲一区二区三区乱码| 秋霞电影网一区二区| 中字幕一区二区三区乱码| 一本色道久久综合狠狠躁的推荐 | 久久综合久色欧美综合狠狠| 国产成人在线观看网站| 精品欧美一区二区三区精品久久| 色呦呦在线视频| 99理论电影网| 99精品热6080yy久久| 亚洲av无码一区二区三区网址 | 九九精品在线视频| 国产电影一区二区| 麻豆映画在线观看| 国产成人福利片| 久久久久久欧美精品se一二三四| 日韩精品一区二区三区在线播放| 欧美极品少妇videossex| 国产精品久久一区二区三区| 亚洲毛片一区| 中文字幕xxx| 欧美性视频一区二区三区| 一区二区三区视频在线观看视频| 91久久久久久久久| 欧美天天视频| 亚洲专区区免费| 欧美日产国产精品| 成人超碰在线| 欧美18视频| 卡一卡二国产精品| 九九热精彩视频| 亚洲男人天堂2023| 久久亚洲人体| 欧美视频在线第一页| 91免费在线播放| 在线观看av大片| 欧美激情综合亚洲一二区| 妖精视频一区二区三区免费观看| 日本中文字幕高清| 亚洲免费观看高清完整版在线观看 | 国产一区高清| 日韩精品免费一区| 久久免费看少妇高潮| 亚洲视频一区二区三区四区| 欧美久久精品一级黑人c片| 欧美人体视频| 午夜精品免费看| 黄网站色欧美视频| 久久77777| 欧美成熟毛茸茸复古| 久久精品国产成人一区二区三区| 日韩成人一区二区三区| 在线免费看av不卡| 盗摄系列偷拍视频精品tp| 91视频免费版污|