xml地图|网站地图|网站标签 [设为首页] [加入收藏]

软件专题

当前位置:美高梅游戏网站 > 软件专题 > 程序员的智囊库系列之1--服务器与运维,智囊1

程序员的智囊库系列之1--服务器与运维,智囊1

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-02 18:42

程序员的智囊库系列之1--服务器与运维,智囊1--

程序员的智囊库系列之3--分布式文件系统(Distributed file systems)

这是程序员的智囊库系列的第三篇文章。上一篇文章本来打算介绍几个搭建网站的框架,但由于这部分的内容较多,还需要再整理一段时间,所以先放出这部分的第三篇文章。这一部分我们讲介绍分布式存储相关的一些知识,以及当下(2013-10-29)主流的分布式文件系统。由于有些NoSQL数据库也可以用来做分布式文件系统的替代物,所以这部分我们还将介绍几个NoSQL数据库。主要讲介绍以下几种分布式文件系统和NoSQL数据库:

  • nfs
  • ceph
  • TFS
  • GlusterFS
  • MooseFS
  • PVFS2
  • GPFS
  • HDFS
  • FastDFS
  • MogileFS
  • Lustre
  • GoogleFS
  • memcached
  • Tokyo Tyrant
  • Redis
  • MongoDB

程序员的智囊库系列之1--服务器与运维

时间:2014-11-3
作者:FingerLiu

这是程序员的智囊库系列的第一个篇文章,首先讲一下服务器与运维相关的工具。我们主要介绍以下四个工具:

  • puppet
  • salt
  • visualops
  • lnmp

背景

之前公司一直用nfs做文件服务器,nfs的好处就是配置简单,使用方便。但缺点是当数据量很多,尤其是小文件多的时候,其性能令人堪忧,往往会成为整个系统的性能瓶颈。所以准备在将来考虑用性能更好的方法替代nfs,于是花大工夫整理调查,横向对比了各分布式文件系统。调查报告的详细结果整理在这里,本文是从中抽出几个概要部分稍作讲解,具体内容请参见调查报告原文。我把分析报告原文放到了七牛上,但我感觉它最近不太稳定,如果下载不了,请与我联系,或直接在下面评论里留邮箱。

注:本来调查报告分两部分,理论分析报告和性能测试报告。本文的目的是介绍给大家更多的知识,扩展知识面,增加知识的广度。
而不是说直接告诉你,这个比那个好,你用这个,别用那个。
尤其是性能测试这种东西,别人的测试结果的参考价值并不是很大,必须沉下心来,自己去一点点的测才能找到最适合自己的工具、参数。
因此,本文只给出了理论分析报告,并没有给出性能测试报告。

puppet

几点基础知识

intro

puppet是一种Linux、Unix平台的集中配置管理系统,它能够为你的设备定义状态信息,并使你的设备保持运行在正常的状态。简单来说,是一款实现运维自动化的工具。

  • 它能够自动提取设备的配置信息,从而同一个工具可以在软件交付的各个阶段使用。
  • 能够使不同团队的人协同工作
  • 使人和计算机分别做自己擅长的东西。
    无论你是在管理几台机器,还是在管理几千台服务器和虚拟机,puppet都能够自动化的帮助系统管理员完成工作。
    Linux,Unix,Mac OS X,Windows下都有puppet对应的发行版。

存储方案

  • DAS
  • SAN
  • NAS

使用场景

它能管理file(文件),user(用户),group(组),package(软件包),mount(挂载),schedule和cron(计划任务),service(服务),tidy(清理),yumrepo(yum仓库),sshkey(ssh认证)等常用资源。

  • yum仓库管理
  • 用户管理
  • ssh key

数据存储的方法

  • 块存储(block)
  • 文件存储(file)
  • 对象存储(object)

获得puppet

  • You can likely find Puppet in your favorite Linux distro's package repositories.
  • If you're using Amazon EC2, the Amazon Linux AMIbundles Puppet.
  • Get the source code for open source Puppet fromGithub.
  • Download packages from our Yum and APT repositories.
  • Download the binaries from our website.

普通版本的puppet最多支持10台设备。如果你需要管理10台以上设备,需要购买企业版的puppet。

元数据(meta data)

元数据的概念:data about data
数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,
诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。
在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。
用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
元数据对文件系统的影响:文件系统对元数据的操作占据了传统文件系统总负荷的近一半。
高效的元数据管理方式对提高整个系统的性能至关重要。
A comparison of file system workloads. 2000 USENIX Annual Technical Conference

安装及使用教程

  • 安装
  • 使用教程

单点依赖

