开源项目在中小云计算平台的应用.pdf_第1页
开源项目在中小云计算平台的应用.pdf_第2页
开源项目在中小云计算平台的应用.pdf_第3页
开源项目在中小云计算平台的应用.pdf_第4页
开源项目在中小云计算平台的应用.pdf_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开源项目在中小云计算平台的应用 - 1 - 开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用 2012.4 汤文志 赵杰 摘要: 本文着重整合探讨开放源代码项目在中小云计算平台方面的一些典型应用,包括 Email 邮件系统,Proxy 反向代理加速,Cache 基于内存数据库的缓存系统,LoadBalence 应用负载 均衡,CallCenter 纯软交换呼叫中心,Mornitor 主机和应用监控系统,把这些分散的独立的 系统, 构建组合在一起形成能够有效提高生产力的基础运营平台, 为推动开源软件在中小企 业配套应用提供一种探讨和尝试, 本文探讨范围只限在应用开源项目, 不包括二次商业开发 范畴。 关键词:开放源代码、中小企业、互联网应用、基础平台、定制开发 EMAIL、WEBCACHE、LOADBALANCE、MONITOR、SIP、CALLCENTER 名词解释: 开源软件,即开放源代码软件(英语:Open source software,英文缩写:OSS) ,就是在 GNU 通用公共许可证 (GPL) 下发布的软件, 以保障软件用户自由使用及接触源代码的权利。 这同时也保障了用户自行修改、复制以及再分发的权利。一些经过 Open Source Initiative 组 织通过批准的开源协议许可证类型: BSDBSDBSDBSD: 自由软件(开源软件的一个子集)中使用最广泛的许可协议之一。允许专有二次开 发不开源。 MITMITMITMIT: MIT 是和 BSD 一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。 允 许专有二次开发不开源。 GPLGPLGPLGPL: GNU General Public License,简称 GNU GPL 或 GPL,是一个广泛被使用的自由软件 许可证条款,二次专有开发必须遵循 GPL,不允许单独发行二进制产品。 LGPLLGPLLGPLLGPL: GNU 宽通用公共许可协议 (英语: GNU Lesser General Public License, 一般简称 LGPL) 是改自 GPL 的另一个版本,其目的是为了应用于一些软件函式库,二次专有开发必须遵 循 LGPL,二进制发布只能采用函数库打包。 ApacheApacheApacheApacheLicenceLicenceLicenceLicence2.02.02.02.0: Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似, 同样鼓励代码共享和尊重原作者的著作权, 同样允许代码修改, 允许专有二次开发不开 源. 综上所述企业采用开放源代码项目作为公司生产系统的运营平台, 应该有选择的根 据订制的需求和再次发布的要求来选择不同的开源项目进行搭建。 比如如果搭建的应用 平台软件属于二次销售的产品一部分则应尽量选择允许二次专有开发并可以进行二进 制发布的协议授权的开源项目。 开源项目在中小云计算平台的应用 - 2 - 前言: 开放源代码项目为中小企业快速搭建运营平台已经成为普遍的选择,在降低 TCO 总拥 有成本同时,提供了很高的可订制扩展性。互联网各种云服务目前很大一部分流量来自于 LAMP(这是一组开源项目的缩写:Linux 一种开源操作系统,Apache 一种开源互联网服务 器,Mysql 一种开源数据库,Php 一种开源跨平台开发语言) 技术支持的应用。 本文结合在作者 所在公司远程心电监护云健康服务平台的搭建和运维过程所实施的各个开源平台项目经验 为更多中小企业实施开源项目集成整合提供一定的指引。 一、邮件系统 1.1 邮件系统应用情况介绍 Mailbox (Maildir) Slockd Amavisd-n e w D sp am SpamAssassin Courier-IM AP (P o p3) Other M T A ClamAV Extmail邮 件 系 统 各种病毒垃圾等 内容过滤插件 M U AW EB Courier-AuthlibCyrus-SASL2 SMTPS HTTPS P O P3S LDAP 基 于S S L实 现SMTPS/P O P3S/HTTPS并 集 成windows ad认证的开源邮件解决方案 Frank Tony 2012-4-2 0 图 2-1 本方案使用 Extmail 开源邮件系统作为解决方案核心,在保障安全性方面采用基于 SSL 数字证书 PKI 公私密钥体系建立的安全传输协议 SMTPS/POP3S/HTTPS, 实现邮件客户端和服 务器通讯加密,有效降低邮件泄密风险。在管理易用性方面通过 authlib 插件集成 windows active directory 用户登录认证,使用户邮件密码和操作系统密码统一,提高用户易用性和管 理效率。 在阻止垃圾邮件方面, 在保障邮件到达率前提下充分利用各种过滤插件过滤垃圾邮 件及病毒,同时自行开发邮件屏蔽监控插件,保障被屏蔽的正常邮件可以被及时发现解决。 1.2 开源项目介绍 1.2.1项目介绍 “ExtMail 最初以 WebMail 软件为主, 后逐步完善配套并形成了 ExtMail 邮件系统,提供完整的 SMTP/POP/IMAP/Web 和管理支持。 ” 摘自 。为本方案提供 HTTP 服务。 Postfix 是一个著名的邮件传输代理(MTA)软件,出自 IBM Research,是一个功能类似 Sendmail,内核完全不同的 MTA,基于模 开源项目在中小云计算平台的应用 - 3 - 块化,致力于快速、易管理、安全等特性开发。为本方案提供 SMTP 服务。 Courier 项目是一个集成多个组件的邮件解决方案,本方案以 Courier-IMAP 实现 POP3 服务,以 Courier-Authlib 实现用户身份查询验证服务。 Courier-IMAP,IMAP 邮件服务器软件,来自 Courier 开源邮件项目,提供 IMAP 邮件收 取服务,同样可提供 POP3 服务,除 Courier 外这个组件也能应用于 Postfix、Qmail、Exim 等 其他支持投递 Maildir 的邮件服务器。为本方案提供 POP3 服务。 Courier-Authlib,Courier 邮件系统的身份验证库,独立软件包,用于发送接收邮件时的 用户身份验证。通过集成后端的 windows active directory 为 SMTP/POP3/HTTP 三项邮件功能 提供身份查询验证服务,实现域账户统一认证。 1.2.2横向对比 邮件系统的核心是 MTA (Message Transfer Agent) , 本邮件系统的MTA基于Postfix, Postfix 相比 Sendmail 和 Qmail 等其他开源 MTA 来说性价比更高。其安装配置简单灵活,模块化设 计,配置文件少,管理方便;扩展性好,源自 sendmail,扩展配置丰富,提供外部对接 API/protocol;低消耗高效率,单一队列,磁盘 I/O 开销小,发送效率高。新浪、yahoo 使用 qmail,网易、搜狐等使用 Postfix 支撑百万甚至千万用户级别的商业运营也说明 Postfix 的稳 定性足够高。 应用特性对比参考视图(/MTA_Comparison#How_To_Compare_MTAs) -by Dan Shearer 图 2-2 由此表格可以看出 Postfix 相比其他 MTA 在文档及社区支持、示例、安全性、可管 理性上有明显优势,因此 Extmail 选择 Postfix 作为 MTA,为邮件应用系统提供有力支撑。 1.3 本地化定制 1.3.1安全配置 本方案安全配置基于 PKI 公私密钥体系, 使用 OpenSSL 工具包里的 CA 根证书认证机制, 实现自主签发 CA 根证书和服务器端证书以及客户端证书,未来根据安全性的进一步需求可 以升级为第三方可信 CA 签发数字证书提供 SSL 协议加密传输的 SMTPS/POP3S/HTTPS 服务。 首先用 OpenSSL 工具生成所需 CA 根证书及密钥,pop3 需要单独的证书,可用 mkpop3dcert 生成,然后配置 courier-imap、postfix 使其支持 pop3s 和 smtps。Web 页面访问 的 https 需要先拷贝 CA 根证书到 apache 证书目录,并加载 ssl 模块,如果想只用 https 访问 邮件 web 页面可通过 Redirect 跳转实现。配置完成之后重启 pop3d-ssl、postfix、apache 服 务。如果客户端没有安装根证书会出现类似如下警告 (web 页面提示)(outlook 邮件客户端提示) 开源项目在中小云计算平台的应用 - 4 - 图 2-3 1.3.2集成 Windows Active Directory 用户登录认证 Windows 域增强了企业计算机网络管理的安全与高效,extmail 邮件系统也可以集成域 用户的认证机制,加强邮件系统安全与易用性。集成的关键是 authlib 插件,extmail 采用 authlib 来进行用户认证, 我们可以让 authlib 改为查询 windows AD 域的账户完成认证。 要做 到这些需要在域上新建一个 OU 组存放所有邮件账户,配置 authlib 查询此账户组,并分别 修改 postfix、courier-imap、extmail 的配置文件,具体配置请参考互联网相关项目的说明文 档或联系笔者。这里对域控的安全性结合配置进行特别说明,结合本方案的实际使用情况, 一旦主域发生故障需要在 5 分钟之内切换到备域登录, 可通过一个 ping 脚本, 取其 5 次 ping 结果,如果为零则自动修改 authlib 配置文件中的 LDAP_URI 值为备份登录域 IP 地址,将此 脚本加入 crond 任务每 5 分钟执行一次,脚本里可再加一条判断语句,当主域恢复时再自动 切换回去。 i=0 pingresult=ping -c 5master domain ip|grep transmitted |awk print $4 checkhost=cat /etc/authlib/authldaprc |grepslave domain ip|awk print $1 if “$pingresult“ -eq 0 then i=$(expr $i + 1) echo $i /root/ldapcheck.log sed -i s/master domain ip/slave domain ip/g /etc/authlib/authldaprc sleep 2 authdaemond restart else if $checkhost = LDAP_URI then sed -i s/slave domain ip/master domain ip/g /etc/authlib/authldaprc sleep 2 authdaemond restart fi fi 1.3.3群发限制 利用 postfix 配置规则限制特定用户(local_sender)发送邮件到特定本地邮件组 (local_recipient)的权限 smtpd_restriction_classes = local_only local_only = check_sender_access hash:/etc/postfix/local_sender,reject 开源项目在中小云计算平台的应用 - 5 - smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/local_recipient, smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender 1.3.4垃圾邮件策略及拒收邮件监控 Postfix 支持很多扩展插件,包括 slockd、amavisd-new、clamav、spamassassin、dspam 等各种防垃圾、内容过滤、病毒查杀等插件,以 slockd 为例,slockd 是基于 SMTP 行为识别 为核心的反垃圾邮件软件,它通过加载执行不同的插件在 SMTP 会话阶段判断屏蔽垃圾邮 件,效率较高,但误报率也高,通过关闭一些默认开启的插件可有效提高邮件通过率,比如 针对国内邮件错误率较高的 RBL、SPF 等,对于那些必须保证通过的邮件,例如重要的合作 伙伴等的邮件可通过开启白名单来控制误报。 发送失败的邮件有退信可查看, 但有些被错误拒绝的邮件没有邮件提醒, 为及时了 解被屏蔽邮件的情况,可通过脚本捕捉 maillog 日志中的 reject 语句,将这些信息存放于一 个临时文件并定期将内容发送到管理员邮箱,为及时发现被“错误”阻止的邮件提供有效手 段。 MAIL_COMMAND=/bin/mail TOMAIL=“管理员 mail 地址“ TMPMAILBODY=/root/mailreject.tmp cat /var/log/maillog | grep reject |egrep -v rejected: User unknown|NOQUEUE: reject|rejected: not logged in|reject: RCPT from unknown |tac/root/mailreject.log/tac 表示后面几种排除掉,因 为这些都是正常错误 if cat/root/mailreject.log | wc -l -gt 0 then echo -e “-alert-log-“ $TMPMAILBODY while read line do echo “$line“ $TMPMAILBODY echo -e “n-n“ $TMPMAILBODY done /proc/sys/net/ipv4/ip_forward echo “1“ /proc/sys/net/ipv4/conf/lo/arp_ignore echo “2“ /proc/sys/net/ipv4/conf/lo/arp_announce echo “1“ /proc/sys/net/ipv4/conf/all/arp_ignore echo “2“ /proc/sys/net/ipv4/conf/all/arp_announce sysctl -p /dev/null 2; stop) ifconfig lo:0 down #echo “0“ /proc/sys/net/ipv4/ip_forward echo “0“ /proc/sys/net/ipv4/conf/lo/arp_ignore echo “0“ /proc/sys/net/ipv4/conf/lo/arp_announce echo “0“ /proc/sys/net/ipv4/conf/all/arp_ignore echo “0“ /proc/sys/net/ipv4/conf/all/arp_announce echo “RealServer Stoped“ ; *) echo “Usage: $0 start|stop“ exit 1 esac 开源项目在中小云计算平台的应用 - 13 - 四、基于纯软交换技术呼叫中心项目解决方案 以 Digium 公司开源的软交换软件 Asterisk 为基础使用 Freepbx 作为交换机 在 trycalling 函数内部/* Stop music on hold */和/* If appropriate, log that we have a destination channel */中间处增加如下调用自定义的报号规则代码: 修改完代码,需要编译安装一遍定制的 asterisk。 4.2.3 座席端 Flex 控件集成 WebCrm 开源项目在中小云计算平台的应用 - 16 - 要想实现座席端控件的基本功能,必须首先实现代理服务器作为 AMI 呼叫事件的动作 侦听,同时实时与座席端控件进行通讯。 CallCenterProxy 服务器端使用 java 开发一个 FlashCtiBarServer 服务器,侦听 flexsocket 认证端口 843,如果有 flex 客户端连接就产生一个 Adapter, 通知客户端的通讯安全策略认证通过,proxy 通过实 现 AsteriskServerListener,ManagerEventListener 来侦听 asterisk 本身的各种事件动作,底层 基于 AsteriskJava 实现。 客户端控件使用 Flex 开发,基于 Flex sockt 技术,直连 CallCenterProxy,并维持心跳通 讯保持在线。Webcrm 使用一个 url 来直接集成座席控件,使用 url 通知座席上线,服务器端 根据座席端通讯在一段时间内没有通讯自动下线退出队列。客户端控件使用 flex 向上呼叫 javascript 来实现 url 参数和自定义方法的绑定,包括弹屏的 url 等信息可以实现动态设置。 /set the javascript can callback method set the parameter ExternalInterface.addCallback(“setAgentid“,setMonitorAgentid); ExternalInterface.addCallback(“setPopBase“,setPopBaseUrl); ExternalInterface.addCallback(“setMornitorQueues“,setMornitorQueues); ExternalInterface.addCallback(“connect“,connectToServer); /call the javascript method to set parms And start connect server ExternalInterface.call(“startclient“); 以下为 WEBCRM 呼叫弹屏界面 在本方案中着重描述了关于 web 控件集成,动态座席等一些特定应用场景,其他一些 开源项目在中小云计算平台的应用 - 17 - 通用呼叫中心功能特性配置,请自行配置,包括录音文件的按日期分目录转存成 mp3 等请 参考作者博客。本系统开发完成在 2009 年 7 月,最开始只有 12 座席,发展到目前 30 座席 10 并发话路,曾经连续稳定运营 4 个月未服务器重新启动,只是用一台奔腾双核 cpu 的 pc 机,cpu 平均使用率只有 5%,峰值 30%左右,来去电弹屏和座席登录只做了非常小的修改就 完成系统集成,为以后扩充高一个数量级的呼叫中心提供有了一定的借鉴意义。 五、服务器主机、网络及应用软件监控管理 系统与网络平台是企业运维管理的核心, 必须时刻了解它的运行状态, 并在它发生故障 时第一时间获取报警信息,本方案采用 Cacti 和 HYPERIC 两个软件组合使用 SNMP 协议实现 主机状态查询与应用故障报警。使用 Cacti 查询主机操作系统和网络状态,并把它的报警功 能做到手机短信通知里,另外使用 HYPERIC 实时监控应用系统运行状态,针对应用软件服务 进程、磁盘容量、CPU 负载等设置阀值报警,一旦达到阀值即触动报警机制,并结合短信平 台实现手机短信报警。 5.2 采用开源项目介绍 Cacti 是一个基于日志的图形化网络系统状态查询解决方案,此日志一般 为 snmp 统计数据,snmp 就是简单网络管理协议,通过它可以了解互联网上 各软硬件设备不同时间点的状态信息,这些信息都是一些数字方便记录与存 储,Cacti 通过 snmp 记录各个时间点上网络设备状态信息,存储于 rrd 数据库 (按时间序列存储的度量值,必须是数字) ,再借助于 rrdtool 工具以时间做轴 汇成图形,一种非常直观友好的状态查看界面就生成了。这里采用 Cacti 主要的理由还是在 于 Cacti 本身是支持插件扩展的框架以及视图的模板定义。 HYPERIC 提供了一种实时化的系统监控手段, 它主要针 对应用主机系统,可以实时监控 CPU 负载、磁盘容量、系 统服务、甚至包括应用程序进程,这是一个商业软件,这里采用的是有一定功能限制的开源 社区版本。它采用 JBOSS 发布,WEB 管理界面,安装配置非常方便,被监控主机客户端需 要安装客户端软件代理,客户端软件支持多种平台,涵盖常用服务器操作系统。软件包自带 75 种公共组件,能够监控数据库,应用服务器,WEB 服务器,网络设备等多种应用或设备, 提供对虚拟机支持。 5.3 本地化实现 关于 Cacti 和 HYPERIC 的安装部署,这里没有给出,参考项目部署文档,基本很容易配 置成功,建议两套软件配置在同一台服务器上,部署在不同的端口。 5.3.1 修改 Cacti 插件 thold 来实现邮件报警同时发送手机短消息报警 Cacti 的核心开发人员 Jimmy Conner 为我们带了了 PIA 即 Cacti 的可扩展插件框架, 需要 单独安装配置实用,具体请参考 /manual:087:1_installation.9_pia 。这里 我们介绍使用 thold 插件使用短信报警,thold 的安装请参考 thold 的说明。 Cacti 的主机宕机报警会发送一封邮件到你设定的邮箱,同时也可以发送一条短信,只 要修改相关 php 函数, 找到 Cacti 安装目录, 在 pluginsthold 目录下找到 thold_functions.php 文档,在 758 行增加一条执行语句(Cacti 版本 0.8.7D) exec(“d:wgetCactialert.bat “.$subject.“); Cactialert.bat 批处理用来执行短信发送,内容大致如下 开源项目在中小云计算平台的应用 - 18 - echo off d:wgetwget.exe-q“http:/IP地址(短信平台) /sendSms.jsp?tonum=phonenumber1,phonenumber2,.&content=“%1 Wget.exe 是一个获取 url 内容的工具软件,可以从网上免费下载。短信内容显示在 手机上参考如图 5-3-1。 图 5-3-1图 5-3-2 5.3.2 HYPERIC 应用监控的报警 HYPERIC 的社区版也只能实现邮件报警,所以要实现短信报警同样需要在邮件报警部分 增加短信报警功能。修改路径为 hq-engineserverdefaultdeployhq.earhq.jarorgHYPERIChqeventsserversessionAlertDA O.class,在邮件报警部分增加一条执行语句 d:wgetwget.exe -q “http:/IP 地址 (短信平台) /sendSms.jsp?tonum=phonenumber1,phonenumber2,.&content=“%1 磁盘容量报警收到短信效果如图 5-3-2。 5.4 应用总结 本项目管理共有 33 台网络设备和 25 台 PC 机架服务器, 三条互联网接入专线, 2 条 VPN 专线,全部加入 Cacti 进行主机和网络监控,方便查看图形日志,使用 HYPERIC 对重要的数 据库和应用服务器做关键应用进程监控报警和磁盘容量报警, 两者结合做到网络设备、 主机、 进程、磁盘应用四个方面的全面监控。 通过使用不同的开源项目搭建一些中小企业在不同方向的应用平台, 解决企业运营的需 要,为各个企业在提高客户满意度,企业工作效率,管理信息化智能化等方面起到一定的支 撑作用,也为中小企业在探索企业信息化的道路上迈出坚实的一步。 开源项目在中小云计算平台的应用 - 19 - 本文只是在几个典型应用方面提供了解决方案, 随着开源社区软件的蓬勃发展, 企业信 息化也有了更多选择,在 OA(办公自动化),KMS(知识库管理),PM(项目管理)等方面也可以 积极尝试开源项目应用,甚至应用在整体的企业资源规划上。 附件: 1.所用开源项目许可情况介绍 项目网址许可证定制情况 GPLGPLGPLGPL自用无定制修改 GPLGPLGPLGPL自用有定制修改 GPLGPLGPLGPL自用无定制修改 GPLGPLGPLGPL自用有定制修改 hyperichyperichype

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论