小公司如何部署实施Linux集群网站

其实在许多小公司和小企业里,尤其是牵涉到电子商务和电子广告类的网站,他们的网站也要求作负载均衡高可用的Linux集群,但由于成本的制约,老板都会要求系统架构师设计的方案能够用最少的钱实现这个要求,作为系统架构师的我们,应该如何实现这个要求呢?

首先是机房的选择,如果公司有自己的机房那是最好不过的了;如果没有自己的机房,我建议大家放在BGP机房内托管,如果有选择的话,最好是选择带有硬件防火墙的机房,这样在安全方面也有保障;另外,我们如何选择服务器呢?在有了负载均衡高可用的集群环境后,我们完全可以自己组装服务器,这样在性价比上也是最高的。像IBM和DELL的品牌服务器,虽然质量有保障,但价格往往是老板不能够接受的。当然了,一切以稳定为前提和原则。

首先是负载均衡设备的选择。我们可以有二种选择,一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于LVS/HAProxy、Nginx的基于Linux的开源免费的负载均衡软件策略,这些都是通过软件级别来实现,所以费用非常低廉,小公司和小企业由于费用的问题,所以软件级别的负载均衡是第一选择。

至于负载均衡高可用架构,我首推是Nginx/HAProxy+Keepalived的架构,这时很多朋友就有疑问,说你为什么不选择基于LVS+Keepalived的集群方案呢?这是因为我们部署的网站一般都会有动静分离、正则分发的需求,如果我们最前面选用LVS+Keepliaved的架构,那么我们至少又要在中间加一层二级负载均衡的机器,这样比较耗机器,无形中也会增加整个网站的成本;另外,很多朋友都比较担心的一个问题,说Nginx/HAProxy+Keepalived的稳定性不如LVS+Keepalived,这个其实是误解;我们通过十几个项目的成功实施,再加上几年的观察期,发现这些软件级别的负载均衡器的稳定性确实很好,在高并发的情况下宕机的可能性微乎其微,而近段时间实施的一个商业网站,用的是HAProxy+Keepalived,在亿/日高并发流量的冲击下,HAProxy稳如磐石。LVS在性能方面是最好的,尤其是后面的节点(如Web或MySQL数据库服务器)超过10台时,它的性能是最优异的。而小公司的并发和流量一般不是特别大,大概一天持续在100万/日之间,所以我这里也向大家推荐Nginx/HAProxy+Keepalived。

如果网站是放在IDC机房托管,而机房最前面也没有硬件防火墙防护时,这时候大家尽量做好流量监控的工作,我一般会在主Nginx/HAProxy上安装MRTG+Nload软件来对流量进行监控,Nload可以对流量进行即时监控,它的安装也是很简单的,我们先安装好RPMForege。RPMforge是Centos系统下的软件仓库,拥用4000多种的软件包,被Centos社区认为是最安全也是最稳定的一个软件仓库,地址为http://pkgs.repoforge.org/rpmforge-release。这个安装成功以后,我们可以通过命令yum –y install nload很轻松的安装nload。输入此命令后,nload软件会很直观的显示流量的即时状态,上半部分ncoming是进入网卡的流量,下半部分Outgoing是从这块网卡出去的流量,每部分都有当前流量(Curr)、平均流量(Avg)、最小流量(Min)、最大流量(Max)、总流量(Ttl)。由于此软件比较直观,我用它来取代之前的即时流量监控软件iptraf,Nload的工作界面如下所示:

许多对集群感兴趣的朋友经常问我,如果网站要部署负载均衡高可用的Linux集群方案,而公司又想用最节省成本的方式来实施的话,一般需要几台服务器呢?我的回答是四台,即2+2架构,最前面是二台Nginx/HAProxy+Keeplaived机器,后面是二台配置比较好的Web机器,MySQL数据库采用一主一从的方式,分别放在二台Web机器上,监控的Nagios部署在从Nginx/HAProxy机器上,流量监控我一般放主Nginx/HAProxy,软件采用的是MRTG+Nload的方式,服务器之间的数据同步我采用的是rsync+inotify的方法,当然更多时候,我采用的是纯rsync方式,这样是避免网站有大文件发生改动的时候会产生频繁读盘的麻烦;当然了,如果大家的公司对文件服务器有更高要求的时候(比如图片类型的),我们可以考虑再增加二台服务器,做成DRBD+Heartbeat+NFS的方式;如果有海量文件需要存储的话,我们可以考虑用MFS,当然这样也是比较耗机器的。

像类似以上的小公司集群架构里,我们是如何解决session同步的问题呢?我们可以采用Nginx的ip_hash和HAProxy的balance source机制,它们的原理比较类似,都会让某一客户机在相当长的一段时间内只访问固定的后端的某台真实的Web服务器,这样会话就会得以保持,我们在网站页面进行login的时候,就不会在二台Web服务器之间跳来跳去了,自然也不会出现登陆一次后网站又提醒你没有登陆,需要重新登陆的情况;大型项目或网站可以考虑用memcached的方式。

另外,小公司的Web服务器我们至少有二种选择:一种是Apache,另一种是Nginx,在流量和并发不大的环境下,我们完全可以选择Apache作为我们的Web服务器,虽然它的抗并发能力不高,但它的稳定性是最好的,我的许多电子商务网站都是基于Apache;而大流量大并发的环境,我比较倾向于Nginx。

