首页 » 老男孩 » 正文

老男孩讲课笔记

nginx:可以做web服务器、缓存服务器、http的反向代理、邮件的反向代理
haproxy:支持tcp的负载均衡、http的负载均衡,是一个专业的负载均衡软件,自身不能做web服务器。是专业的负载均衡软件
并发上nginx和haproxy是差不多的
LVS:四层的负载均衡,只能做tcp的转发。

网络存储高可用(多个网络存储之间用inotify+rsync做文件实时同步或者用drbd同步)方案:
1、手动切换
2、写一个脚本,在web服务器上写一个定时脚本持续ping第一台网络存储服务器的ip,如果不通,就把第一台的挂载卸载,然后挂载第二台。
3、keepalived:在web上挂载vip的ip,不挂载某个nfs的ip,如果第一台nfs出现故障,短时间(需要5分钟)内无法使用新的nfs,
解决方法是:
1、重启没有故障的nfs。
2、在keepalived切换到第二台之后,通过ssh连上web服务器后,执行挂载和卸载。由nfs存储切换去触发连过去,挂载重挂(自动方案)
3、在web服务器上写一个定时任务或者守护进程,来判断两个nfs切换之后,web服务器上做卸载挂载的操作
4、弃用nfs,不挂载,上传服务器写到主上去,在把主上的数据通过inotify推送到WEB本地,写的时候是远程写,读的时候读取本地。适用于数据量不太大的公司,几个T都可以。
nfs性能不高,但是可以满足我们的需要,因为有web缓存服务器、前端有cdn。
session
memcache/TTserversql
所有的互联网公司,最大的架构的瓶颈在数据库(更大)和储存上。

数据库瓶颈:
读写分离
使用缓存(memcache)
分库分表(开发、架构、dba和运维做)
将数据转移到Nosql(将并发量很大,并且适合nosql存储的)
适合redis(nosql的一种)存储的:投票、统计、好有关注等业务都可以放到nosql
存储瓶颈:
使用nfs
解决nfs的压力:
缓存和cdn

监控:
nagios/cacti/代码分发/idc上线测试。
反向代理的原理:
用户请求代理,由代理根据用户的请求意愿在向后去请求。比较负责的。
LVS转发:
转发是用户把业务抛给LVS,LVS直接抛给后端,是一个不负责任的态度。
LVS
1、用户请求到LVS,LVS转发给web,然后由后端将内容返回给客户(DR模式),效率最高的的,需要web服务器有外网ip地址和网线。
2、如果没有外网ip和网线,需要在本地、LVS或者单独的服务器做网关,无论哪个做网关,效率比较低(收费站模式)。
3、如果做web服务器,尽量给web服务器配置外网ip。数据库的负载均衡不需要外网ip,因为数据库不对外,如果对外,可以使用api接口查询数据,然后返回给用户或者其他系统,保证数据库不对外。

目前不太流行LVS架构,
原因是:
1、可以支持大并发,但是中小企业并发并不大,所以优点体现不出来
2、基于四层的负载均衡,nginx和haproxy基于url、域名、扩展名的转发,它做不到。
3、它的配置比较复杂。
4、DR模式,只改变目标数据包的mac地址,所以不能更改端口,数据包进来的端口是什么,web服务器的端口就是什么(缺点)
5、都在一个局域网,必须是lan模式,而且web服务器要有外网ip,相比之下不太安全,暴露在公网上了。
所以到目前为止不建议选择lvs