哥浸淫企业IT架构设计这么多年,“私人定制”的设计产品五花八门,既有过“高大上”型的大品牌会战,也有过“屌丝”型的免费开源混搭。这次就跟大家来聊聊我最近的一次铁(yi)公(mao)鸡(bu)式(ba)企业IT系统搭建项目。
一. 需求分析:
用户企业是师妹注册刚开的一家文化传媒公司。硬件环境是两台大公司淘汰下来的服务器和一下网络设备。对内要有员工上网,文件交流、存储、打印,邮件收发;对外要有官网、论坛、会员博客,视频文件上传/下载等;远程要有员工在企业外访问内网资源。她的心很大,时髦的IT服务她都想到了。哎。既然是“师妹”相求,又是刚起步,你懂的了。哥恨不得达到“既要马儿好又要马儿不吃草”的效果。
二. 概要设计:
哥一直身处外企,养成了尊崇标准的习惯。所以这次设计还是沿用标准化的节奏,所有涉及到的开源软件都挑选的通过并持有GPL(GNU General Public License 通用公共许可证)的。此设计的整体功能服务器划分为:
· 文件共享和打印服务器(Samba),
· 反向代理(Web)服务器(Squid3.0+Apache+LNMP+Keepalived),
· 邮件服务器(Postfix+Courier-IMAP+maildrop+Extmail+Extman+Amavisd-new+SpamAssassin+Clamav+Apache+phpMyAdmin+MySQL),
· 上网(正向)代理服务器(Squid3.0+Clamav+IPTables),
· BBS/blog/FTP服务器(Discuz!+X-Space+ProFTPd+MySQL),
· 远程接入服务器(PPTPD)。
三. 细节说明:
虚拟机:VirtualBox 4.3 改版本支持虚拟机的克隆和SATA硬盘的热插拔等特性。
操作系统:Linux哪家强?当然是CentOS 7。其7版本已将内核更新至3.10.0。CentOS高稳定性的服务器的上选。
文件共享和打印服务器:用Samba解决异构平台中数据共享与传输问题,值得一提的是如果企业日后发达了(希望师妹有朝一日变成“白富美”)升级或转换到微软架构,Samba同样可以加入到活动目录(AD)中,实现单一登录访问(SSO)。
反向代理(Web)服务器:
方案采用的是LNMP架构,其中Nginx用作并实现负载均衡;Squid用作并实现反向代理;Apache用作并实现Web服务的发布。
除了Nginx本身,还要安装ngx_cache_purge(缓存服务)。
而除了Apache本身,还要安装PHP、PHPMyAdmin、php-memcache、eAccelerator、libmcrpt(php扩展)、cmake(MySQL的编译工具)、CoreSeek(MySQL和PHP的中午检索)、多文件类型支持模块(包括gb, libvpx, tiff, libpng, freetype, jpgsrc)。
另外,Apache的安全工具:mod_clamav(防病毒),Ddos(防止DDos攻击)和ModSecurity(应用防火墙)、以及验证模块(Sasl和Authlib)。
而数据库则选用MySQL,因为它相对于PostgreSQL来说更流行更多支持和完善的文档资料。
邮件服务器:
Postfix:利用SMTP协议提供邮件发送服务。
POP3/IMAP服务:Courier-IMAP:提供多种用户认证模块和方式、支持虚拟邮箱、支持共享目录并且可以限制IMAP同事登录的数目以及同一IP地址登录数,还能有效应对DoS攻击。另外Dovecot作为可选,因为其安全性比价出众,且一般Linux系统自带。
Maildrop是必要的邮件投递代理,负责将邮件转发到用户邮箱。
SmapAssassin是利用Perl对邮件内容来进行文字分析以达到过滤垃圾邮件的目的,它对邮件各种特征进行评分方式,总分高于门限值就视为垃圾邮件。
MailScanner可以对Postfix、SpamAssassin和ClamAV进行总管并协调各模块之间的工作。但是个人觉得其必须监视Postfix的Hold队列,此“暴力”做法实在坑爹,因此我采用Amavisd-new对邮件病毒进行扫描。
那么对邮件系统、邮箱设置等综合管理我采用由Perl语言编写的ExtMail,它具有面向大容量ISP级别应用和高性能。
WebMail:SquirrelMail,不使用任何JavaScript代码,纯粹用PHP所开发,从而兼容各种浏览器。它有支持增强的MIME、地址簿、文件夹操作等功能。且一般Linux系统自带。
远程接入服务器:方案设计上采用的是构建VPN网络让远程用户拨入系统内部。选择PPTPD的原因是一般人员用的是Windows操作系统,而Windows客户端默认就支持PPTP方式的VPN,Windows用户不需要额外安装客户端软件而只需简单配置便可。
四.运维设计
妹纸的需求在功能上已满足了。那么问题来了,如果系统运行没一段时间就遇到问题或攻击,学妹是否会抱怨此等“终身大事”相托,却搞得如此脆弱,“人与人之间的基本信任都没有”。哥自认为是一个负责任的网络设计师,为了系统在实际使用中的平稳运营,我前瞻性的多走一步,设计了方便运维的模块。
· 文件存储与备份:考虑到文件服务器硬件配置且为二手,同时估计IT人员是刚毕业的“小鲜肉”,哥设计上采用的是FreeNAS软件的NAS架构,备份介质则用平时的移动硬盘便可。
· 网络管理:网管软件采用的是Nagios的“分布-集中”模式对网络及应用的各种特征进行自定义监控,且有友好的Web界面和报表功能。
· 集中配置管理:我采用的是C/S结构的自动化运维工具Puppet。
五. 后记
设计完成,学长只能帮你到这里了。之后,我协同其单位的IT专业小伙伴联合实施,历时3个多月,系统搭建完成并上线,除了BBS/blog/FTP服务器尚未投入使用外(不是臣妾做不到,而是师妹的合伙人—一位女汉子说这些锦上添花的功能等后期发展壮大了在逐步推出),一切运营正常且效果还不错。师妹夸我有“业界良心”,在其公司启动资金有限的情况下,实现了“多快好省”。我得意的笑并情不自禁的哼起了自己一直唾弃却总是不由得唱起的“你是我的小啊小苹果。。。。。。”作者:陈巨廉
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)