- 特 点
- 音通信采用PTT
- 类 型
- 移动通信系统
- 中文名
- 集群
- 功 能
- 共享资源、分担费用等
-
集群
2015-06-27 18:35:19现在如果要构造一个真正在生产环境上可使用的可靠的系统,基本都离不开集群的概念,总的来说集群是指由若干互相独立的机器通过高速网络组成的一个整体服务,整个集群的内部实现相对外部是透明的,对外部而言它就像一...集群
- 现在如果要构造一个真正在生产环境上可使用的可靠的系统,基本都离不开集群的概念,总的来说集群是指由若干互相独立的机器通过高速网络组成的一个整体服务,整个集群的内部实现相对外部是透明的,对外部而言它就像一个独立的服务器。要使若干机器协同工作不是一件简单的事,其核心是如何在多机器之间进行通信及各种任务调度使之协同工作。
- 在工程上常见的两种集群是——负载均衡集群和高可用集群。
- 负载均衡集群(Load Balance Cluster),随着系统的处理量的不断增加,很快到达一台机器的处理极限,所以需要更多的机器来分担处理,负载均衡集群一般是通过一定的分发算法把访问流量均匀分布到集群里面的各个机器上进行处理,理想的集群是通过添加机器使处理能力达到线性增长,但现实中往往处理过程并非是无状态的,会涉及到一些共享状态变量,所以当集群数量达到一定程度后处理能力并不能按线性增长且可靠性可能也会降低。关于负载均衡集群如何协调分配分发请求的问题,即可以使用专门的负载均衡硬件如F5,也可以使用软件级别的方式实现负载均衡如LVS、HAProxy等。
- 高可用集群(High Available Cluster),高可用集群通过软件把若干机器连接起来,这种集群更偏重的是当集群中某个机器发生故障后能通过自动切换或流量转移等措施来保证整个集群对外的可用性。在实际运用中很经典的就是mysql数据库的主从节点,一般情况如果是一主多从我们会使用读写分离措施,主节点负责执行写操作而从节点执行读操作,一旦主节点发生故障后系统将自动从多个从节点中选举出一个节点作为主节点继续对外提供服务,保证了服务的高可用。高可用集群与负载均衡集群一般不会绝对地划分开,我们不会将一台机器什么也不做就放着就等其他机器出故障再去候补,为了使用地更加高效可以把这些备用(standby)的机器用于负载均衡,故障发生后再接管故障节点的职责。
========广告时间========
鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。
=========================
欢迎关注:
-
-
redis集群搭建(非常详细,适合新手)
2018-10-01 16:33:03redis集群搭建 在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程 下载redis压缩包,然后解压压缩文件; 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件; 把编译...redis集群搭建
在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程
- 下载redis压缩包,然后解压压缩文件;
- 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件;
- 把编译好的redis源文件安装到/usr/local/redis目录下,如果/local目录下没有redis目录,会自动新建redis目录;
- 进入/usr/local/redis/bin目录,直接./redis-server启动redis(此时为前端启动redis);
- 将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的redis.conf文件复制到/usr/local/redis/bin目录下,然后修改该redis.conf文件->daemonize:no 改为daemonize:yse;
- 在/bin目录下通过./redis-server redis.conf启动redis(此时为后台启动)。
综上redis单机版安装启动完成。
具体详细带图步骤请参考 -> redis入门
请原谅我的啰嗦,ok,接着咱们回到本次话题----redis集群搭建!
一、Redis Cluster(Redis集群)简介
- redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本;
- redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;
- redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
- 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法;
- 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法;
- 那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。
- 综上所述,每个Redis集群理论上最多可以有16384个节点。
二、集群搭建需要的环境
2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
2.3 安装ruby
三、集群搭建具体步骤如下(注意要关闭防火墙)
3.1 在usr/local目录下新建redis-cluster目录,用于存放集群节点
3.2 把redis目录下的bin目录下的所有文件复制到/usr/local/redis-cluster/redis01目录下,不用担心这里没有redis01目录,会自动创建的。操作命令如下(注意当前所在路径):cp -r redis/bin/ redis-cluster/redis01
3.3 删除redis01目录下的快照文件dump.rdb,并且修改该目录下的redis.cnf文件,具体修改两处地方:一是端口号修改为7001,二是开启集群创建模式,打开注释即可。分别如下图所示:
删除dump.rdb文件
修改端口号为7001,默认是6379
将cluster-enabled yes 的注释打开
3.4 将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006。分别如下图所示:
创建redis02-06目录
分别修改redis.conf文件端口号为7002-7006
3.5 接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,命令为start-all.sh,文件内容如下:cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd ..
3.6 创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,指令如下:
chmod +x start-all.sh
3.7 执行start-all.sh脚本,启动6个redis节点
3.8 ok,至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件。大家不要觉得图片多看起来冗长所以觉得麻烦,其实以上步骤也就一句话的事情:创建6个redis实例(6个节点)并启动。
要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下:yum install ruby
然后需要把ruby相关的包安装到服务器,我这里用的是redis-3.0.0.gem,大家需要注意的是:redis的版本和ruby包的版本最好保持一致。
将Ruby包安装到服务器:需要先下载再安装,如图
安装命令如下:gem install redis-3.0.0.gem
3.9 上一步中已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下。那么这个ruby脚本工具在哪里呢?之前提到过,在redis解压文件的源代码里,即redis/src目录下的redis-trib.rb文件。
3.10 将该ruby工具(redis-trib.rb)复制到redis-cluster目录下,指令如下:cp redis-trib.rb /usr/local/redis-cluster
然后使用该脚本文件搭建集群,指令如下:
./redis-trib.rb create --replicas 1 47.106.219.251:7001 47.106.219.251:7002 47.106.219.251:7003 47.106.219.251:7004 47.106.219.251:7005 47.106.219.251:7006
注意:此处大家应该根据自己的服务器ip输入对应的ip地址!
中途有个地方需要手动输入yes即可
至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。3.11 最后连接集群节点,连接任意一个即可:
redis01/redis-cli -p 7001 -c
注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:
四、结语
呼~~~长舒一口气…终于搭建好了Redis集群。
整个过程其实挺简单,本篇主要正对入门级别的小伙伴,插入了很多图片,所以显得冗长,希望大家多多理解,如果不当之处,还望及时指正~最后,加上两条redis集群基本命令:
1.查看当前集群信息cluster info
2.查看集群里有多少个节点
cluster nodes
-
大数据_09 【zookeeper集群搭建】
2020-10-20 17:56:48大数据_08 【zookeeper集群搭建】01 linux 环境02 下载安装包 上传 解压03 修改环境变量(注意:3台zookeeper都需要修改)04 修改Zookeeper配置文件05 创建文件夹06 分发安装包到其他机器07 启动(每台机器)08 查看...大数据_09 【zookeeper集群搭建】
01 linux 环境
- 安装前需要安装好jdk
- 检测集群时间是否同步
- 检测防火墙是否关闭
- 检测主机 ip映射有没有配置
02 下载安装包 上传 解压
tar -zxvf zookeeper-3.4.5.tar.gz
03 修改环境变量(注意:3台zookeeper都需要修改)
vi /etc/profile export ZOOKEEPER_HOME=/home/hadoop/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin source /etc/profile
04 修改Zookeeper配置文件
cd zookeeper/conf cp zoo_sample.cfg zoo.cfg vi zoo.cfg 添加内容: dataDir=/root/apps/zookeeper/zkdata server.1=node01:2888:3888 ## (心跳端口、选举端口) server.2=node02:2888:3888 server.3=node03:2888:3888
注意 配置文件中不要有中文 这个【 ## (心跳端口、选举端口) 】 要去掉
05 创建文件夹
cd /home/hadoop/zookeeper/ mkdir zkdata
在data文件夹下新建myid文件,myid的文件内容为: cd zkdata echo 1 > myid
06 分发安装包到其他机器
scp -r /root/apps root@node02:/root/ scp -r /root/apps root@node03:/root/ ##修改其他机器的配置文件 修改myid文件 到node02上:修改myid为:2 到node03上:修改myid为:3
07 启动(每台机器)
zkServer.sh start 或者编写一个脚本来批量启动所有机器: for host in "node01 node02 node03" do ssh $host "source/etc/profile;/root/apps/zookeeper/bin/zkServer.sh start" done
08 查看集群状态
jps(查看进程) zkServer.sh status(查看集群状态,主从信息) 如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查
-
【1】zookeeper集群搭建
2019-12-10 14:16:45目录 知识点1:搭建Zookeeper集群 ...真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭建在一台虚...目录
知识点1:搭建Zookeeper集群
1、搭建要求
真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上,用端口进行区分。
我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)
2、准备工作
重新部署一台虚拟机作为我们搭建集群的测试服务器。
(1)安装JDK 【此步骤省略】。
(2)Zookeeper压缩包上传到服务器
(3)将Zookeeper解压 ,创建data目录 ,将 conf下zoo_sample.cfg 文件改名为 zoo.cfg
(4)建立/usr/local/zookeeper-cluster目录,将解压后的Zookeeper复制到以下三个目录
/usr/local/zookeeper-cluster/zookeeper-1 /usr/local/zookeeper-cluster/zookeeper-2 /usr/local/zookeeper-cluster/zookeeper-3
相关命令:
mkdir /usr/local/zookeeper-cluster cp -r zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-1 cp -r zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-2 cp -r zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-3
(5)配置每一个Zookeeper 的dataDir(zoo.cfg) clientPort 分别为2181 2182 2183
修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
clientPort=2181 dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data
修改/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
clientPort=2182 dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data
修改/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
clientPort=2183 dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data
3、配置集群
(1)在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。这个文件就是记录每个服务器的ID
如果你要创建的文本文件内容比较简单,我们可以通过echo 命令快速创建文件
格式为:
echo 内容 >文件名
例如我们为第一个zookeeper指定ID为1,则输入命令
(2)在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。
集群服务器IP列表如下
server.1=192.168.64.128:2881:3881 server.2=192.168.64.128:2882:3882 server.3=192.168.64.128:2883:3883
解释:server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口
4、启动集群
启动集群就是分别启动每个实例。
/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start /usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start /usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start
启动后我们查询一下每个实例的运行状态
先查询第一个服务
/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
Mode为follower表示是跟随者(从)
再查询第二个服务Mod 为leader表示是领导者(主)
查询第三个为跟随者(从)
5、模拟集群异常
(1)首先我们先测试如果是从服务器挂掉,会怎么样,把3号服务器停掉,观察1号和2号,发现状态并没有变化
由此得出结论,3号节点的集群,从服务器挂掉,集群正常
(2)我们再把1号服务器(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。
由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。
(3)我们再次把1号服务器启动起来,发现2号服务器又开始正常工作了。而且依然是领导者。
(4)我们把3号服务器也启动起来,把2号服务器停掉,停掉后观察1号和3号的状态。
发现新的leader产生了~
由此我们得出结论,当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader ;
(5)我们再次测试,当我们把我们会发现,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者
2号服务器重新启动起来,启动后,会发生什么?2号服务器会再次成为新的领导吗?我们看结果;
由此我们得出结论,当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者。
知识点2:Dubbox连接zookeeper集群
修改服务提供者和服务调用者的spring 配置文件:
<!-- 指定注册中心地址 --> <dubbo:registry protocol="zookeeper" address="192.168.64.128:2181,192.168.64.128:2182,192.168.64.128:2183"> </dubbo:registry>
-
memcached完整的搭建集群过程
2020-07-30 17:21:21集群 准备三个节点(伪集群-同一台机器的不同端口) # ------节点----|--端口--|-节点名称 192.168.16.37 | 11211 | node1 192.168.16.37 | 11212 | node2 192.168.16.37 | 11213 | node3 启动命令 # ... -
使用docker搭建hadoop分布式集群
2016-01-13 18:16:26使用docker搭建部署hadoop分布式集群 在网上找了很长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,只能自己写一个了。 一:环境准备: 1:首先要有一个Centos7操作系统,可以在虚拟机中安装... -
ElasticSearch7.6集群搭建
2020-03-30 16:30:42ElasticSearch7.6集群搭建 -
大数据集群、计算机网络、交换机、局域网、网络拓扑简要介绍
2020-10-05 15:07:35介绍集群计算机网络交换机局域网网络拓扑 集群 集群是一组相互独立的、通过高速计算机网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。 ... -
服务器集群
2018-09-29 16:57:30计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统中的单个计算机通常称为节点,通常通过... -
redis5.0.0集群搭建【实战经历】
2020-06-04 19:50:42redis集群搭建 作者:陈土锋 时间:2020年6月2日 目录 一、环境介绍... 1 1、机器准备... 1 2、关闭防护墙和selinux. 1 3、时间同步... 1 二、Redis Cluster(Redis集群)简介... 2 三、集群搭建需要的环境... -
-
RabbitMQ集群
2020-03-06 21:30:39RabbitMQ集群 在RabbitMQ集群里,运行时状态包含交换器、队列、绑定器、用户、虚拟主机以及策略,它们对所有节点都可用。 这种共享运行时状态的特性,使得集群中的每一个节点都能绑发布或者删除连接到第一个节点创建... -
Minio分布式集群搭建
2018-09-04 15:58:57一、基础环境 Minio下载 ...本集群由2台服务器构成(官方推荐集群最小4台服务器),每个服务器上挂载两个磁盘目录 2.2、创建相关目录(所有节点) 数据存储目录 mkdir... -
spark 集群搭建 详细步骤
2016-07-20 13:05:16最近好不容易搞到了三台测试机,可以用来搭建spark集群搞模型。本宝宝开心得不行,赶紧行动,把spark集群搭起来,模型跑起来。1.搭建hadoop集群hadoop的hdfs文件系统是整个生态圈的基础,因为数据量大了以后,数据... -
大白话解说,半分钟就懂 --- 分布式与集群是什么 ? 区别是什么?
2018-05-23 12:10:27PS:这篇文章算是笔记,仅部分文字是原创,相当内容只是收集、整理、提炼、总结别人写的。 没有标为原创 是出于对部分内容原作者的尊重和感谢... 但若你要转载还是请带上我家地址哦,毕竟这些内容都不是现成的哦 ~... -
什么是集群&集群的分类
2019-06-13 09:16:30计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常... -
分布式进阶(十九) 基于集群的动态反馈负载均衡策略
2016-03-14 16:16:36基于集群的动态反馈负载均衡策略 基于动态反馈机制的集群负载均衡算法研究 目前应用最为广泛的集群计算技术主要分为三大类:高可用性集群技术、高性能计算集群技术和负载均衡集群技术。 德国的CarlAdamPetri于... -
Redis集群:Redis3.X集群环境搭建、查询集群信息
2018-12-13 08:22:23redis集群机制 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 (2)节点的fail是通过集群中超过半数的节点检测失效时才生效。 (3)客户端与redis节点直连,不需要中间proxy层.... -
CPU 集群 / GPU 集群/ 异构集群 /分布式
2017-03-29 14:45:18集群是个物理形态,分布式是个工作方式。只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,嗯,C/S架构也可以叫分布式。 集群... -
集群搭建
2017-08-12 13:34:554. 集群搭建 4.1 HADOOP集群搭建 4.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataNode ... -
集群索引和非集群索引
2018-10-11 07:59:44索引体系结构分为集群或非集群。集群索引是这样的索引:其在数据页面中的行的顺序对应于索引中的行的顺序。此顺序是任何表中只能存在一个集群索引的原因,而该表中可存在大量非集群索引。在某些数据库系统中,集群... -
ContextCaptureMaster/Smart3D 集群处理详解
2018-04-20 19:22:45不管你是否需要集群处理,都建议按照集群的步骤来做 配置集群环境后,可以选择不集群处理 没有配置集群环境之后想集群就有点费劲,甚至可能导致任务莫名失败 · 相关概念 问:什么是集群? 答:不是一台电脑... -
Zookeeper集群搭建
2018-05-09 00:55:32在大型分布式集群系统中,Zookeeper是一个非常重要的分布式协调服务组件;其应用场景非常广泛,如做服务的注册中心、实现分布式锁以及集群Master选举等等。本文讲述的,就是Zookeeper集群的搭建。 -
couchdb集群搭建
2019-03-21 10:55:10最近在搭建couchdb集群时,遇到不少坑,如果你参照官方文档搭建集群时会不成功,至少我是这样的。在这里以ubuntu 16.04配置couchdb集群为例,写个总结,以备遗忘。 环境安装 其他环境的安装请参考windows,mac OS ... -
Elasticsearch集群无法自动集群处理
2017-04-08 09:12:50在构建Elasticsearch(ES)多节点集群的时候,通常情况下只需要将elasticsearch.yml中的cluster.name设置成相同即可,ES会自动匹配并构成集群。但是很多时候可能由于不同的节点在不同的网段下,导致无法自动获取集群。...
-
navicat 查看mySQL\postgreSQL版本信息
-
阿里巴巴-大数据工程师必读手册.pdf
-
2021-01-18
-
Cocos Creator基础(九)cc.Label+RichText组件使用
-
【数据分析-随到随学】Hive详解
-
绿色 局域网 自定义端口FTP服务端.exe
-
vue的生命周期.png
-
linux 内存池三方库 用了他你就不需要自己编写内存池了.zip
-
typora-setup-x64.exe
-
sqlite-amalgamation
-
基于X210的裸机时钟温度显示器-第3/3季
-
【2021】UI自动化测试Selenium3
-
STM32的Modbus学习
-
pytest-fixture之conftest.py
-
设计模式C++实现策略模式
-
易语言开发通达信DLL公式接口
-
gostudy_zip dos下怎么样才能下go棋
-
web前端开发规范
-
9000题库-上.iso
-
9000题库-下.iso