MySQL在这里我用的就是一主一从的设计,虽然很多朋友觉得这种设计比较简单,但事实证明,它也最稳定的。我的电子商务网站也是采用这种架构,几年下来,从没有因为数据库的故障发生过丢单现象,网站上线的前期阶段,我们可以通过PHP程序,把后台的查询功能的入口选择Slave机器,这样可以大大减少主数据库的压力;另外,从MySQL机器并非仅仅只起一个备份和备机的作用,我们完全通过PHP程序将后台的复杂查询转到从MySQL机器上。当然了,MySQL的主从复制状态监控也是非常重要的,我一般是通过Nagios和SHELL脚本双监控的方式。

如何能帮企业节约和省钱,这其实也是系统管理员/架构师的一项工作职责,希望大家在工作中能领悟到这点。

本文出自 “抚琴煮酒” 博客,请务必保留此出处http://andrewyu.blog.51cto.com/1604432/710049

转载于:https://www.cnblogs.com/argb/archive/2013/03/02/2939646.html

小公司如何部署实施Linux集群网站【转载】相关推荐

  1. SQL Server高可用性部署实施 SQL server 群集

    SQL Server高可用性部署实施 SQL server 群集 2010-09-27 11:15:23|  分类: 数据库 |  标签:无 |字号大中小 订阅 SQL Server高可用性部署实施 ...

  2. Zabbix监控和分布式部署实施方案

    最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到 ...

  3. 交通银行香港分行实施 Linux 前端系统的开发手记

    交通银行香港分行实施 Linux 前端系统的开发手记 2004 年被称为是 Linux 应用推广的开端之年.剖开历史巨大的横断面,诸多的 Linux 应用项目如繁星,开始隐隐出现在巨大的苍穹下.它们中 ...

  4. 【云服务器部署】---Linux下安装MySQL

    [云服务器部署]---Linux下安装MySQL 有关如何阿里云ECS建网站,推荐一片文章,我是是通过这篇文章安装tomcat和jdk的 网址:阿里云ECS建网站(建站)超详细全套完整图文教程! 注意 ...

  5. 重启部署在Linux系统下的tomcat服务

    2019独角兽企业重金招聘Python工程师标准>>> 重启部署在Linux系统下的tomcat服务具体的操作步骤: 1.在Winscp上建立连接,输入用户和密码,这个密码一般是看不 ...

  6. ASP.NET Core部署到Linux服务器(CentOS7 x64)

    前言 本文主要讲解如何一步步将ASP.NET Core网站发布到Linux服务器,文中会讲解具体步骤及需要避免的各种问题. 目录 一.环境介绍 二.创建及发布ASP.NET Core网站项目 三.服务 ...

  7. 如何将javaweb项目部署到linux下

    以下是对将javaweb项目部署到linux下的方法进行了详细的分析介绍 一般都在windows下开发的现在部署到linux下 将项目达成war包(用eclipse项目右键>Export> ...

  8. Asp.Net项目的部署到Linux中(Linux + Jexus+Nginx )

    因为老项目用的Asp.Net Web API技术开发部署到Window系统上,而新项目用的是.Net Core部署到Ubuntu系统中,所以在管理切换上有些不便.于是决定将老项目的测试服部署到Ubun ...

  9. thinkphp5部署于Linux中nginx多站点解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 问题简述:thinkphp5怎么在url访问中去掉public. 实验环境: Linux.nginx.mysql.php(ln ...

  10. 项目部署到Linux服务器上 (全)linux服务器安装java mysql 配置

    项目部署到Linux服务器上 (全) 1.服务器准备 首先你需要购买一台云服务器 我是领取的阿里云的服务器 选择linux系统 设置好 服务器的密码 忘记可以在 控制台首页 云服务器ECS 里面找到购 ...

最新文章

  1. 9个常用iptables配置实例
  2. python windows时间同步工具
  3. php本身免费是啥意思,PHP本身是否支持连接和析取?
  4. 超级详细的教程 一步步教你Vue项目中使用axios如何进行参数拼接
  5. fork创建多个子进程
  6. select ... into ... 与 insert into .... select .... 语句
  7. 程序员|刚毕业,我该去小公司还是该去大公司
  8. rvest爬虫及案例分析
  9. mysql 将 字符 转换成 数字
  10. mysql解压版有配置文件么_3分钟安装MySQL5.7解压版
  11. 解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
  12. Java实现微信扫码关注公众号登录网站
  13. [Ynoi2016]炸脖龙I/Nephren Ruq Insania
  14. CAD图纸电子签名应用
  15. 学java被“劝退”的第九天
  16. 利用Arcgis Engine 二次开发的使用和总结
  17. 图片优化技巧,如何做好SEO图片优化?
  18. LAMP架构 【2】
  19. 服务过美国总统竞选的非传统投票UI【demo已放出】
  20. 在线文字转语音以及编辑的网址

热门文章

  1. 程序包androidx.appcompat.app不存在
  2. 全网首发:怎样制作CDKEY(7)-新思路
  3. 全网首发:怎样制作CDKEY(3)-加密
  4. 管理新语:会议与问题的关系
  5. 首发:成功解决MediaCodec中decoder超过720出错的问题
  6. 如何清理cmake产生的各种文件
  7. 水氢发动机应该叫氢能发动机、铝水制氢发动机
  8. 自己经常测试,不要等别人发现系统死了
  9. LINUX下,用脚本处理一个目录所有文件的代码
  10. 管理感悟:严重问题与怪问题