当一台服务器出现故障后,整个服务器群瘫痪。
解决方案:
1 TFS 利用linux 高可用性(HA)机制,配置HA元数据服务集群。但这样只能配置主设备和从设备,事实上同一时刻还是只有一个服务器在服务。这样做只能提高系统的稳定性,并不能解决采用集成式元数据服务模式的瓶颈问题(由于系统需要同步,反而会降低性能)。
2 Ceph GPFS 分布式元数据服务模型 将负载分散到多台服务器解决了性能瓶颈问题,利用对等的服务器或冗余元数据服务分区解决了单点故障问题。分布式看似非常完善,然而它大大增加了设计实现上的复杂性,同时可能会引入了新的问题,即性能开销和数据一致性问题。

3 GlusterFS 无元数据服务模型
无元数据服务器设计的好处是没有单点故障和性能瓶颈问题,可提高系统扩展性、性能、可靠性和稳定性。对于海量小文件应用,这种设计能够有效解决元数据的难点问题。它的负面影响是,数据一致问题更加复杂,文件目录遍历操作效率低下,缺乏全局监控管理功能。同时也导致客户端承担了更多的职能,比如文件定位、名字空间缓存、逻辑卷视图维护等等,这些都增加了客户端的负载,占用相当的CPU和内存。

saltStack

HA高可用性

高可用性H.A.(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
实现方法:

  1. heartbeat:比较常用
  2. rhcs:redhat集群套件--redhat cluster suite 图形界面,实现方便,可有100多个节点
  3. corosync/openais + paceker
    2个节点:
    采用主备模式:一台激活,另一台备份,对外呈现一个虚拟ip地址。两个节点之间采用心跳线,备份节点使用心跳线来探测活动节点是否处于活动状态。
    心跳线:双绞线 或光纤跳线或 serial线
    采用主主模式:两个节点,在提供web服务时,左侧为激活状态,右侧为备份状态;在实现mail服务时, 一个为激活状态,一个为备份状态。

intro

saltStack是快速,可扩展,灵活的系统管理软件,它能够用来实现数据中心自动化、云环境管理、服务器监控、配置管理等多项任务。saltStack经常被看做由python编写的puppet(puppet是主要由ruby编写的)的精简版。
Salt 有两个主要的功能:配置管理和远程执行。

FUSE

Filesystem in userspace
在用户态实现的文件系统

为什么使用FUSE:

首先要了解用户态和内核态
为了保证系统安全,在用户态执行的代码被硬件限制,不能进行某些操作,如修改其他程序的存储空间、修改配置文件、杀死其他进程、重启等。
而在内核态(核心态)执行的代码,可以不加限制地对系统存储、外部设备进行操作。

但是从用户态切换到核心态需要很大的开销。
所以FUSE有如下优点:
能够大幅提高效率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。

使用场景

如你有很多台服务器而且想要操作这些服务器,你也许需要一台一台的登录这些服务器,每次作出一次操作变更。这些操作可能是相当简单的,比如重启他们或者检查他们已经运行了多久,更或者,你想要做些更复杂的事情,比如安装软件和按照你的特殊需求来配置他们,也许你只是想要增加用户并且配置他们的权限。
假如你有百十来台服务器,你应该怎么做?想象一下你每次一台一台的登陆这些服务器,执行同样的命令在这些100台的服务器中并且编辑同一个配置文件,你可以想象吗?这是多么的苦逼!仅仅更新一下用户的密码策划就要用掉数天的时间,并且你可能出现错误的操作,怎么样通过一个命令一次完成所有服务器的操作?怎么解决?答案就是,Salt Stack!

  • Salt实战之自动安装部署MooseFS
  • 基于SaltStack完成LVS的配置管理
  • Salt配置复杂nodegroup
  • 更多请参看这里

开源软件的版本(copyleft)问题

GPL GPL2 GPL3 LGPL AGPL

获得saltStack

Salt source releases are available for download via the following PyPI link:


The installation document, found in the following link, outlines where to obtain packages and installation specifics for platforms:

Installation
The Salt Bootstrap project, found in the following repository, is a single shell script, which automates the install correctly on multiple platforms:

题外话

无目录结构、扁平化存储是海量存储的未来发展方向
一般来讲计算机内部对文件的操作和查找不是按目录进行定位的
目录结构完全是为了方便用户浏览。
因而,一些不会与用户直接打交道的数据,完全可以不用目录结构存储。设计新产品的时候可以采用扁平化设计。

安装及使用教程

  • 安装
  • 配置

参考资料

关于存储,分布式存储,分布式文件系统的更多信息,可以参见以下几本资料:

  1. 刘爱贵整理的《分布式文件系统》。分布式文件系统的大体认识。
  2. 张冬写的《大话存储》和《大话存储2》。这个系列的书讲得非常通俗易懂,而且很详细,例子也很生动,我认为可以作为国内的权威了。
  3. 《海量存储》

VisualOps

分布式文件系统的评价标准

本文由美高梅游戏网站发布于软件专题,转载请注明出处:程序员的智囊库系列之1--服务器与运维,智囊1

关键词:

上一篇:CentOS 下 rpm包与 yum 安装与卸载

下一篇:没有了