构建高可用Linux服务器(第4版).html.pdf
《构建高可用Linux服务器(第4版).html.pdf》由会员分享,可在线阅读,更多相关《构建高可用Linux服务器(第4版).html.pdf(179页珍藏版)》请在三一文库上搜索。
1、前言 运维工程师工作的演变 随着云计算的流行,运维工程师的工作性质在不断地发生变化,很多新的技能点和知识点需要掌握和学习。工作中,大家经常可以看到DevOps这个词汇。最近DevOps为什么这么火?跟最近两年云计 算的快速普及有很大的关系:云计算平台上的各种资源,从服务器到网络,再到负载均衡都是由API创建和操作的,这就意味着所有的资源都可以“软件定义”,这给各种自动化运维工具提供了一个非常好 的基础环境。而在传统的互联网行业,比如CDN行业,由于机器数量众多、网络环境错综复杂,故也需要由DevOps人员来设计工具,提供后端的自动化API,结合公司的CMDB资产管理系统,提供自动化 运维功能。
2、 我在公司的职务是高级运维开发工程师(DevOps)、系统架构师,主要工作是设计、实施及维护本公司的电子商务网站,以及核心业务的代码开发工作。相对于CDN分布式系统而言,公司的电子商 务网站没有节点冗余,对集群技术的要求更高。所以我前期将所有的网站应用都做了双机高HA,包括LVS/HAProxy+Keepalived和Nginx+Keepalived,以及DRBD+Heartbeat+NFS文件高可用,MySQL 数据库用的是DRBD双主多从架构,甚至Redis也使用了主从复制的架构设计。随着特殊业务的需求量越来越旺盛(比如定点抢红包活动),我也在网站的架构设计中引入了RabbitMQ消息队列
3、集群。后期 随着商业推广量的加大,网站流量、UV及并发日益增大,新机器上线也日益频繁,所以我采用了Fabric、Ansbile等自动化运维工具来管理线上机器,避免运维同事们的重复劳动。另外,由于电子商务网 站牵涉支付问题,所以对安全性的要求也非常高,我们平时都会从网络安全(包括硬件防火墙、Linux系统防火墙和WAF应用防火墙)、系统安全、代码安全和数据库安全这些方面着手,尽力避免一切影 响网站安全的行为。此外,我的工作职责还包括使用成熟的自动化工具(比如Ansible、Saltstack等),利用Python或Golang进行二次开发,根据实际工作需求,结合公司的CMDB系统,提供稳定的后端
4、 API,方便前端人员或资产人员进行调用,这样大家可以利用界面来完成自动化运维工作。工作虽然辛苦,但看到自己设计的后端API和网站能够稳定运行,心里还是很有成就感的,这也是我目前工作的主 要动力。 撰写本书的目的 从事系统集成、运维开发、架构设计方面的工作已经有十余年了,在工作期间,我曾有幸担任了一段时间的红帽RHCE讲师,在东北大学等高校推广红帽Linux系统。在教学过程中我发现,很多学生进 入企业后都无法胜任自己的工作,更谈不上正确规划自己的职业道路了。究其原因,一方面是因为企业的生产环境具有一定的复杂性和危险性;另一方面则是由于市场上入门书居多,缺乏能真正指导读者 解决实际问题的书籍。例
5、如,很多书籍都只给出了比较基础的操作及理论,而相对于线上环境,根本没有涉及如何安全操作才能避免误操,以及在PV、UV、并发、数据库压力和高并发环境下消息队列或 任务队列如何设计等相关话题。 之所以写这本书,一方面是想对自己这些年的工作进行一次系统的梳理和总结;另一方面是想将自己的经验和心得分享给大家,希望能帮助大家少走弯路。通过本书中介绍项目实践(包括Linux集群、 MySQL的高可用方案及Python自动化运维工具的使用)和线上环境的Shell脚本,帮大家迅速进入工作状态。书中所提供的Shell脚本和iptables脚本均来自于线上的生产服务器,大家均可以直接拿来用。 关于Linux集群的
6、项目实践和MySQL的高可用方案,大家也可以根据实际项目的需求直接采用,以此来设计公司的网站架构。 希望大家能通过本书掌握Linux的精髓,轻松而愉快地工作,从而提高自己的技术水平,也希望大家通过我分享的内容,了解运维工作的发展趋势,确定以后的学习目标。这是我非常希望看到的,也是 我写本书的初衷。 第4版与第3版的区别 本书是第4版,相对于前3版而言改动比较大,删除了不少过时的内容,增补了当前热门的技术知识点。另外,本书除了项目部署时采用的系统没有升级到CentOS 6.8 x86_64外,其他环境均为CentOS 6.8 x86_64。此外,在写作过程中采纳了读者针对上一版本提出的许多意见和
7、建议,同时修正了第3版的各种错误及其他问题。具体改动如下:删除了第3版中前3章的内容,增补了Vagrant虚拟化软件的应 用,并且重写了生产环境下的Shell脚本;删除了对分布式自动化部署管理工具Puppet的相关介绍,改用了Fabric自动化运维工具;删除了关于开源VPN在企业中部署的章节。附录部分增加了对现在流行 的GitLab应用及强大的编辑工具Sulbime Text3的快捷键方式操作的介绍。出第4版的原因是希望能将现在最流行的开源技术展现并分享给大家,增加大家的职业技能知识。 读者对象 本书的读者对象如下: 项目实施工程师; 系统管理员或系统工程师; 网络管理员或企业网管; 系统开发
8、工程; 高级开发人员。 如何阅读本书 本书的内容是对实际工作经验的总结,涉及大量的知识点和专业术语,建议经验不足的读者一定从第1章读起,本章内容相对来说比较基础。大家在学习过程中根据第1章的讲解进行操作,定会达到事 半功倍的效果。 推荐系统管理员和运维工程师们通篇阅读本书,并重点关注第2章、第4章、第5章、第7章和第8章的内容,这些都与运维工作息息相关的,建议大家多花些精力和时间,抱着一切从线上环境去考虑的 态度去学习。 对于网络管理员和企业网管来说,如果基础不是太扎实,建议先学习第1章和第2章的内容,然后将重点放在第7章和第8章。 对于项目实施工程师而言,由于大多数都是从事系统集成相关工作的
9、,因此建议顺序学习全书的内容,重心可以放在第5章和第6章。 对于高级开发人员来说,由于只需对系统有一个大概的了解,重点可以放在第1章、第3章和第4章。如果希望了解集群相关的知识体系,可学习第5章和第6章的内容。 大家可以根据自己的职业发展和工作需要选择不同的阅读顺序和侧重点,同时也可以对其他相关的知识点有一定的了解。 致谢 感谢我的家人,你们在生活上对我无微不至的照顾,让我有更多精力和动力去工作和创作。 感谢好友刘天斯和老男孩的支持和鼓励,闲暇之余和你们一起交流开源技术和发展趋势,也是一种享受。 感谢朋友刘鑫,是你花了大量时间和我一起研究和调试HAProxy+Keepalived。 感谢朋友胡
10、安伟,感谢你为本书提供的精美插图,并就Linux集群相关内容提出的许多宝贵的意见。 感谢机械工业出版华章公司的编辑杨福川和孙海亮,正是由于你们的信任、支持和帮助,我才能够如此顺利地完成全部书稿。 感谢热心的读者朋友们,没有大家的支持和鼓励,本书也不可能出到第4版。 感谢朋友三宝,感谢你在我苦闷的时候陪我聊天,感谢你这么多年来对我的信任和支持。 感谢在工作和生活中给予过我帮助的所有人,感谢你们,正是因为有了你们,才有了本书的问世。 关于勘误 尽管我花了大量时间和精力去核对文件和语法,但书中难免还会存在一些错误和纰漏,如果大家发现问题,希望可以反馈给我,相关信息可发到我的邮箱。尽管我无法 保证每一
11、个问题都会有正确的答案,但我肯定会努力回答和并且指出一个正确的方向。 如果大家对本书有任何疑问或想进行Linux的技术交流,可以访问我的个人博客,我会在此恭候大家。我的个人博客地址为http:/。另外,我在51CTO和CU社区的用户 名均为“抚琴煮酒”,大家也可以直接通过此用户名在社区内与我进行交流。 余洪春(抚琴煮酒) 第1章 Linux服务器的性能调优 作为一名高级系统架构设计师,每天都要处理系统方面的架构优化设计工作,比如电子商务系统、CDN大型广告平台和DSP电子广告系统运维方案的确定及平台架构的设计等,此外,还会涉及核心业 务的系统优化升级工作。在其中,系统的性能优化是一个非常有意义
12、的工作,也是一个不太容易的工作。性能优化要以系统的稳定性为第一原则,也要本着挖掘系统潜能的宗旨,在两者相互矛盾的时候, 以稳定为主。 1.1 网站架构设计相关 在学习系统优化之前,我们应该了解一下网站架构设计的相关专业知识,这样才能更好地优化系统性能,提升网站的架构设计能力。 1.1.1 评估网站性能涉及的专业名词术语 在开始其他内容之前,我们先学习几个相关的专业名词术语,这样便于后面内容的展开,也便于大家在工作中与其他同事交流。 1.PV(Page View) PV即访问量,中文翻译为页面浏览,代表页面浏览量或点击量,用户每刷新一次就会计算一次。PV的具体度量方法就是从浏览器发出一个对网络服
13、务器的请求(Request),网络服务器接到这个请求 后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生一个PV。只要将请求发送给了浏览器,无论这个页面是否完全打开,下载是否完成,都会被计为1个PV。PV反映的是某网站页面的浏览 数,所以每刷新一次也算一个PV,就是说PV与UV(独立访客)的数量成正比,但PV并不是页面的来访者数量,而是网站被访问的页面数量。 2.UV(Unique Vistor) UV即独立访问,访问网站的一台电脑客户端为一个访客,如果以天为计量单位,程序会统计00:00至24:00这段时间内的电脑客户端,且相同的客户端只被计算一次。独立自然人访问,一个人访问 记
14、为一个UV,通过不同技术方法来记录,实际会有误差。如果企业内部通过NAT技术共享上网,那么出去的公网IP有且只有一个,这个时候在程序里面进行统计,也只能算是一个UV。 3.并发连接数(Concurrent TCP Connections) 当一个网页被浏览,服务器就会和浏览器建立连接,每个连接表示一个并发。如果当前网站页面包含很多图片,图片并不是一个一个显示的,服务器会产生多个连接同时发送文字和图片以提高浏览速 度。也就是说,网页中的图片越多,服务器的并发连接数越多,我们一般以此作为衡量单台Web机器的性能参数。现在Nginx在网站中的应用比例非常大,可以参考Nginx的活动并发连接数。 4.
15、QPS(Query Per Second) QPS即每秒查询率,是衡量一个特定查询服务器在规定时间内所处理流量多少的标准,在因特网上,作为域名系统服务器的机器性能通常用每秒查询率来衡量。对应Fetches/Sec,即每秒的响应请求 数,也是最大吞吐能力。对于系统而言,QPS数值是一个非常重要的参数,它是综合反映系统最大吞吐能力的衡量标准。它反映的不仅是Web层面的性能,还有缓存、数据库等方面的系统综合处理能力。 5.机房的网络质量评估 机房的网络质量可以参考下面3个标准: 1)稳定性。响应延迟,丢包率。测试方法:长时间的ping测试。测试工具有smoke-ping、mtr、ping2。 2)带
16、宽质量。测试TCP的下载速度以及最大TCP的下载速率。测试方法:get/其他下载测试。测试工具有webbench/iperf,也可使用云测试平台。 3)接入位置。接入路由设备离骨干网的位置,接入条数越少越好。测试方法:路由跟踪。测试工具有mtr/tracert等。 参考文档:https:/ 1.1.2 CDN业务的选项 如果自己的业务网站中含有大量的图片和视频类文件,为了加快客户端的访问速度,同时减缓核心机房的服务压力并提升用户体验,建议大家在网站或系统的前端采用CDN缓存加速方案。 CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Inter
17、net中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可就近取得需要的内 容,提高用户访问网站的响应速度,从而提升用户体验。CDN缓存加速方案一般有几种方式: 租赁CDN:中小型网站直接买服务即可,现在CDN已经进入按需付费的云计算模式,可以准确计算性价比。 自建CDN:这种方案的成本较高,为了保证好的缓存效果,必须在全国机房布点,并且需要自建智能Bind系统。搭建大型网站时推荐采用此方案,一般专业的视频网站或图片网站会考虑采用此方 案。 1.1.3 IDC机房的选择 IDC机房的选择一般也有几种类型: 单电信IDC机房:这种业务模式比较固定,访问量也不是很大,适合新
18、闻类网站或政务类网站。如果网站的PV流量持续增加,建议后期采用租赁CDN的方式解决非电信用户访问网站速度过慢的问 题。 双线IDC机房:因为国内两大网络(电信和网通)之间存在互联互通的问题,所以电信用户访问网通网站或网通用户访问电信网站很慢,也因此产生了双线机房、双线服务器、双线服务器托管和双 线服务器租用服务。双线机房实际是一个有电信、网通、联通等任意两条线路接入的机房。通过双线机房内部路由器的设置以及BGP自动路由的分析,实现电信用户访问电信线路,网通用户访问网通线 路,即实现了电信网通的快速访问。 BGP机房:BGP(边界网关协议)是用来连接Internet的独立系统的路由选择协议。它是
19、Internet工程任务组制定的一个加强、完善、可伸缩的协议。BGP4支持CIDR寻址方案,该方案增加了Internet上 可用IP地址的数量。BGP是为取代最初的外部网关协议EGP设计的,它也被认为是一个路径矢量协议。采用BGP方案实现双线路互联或多线路互联的机房称为BGP机房。对于用户来说,选择BGP机房可以 实现网站在各运营商线路之间互联互通,使得所有互联运营商的用户访问网站都很快,也更加稳定,不用担心全国各地因线路带来访问速度快慢不一的问题,这也是传统双IP双线机房无法相比的优势。在 条件允许的情况下,选择服务器租用和服务器托管时尽量选择BGP机房,可以带给用户最优的访问体验。 现在云
20、计算服务也非常流行,目前首推的就是亚马逊云(AWS)和阿里云这两种云计算平台。 经过对业务需求的深入了解,我们在亚马逊云和阿里云之间选择了亚马逊云。 云计算服务提供的产品能让我们的研发团队专注于产品开发本身,而不是购买硬件、配置和维护硬件等繁杂的工作,还可以减少初始资金投入。我们主要使用亚马逊云的EC2/EBS/S3/Redshift服务产 品,其次,Amazon EC2主机提供了多种适用于不同案例的实例类型以供选择。实例类型由CPU、内存、存储和网络容量形成不同的组合,可让我们灵活地为其选择合适的资源组合。 云计算特别适合在某些日期或某些时段流量会激增的网站,如我们从事的DSP业务的bidd
21、er集群机器,用户会集中在某时段进行竞价,因此在这段时间内使用的instance数量可能是白天的几倍甚至几 十倍。也就是说,这个瞬间可能要开启很多实例处理,且处理完毕后立刻终止(EC2 Instance可以按照运行小时数进行收费)。 像笔者公司的线上系统,经常跑着很多特殊业务的Spot Instance(例如我们自行开发的爬虫系统),以小时计费,完成任务后立即终止Spot Instance,以此达到节约费用的目的。 使用竞标方式获取便宜的Instance,一般在有大量、便宜、短时间使用的需求时使用。 1.2 如何根据服务器应用来选购服务器 无论物理服务器是选用IDC托管还是AWS EC2云主机
22、(以下为了说明简单,统称为服务器),我们都要面临一个问题,那就是如何选择服务器的硬件配置。选购硬件配置时要根据我们的服务器应用需 求而定,因为我们无法通过一台服务器来满足所有的需求,并解决所有的问题。在设计网站的系统架构之前,我们应该从以下方面考虑如何选购服务器: 服务器运行什么应用。 需要支持多少用户访问。 需要多大空间来存储数据。 业务的重要性。 服务器网卡。 安全。 是否安排机架合理化。 服务器的价格是否超出预算。 1.服务器运行什么应用 这是首先需要考虑的问题,通常根据服务器的应用类型(也就是用途)决定服务器的性能、容量和可靠性需求。下面将按照负载均衡、缓存服务器、前端服务器、应用程序
23、服务器、数据服务器和 Hadoop分布式计算的常见基础架构进行讨论。 负载均衡端:除了网卡性能以外,它在其他方面对服务器的要求都比较低。如果选用LVS负载均衡方案,它会直接将所有的连接要求转给后端的Web应用服务器,建议选用万兆网卡;如果选用 HAproxy负载均衡器,由于它的运行机制跟LVS不一样,流量必须双向经过HAproxy机器本身,因此会对CPU的运行能力有所要求,建议选用万兆网卡;如果选用AWS EC2机器,推荐使用m3.xlarge实例类型 (m3类型提供计算、内存和网络资源的平衡,它是很多应用程序的良好选择)。另外,AWS官方也推出了负载均衡服务产品,即Elastic Load
24、Balancing,它具有DNS故障转移和Auto Scalling的功能。 缓存服务器:主要是Varnish和redis,对CPU及其他方面的性能要求一般,但在内存方面的要求较多。笔者曾为了保证预算,在双核(r3.large)机器上运行了4个redis实例,AWS官方也建议将此内存优 化型实例用于高性能数据库、分布式内存缓存、内存中分析、基因组装配和分析,以及SAP、Microsoft SharePoint和其他企业应用程序的较大部署。 应用服务器:因为它承担了计算和功能实现的重任,所以需要为基于Web架构的应用程序服务器(Application Server)选择足够快的服务器,另外,应用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构建 可用 Linux 服务器 html
链接地址:https://www.31doc.com/p-5514586.html