网站建设进度,巴中免费网站建设,企业品牌网站建设应该怎么做,王烨在地府是什么身份写在前面#xff1a;在学习阶段#xff0c;我们想快速学习SpringCloudAlibaba功能#xff0c;但总是花费大量时间跟着视频或博客做组件配置。由于版本的更迭#xff0c;我们学习时的组件版本很可能和作者的不一致#xff0c;又或者是各自环境不一#xff0c;只能一坑又一…写在前面在学习阶段我们想快速学习SpringCloudAlibaba功能但总是花费大量时间跟着视频或博客做组件配置。由于版本的更迭我们学习时的组件版本很可能和作者的不一致又或者是各自环境不一只能一坑又一坑的踩。因此本篇博客针对这一痛点进行nacos集群部署记录。 关于nacos的理论知识以及单机版部署网上前人之述足矣。关于集群实战方面我看了一些视频和博客一般分为
window搭建学习不建议linux搭建环境准备繁琐docker单容器部署集群模式启动\停止修改配置繁琐docker-compose部署企业常用 但关于docker-compose部署方式一般都是单机单台版的因此我想完善一下集群部署这块并拓展一下docker-compose的使用方法因为企业中部署经常需要用到。废话不多说实战就开干
一、环境准备
1. 虚拟机
软件VmWare系统Centos7.6内存分配8G 关于虚拟机怎么配置我推荐下面这篇博客就不多介绍了。
VMware安装Centos7系统命令行模式_vm安装完centos镜像后怎么进入命令环境-CSDN博客文章浏览阅读6.2k次点赞4次收藏31次。一、准备软件、系统镜像二、创建新虚拟机三、安装CentOS7系统四、配置固定IP便于远程管理_vm安装完centos镜像后怎么进入命令环境https://blog.csdn.net/renfeigui0/article/details/102499358
2.安装docker 使用docker-compose首先需要下载docker和docker-compose。关于docker的下载完全可以参考我的另一篇博客
Study-02-Docker安装http://t.csdnimg.cn/zrrdO当时跟着视频敲得博客前面有些啰嗦。直接看从下面这部分开始复制粘贴即可
ps我上面的方法默认安装的最新版当然撰写本博客时间用的也是当前最新版。 3. 安装docker-compose
命令安装
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
ps:这种方法我没成功过因为网不好再者翻墙容易连接超时。这里有个很恶心的地方国内也有相关的源下载速度很快确实可以下但是下下来不能用这就很离谱试了几个博客的都是这。
手动安装推荐
访问网址
https://github.com/docker/compose/releaseshttps://github.com/docker/compose/releases这里以docker-compose v2.21.0为例 1点击Assets,下载 docker-compose-linux-x86_64 2上传文件 将docker-compose-linux-x86_64 上传至下面目录下(一般这个目录都有没有的话自己创建)。关于怎么上传Xshell和finalShell这些图形化工具都有。
ps为什么选择这个目录因为下载后默认就是这个目录。
cd /usr/local/bin 上传到该目录下后重命名为 docker-compose。
mv docker-compose-linux-x86_64 docker-compose 接下来就是赋予权限。
sudo chmod x /usr/local/bin/docker-compose 安装完成后进行验证
docker-compose --version 二、集群部署 使用docker-compose部署首先梳理nacos集群需要什么
mysql 8.0 镜像本版要求5.7nacos1.4.0 镜像 版本根据项目来部署使用一个msyql容器、三个nacos容器。 1. 创建目录
sudo mkdir -p /usr/local/software/nacos2. 构建docker-compose
1命令介绍
Compose 模板文件 - Docker — 从入门到实践https://yeasy.gitbook.io/docker_practice/compose/compose_file2构建梳理 nacos需要配置mysql所以mysql需要先运行。mysql 运行需要先初始化脚本创建nacos数据库和相关表。
3创建mysql初始化文件
在nacos目录下创建init_mysql目录然后创建init_nacos_mysql.sql文件。
mkdir init_mysql
vim init_nacos_mysql.sql 进入nacos官网,拷贝nacos_db中的内容至init_nacos_mysql.sql中
网址
https://github.com/alibaba/nacos/blob/develop/config/src/main/resources/META-INF/nacos-db.sqlhttps://github.com/alibaba/nacos/blob/develop/config/src/main/resources/META-INF/nacos-db.sql 由于官网sql不包括创建数据库内容所以在创建表结构上面需要加入创建数据库语句 /******************************************/
/* 数据库 nacos */
/* 字符集 utf8mb4 */
/* 排序规则 utf8mb4_general_ci */
/******************************************/CREATE DATABASE IF NOT EXISTS nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE nacos;wq保存退出即可
4创建文件
在上面创建的nacos目录下执行
vim docker-compose.yml
输入 i 进入编辑模式然后将下面内容复制进去第三节我对文件会进行详解 ps复制时不要忘记使用 i 进入编辑模式然后就是如果你误操作了的话在Esc命令模式下依次输入gg d G 可以快速清空文档。 这里我们使用了端口8846、8847、8848三个端口作为服务端口。 version: 3
services:mysql:image: mysql:8.0.20container_name: mysqlenvironment:- MYSQL_ROOT_PASSWORD123456volumes:- /usr/local/software/nacos/init_mysql:/docker-entrypoint-initdb.d- /usr/local/software/nacos/mysql_data:/var/lib/mysqlports:- 3306:3306networks:- nacos_networknacos1:image: nacos/nacos-server:1.4.0container_name: nacos1hostname: nacos1environment:- PREFER_HOST_MODEhostname- MODEcluster- NACOS_APPLICATION_PORT8846- NACOS_SERVERSnacos1:8846 nacos2:8847 nacos3:8848- SPRING_DATASOURCE_PLATFORMmysql- MYSQL_SERVICE_HOSTmysql- MYSQL_SERVICE_PORT3306- MYSQL_SERVICE_USERroot- MYSQL_SERVICE_PASSWORD123456- MYSQL_SERVICE_DB_NAMEnacosports:- 8846:8846depends_on:- mysqlnetworks:- nacos_networkhealthcheck:test: [CMD, curl, -f, http://localhost:8846/nacos/v1/console/health/readiness]interval: 30stimeout: 10sretries: 3nacos2:image: nacos/nacos-server:1.4.0container_name: nacos2hostname: nacos2environment:- PREFER_HOST_MODEhostname- MODEcluster- NACOS_APPLICATION_PORT8847- NACOS_SERVERSnacos1:8846 nacos2:8847 nacos3:8848- SPRING_DATASOURCE_PLATFORMmysql- MYSQL_SERVICE_HOSTmysql- MYSQL_SERVICE_PORT3306- MYSQL_SERVICE_USERroot- MYSQL_SERVICE_PASSWORD123456- MYSQL_SERVICE_DB_NAMEnacosports:- 8847:8847depends_on:- mysqlnetworks:- nacos_networkhealthcheck:test: [CMD, curl, -f, http://localhost:8847/nacos/v1/console/health/readiness]interval: 30stimeout: 10sretries: 3nacos3:image: nacos/nacos-server:1.4.0container_name: nacos3hostname: nacos3environment:- PREFER_HOST_MODEhostname- MODEcluster- NACOS_APPLICATION_PORT8848- NACOS_SERVERSnacos1:8846 nacos2:8847 nacos3:8848- SPRING_DATASOURCE_PLATFORMmysql- MYSQL_SERVICE_HOSTmysql- MYSQL_SERVICE_PORT3306- MYSQL_SERVICE_USERroot- MYSQL_SERVICE_PASSWORD123456- MYSQL_SERVICE_DB_NAMEnacosports:- 8848:8848depends_on:- mysqlnetworks:- nacos_networkhealthcheck:test: [CMD, curl, -f, http://localhost:8848/nacos/v1/console/health/readiness]interval: 30stimeout: 10sretries: 3networks:nacos_network:driver: bridge保存后退出
5启动
在nacos目录下输入命令
docker-compose up -d 6检查
健康状态返回为healthy说明集群部署成功 传统客户端方法 访问网址查看集群启动情况记得开放客户端对应端口的防火墙
sudo firewall-cmd --permanent --add-port8848/tcp sudo firewall-cmd --reloadhttp://ip:8848/nacos/ 如果想要远程访问数据库记得防火墙开放3306端口。
至此使用nacos集群部署完毕下面是docker-compose启动和停止相关命令 Tip: 要在docker-compose.yml同级目录下执行 首次创建命令(后台执行)
docker-compose up -d
启动命令
docker-compose start
重启命令
docker-compose restart
停止/删除命令 docker-compose down 这个命令不仅停止项目中定义的所有容器还会删除它们。除了容器之外与容器关联的网络、网络接口和默认的网络栈也会被删除。但请注意除非你特别指定否则挂载的卷volumes不会被删除。 docker-compose down --volumes 或 docker-compose down -v 这个命令会做docker-compose down相同的所有事情并且还会删除所有在docker-compose.yml文件中定义的卷volumes。这是一种彻底清理项目的方式因为它会移除所有数据。 docker-compose stop 这个命令只会停止容器不会删除任何东西。所有的数据、网络设置和卷都会保留以便后续可以通过docker-compose start再次启动。 当然对于集群快速部署上面已经完成了但是对于docker-compose构建估计还是有很多明白的地方下面我将在第三节分享自己的心得。
三、docker-compose详解 关于docker-compose基础知识我在第二节的构建docker-compose中附的有网址可以前去学习。下面我对本文编写的部署nacos文件进行详解。
1. 文件分析
version: 3 在docker-compose.yml文件中version: 3标志表示该文件使用的是Docker Compose的第3版语法。Docker Compose的不同版本提供了不同的特性和选项。版本3是为Docker 1.13及更高版本设计的提供了一系列针对生产环境优化的新功能和改进。
networks:nacos_network:driver: bridge
networks: 定义了所有自定义网络的配置。 nacos_network: 这是自定义网络的名称。 driver: bridge: 指定使用桥接bridge驱动程序。桥接网络是Docker网络的一种类型它使容器可以访问外部网络同时还能让不同的容器互相通信。 当使用docker-compose up启动服务时Docker Compose会自动创建这个自定义网络并且你在这个Compose文件里定义的所有服务都会连接到这个网络从而能够在该网络内互相通信。 为什么要使用Dokcer网络 隔离性: 不同的网络提供不同的隔离层这样不同的应用或服务之间不会相互影响。这有助于增强安全性。 简化配置: 使用Docker网络可以自动进行DNS解析容器可以通过服务名称而不是IP地址进行通信这大大简化了配置。 易于扩展: 当应用需要更多服务或组件时可以很容易地将它们加入到现有的Docker网络中而不需要对现有系统进行大量修改。 mysql:image: mysql:8.0.20container_name: mysqlenvironment:- MYSQL_ROOT_PASSWORD123456volumes:- /usr/local/software/nacos/init_mysql:/docker-entrypoint-initdb.d- /usr/local/software/nacos/mysql_data:/var/lib/mysqlports:- 3306:3306networks:- nacos_network
mysql:自定义服务名可以用这个名称在Docker Compose内部引用这个服务。image: 指定使用哪个Docker镜像来创建容器这里是MySQL的8.0.20版本。container_name: 定义容器的名称为mysql。environment: 定义环境变量。 MYSQL_ROOT_PASSWORD123456: 设置MySQL root用户的密码为123456。volumes: 映射宿主机和容器内的文件或目录。 /usr/local/software/nacos/init_mysql:/docker-entrypoint-initdb.d: 将宿主机的/usr/local/software/nacos/init_mysql目录映射到容器的/docker-entrypoint-initdb.d目录。用于初始化数据库。/usr/local/software/nacos/mysql_data:/var/lib/mysql: 将宿主机的/usr/local/software/nacos/mysql_data目录映射到容器的/var/lib/mysql目录用于保存MySQL的数据。ports: 端口映射。 3306:3306: 将容器的3306端口映射到宿主机的3306端口。networks: 网络设置。 nacos_network: 这个容器将连接到名为nacos_network的自定义网络。 nacos1:image: nacos/nacos-server:1.4.0container_name: nacos1hostname: nacos1environment:- PREFER_HOST_MODEhostname- MODEcluster- NACOS_APPLICATION_PORT8846- NACOS_SERVERSnacos1:8846 nacos2:8847 nacos3:8848- SPRING_DATASOURCE_PLATFORMmysql- MYSQL_SERVICE_HOSTmysql- MYSQL_SERVICE_PORT3306- MYSQL_SERVICE_USERroot- MYSQL_SERVICE_PASSWORD123456- MYSQL_SERVICE_DB_NAMEnacosports:- 8846:8846depends_on:- mysqlnetworks:- nacos_networkhealthcheck:test: [CMD, curl, -f, http://localhost:8846/nacos/v1/console/health/readiness]interval: 30stimeout: 10sretries: 3 nacos1: 服务名称定义nacos1,nacos2,nacos3服务就可以在内部调用了。 image: 指定使用哪个Docker镜像来创建容器这里是Nacos Server的1.4.0版本。 container_name: 定义容器的名称为nacos1。 hostname: 设置容器内部的主机名为nacos1不写的话默认为容器id。 environment: 定义环境变量。 PREFER_HOST_MODEhostnameNacos首选的主机模式设置为主机名上面我们自定义为了nacos1。MODEclusterNacos运行在集群模式下。NACOS_APPLICATION_PORT8846Nacos应用的端口。NACOS_SERVERSnacos1:8846 nacos2:8847 nacos3:8848集群中其他Nacos服务器的地址和端口。这里也可以写ip地址但记得加例如“192.168.64.1:8846 192.168.64.1:8847 192.168.64.1:8848”SPRING_DATASOURCE_PLATFORMmysql使用MySQL作为数据源。MYSQL_SERVICE_HOSTmysqlMySQL服务的主机名。MYSQL_SERVICE_PORT3306MySQL服务的端口。MYSQL_SERVICE_USERrootMySQL的用户。MYSQL_SERVICE_PASSWORD123456MySQL用户的密码。MYSQL_SERVICE_DB_NAMEnacos使用的MySQL数据库名称。 ports: 端口映射。 8846:8846: 将容器的8846端口映射到宿主机的8846端口。 depends_on: 依赖服务。 mysql: nacos1服务依赖于mysql服务,mysql启动后才执行nacos1。还有一种 networks: 网络设置。 nacos_network: 这个容器将连接到名为nacos_network的自定义网络。 healthcheck: 健康检查设置。 test: 执行的健康检查命令nacos有健康检查命令。interval: 检查间隔。timeout: 超时时间。retries: 重试次数。
其他集群配置和nacos1配置一致只需要更改端口号和服务名就可以实现增加集群节点。
2. 其他问题 如何修改Nacos配置 直接在environment中修改nacos参数即可但是修改docker-compose后需要重新构建。但是需要重新启动服务。
重新启动服务: 有两种主要方法可以重新启动服务以应用更改。 全部重新启动: 使用docker-compose down将现有的服务容器、网络、卷和图像全部停止并删除然后使用docker-compose up重新启动。 部分重新启动: 如果你只是修改了一个服务你也可以仅重新启动该服务。使用docker-compose up -d service_name来重新启动特定的服务。这样做通常更快因为它不会影响到其他正在运行的服务。例如只修改了nacos1服务则执行docker-compose up -d nacos1。 内存配置过大问题 nacos会设置默认JVM参数如果感觉比较大可以自定义参数在environment中增加下面的参数配置即可。最后根据情况选择重启服务方式。 - JVM_XMS1g- JVM_XMX1g- JVM_XMN512m 出错了如何查看日志 docker logs -f 容器id nacos状态不是healthy? 第一次构建有时候会出现某个服务启动失败的情况有可能是因为数据库容器没有及时启动可以执行docker-compose restart命令重启试试。还有启动时间较长会处于Starting状态耐心等待即可如若不行请使用上面的查看日志命令具体定位原因。有可能会有疑惑为什么docker-compose中使用了depends_on还会出现加载顺序失败的问题下面进行补充 启动顺序: 使用depends_on会控制容器的启动顺序但它不会等待依赖的服务“完全就绪”后再启动。例如数据库可能需要一些时间初始化但depends_on不会等数据库初始化完成。 停止顺序: depends_on也影响容器的停止顺序。依赖服务将先于依赖它的服务停止。 健康检查: 如果你需要等待依赖服务完全启动例如数据库初始化完成可以在docker-compose.yml中为依赖服务添加一个healthcheck字段。 并非强制性: 即使没有使用depends_on所有服务仍然可以手动按任何顺序启动和停止。depends_on只是自动化这个过程。 四、对比普通docker构建
1. 构建mysql
拉取镜像
docker pull mysql:8.0.20
启动镜像
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.20
2. 构建nacos集群
docker run -d \
-e PREFER_HOST_MODEhostname \
-e MODEcluster \
-e NACOS_APPLICATION_PORT8846 \
-e NACOS_SERVERS192.168.64.142:8846 192.168.64.142:8847 192.168.64.142:8848 \
-e SPRING_DATASOURCE_PLATFORMmysql \
-e MYSQL_SERVICE_HOST192.168.64.142 \
-e MYSQL_SERVICE_PORT3306 \
-e MYSQL_SERVICE_USERroot \
-e MYSQL_SERVICE_PASSWORD123456 \
-e MYSQL_SERVICE_DB_NAMEnacos \
-e NACOS_SERVER_IP192.168.64.142 \
-p 8846:8846 \
--name my-nacos1 \
nacos/nacos-server:1.4.0docker run -d \
-e PREFER_HOST_MODEhostname \
-e MODEcluster \
-e NACOS_APPLICATION_PORT8847 \
-e NACOS_SERVERS192.168.64.142:8846 192.168.64.142:8847 192.168.64.142:8848 \
-e SPRING_DATASOURCE_PLATFORMmysql \
-e MYSQL_SERVICE_HOST192.168.64.142 \
-e MYSQL_SERVICE_PORT3306 \
-e MYSQL_SERVICE_USERroot \
-e MYSQL_SERVICE_PASSWORD123456 \
-e MYSQL_SERVICE_DB_NAMEnacos \
-e NACOS_SERVER_IP192.168.64.142 \
-p 8847:8847 \
--name my-nacos2 \
nacos/nacos-server:1.4.0docker run -d \
-e PREFER_HOST_MODEhostname \
-e MODEcluster \
-e NACOS_APPLICATION_PORT8848 \
-e NACOS_SERVERS192.168.64.142:8846 192.168.64.142:8847 192.168.64.142:8848 \
-e SPRING_DATASOURCE_PLATFORMmysql \
-e MYSQL_SERVICE_HOST192.168.64.142 \
-e MYSQL_SERVICE_PORT3306 \
-e MYSQL_SERVICE_USERroot \
-e MYSQL_SERVICE_PASSWORD123456 \
-e MYSQL_SERVICE_DB_NAMEnacos \
-e NACOS_SERVER_IP192.168.64.142 \
-p 8848:8848 \
--name my-nacos3 \
nacos/nacos-server:1.4.0
开放防火墙端口
sudo firewall-cmd --permanent --add-port8846/tcp sudo firewall-cmd --permanent --add-port8847/tcp sudo firewall-cmd --permanent --add-port8848/tcp sudo firewall-cmd --reload测试访问
http://192.168.64.142:8846/nacos http://192.168.64.142:8847/nacos http://192.168.64.142:8848/nacos
3. 优缺点对比 Docker Compose构建的优点 简单性和一致性: 通过一个docker-compose.yml文件你可以定义整个应用环境的所有服务、网络和卷这样可以确保每次部署都是一致的。 自动化: 一条docker-compose up命令就可以启动你在docker-compose.yml中定义的所有服务和依赖。 便于本地开发: 对于多服务应用使用Docker Compose可以轻易地在本地机器上模拟生产环境。 依赖管理: 通过depends_on字段可以轻松管理服务间的依赖关系。 可读性和文档化: docker-compose.yml文件也作为一种文档可以让其他开发者或系统管理员快速了解应用的结构和服务。 网络配置: 简化了容器间网络连接的设置自动配置了一个默认的网络环境。 缩放和负载均衡: 使用docker-compose可以方便地扩展服务的实例数量。 Docker Compose构建的缺点 复杂性: 对于单一应用或只有一个服务的简单项目使用Docker Compose可能显得过于复杂。 学习曲线: 相较于Docker单命令需要时间学习docker-compose.yml文件的语法和选项。 不适用于生产: Docker Compose主要是为了简化开发和测试环境的配置而不是用于生产环境。对于生产环境更推荐使用如Kubernetes这样的容器编排工具。 资源消耗: 如果你在本地机器上运行多个容器可能会消耗大量的资源。 Docker单台运行的优点 简单快捷: 对于简单应用或单个服务使用基础的Docker命令更为直接和快速。 更少的抽象: 没有额外的抽象层有时候这样更容易理解和调试。 适用于生产: Docker容器可以在生产环境中单独运行或者被集成到其他容器编排解决方案中。 Docker单台运行的缺点 手动管理: 每个容器和服务都需要手动启动、停止和连接。 难以管理依赖: 如果有多个相互依赖的服务手动管理它们会变得复杂和容易出错。 不易于复制: 没有一个统一的配置文件迁移到另一台机器或共享给其他开发者会更困难。 缺乏自动化和一致性: 由于没有自动化脚本和定义好的配置可能会导致环境不一致的问题。 本文详细介绍了docker-compose在单台服务器上构建集群虽然真实开发中并不会这样做而是使用的真实的服务器搭建集群。但是通过本次搭建的过程可以知道docker-compose的基本应用。如果道友有足够的时间部署项目时不妨改造试试假设你的微服务项目有study_front,study_backend1,study_backend2mysql等等。使用docker-compose部署构建可以很方便的管理和维护迁移到别处也不会因为环境问题而头疼。 至此一个使用docker-compose搭建nacos集群完毕恭喜道友在学习之路上更进一步。这学习大道茫茫然而你我都是这条路上的苦行僧在此留下心得祝你我都能修的圆满。咱们下一个路口BUG见 文章转载自: http://www.morning.rysmn.cn.gov.cn.rysmn.cn http://www.morning.qqbjt.cn.gov.cn.qqbjt.cn http://www.morning.jfgmx.cn.gov.cn.jfgmx.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn http://www.morning.lktjj.cn.gov.cn.lktjj.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.trffl.cn.gov.cn.trffl.cn http://www.morning.qbtkg.cn.gov.cn.qbtkg.cn http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn http://www.morning.plfy.cn.gov.cn.plfy.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.nndbz.cn.gov.cn.nndbz.cn http://www.morning.mfnjk.cn.gov.cn.mfnjk.cn http://www.morning.dqkrf.cn.gov.cn.dqkrf.cn http://www.morning.wwxg.cn.gov.cn.wwxg.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.rahllp.com.gov.cn.rahllp.com http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn http://www.morning.tthmg.cn.gov.cn.tthmg.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.bntfy.cn.gov.cn.bntfy.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.yckrm.cn.gov.cn.yckrm.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.qtfss.cn.gov.cn.qtfss.cn http://www.morning.zsrjn.cn.gov.cn.zsrjn.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.jnoegg.com.gov.cn.jnoegg.com http://www.morning.wtnyg.cn.gov.cn.wtnyg.cn http://www.morning.yrhsg.cn.gov.cn.yrhsg.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.snyqb.cn.gov.cn.snyqb.cn http://www.morning.zpzys.cn.gov.cn.zpzys.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.qmnhw.cn.gov.cn.qmnhw.cn http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.smcfk.cn.gov.cn.smcfk.cn http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.qqrqb.cn.gov.cn.qqrqb.cn http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn http://www.morning.bntfy.cn.gov.cn.bntfy.cn http://www.morning.lmjkn.cn.gov.cn.lmjkn.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.wslr.cn.gov.cn.wslr.cn http://www.morning.qbfqb.cn.gov.cn.qbfqb.cn http://www.morning.ffydh.cn.gov.cn.ffydh.cn http://www.morning.lhhkp.cn.gov.cn.lhhkp.cn http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.xfmzk.cn.gov.cn.xfmzk.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.pcngq.cn.gov.cn.pcngq.cn http://www.morning.pmghz.cn.gov.cn.pmghz.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.kflzy.cn.gov.cn.kflzy.cn http://www.morning.lxmks.cn.gov.cn.lxmks.cn http://www.morning.kxnjg.cn.gov.cn.kxnjg.cn http://www.morning.ltywr.cn.gov.cn.ltywr.cn http://www.morning.lbxcc.cn.gov.cn.lbxcc.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn