linux如何打开openssl-1.0.1心跳扩展?

PAGE 12 PAGE 1 基于Linux的集群系统综述 摘要:基于Linux操作系统,本文首先分析介绍了集群系统的构建方法和主要发展方向,然后就集群系统的三大应用(高性能计算、高可用系统、负载均衡)分别介绍了面向各种应用时构建集群系统的侧重点和关键技术。 1 集群系统 1.1 什么是集群 简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。1.2 为什么需要集群 集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直到Linux集群的出现,集群的概念才得以广为传播。 对集群的研究起源于集群系统的良好的性能可扩展性(scalability)。提高CPU主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,象SMP这些多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的增加几乎是线性变化的。图1显示了这中情况。图1. 几种计算机系统的可扩展性集群系统的优点并不仅在于此。下面列举了集群系统的主要优点:高可扩展性:如上所述。 高可用性:集群中的一个节点失效,它的任务可以传递给其他节点。可以有效防止单点失效。 高性能:负载平衡集群允许系统同时接入更多的用户。 高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。 1.3 集群系统的分类 最常见的三种群集类型包括高性能计算群集、负载均衡群集和高可用性群集。 [1]1、高性能计算群集 通常,第一种涉及为群集开发并行编程应用程序,以解决复杂的科学问题。这是并行计算的基础,尽管它不使用专门的并行超级计算机,这种超级计算机内部由十至上万个独立处理器组成。但它却使用商业系统,如通过高速连接来链接的一组单处理器或双处理器 PC,并且在公共消息传递层上进行通信以运行并行应用程序。因此,您会常常听说又有一种便宜的 Linux 超级计算机问世了。但它实际是一个计算机群集,其处理能力与真的超级计算机相等,通常一套象样的群集配置开销要超过 $100,000。这对一般人来说似乎是太贵了,但与价值上百万美元的专用超级计算机相比还算是便宜的。 2、负载均衡群集 负载均衡群集为企业需求提供了更实用的系统。如名称所暗示的,该系统使负载可以在计算机群集中尽可能平均地分摊处理。该负载可能是需要均衡的应用程序处理负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也是如此。通常,网络服务器应用程序接受了太多入网流量,以致无法迅速处理,这就需要将流量发送给在其它节点上运行的网络服务器应用。还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。 3、高可用性群集 高可用性群集的出现是为了使群集的整体服务尽可能可用,以便考虑计算硬件和软件的易错性。如果高可用性群集中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。 在群集的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性群集也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的群集中找到一个并行群集,它可以在节点之间执行负载均衡。尽管 HYPERLINK "/s?tn=piglet&ct=&lm=&z=&rn=&word=集群" \t "_blank"

  • 针对性查询:查询包含分片键

  • 全局查询或分散/聚集查:查询不包含分片键

  • 查询过程:通过分片键将查询路由给指定分片,一旦到了某个分片上,由分片自行决定使用哪个索引来执行该查询

每个分片都维护了自己的索引,当在分片集合上声明索引时,每个分片都会为它那部分集合构建独立的索引,每个分片上的分片集合都应该拥有相同的索引。

分片集合只允许在_id字段和分片键上添加唯一性索引,其他地方不行,因为这需要在分片间进行通信,实施起来很复杂。

当创建分片时,会根据分片键创建一个索引。

(1)分片键是不可修改的、分片键的选择非常重要

  • 分布性差:如使用BSON对象ID,那么会导致所有最新插入的文档都会落到某个很小的连续范围,无法分散插入

  • 缺乏局部性:升序分片键有明确的方向,完全随机的分片键则根本没有方向。前者无法分散插入,后者插入分散,如使用MD5作为分片键

  • 将插入数据均匀分布到各个分片上

  • 保证CRUD操作能够利用局部性 有足够的粒度进行块拆分

  • 满足这些要求的分片键通常由两个字段组成,第一个是粗粒度的,第二个粒度较细

  • 复制mongod:需要独立的部署服务器

  • 配置服务器:配置服务器不需要有自己的机器

根据不同的数据中心划分


  • 副本集每个成员,无论是完整的副本集节点还是仲裁节点,都需要放在不同的机器上 每个用于复制的副本集成员都需要有自己的机器

  • 副本集仲裁节点很轻量级,和其他进程共用一台机器即可

  • 配置服务器也可以选择与其他进程共用一台机器


需要估计集群大小,可使用以下命令对现有集合进行分片处理

  1. //手动将某分块移至分片B

备份分片时需要停止均衡器

  1. //停止均衡器,此时均衡器将进行最后一轮均衡

  2. //查看均衡器状态,任何状态大于0 的状态值都说明均衡器仍在进行中

使用64位机器、32位机器会制约mongodb的内存,使其最大值为1.5GB

mongodb 只有当索引和工作集都可放入内存时,才会遇到CPU瓶颈,CPU在mongodb使用中的作用是用来检索数据,如果看到CPU使用饱和的情况,可以通过查询慢查询日志,排查是不是查询的问题导致的,如果是可以通过添加索引来解决问题

mongodb写入数据时会使用到CPU,但是mongodb写入时间一次只用到一个核,如果有频繁的写入行为,可以通过分片来解决这个问题

大内存是mongodb的保障,如果工作集大小超过内存,将会导致性能下降,因为这将会增加数据加载入内存的动作

mongodb默认每60s会与磁盘强制同步一次,称为后台刷新,会产生I/O操作。在重启时mongodb会将磁盘里面的数据加载至内存,高速磁盘将会减少同步的时间

linux 默认文件描述符是1024,需要大额度的提升这个额度

mongodb各个节点服务器之间使用ntp服务器

  1. //创建用户,最后一个参数指定是否只读

使用keyFile,注意keyFile文件的权限必须是600,不然会启动不起来

搭建副本集至少需要两个节点,其中仲裁结点不需要有自己的服务器

写数据时会先写入日志,而此时的数据也不是直接写入硬盘,而是写入内存

但是Journaling日志会消耗内存,所以可以在主库上面关闭,在从库上面启动

可以单独为Journaling日志使用一块固态硬盘

在插入时,可以通过驱动确保Journaling插入后再反馈,但是会非常影响性能。

logpath 选项指定日志存储地址

-vvvvv 选项(v越多,输出越详细)


  • globalLock 表示服务器花在写锁上面的总时间

  • mem显示了如何使用内存

  • bits 表明这台机器的位长

  • resident 表示占用物理内存数量

  • virtual 表示使用的虚拟内存



动态展示mongodb活动数据

占用当前mongodb监听端口往上1000号的端口

把数据库内容导出成BSON文件,而mongorestore能读取并还原这些文件

把导出的BSON文件还原到数据库

(3)备份原始数据文件

修复就是根据Jourling文件读取和重写所有数据文件并重建各个索引

压紧,会重写数据文件,并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行,需要添加force参数 保证加写锁。

(2)为提升性能检查索引和查询

总的来说,扫描尽可能少的文档。

保证没有冗余的索引,冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作

dataSize 数据大小 和 indexSize 索引大小,如果两者的和大于内存,那么将会影响性能。

storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能,需要压缩。

我要回帖

更多关于 开启openssl扩展库 的文章