前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高性能可靠服务集群架构

高性能可靠服务集群架构

作者头像
老七Linux
发布2018-05-31 11:53:33
8430
发布2018-05-31 11:53:33
举报

1、 需求分析

庞大的业务访问量需要高性能、可靠的服务器框架支撑。高性能要求服务器在巨大压力下仍然高速运行,读写返回正确的业务信息,前端用户体验良好。可靠性要求服务器出现宕机、罢工等情况,可以及时恢复服务器正常工作状态,支持业务系统24小时健康运行。使用缓存、读写分离技术提高服务器访问资源速度,解决大访问量资源拥堵问题;使用负载均衡与高可用技术提高服务器响应速度以及服务器稳定性,解决服务器处理大用户量请求问题以及服务器宕机的及时恢复能力。

同时,需要部署运维监控平台,监控服务器上服务程序与资源使用情况,出现问题及时报警通知运维人员。服务器系统的安全加固问题也不能忽视,防范于未然。

2、 基础架构

按照上述需求,基础架构划分下面几个模块:负载均衡与代理、Web主站服务、APP接口服务、图片服务器、数据库与缓存服务。

客户端通过域名解析直接访问到负载代理服务器,后端全部访问与响应操作对用户透明。图片也可以单独开来,不经过负载均衡代理服务器,使用单独的域名进行图片读写。当图片服务数量上来了,也要配置单独的负载均衡代理服务器,组合服务器集群。而这里图片服务器与其他服务共用相同负载,这样负载压力大,容易出现问题,追溯问题源头工作也会变得复杂。所以说,不同的服务集群,最好使用不同域名、不同负载均衡进行代理。客户端直接通过负载访问相关服务,负载直接代理到服务子群,不再对服务进行判断划分。分工更加明确,出现问题也容易解决。

图片服务器也可以不需要存在与其他服务直接访问关系,他们只需要保存好访问图片对应关系,包括图片所属ID、路径、标识等。

3、 负载代理

负载均衡代理主要是两个作用:实现多台机器按照算法轮流工作,分担服务压力,当一台机器宕机或者罢工,其他机器也可以继续运行;代理隐藏服务内部真实结构,多台对外提供统一地址,运行相同业务系统。

负载代理服务器本身也需要支持高可用性能,主从备份机器,主服务器发生故障时,从服务器及时顶替继续运行负载代理服务。Keepalived可以支持高可用性能,更加可以配置Keepalived自动执行自定义检测脚本,检测服务器的心跳,自动递减服务器的优先级,实现服务自动偏移功能。

下面几个组合可以完成上述功能,各个组合侧重点有所不同,所处的网络层次也有不同。网络四层主要针对IP地址负载均衡,而网络七次针对URL,更有支持四层与七层的,侧重于TCP/IP协议栈。

LVS+Keepalived:LVS工作于网络四层结构,针对IP地址进行网络数据报转发,实现负载均衡代理功能,器配置相对复杂。性能稳定,支持超大访问量的集群负载。对外提供统一的虚拟IP,有三种工作模式,十种左右的轮询算法。

Nginx+Keepalived:Nginx工作与网络七层结构,配置相对简单,支持URL、目录等正则处理更加贴近实际生产需求,可以支持较大访问量的集群负载。

Haproxy+Keepalived:Haproxy工作网络四层与网络七层都可以,配置相对简单,负载均衡速度不亚于Nginx,值得一提的是Haproxy可以进行DDOS攻击防御,以后应该深入研究Haproxy。

4、 主站服务

主站框架是一个Web服务器(apache、tomcat、nginx等)集群,集群中全部机器运行相同业务系统。通过负载均衡代理与客户端通讯,每一次通讯只有一台机器为当前客户端服务。需要解决session共享问题,否则将会丢失用户的登录状态,在用户体验方面有逻辑错误。常见的共享session方法有数据库共享、cookie共享、内存共享。使用最多的是memcache共享方式,memcache把多个服务器的共享内存拼接成一块大的内存使用,保存用户的session信息。Tomcat服务集群可以简单配置memcache共享内存,PHP中也可以直接配置设置memcache共享内存。

