刘鑫,ChinaUnix集群和高可用版块资深版主,ID:Gray1982。从事运维工作多年,已有《高性能网站构建实战》及《运维工程师成长之路》两部出书,自主开发运维平台框架。对整体网站架构的把握以及各种架构中运用的技术有一定的实施心得。目前我发现现在市面上的书、视频等学习资料都是介绍专项的技能,相对来说很少会有系统的去讲述某一个行业整体项目,所以在这里和大家分享一下一个运维工程师的一些经历(不是介绍专项技能)。首先最为基础的硬件是IDC机房和带宽(云在这里先不具体谈),如何选择一个品质好且性价比高的机房还是比较重要的。可以先确定一下并不是大的品牌一定好,有可能它的带宽还是借用其它的代理商的、也有可能你公司的利润大部分付给了IDC。最初选择IDC时一般是打听一下,然后开始测试。其实正规的IDC会有一些资质证书,这个比较重要的。一方面是为了保证公司以后可能需要和第三方合作需要资质,一方面也是为了保障自己的业务稳定。因为没有资质的话,可能会被查封。测试的时候可以第三方不过仅供参考(因为数据可以调整)。自己测试的话选择几个目标ip去ping,traceroute这些最底层最基础的。像一些云不让使用ping,只能使用tcpping,这种理论上测试效果不如Ping,因为tcpping走tcp协议,包的续传、时间都和Ping不太一样。 测试时间要大于24小时并且最好能在节日期间,因为这样可以来了解整个机房的稳定性。最后看一下结果也就是它的丢包率可以做为参考。另外的traceroute就是为了看机房线路到达目标所经过的跳数,理论上如果不出现故障这些是不会变的。但有些代理商是动态的,早晚是不一样的,所以这也算是一个标准。最后一个测试也是最主要的就是带宽的实际情况,现在很多小的代理商使用的上下行比例是2比1或者10比3的带宽,这种情况就是不标准的,我们正常买的应该是1比1的带宽,但是代理商把非标准的带宽当做标准的价格来卖,这样公司就很吃亏。测试的时候可能测试不出来如果不明确要求测试带宽值,代理商一般是不限制带宽的方法让你测试),所以这点需要在合同上写明,这点很重要。当然可能有其它原因使用非标准的带宽,这点就看实际情况。前几天出去和一个做电商的运维主管聊,他还在认为现在的带宽标准是10比3……确定机房后就是服务器选择,一般直接在厂家购买的话没什么问题,但是在中关村一些地买的话需要查看件的新旧。因为有些服务器的硬盘是使用过的里面还存有数据;内存是上一代产品,所以这些需要注意。检查完硬件就是服务器上架装系统。批量装系统用PXE或者其它的都可以,随着方便用。刚装好的系统肯定是不能直接交付给相关人员的,最起码的初始化是要做的。 比如常用的程序环境Python、Java;系统文件的一些参数fstab、sysctl.conf、limits.conf等最初我们可以使用脚本去跑一些命令做批量,如http://blog.chinaunix.net/uid-10915175-id-3209542.html,这是我早写的脚本。后来会使用比较成熟的工具Puppet来初始化服务器,大概20多个模块吧,要装要改的东西也比较多,当时用的是410的机器,同时160到200台同步的话会感觉比较卡,再加上后来有些需要自定义的东西,所以就换成了salt。以前最初从puppet转到salt时,这些,后面陆续加了一些,早期没那么多。从Puppet转到Salt很容易,只是配置模块的写法不一样而已,大部分的一目了然。公司以后也会涉及到运维平台中的自动更新程序模块,所以前期需要做好这种配置管理工具。最初时是没有使用认证系统(网络认证系统一会介绍),所以用户登录都是使用SSH登录或者使用Key,服务器比较多的时候一台台的去加不太合适,所以现在搞了Salt的模块来对服务器统一的配置。以前所使用的添加用户的salt模块,个人习惯主要的东西放在install.sls里,然后一个init.sls把install.sls文件include进来即可。添加用户key这一项把针对文件的管理常用配置都已经写上了,从文件的位置、权限、创建最最后的需求这些都是Salt常用的配置。语法和Puppet有些不太一样,但使用思想是一样的,所以从p转到s很容易,如果你对p也有所了解的话之所以换用Salt另一个的原因是自定义一些东西比较方便。因为Puppet的Ruby本人能力不高,Salt的Python还可以写几行。起初写模块的时候,觉得Salt模块很多,salt-call grains.items可以查看当前服务器的相关变量(在写平台自动查找设备信息时也可以用,我是直接使用的psutil模块来获取的)。尤其是写平台自动查找设备信息时也可以用到这些 比较全。我的平台是自动提交主机信息 但使用的是psutil模块。之后我在配置Zabbix时发现有些主机名信息写的不太合适,因为当时服务器名比较长,所以为了看起来简洁,自己写了几行很简单的代码。 http://blog.chinaunix.net/uid-10915175-id-4445487.html至于这个脚本得出的主机名可能需要根据实际情况改下。因为我们设置主机名模式确实不一样。提交后的服务器可能很久我们都不再登录,但是有一些审计、权限是需要我们运维来把控的。如果公司可以购买硬件的堡垒机,那么一切说来都是比较简单的,可是现实情况是大多数公司可以不用把控那么严格但需要有,所以这块就需要我们运维来做。在权限,除了账号、组的配置另外就是针对服务器,那些用户(组)可以使用那些服务器,在这里我这使用的是kerberos。简单的说就是用户只需输入一次身份验证信息就可以访问所有分配到其的服务器。这种简单的方案在规模不大的企业中使用还是可以的。如果相对来说有一套更为完整的开源方案的话,可以选择项目FreeIPA。这些是freeipa的,它的配置起来可能比Kerberos相对麻烦一些。如果你要集成一些接口。比如webssh,它还是比较有用的。一般情况下 我们使用Kerberos 就可以 它的安装配置相对都比较简单另外还有一个是chroot环境 因为我的跳板机只是想有跳转作用 其它不让使用 所以当初选择的是chroot,分配给这些用户简单的ssh scp 几个命令 即可。可以成功登录跳转后 我们还需要去做审计 总不能那个账号做了一些mv rm操作都不知道,这点比较重要。在系统方面可以使用/usr/bin/script来记录终端的操作。一般是可以放在/etc/profile文件最后面,当然位置看实际情况规划。这种记录后是在linux字符界面下回放相关的操作。当用户登录后 会有相应的时间和数据记录文件。这种回放是需要scriptreplay命令来执行另外一种可以使用python相关的一个工具,pip install TermRecord安装即可不过 如果操作比较多的话 可能搜索不如script方便。比如我想了解谁执行了rm命令。这两种需要自己写好脚本 让用户登录后自动执行,且无法自行删除。不过这两种方式都是可以记录终端操作,包括vi这种编辑的过程。这是针对于操作系统的。这是平台提交的内容,也就是说 操作的任何都要有记录。权限以及审计也有了一个初步的配置,然后在应用方面也是尽可能的最大化的使用资源。前几年曾经聊过几个虚拟化的对比,可以参考我以前做的一个PPT。http://blog.chinaunix.net/uid-10915175-id-4433631.html了解到kvm相对来说比较相对可以一些,所以最近几年一直在使用kvm做为生产环境的虚拟化。一般情况我这里有纯净和各应用部署好的模板,根据开发要求部署不同的模板即可。如果想对kvm的web方面管理有proxmox或者opennode可以选择。kvm相关文章,主要是网络的调整可以参考下 http://blog.chinaunix.net/uid/10915175/cid-183745-list-1.htmlQ1:能直接从厂家购买服务器吗?好像一般都是通过代理商?Q2:能不能浅谈下,对于各类的服务器用途,需要什么样的服务器配置比较合适?
A2:这些需要有些经验,资源利用的不太好,可以做虚拟化。服务器在前期规划的时候 可以根据应用来做配置。比如 你只是做负载 每秒1k左右的并发,负载选择lvs、harpoxy走4层,一台标准的R420 就够。但为了热备 你需要两台,可这两台的空间可以放其它的应用 因为负载不占用硬盘空间,所以 还可以放占用空间且cpu、内存、网络io稍微多一点的,这样 这两台机器资源的利用会比较全面一些。A3:如果钱不是问题的话 一般raid1 15k转 放系统。其它硬盘可以raid5。速度和空间根据要求,15k 10k 300G 2T这些搭配,2块raid1 只放系统 300G 可以了。Q4:proxmox是虚机管理工具么?可以做双机热备么?
A4:对。都是可以的,其实现在很少有应用不能双机了。【微学堂】是由IT168打造的,面向广大IT人士的一档在线互动栏目。在这里,你能认识更多的朋友,分享更多的案例经验,学习更强的技术才能。对系统运维、大数据、云计算、移动互联网……等IT领域有独特的见解~
对某一行业,或某一工具有深入的研究~
热衷分享,在表达上极具感染力~
……丰富的人脉资源!
强大的曝光推广!!
可观的福利酬劳!!!E-mail:shixinlong@it168.com
原文作者:;如有侵权,请联系管理员删除。