• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于K3s構(gòu)建面向云原生應(yīng)用的容器平臺(tái)設(shè)計(jì)與實(shí)踐

      2021-01-14 00:45:42劉忠
      現(xiàn)代信息科技 2021年12期
      關(guān)鍵詞:容器

      摘 ?要:視頻分析系統(tǒng)隨著檢測(cè)類型、檢測(cè)視頻路數(shù)的不斷增加,既有系統(tǒng)后臺(tái)架構(gòu)的弊端日漸凸顯,主要體現(xiàn)在高可用、部署、自動(dòng)化運(yùn)維、橫向自動(dòng)擴(kuò)縮容四個(gè)方面。為了解決這四個(gè)方面問(wèn)題,提出了基于K3s的云原生應(yīng)用容器平臺(tái)的架構(gòu)設(shè)計(jì)。經(jīng)試用實(shí)踐證明,該平臺(tái)架構(gòu)既保證了視頻分析系統(tǒng)的高可用性,又有效地提高了部署效率,在基本實(shí)現(xiàn)了自動(dòng)化運(yùn)維的同時(shí),也具有了橫向擴(kuò)縮容功能。

      關(guān)鍵詞:K3s;容器;自動(dòng)化運(yùn)維

      中圖分類號(hào):TP393 ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2021)12-0022-04

      Abstract: With the continuous increase of detection types and the number of detection video channels, the disadvantages of the background architecture of the existing video analysis system are becoming increasingly prominent, which are mainly reflected in four aspects: high availability, deployment, automatic operation and maintenance and horizontal automatic expansion and contraction. In order to solve these four problems, the architecture design of cloud native application container platform based on K3s is proposed. The trial practice shows that the platform architecture not only ensures the high availability of the video analysis system, but also effectively improves the deployment efficiency. It not only basically realizes automatic operation and maintenance, but also has the function of horizontal expansion and contraction.

      Keywords: K3s; container; automatic operation and maintenance

      0 ?引 ?言

      隨著高速鐵路的快速發(fā)展,為了進(jìn)一步提高車站、站臺(tái)以及沿線的安全,對(duì)視頻分析系統(tǒng)(以下簡(jiǎn)稱分析系統(tǒng))提出了更高的要求。在視頻檢測(cè)量不斷增多的同時(shí),多樣化的檢測(cè)需求也在不斷地提出,而分析系統(tǒng)通過(guò)不斷地增加視頻檢測(cè)服務(wù)來(lái)滿足需求。

      不斷增多的視頻檢測(cè)服務(wù)讓分析系統(tǒng)問(wèn)題凸顯:

      (1)由于檢測(cè)服務(wù)多,有些服務(wù)間彼此依賴,某一個(gè)服務(wù)的異常都可能導(dǎo)致某一類檢測(cè)服務(wù)的不可用。

      (2)以人工為主的部署,可維護(hù)性差。

      (3)以人工為主的運(yùn)維錯(cuò)誤率較高,導(dǎo)致穩(wěn)定性差。

      (4)在檢測(cè)需求波動(dòng)大時(shí),無(wú)法做到橫向自動(dòng)擴(kuò)縮容。因此,只有探索提高平臺(tái)的高可用、服務(wù)的易部署、運(yùn)維的自動(dòng)化、橫向的自動(dòng)擴(kuò)縮容的解決方案,才能解決目前分析系統(tǒng)所遇到的瓶頸問(wèn)題。

      容器技術(shù)+容器編排調(diào)度工具是國(guó)內(nèi)外現(xiàn)階段平臺(tái)建設(shè)領(lǐng)域的主流。本文根據(jù)分析系統(tǒng)自身業(yè)務(wù)的需求和特點(diǎn),結(jié)合K3S等開(kāi)源項(xiàng)目搭建私有的云原生應(yīng)用容器平臺(tái)(以下簡(jiǎn)稱容器云),并將原有系統(tǒng)的服務(wù)拆分改造并容器化后遷移到容器云上,以達(dá)到分析系統(tǒng)的高可用、易部署、自動(dòng)化運(yùn)維、橫向自動(dòng)擴(kuò)縮容的目的。

      1 ?開(kāi)源項(xiàng)目概述

      1.1 ?Docker

      Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包應(yīng)用以及依賴到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux設(shè)備或者Windows設(shè)備,也可以實(shí)現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口[1]。結(jié)合Dockers鏡像私庫(kù),可以方便地管理鏡像以及版本,達(dá)到了一次打包隨處部署的可能。同時(shí),將應(yīng)用部署到容器使其具有了可移植性,成為一種必然的趨勢(shì)。因此,可以將Docker作為構(gòu)建容器云的基礎(chǔ)引擎。

      1.2 ?Nvidia-device-plugin與Nvidia-docker

      Nvidia-device-plugin是用于K3s的NVIDIA設(shè)備插件。通過(guò)將此插件部署為一個(gè)DaemonSet??梢詫?shí)現(xiàn):

      (1)在集群的每個(gè)節(jié)點(diǎn)上公開(kāi)GPU的數(shù)量。

      (2)跟蹤GPU的運(yùn)行狀況。

      (3)在K8s集群中運(yùn)行支持GPU的容器。

      Nvidia-docker是NVIDIA容器工具包,允許用戶構(gòu)建和運(yùn)行GPU加速的Docker容器,該工具包包括一個(gè)容器運(yùn)行時(shí)庫(kù)和實(shí)用程序,用于自動(dòng)配置容器以利用NVIDIA GPU。目前分析系統(tǒng)中使用的正是NVIDIA的GPU設(shè)備,所以需要在配備了GPU的主機(jī)上部署以上兩個(gè)插件,使Docker支持GPU的應(yīng)用。

      1.3 ?K3s

      對(duì)于大型企業(yè)而言,隨著系統(tǒng)規(guī)模的不斷擴(kuò)大,應(yīng)用服務(wù)的數(shù)量和節(jié)點(diǎn)主機(jī)的數(shù)量都在逐漸增加,單純靠Docker已無(wú)法滿足系統(tǒng)運(yùn)維的需求[2]。K3s是Rancher開(kāi)源的一個(gè)輕量級(jí)的Kubernetes[3](以下簡(jiǎn)稱K8s)發(fā)行版,它針對(duì)邊緣計(jì)算、物聯(lián)網(wǎng)等場(chǎng)景進(jìn)行了高度優(yōu)化,最大程度減輕了外部依賴性。K3s保留了K8s的:

      (1)集群管理。

      (2)應(yīng)用健康檢測(cè)與自動(dòng)修復(fù)能力。

      (3)容器集群的自動(dòng)化部署。

      (4)支持服務(wù)的發(fā)現(xiàn)調(diào)度。

      (5)彈性伸縮等特性[4]。

      由于K8s背靠Google,且有眾多的成功案例。而K3s來(lái)源于K8s,因此基于K3s構(gòu)建容器云是一個(gè)不錯(cuò)的選擇。

      1.4 ?Prometheus

      Prometheus是一個(gè)系統(tǒng)監(jiān)控和告警的開(kāi)源項(xiàng)目,2016年加入CNCF(Cloud Native Computing Foundation),成為僅次于K8s之后的第二個(gè)托管項(xiàng)目。Prometheus的主要優(yōu)勢(shì):

      (1)由指標(biāo)名和鍵/值對(duì)標(biāo)簽標(biāo)識(shí)的時(shí)間序列數(shù)據(jù)組成的多維數(shù)據(jù)模型。

      (2)強(qiáng)大的查詢語(yǔ)言PromQL。

      (3)不依賴分布式存儲(chǔ),單個(gè)服務(wù)節(jié)點(diǎn)具有自治能力。

      (4)HTTP協(xié)議的數(shù)據(jù)服務(wù)接口。

      (5)支持多種類型的圖表和儀表盤[5]。

      目前已被廣泛地用于K8s集群的監(jiān)控系統(tǒng)中。因此,選擇Prometheus作為容器云的基礎(chǔ)監(jiān)控及告警的工具。

      1.5 ?Docker-Registry

      Registry是一個(gè)無(wú)狀態(tài)、高度可擴(kuò)展的服務(wù)端應(yīng)用程序,用于存儲(chǔ)和分發(fā)Docker鏡像。Registry是開(kāi)源的[6]。此項(xiàng)目是Docker官方提供給用戶構(gòu)建私有本地鏡像倉(cāng)庫(kù)的工具。因此,作為容器云的私有鏡像倉(cāng)庫(kù)工具。

      2 ?容器云的平臺(tái)設(shè)計(jì)

      2.1 ?總統(tǒng)設(shè)計(jì)

      容器云既可以部署在物理主機(jī)上,也可以部署在云主機(jī)上,總體架構(gòu)如圖1所示。

      資源層屬于設(shè)備層,可以是物理主機(jī)設(shè)備,也可以是云主機(jī)設(shè)備,主要是為平臺(tái)層提供存儲(chǔ)和部署能支撐容器的操作系統(tǒng)。本次平臺(tái)設(shè)計(jì)與實(shí)踐是以物理主機(jī)為主,用于檢測(cè)服務(wù)的主機(jī)設(shè)備還需要配備NVIDIA的GPU硬件。

      平臺(tái)層包括容器云的核心組件,如:集群監(jiān)控Prometheus、運(yùn)行鏡像的容器引擎Docker、支持GPU設(shè)備的容器插件、統(tǒng)一編排與調(diào)度的K3s、鏡像私庫(kù)Docker-Registry、高可用的分布式存儲(chǔ)MinIO等。

      應(yīng)用層是針對(duì)平臺(tái)層進(jìn)行對(duì)集群管理、應(yīng)用管理、部署管理、鏡像管理以及監(jiān)控管理等的一些平臺(tái)類的管理軟件。

      2.2 ?系統(tǒng)總體功能設(shè)計(jì)

      容器云,主要是對(duì)分析系統(tǒng)的可視化部署、自動(dòng)化運(yùn)維、服務(wù)高可用、橫向自動(dòng)擴(kuò)縮容四方面的支持。自動(dòng)化運(yùn)維包括:平臺(tái)監(jiān)控、故障自動(dòng)修復(fù)等,為分析系統(tǒng)的高可用運(yùn)行提供保障。

      2.2.1 ?可視化部署

      容器云對(duì)部署提供可視化界面,簡(jiǎn)化了通過(guò)編寫YAML或JSON文件等方式來(lái)部署的煩瑣操作,保證了部署的容器具有統(tǒng)一規(guī)范的命名、labels等,便于后期的運(yùn)維管理;通過(guò)可視化界面可以很方便地對(duì)所部署的容器選擇所依賴的GPU廠商,并將此容器部署到配備了所依賴廠商GPU的節(jié)點(diǎn)上,避免了由于部署錯(cuò)誤而導(dǎo)致容器不可用的問(wèn)題。可視化部署界面如圖2所示。

      2.2.2 ?自動(dòng)化運(yùn)維

      容器云提供對(duì)平臺(tái)的監(jiān)控、故障的自修復(fù)等功能,為運(yùn)維人員提供高效便捷的自動(dòng)化運(yùn)維工具:

      (1)平臺(tái)監(jiān)控。容器云監(jiān)控工具采用開(kāi)源項(xiàng)目Prometheus。提供的監(jiān)控項(xiàng)主要有:物理主機(jī)的狀態(tài)、平臺(tái)的運(yùn)行狀態(tài)、應(yīng)用的狀態(tài)、服務(wù)負(fù)載等方面的監(jiān)控指標(biāo)。同時(shí)以圖表及儀表盤的方式進(jìn)行展示。對(duì)異常告警可以通過(guò)郵件、微信等通信方式推送到指定的運(yùn)維人員,既降低了人工巡檢的成本,又縮短了故障發(fā)現(xiàn)的周期。集群主機(jī)節(jié)點(diǎn)及監(jiān)控如圖3所示。

      (2)故障自動(dòng)修復(fù)。當(dāng)K3s的健康檢查機(jī)制發(fā)現(xiàn)某個(gè)節(jié)點(diǎn)出現(xiàn)問(wèn)題,它會(huì)自動(dòng)將該節(jié)點(diǎn)上的資源轉(zhuǎn)移到其他節(jié)點(diǎn)上并完成自動(dòng)恢復(fù);當(dāng)檢測(cè)發(fā)現(xiàn)某個(gè)容器出現(xiàn)問(wèn)題時(shí),會(huì)重啟容器。私有倉(cāng)庫(kù)的搭建,為分析系統(tǒng)的服務(wù)出現(xiàn)異常時(shí)進(jìn)行自動(dòng)修復(fù)提供了支持,為新版本部署失敗后回滾到其他歷史版本提供了支持,為應(yīng)用服務(wù)的不間斷運(yùn)行提供了可能。

      2.2.3 ?服務(wù)高可用

      分析系統(tǒng)的服務(wù)高可用通過(guò)K3s的副本及探針等機(jī)制來(lái)實(shí)現(xiàn)。

      2.2.4 ?橫向自動(dòng)擴(kuò)縮容

      K3s根據(jù)容器預(yù)定義的負(fù)載指標(biāo)(包括:CPU、GPU、內(nèi)存、磁盤等)的使用情況來(lái)確定是否進(jìn)行擴(kuò)容或縮容。在分析系統(tǒng)中,主要以GPU的監(jiān)控指標(biāo)來(lái)確定擴(kuò)縮容的情況。

      2.3 ?容器云的高可用設(shè)計(jì)

      分析系統(tǒng)在面向生產(chǎn)環(huán)境的實(shí)踐中,高可用部署是無(wú)法避免的問(wèn)題。在這種情況下,通過(guò)容器云的高可用,來(lái)避免所造成的影響,或者將影響降到最低。

      2.3.1 ?K3s的高可用部署

      雖然單節(jié)點(diǎn)K3s集群可以滿足各種用例,但對(duì)于Kubernetes Control-plane的正常運(yùn)行至關(guān)重要的環(huán)境,可以在高可用配置中運(yùn)行K3s[7]。這種模式下,必須有奇數(shù)的服務(wù)器節(jié)點(diǎn),建議從三個(gè)節(jié)點(diǎn)開(kāi)始。K3s高可用架構(gòu)示意圖如圖4所示。

      2.3.2 ?存儲(chǔ)的可靠性

      容器云根據(jù)分析系統(tǒng)對(duì)存儲(chǔ)的安全性要求,對(duì)視頻檢測(cè)結(jié)果的圖片、視頻片段等文件都存儲(chǔ)到統(tǒng)一的分布式對(duì)象存儲(chǔ)MinIO中;對(duì)用戶數(shù)據(jù)則存儲(chǔ)到采用主從方式部署的高可用集群數(shù)據(jù)庫(kù)中。在K3s集群中采用ETCD作為數(shù)據(jù)存儲(chǔ)的媒介。

      2.3.3 ?分析系統(tǒng)的高可用

      分析系統(tǒng)的各類服務(wù)都以容器的形式部署到K3s中,K3s通過(guò)副本的冗余來(lái)提供服務(wù)的高可用。首先打包服務(wù)為鏡像并上傳到鏡像私庫(kù),然后在容器云的可視化部署界面,根據(jù)業(yè)務(wù)的實(shí)際運(yùn)行情況,以Deployment、StatefulSets或DaemonSets中的任一種方式部署服務(wù),通過(guò)配置合理的副本數(shù)和探針保證服務(wù)的高可用。當(dāng)主機(jī)節(jié)點(diǎn)出現(xiàn)故障或服務(wù)本身的BUG導(dǎo)致不可用時(shí),K3s就會(huì)自動(dòng)在其他主機(jī)上重新部署服務(wù)或重啟服務(wù),來(lái)保證與部署配置的一致性。

      2.3.4 ?監(jiān)控的多樣化與自動(dòng)告警

      容器云分別從主機(jī)節(jié)點(diǎn)、容器云、容器三個(gè)方面對(duì)容器云的健康狀況進(jìn)行監(jiān)控。

      在所有的主機(jī)節(jié)點(diǎn)上都部署了Prometheus的客戶端組件node-exporter(配備了NVIDIA GPU的主機(jī)需要部署dcgm-exporter[6],其他廠商的GPU需要根據(jù)廠商提供的插件安裝),實(shí)時(shí)采集宿主機(jī)的硬件、操作系統(tǒng)以及所部署的容器的關(guān)鍵指標(biāo)并上報(bào)。一旦出現(xiàn)告警,就會(huì)觸發(fā)Alert manager組件,并根據(jù)平臺(tái)配置進(jìn)行告警。

      對(duì)于容器,利用K3s的探針機(jī)制,定期檢測(cè)健康狀態(tài),當(dāng)檢測(cè)到異常時(shí),自動(dòng)根據(jù)配置策略對(duì)容器進(jìn)行下一步的操作,同時(shí)發(fā)送告警信息。

      以上三個(gè)方面的監(jiān)控都可以通過(guò)平臺(tái)配置,及時(shí)地通過(guò)即時(shí)通信軟件告知運(yùn)維人員,以便及時(shí)排查問(wèn)題。

      2.4 ?技術(shù)要點(diǎn)分析

      2.4.1 ?Docker支持GPU

      K3s支持對(duì)節(jié)點(diǎn)上的GPU進(jìn)行管理。但是需要根據(jù)各GPU廠商的要求部署GPU容器插件。例如NVIDIA的GPU容器插件要求:

      (1)必須預(yù)先安裝了NVIDIA驅(qū)動(dòng)。

      (2)必須預(yù)先安裝了Nvidia-Docker2.0。

      (3)Docker的默認(rèn)運(yùn)行時(shí)必須設(shè)置為Nvidia-Container-Runtime,而不是RunC。

      (4)NVIDIA驅(qū)動(dòng)版本~=384.81[8]。

      2.4.2 ?如何將容器部署到指定主機(jī)節(jié)點(diǎn)

      要將容器部署到指定的主機(jī)節(jié)點(diǎn),需要進(jìn)行兩方面的設(shè)置。首先對(duì)加入容器云集群并配備了GPU的主機(jī)增加自定義labels:hardware-type(例如:hardware-type=NVIDIA GPU);然后分析系統(tǒng)檢測(cè)服務(wù)部署時(shí)需要指定nodeSelector的值,具體內(nèi)容為:spec.nodeSelector.hardware-type=NVIDIAGPU或spec.template.spec.nodeSelector.hardware-type=NVIDIAGPU。按以上內(nèi)容配置后,就能將檢測(cè)服務(wù)部署到配備有NVIDIA GPU的主機(jī)節(jié)點(diǎn)上了。

      2.4.3 ?橫向自動(dòng)擴(kuò)縮容

      K3s提供了Pod水平自動(dòng)伸縮(Horizontal Pod Autoscaler, HPA),根據(jù)資源利用率或自定義的指標(biāo)自動(dòng)調(diào)整副本的數(shù)量,實(shí)現(xiàn)部署的自動(dòng)擴(kuò)容與縮容。讓部署的規(guī)模接近于實(shí)際服務(wù)的負(fù)載。

      2.4.4 ?服務(wù)的高可用

      K3s提供了ReplicaSet(RS)/Replication Controller(RC)來(lái)保證部署的服務(wù)是多副本的;而提供的Probe(探針)是對(duì)容器執(zhí)行的定期診斷,每次診斷都會(huì)獲得三種結(jié)果(成功、失敗、未知)之一,針對(duì)運(yùn)行中的容器,可以運(yùn)行三種探針的一種或多種:

      (1)livenessProbe,存活態(tài)探針,探測(cè)容器是否正常運(yùn)行,如果失敗,則殺死容器,并將根據(jù)其重啟策略決定未來(lái)。

      (2)readinessProbe,就緒態(tài)探針,探測(cè)容器是否準(zhǔn)備好為請(qǐng)求提供服務(wù),如果失敗,節(jié)點(diǎn)控制器從與容器組匹配的所有服務(wù)的節(jié)點(diǎn)列表中刪除該容器組的IP地址。

      (3)startupProbe,啟動(dòng)探針,探測(cè)容器中的應(yīng)用是否已經(jīng)啟動(dòng),如果失敗,那么其他探針都將被禁止。

      3 ?容器云試用成效

      在搭建完成的容器云上遷移并測(cè)試視頻分析系統(tǒng)的各個(gè)模塊后,得到以下試用效果:

      (1)具備了高可用性:容器云的高可用架構(gòu)設(shè)計(jì),通過(guò)冗余和故障的自動(dòng)修復(fù)保證了分析系統(tǒng)各類服務(wù)的高可用性。

      (2)提高了部署效率:在容器云的可視化部署界面只需要選擇鏡像、設(shè)置副本、需要GPU的選擇相應(yīng)的GPU廠商后,就可以部署一個(gè)應(yīng)用,相比之前依靠手動(dòng)或Shell腳本的部署,既降低了難度又提高了成功率。

      (3)提升了監(jiān)控能力:采用Prometheus對(duì)容器云的多級(jí)監(jiān)控,使得監(jiān)控指標(biāo)更豐富,監(jiān)控內(nèi)容更完善,運(yùn)維自動(dòng)化程度的加強(qiáng),提高了故障通知的及時(shí)性和故障響應(yīng)的效率。

      (4)實(shí)現(xiàn)了自動(dòng)擴(kuò)縮容:通過(guò)對(duì)檢測(cè)服務(wù)的容器預(yù)定義GPU的指標(biāo),可以自動(dòng)的對(duì)檢測(cè)服務(wù)進(jìn)行擴(kuò)容/縮容,既增強(qiáng)了服務(wù)的響應(yīng)能力又提高了GPU資源的利用率。

      4 ?結(jié) ?論

      容器云基于K3s技術(shù)將分析系統(tǒng)的部署可視化、運(yùn)維自動(dòng)化、各類服務(wù)高可用化、橫向擴(kuò)縮容自動(dòng)化。容器云在分析系統(tǒng)項(xiàng)目的遷移試用中達(dá)到了預(yù)期的效果,但對(duì)于原生云涉及的DevOps和持續(xù)交付兩部分本文暫未涉及,有待下一步進(jìn)行探索和實(shí)踐。

      參考文獻(xiàn):

      [1] 百度百科.Docker [EB/OL].[2021-04-19].https://baike. baidu.com/item/Docker/13344470?fr=aladdin.

      [2] 翁涅元,單杏花,閻志遠(yuǎn),等.基于Kubernetes的容器云平臺(tái)設(shè)計(jì)與實(shí)踐 [J].鐵路計(jì)算機(jī)應(yīng)用,2019,28(12):49-53.

      [3] Kubernetes. Kubernetes是什么? [EB/OL].[2021-04-19].https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/.

      [4] Rancher. K3s介紹 [EB/OL].[2021-04-19].https://docs. rancher.cn/docs/K3s/_index.

      [5] Prometheus. OVERVIEW [EB/OL]. [2021-04-19].https://prometheus.io/docs/introduction/overview/.

      [6] Docker Docs. Docker Registry [EB/OL].[2021-04-15].https://docs.docker.com/registry/.

      [7] Rancher.架構(gòu)介紹 [EB/OL].[2021-04-20].https://docs.rancher.cn/docs/K3s/architecture/_index.

      [8] Kubernetes.調(diào)度GPU [EB/OL].[2021-04-18].https://kubernetes.io/zh/docs/tasks/manage-gpus/scheduling-gpus/.

      作者簡(jiǎn)介:劉忠(1976.12—),男,漢族,河北張家口人,工程師,研究方向:通信信息。

      猜你喜歡
      容器
      容器倒置后壓力壓強(qiáng)如何變
      Different Containers不同的容器
      容器倒置后壓力壓強(qiáng)如何變
      人心像一個(gè)容器
      難以置信的事情
      怎樣量出4升水
      液體對(duì)容器底及容器對(duì)桌面的壓力和壓強(qiáng)
      考試周刊(2016年82期)2016-11-01 11:43:44
      直干藍(lán)桉容器育苗基質(zhì)的選擇
      取米
      什么不見(jiàn)了
      孩子(2015年10期)2015-09-10 07:22:44
      咸阳市| 曲靖市| 申扎县| 泰和县| 广宁县| 东港市| 南陵县| 富宁县| 阿巴嘎旗| 清丰县| 磐石市| 平舆县| 共和县| 宁安市| 黎川县| 黑水县| 萨嘎县| 连南| 贺兰县| 长阳| 台中县| 阜新| 武威市| 绥德县| 弋阳县| 长治市| 沾化县| 台北县| 万全县| 全州县| 将乐县| 监利县| 平阴县| 徐水县| 增城市| 扶绥县| 铁岭县| 通河县| 禹州市| 锡林浩特市| 徐水县|