宁波网站推广,电脑网站与手机的区别是什么,微信客户管理系统平台,自己做网站都要什么手续使用一个Dockerfile模版文件可以定义一个单独的应用容器#xff0c;当需要定义多个容器时就需要编排
docker swarm#xff08;管理跨节点#xff09;
编排工具——docker compose
Dockerfile可以让用户管理一个单独的应用容器#xff1b;而Compose则允许用户在一个模板当需要定义多个容器时就需要编排
docker swarm管理跨节点
编排工具——docker compose
Dockerfile可以让用户管理一个单独的应用容器而Compose则允许用户在一个模板YAML格式中定义一组相关联的应用容器被称为一个 project即项目例如一个 Web 服务容器再加上后端的数据库服务容器等。
Docker-compose简介
Docker-compose将所有管理的容器分为三层工程project、服务service、以及容器container
Docker-Compose运行目录下的所有文件docker-compose.ymlextends文件或环境变量文件等组成一个工程若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例Docker-Compose并没有解决负载均衡的问题因此需要借助其它工具实现服务发现及负载均衡比如 Consul。
工程LNMP
服务nginx、mysql、php
容器docker 容器 --name 主机名 镜像 image 端口 -p 网络 --network 数据卷 -v ... docker-compose的作用
1.可以简化docker容器的管理 2.使多个容器之间的部署和链接变得更加简单可靠同时还能够实现服务自动扩展和容器的定期更新等功能 3.还支持设置各种容器之间的依赖关系比如先启动数据库容器才能启动应用容器
yml文件 coppose部署
1.环境安装
先安装Docker才能安装Docker Compose
1. Docker Compose 环境安装Docker Compose 是 Docker 的独立产品因此需要安装 Docker 之后在单独安装 Docker Compose#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
#安装
chmod x /usr/local/bin/docker-compose
#查看版本
docker-compose --version YAML文件格式及编写注意事项 ☆☆☆ YAML 数据结构通过缩进来表示连续的项目通过减号来表示键值对用冒号分隔数组用中括号 [] 括起来 hash 用花括号 {} 括起来
使用YAML是需要注意下面事项
大小写敏感
通过缩进表示层级关系
不支持制表符tab键缩进只能使用空格缩进
缩进的空格数目不重要只要先同层级左对齐通常开头缩进2个字符
用 # 号注释
符号字符后缩进1个空格如用冒号: 顿号、逗号, 横杠-
如果包含特殊字符用单引号引起来会作为普通字符串处理双引号()特殊字符作为本身想表达的意思
name:Hi,\nTom
缩进
vim /etc/
set tabstop2 #tab缩进为2格
数据结构
对象映射键值对的字典
animal: pets
序列数组
2种方式
- Cat
- Dog
- Goldfish[Cat,Dog,Goldfish] 双引号逗号隔开
布尔值
debug: true
debug: false
yaml格式
languages: #序列的映射- Java- Golang- Pythonwebsites: #映射的映射cpu: 2memory: 1024Mswap: 2048Mdisk: 60G
json格式
{languages: [Java,Golang,Python ],resources: {cpu: 2,memory: 1024M,swap: 2048M,disk: 60G}
}Baidu:www.baidu.com
wangyi: www.163.com
tengxun: www.qq.com
键:{值}
school: bei dakgc: (两个空格)yunjisuan:- dingding- benet- wanglei- zhoubo- dalaodashuju:- lijia- chenming
3、Docker Compose配置常用字段
字段描述 build 指定 Dockerfile 文件名 要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定dockerfile构建镜像上下文路径context可以是 dockerfile 的路径或者是指向 git 仓库的 url 地址image指定镜像command:执行命令覆盖容器启动后默认执行的命令container_name指定容器名称由于容器名称是唯一的如果指定自定义名称则无法scale指定容器数量deploy指定部署和运行服务相关配置只能在 Swarm 模式使用environment添加环境变量networks加入网络引用顶级networks下条目network_mode设置容器的网络模式如 hostbridge...ports暴露容器端口与 -p 相同但端口不能低于 60volumes挂载一个宿主机目录或命令卷到容器命名卷要在顶级 volumes 定义卷名称volumes_from从另一个服务或容器挂载卷可选参数 :ro 和 :rw仅版本 2 支持hostname容器主机名sysctls在容器内设置内核参数links连接到另外一个容器- 服务名称[:服务别名]privileged用来给容器root权限注意是不安全的true | falserestart设置重启策略noalwaysnounless-st-failureoped no默认策略在容器退出时不重启容器。 on-failure在容器非正常退出时退出状态非0才会重启容器。 on-failure:3在容器非正常退出时重启容器最多重启3次。 always在容器退出时总是重启容器。 unless-stopped在容器退出的容器时总是重启容器但是不考虑在 Docker 守护进程启动时就已经停止了。depends_on 在使用Compose时最大的好处就是少打启动命令但一般项目容器启动的顺序是有要求的如果直接从上到下启动容器可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。 php: depends_on: apache mysql depends on 会先启动该命令下的容器
4、Docker Compose常用命令
字段描述build重新构建服务ps列出容器up创建和启动容器exec在容器里面执行命令scale指定一个服务容器启动数量top显示容器进程logs查看容器输出down删除容器、网络、数据卷和镜像stop/start/restart停止/启动/重启服务 5、Docker Compose文件结构
2支持单机编排
3支持单机和多机编排
yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml #创建模板脚本
├── nginx
│?? ├── Dockerfile #创建容器脚本
│?? ├── nginx-1.12.0.tar.gz #复制源码包
│?? └── run.sh #启动服务脚本
└── wwwroot└── index.html #站点网页
1准备依赖文件
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginxvim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image hmj
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c make
RUN useradd -M -s /sbin/nologin nginx
#上传nginx软件压缩包并解压
ADD nginx-1.12.0.tar.gz /usr/local/src/
#指定工作目录
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-http_stub_status_module make make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443 //方法一
RUN echo daemon off; /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD [/run.sh]
//方法二
ENTRYPOINT [ /usr/local/nginx/sbin/nginx, -g, daemon off; ]echo h1this is test web/h1 /opt/compose_nginx/wwwroot/index.html
2编写配置文件docker-compose.yml
vim /opt/compose_nginx/docker-compose.yml
version: 3
services:nginx:container_name: web1hostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- 1216:801217:443networks:lnmp:ipv4_address: 172.18.0.10volumes:- ./wwwroot:/usr/local/nginx/htmlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d
-f, --file FILE 使用特定的 compose 模板文件默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称默认使用目录名称
-d 在后台运行
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b48dceee248f compose_nginx_nginx /run.sh About a minute ago Up About a minute 0.0.0.0:1216-80/tcp, 0.0.0.0:1217-443/tcp compose_nginx_nginx_1cd /opt/compose_nginx/
docker-compose ps #必须在docker-compose.yml所在目录执行此命令浏览器访问http://192.168.10.23:1216
2、
nginx tomcat docker-compose编排
Docker consul的容器服务更新与发现 Consul
什么是服务注册与发现 后端服务将自己的网络位置注册到服务发现模块服务发现以K-V的方式记录下来K为服务名V就是IP:PORT服务发现模块会定时健康检查并轮询访问注册的后端服务当前端调用时就会提供网络位置并调用服务
什么是consul 内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案不再需要依赖其他工具比如ZooKeeper等。服务部署简单只有一个可运行的二进制的包。每个节点都需要运行agent他有两种运行模式server 和 client。 每个数据中心官方建议需要3或5个server节点以保证数据安全同时保证server-leader的选举能够正确的进行。
在client模式下所有注册到当前节点的服务会被转发到server节点本身是不持久化这些信息。 在server模式下功能和client模式相似唯一不同的是它会把所有的信息持久化到本地这样遇到故障信息是可以被保留的。
server-leader负责同步注册信息给其他节点和各个节点的健康检查
consul提供的一些关键特性
服务注册与发现consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易一些外部服务例如saas提供的也可以一样注册。健康检查健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成可以防止服务转发到故障的服务上面。Key/Value存储一个用来存储动态配置的系统。提供简单的HTTP接口可以在任何地方操作。 多数据中心无需复杂的配置即可支持任意数量的区域。
安装consul的作用是服务注册与发现将容器本身的一些信息注册到consul里面其他程序可以通过consul获取注册的先关服务信息
Cousul是一个基于分布式的服务发现和配置管理工具可以快速构建分布式架构提供服务发现和服务治理等的功能特点同时Cousul还提供了可靠的保证多数据中心和强大的API
consul
主要工作分为两部分服务发现和配置管理temlate 服务发现是指在分布式计算环境下自动发现可用的服务实例并将其注册到cousul上一边是其他服务进行调用 配置管理是指通过consul动态更新分布式架构中的配置信息包括环境变量、属性值、文件、数据库等 consul可以与多种不同的服务一起使用包括kubernetes、docker、mescos等是分布式系统不可或缺的一部分 consul部署
设备和环境准备
consul服务器 192.168.10.23 运行consul服务、nginx服务、consul-template守护进程
registrator服务器 192.168.10.13 运行registrator容器、运行nginx容器systemctl stop firewalld.service
setenforce 0
---consul服务器---
1.建立Consul服务
mkdir /opt/consul
cp consul_0.9.2_linux_amd64.zip /opt/consul
cd /opt/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin///设置代理在后台启动 consul 服务端consul agent \
-server \
-bootstrap \
-ui \
-data-dir/var/lib/consul-data \
-bind192.168.10.23 \
-client0.0.0.0 \
-nodeconsul-server01 /var/log/consul.log ------------------------------------------------------------------------------------
-server 以server身份启动。默认是client。
-bootstrap 用来控制一个server是否在bootstrap模式在一个数据中心中只能有一个server处于bootstrap模式当一个server处于 bootstrap模式时可以自己选举为 server-leader。
-bootstrap-expect2 集群要求的最少server数量当低于这个数量集群即失效。
-ui 指定开启 UI 界面这样可以通过 http://localhost:8500/ui 这样的地址访问 consul 自带的 web UI 界面。
-data-dir 指定数据存储目录。
-bind 指定用来在集群内部的通讯地址集群内的所有节点到此地址都必须是可达的默认是0.0.0.0。
-client 指定 consul 绑定在哪个 client 地址上这个地址提供 HTTP、DNS、RPC 等服务默认是 127.0.0.1。
-node 节点在集群中的名称在一个集群中必须是唯一的默认是该节点的主机名。
------------------------------------------------------------------------------------
-datacenter指定数据中心名称默认是dc1
netstat -natp | grep consul------------------------------------------------------------------------------------
启动consul后默认会监听5个端口
8300replication副本代表同步、leader领导者、 farwarding转发的端口
8301lan cossip的端口 #内部同一数据中心端口通信
8302wan gossip的端口 #不同数据中心端口通信
8500web ui界面的端口 #用与http接口和web
8600使用dns协议查看节点信息的端口 #用于预注册的服务发现使用DNS协议查看节点信息的端口
------------------------------------------------------------------------------------
2.查看集群信息 #查看members状态
consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.10.23:8301 alive server 0.9.2 2 dc1#查看集群状态
consul operator raft list-peersconsul info | grep leaderleader trueleader_addr 192.168.10.23:8300
3.通过http api 获取集群信息
curl 127.0.0.1:8500/v1/status/peers #查看集群server成员
curl 127.0.0.1:8500/v1/status/leader #集群 server-leader
curl 127.0.0.1:8500/v1/catalog/services #注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx #查看 nginx 服务信息
curl 127.0.0.1:8500/v1/catalog/nodes #集群节点详细信息
---registrator服务器---
//容器服务自动加入 Nginx 集群
1.安装Gliderlabs/Registraor
Gliderlabs/Registrator 可检查容器运行状态自动注册还可注销 docker 容器的服务到服务配置中心。目前支持 Consul、Etcd 和 SkyDNS2。docker run -d \
--nameregistrator \
--nethost \
-v /var/run/docker.sock:/tmp/docker.sock \
--restartalways \
gliderlabs/registrator:latest \
--ip192.168.10.13 \
consul://192.168.10.23:8500------------------------------------------------------------------------------------nethost 把运行的docker容器设定为host网络模式。
-v /var/run/docker.sock:/tmp/docker.sock 把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中。
--restartalways 设置在容器退出时总是重启容器。
--ip 刚才把network指定了host模式所以我们指定ip为宿主机的ip。
----------------------------------------------------------------------------------
consul指定consul服务器的ip和端口
2.测试服务发现功能是否正常
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd httpd #-h设置容器主机名
3.验证http和nginx服务是否注册到consul
浏览器中输入 http://192.168.10.23:8500在 Web 页面中“单击 NODES”然后单击“consurl-server01”会出现 5 个服务。//在consul服务器使用curl测试连接服务器
curl 127.0.0.1:8500/v1/catalog/services
{consul:[],httpd:[],nginx:[]}
----consul-template----
Consul-Template是基于Consul的自动替换配置文件的应用。Consul-Template是一个守护进程用于实时查询Consul集群信息并更新文件系统上任意数量的指定模板生成配置文件。更新完成以后可以选择运行 shell 命令执行更新操作重新加载 Nginx。
Consul-Template可以查询Consul中的服务目录、Key、Key-values 等。这种强大的抽象功能和查询语言模板可以使 Consul-Template 特别适合动态的创建配置文件。例如创建Apache/Nginx Proxy Balancers 、 Haproxy Backends等。
1.准备template nginx模版文件
//在consul服务器上操作
vim /opt/consul/nginx.ctmpl
#定义nginx upstream一个简单模板
upstream http_backend {{{range service nginx}}
server {{.Address}}:{{.Port}};
{{end}}
}#定义一个server监听8000端口反向代理到upstream
server {listen 8000;server_name localhost 192.168.10.23;access_log /var/log/nginx/kgc.com-access.log; #修改日志路径index index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://http_backend;}
}
2.编译安装nginx
yum -y install pcre-devel zlib-devel gcc gcc-c make
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure --prefix/usr/local/nginx --usernginx --groupnginx make -j make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3.配置nginx
vim /usr/local/nginx/conf/nginx.conf
......
http {include mime.types;include vhost/*.conf; #添加虚拟主机目录default_type application/octet-stream;
......//创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost //创建日志文件目录
mkdir /var/log/nginx//启动nginx
nginx
4.配置并启动template
unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin///在前台启动 template 服务启动后不要按 ctrlc 中止 consul-template 进程。
consul-template --consul-addr 192.168.10.23:8500 \
--template /opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload \
--log-levelinfo//另外打开一个终端查看生成配置文件
upstream http_backend {server 192.168.10.13:83;server 192.168.10.13:84;}server {listen 8000;server_name 192.168.10.23;access_log /var/log/nginx/kgc.cn-access.log;index index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://http_backend;}
}
5.访问template-nginx
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f0dc08956f4 httpd httpd-foreground 1 hours ago Up 1 hours 0.0.0.0:89-80/tcp test-04
a0bde07299da httpd httpd-foreground 1 hours ago Up 1 hours 0.0.0.0:88-80/tcp test-03
4f74d2c38844 nginx /docker-entrypoint.… 1 hours ago Up 1 hours 0.0.0.0:84-80/tcp test-02
b73106db285b nginx /docker-entrypoint.… 1 hours ago Up 1 hours 0.0.0.0:83-80/tcp test-01
409331c16824 gliderlabs/registrator:latest /bin/registrator -i… 1 hours ago Up 1 hours registratordocker exec -it 4f74d2c38844 bash
echo this is test1 web /usr/share/nginx/html/index.htmldocker exec -it b73106db285b bash
echo this is test2 web /usr/share/nginx/html/index.html浏览器访问http://192.168.10.23:8000/并不断刷新。
6.增加一个nginx容器节点
1增加一个 nginx 容器节点测试服务发现及配置更新功能。
docker run -itd -p:85:80 --name test-05 -h test05 nginx//观察 template 服务会从模板更新/usr/local/nginx/conf/vhost/kgc.conf 文件内容并且重载 nginx 服务。2查看/usr/local/nginx/conf/vhost/kgc.conf 文件内容
cat /usr/local/nginx/conf/vhost/kgc.conf
upstream http_backend {
server 192.168.10.23:83;去
server 192.168.10.23:84;
server 192.168.10.23:85;
server 192.168.10.23:86;
}3查看三台 nginx 容器日志请求正常轮询到各个容器节点上
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05
docker logs -f test-06---consul多节点---
//添加一台已有docker环境的服务器192.168.10.14/24加入已有的群集中
consul agent \
-server \
-ui \
-data-dir/var/lib/consul-data \
-bind192.168.10.14 \
-client0.0.0.0 \
-nodeconsul-server02 \
-enable-script-checkstrue \
-datacenterdc1 \
-join 192.168.10.23 /var/log/consul.log ----------------------------------------------------------------------------------
-enable-script-checkstrue 设置检查服务为可用
-datacenter : 数据中心名称
----------------------------------------------------------------------------------
-join加入到已有的集群中
consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.10.23:8301 alive server 0.9.2 2 dc1
consul-server02 192.168.10.14:8301 alive server 0.9.2 2 dc1consul operator raft list-peers
Node ID Address State Voter RaftProtocol
Node ID Address State Voter RaftProtocol
consul-server01 192.168.10.23:8300 192.168.10.23:8300 leader true 2
consul-server02 192.168.10.14:8300 192.168.10.13:8300 follower true 2consul agent 的server模式
docker logs -f 名称 查看容器日志 文章转载自: http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.dxrbp.cn.gov.cn.dxrbp.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.djpzg.cn.gov.cn.djpzg.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn http://www.morning.mprky.cn.gov.cn.mprky.cn http://www.morning.zqcsj.cn.gov.cn.zqcsj.cn http://www.morning.mknxd.cn.gov.cn.mknxd.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn http://www.morning.krzrg.cn.gov.cn.krzrg.cn http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn http://www.morning.rknjx.cn.gov.cn.rknjx.cn http://www.morning.nqcts.cn.gov.cn.nqcts.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.sflnx.cn.gov.cn.sflnx.cn http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.sfwcb.cn.gov.cn.sfwcb.cn http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.bncrx.cn.gov.cn.bncrx.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn http://www.morning.blzrj.cn.gov.cn.blzrj.cn http://www.morning.ttcmdsg.cn.gov.cn.ttcmdsg.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.pfbx.cn.gov.cn.pfbx.cn http://www.morning.qfqld.cn.gov.cn.qfqld.cn http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn http://www.morning.gl-group.cn.gov.cn.gl-group.cn http://www.morning.kgcss.cn.gov.cn.kgcss.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.hffpy.cn.gov.cn.hffpy.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.tqpds.cn.gov.cn.tqpds.cn http://www.morning.fksxs.cn.gov.cn.fksxs.cn http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.swkzk.cn.gov.cn.swkzk.cn http://www.morning.cnbdn.cn.gov.cn.cnbdn.cn http://www.morning.ljbch.cn.gov.cn.ljbch.cn http://www.morning.kclkb.cn.gov.cn.kclkb.cn http://www.morning.btpll.cn.gov.cn.btpll.cn http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.ntqjh.cn.gov.cn.ntqjh.cn http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.bfrff.cn.gov.cn.bfrff.cn http://www.morning.hcrxn.cn.gov.cn.hcrxn.cn http://www.morning.elbae.cn.gov.cn.elbae.cn http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn http://www.morning.wmlby.cn.gov.cn.wmlby.cn http://www.morning.bwkhp.cn.gov.cn.bwkhp.cn http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn http://www.morning.rghkg.cn.gov.cn.rghkg.cn http://www.morning.nrzbq.cn.gov.cn.nrzbq.cn