Nginx负载解决session的方式:ip_hash、sticky。ip_hash根据IP保存响应服务器,在一张存储表单中,IP对应上次访问的服务器,以后来自于该IP的访问都使用这个这台服务器,解决session问题,存在局限性影响负载均衡的功能。Sticky使用cookie的方式解决session共享问题,其实是避开session共享。Sticky把cookie与服务器绑定,存储于客户端缓存当中,客户端再次访问时直接进入到cookie绑定的服务器,关闭客户端session也随之消失。

5、 接口服务

接口服务与主站服务功能大同小异,也是Web服务集群。在负载代理时候,通过七层代理转发正则匹配域名与目录,指向接口服务地址端口。对于划分更加细节的系统架构,接口服务也是单独的域名,启用四层负载代理连接集群,服务功能更加简单明了。

6、 图片服务

图片服务建立在分布式文件系统基础上,搭建Web服务主要支持图片访问上次下载功能。结合读写分离技术,图片上传划分一个子群,图片下载划分一个子群。前面搭建负载均衡服务器支持大量读写操作,两个子群建立在同一个文件系统,组成分布式文件系统。常见的文件系统有NFS、FastDFS、TFS、Hadoop等。

NFS是共享挂载方式,访问图片时仍然占用网络带宽,没有文件备份处理,出现故障不容易恢复。FastDFS是一个分布式同步文件系统,稳定性好可靠,提供各种语言客户端API便于开发。TFS是淘宝正在使用的图片服务器文件系统,支持海量图片读写操作,对于大文件存储能力欠佳。Hadoop是比较火的大数据平台,高容错高吞吐量,技术成熟,分布式文件系统非常好的选择。

7、 数据库与缓存

7.1、数据库集群

如果服务访问量非常大,数据库是访问速度最重要的影响因素。数据的读写操作往往占用大部分时间,数据表上百万级别记录,update操作时间开销会很大。而且外面有一条几万的数据库操作队列,那是人不崩溃,机器已经崩溃。首先是CPU占满,数据库里面堆满上锁sql语句,导致前端反应速度跟不上蜗牛。

对数据库访问频繁数据记录数量巨大的表,进行分片操作,细化数据表提高sql执行速度。数据库服务器使用分布式架构部署,前面架设负载均衡服务器,结合数据库读写分离技术。常见数据库db2、oracle、mysql等,对于分布式mysql系统,可以使用MyCat中间件管理。

7.2、缓存服务

缓存可以提高服务的响应速度,处理及时性要求高的数据时,数据首先进入缓存,然后通过消息队列写入到数据库。从数据库查询出来的实时数据也可以保存在缓存中,在缓存中直接提供用户访问,执行用户操作数据请求,再把数据返回数据库。

Redis是一款出色的缓存服务器,内存级别的键值对数据库,支持丰富数据结构,数据库操作命令也是很齐全。最重要是Redis操作速度非常快,满足缓存服务器需求。Redis提供单机的分片集群,单机硬件性能要求比较高。Redis也可以进行分布式部署,搭建分布式缓存服务。

8、 安全加固

安全配置:隐藏常见系统服务信息、配置用户权限、开启防火墙、关闭无用系统服务、定期更新系统

风险评估:进行渗透测试、漏洞扫描

安全防御:配置IDS\IPS、进行源代码审计、DDOS防御、恶意代码检测

9、 服务器监控

配置运维监控平台,实时监控服务器的健康状况。CPU、内存、磁盘、输入输出、网络性能等参数,配置报警规则,触发报警是立即调用API接口或者第三方回调,发送报警信息到邮箱、微信等。同时,自定监控数据项,检测Web服务、数据库服务、后台程序等运行状态,连续出现拒绝服务行为立刻报警,通知管理员。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/09/10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档