linux学习路线

 

互联网运维架构一步一步迭代发展,作为运维一定精深理解常用架构知识,以下笔记希望能给你对运维架构有一点帮助,共同进步,转载请注明出处,谢谢~

目标:1、熟悉各种服务的应用场景
2、熟悉各种服务的优缺点,瓶颈在哪里

互联网公司运维:
1、通常互联网公司是把主营业务支撑在web或者app之上的这种应用场景,这种互联网公司通常有自己的pc端浏览器、手机端APP等访问入口。
2、还有一种互联网公司web仅作为展示,前端服务器的访问压力不会太大。主营业务以IDC机房云虚拟主机为支撑的场景,对应用系统(存储系统、提供vps虚拟机的云系统)访问压力会大点。

对互联网公司web架构逐步展开说明:
好的架构系统并不是一开设计而是慢慢发展迭代而来的(如淘宝10年,最早开始LAMP结构,慢慢技术人员对系统架构随着业务的需要一步步扩展延伸至今上万台服务器),并不是一开始设计而来的
LAMP:当用于一开始访问我们的web页面时,页面程序的整个入口,为了构建一个动态效果,背后需要运行PHP页面的运行环境,php本身是解释性语言,所以需要依赖php解析器解析php脚本。PHP解释器无论基于哪种模式运行,php本身并没有提供http请求的解析和响应功能,所以需要在http的外围补充上能够接受用户通过浏览器或者app所发来的http请求并将请求转化为php能够理解的请求,进而将php处理的结果在返回给客户端。所以需要在php的外围补充一个web服务器。
同类框架LNMP,无非前端web服务器是nginx,都是用来处理用户的web请求,后端的php来负责将webserver转发或者反代而来的请求予以解析和执行,并将结果返回给客户端。

1、对web架构进行分层:
当用户量访问过大时,当前系统架构无法满足业务需要时,就需要扩充容量
scale up :不是最佳方案,性价比不高,扩展能力有限
scale out :能够随着主机数量增加,性能线性增长
扩展之前对架构进行分层,把前端的应用程序服务器和后端存储拆开。
因为Apache+php是cpu密集型,而mysql既是cpu密集型又是IO密集型,所以mysql对cpu和IO性能占用很大,而对应的php和tomcat等应用程序服务器对cpu资源占用也很大。让二者进行跨主机的通信,分开之后容量提升。用户访问接触得是最外层web服务器,不同服务器之间通过不同的协议进行通信。
通常分为3层:
接入层
应用层 applicationserver
数据层

2、增加缓存提高访问体验:

当分层之后用户访问量还是过大,服务器承载不了这么大的访问量的时候。 当前端和后端速度交接不匹配时,把用户要经常查询的数据保存下来,加缓存能尽量提高用户的体验。
比如在web服务器加入缓存或者将静态页面的请求交给前端的web服务器处理,动态页面交给应用程序服务器处理。
webserver:Varnish是一款高性能的开源HTTP加速器、squid
mysql :redis、memcache

为什么要横向扩展做LB、HA集群:
当用户访问量再次增加时,需要再次扩展。增加服务器通过负载均衡集群的建设将对应的请求转发到多个服务器响应,以提高并发性能增加吞吐量。
四层负载均衡解决方案 :LVS
七层负载均衡解决方案 :HAPROXY,nginx、apache,等组件
数据库负载均衡解决方案 :主从复制、读写分离、连接池
主从复制:主服务器能读能写,从服务器只能读。从节点所持有的是整个节点完整的数据集,所以每一个服务器对读请求是能够实现负载均衡的。
连接池 :当请求量过大时,前端需要连接池来控制访问量。
读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。·

为什么要做高可用:
由于web的访问接口以及主数据库都是单点,如果web服务器宕机,那么用户的访问入口就关闭了,导致整个系统服务挂了,所以需要做高可用。
HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
LVS+keepalived :LVS提 供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后 很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的 配置文件,并能实现无缝配置变更!

keepalived :特点 VRRP协议(虚拟冗余网关协议),轻量级。
如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
mysql主从模式高可用方案:MMM、MHA、
MHA:目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

LB(load balance):负载均衡集群,建立在现有网络结构之上,它提供了一种廉价、有效、透明方法来提高并发服务的性能,增加吞吐量

为什么要部署监控系统:
当主节点宕机的时候要第一时间知道并处理,所以需要部署监控系统来随时掌握线上服务的运行状态。
cacti :采集数据、保存数据、数据展示、数据分析及报警。记录数据在一段时间内的趋势。优点:画图展示效果好,
Nagios:不监控数据,只监控服务状态变化与否
Zabbix:是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。
一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。
目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。

为什么要用数据库:
如果简单的数据可以随便放一个txt文本文件里,然后用户访问这个文件系统的入口,对文件中的数据可以通过正则表达式进行匹配搜索。
如果复杂的数据就需要专门的存储引擎,存储引擎的作用是将我们要管理的数据当中经常拿来当做查找标准的那些数据集抽取出来格式化成索引,然后通过索引来检索数据,并通过索引指向源数据的指针来查找数据。

数据库从层次模型→网状模型→关系型模型,一路发展而来,作用都是为了更方便的存储和检索数据。
编程语言写出来的代码称之为指令,但指令的作用的是对数据进行加工,并将加工后的数据进行输出。
程序就是指令加数据组成,数据量很大需要放在存储中,或者检索出来放在数组、变量或者其他内置的容器中,以便于本地进行加工。这些都是程序的基本组成部分。

用户使用浏览器中键入的URL对服务器的某个资源通过HTTP协议发出请求,由web服务器分析这个请求,如果处理不了则基于动态、模块或者反向代理的方式将请求发送至applicationserver(应用程序服务器)。

您还未添加分享代码,请到主题选项中,添加百度分享代码!

您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

微信钱包扫描赞助

┊. 恋小布 。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情