监控软件对比选择

运维技术Rock 发表了文章 • 2 个评论 • 1107 次浏览 • 2016-01-03 04:18 • 来自相关话题

Cacti、Nagios、Zabbix功能对比




 
其他对比
Cacti、Nagios、Zabbix功能对比
function.png

 
其他对比
monitor_soft.png

浅谈开源工具自动化运维阶段

运维技术Rock 发表了文章 • 1 个评论 • 2873 次浏览 • 2016-01-02 00:48 • 来自相关话题

前言

随着各种业务对IT的依赖性渐重以及云计算技术的普及,企业平均的IT基础架构规模正不断扩张。
有些Web 2.0企业可能会需要在两个星期内增加上千台服务器,因此对运维而言,通过手动来一个一个搭建的方法不仅麻烦、效率低下,而且非常不利于维护和扩展。即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。

运维自动化前三阶段

[]纯手工阶段:手工操作重复地进行软件部署和运维;[/][]脚本阶段:通过编写脚本、方便地进行软件部署和运维;[/][]工具阶段:借助第三方工具高效、方便地进行软件部署和运维。[/]
 这几个阶段是随着运维知识、经验、教训不断积累而不断演进的。而且,第2个阶段和第3个阶段可以说是齐头并进,Linux下的第三方工具虽说已经不少了,但是Linux下的脚本编写对运维工作的促进作用是绝对不可以忽视的。
在DevOps出现之前,运维工作者在工作中还是以这两种方式为主。

Linux下好用的开源工具

1、预备类工具:
Kickstartkickstart安装是redhat开创的按照你设计好的方式全自动安装系统的方式。安装方式可以分为光盘、硬盘、和网络。CobblerCobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。OpenQRMopenQRM提供开放的插件管理架构,你可用很轻松的将现有的数据中心应用程序集成到其中,比如Nagios和VMware。openQRM的自动化数据中心操作不但可用帮助你提高可用性,同时还可以降低您企业级数据中心的管理费用。针对数据中心管理的开源平台,针对设备的部署、监控等多个方面通过可插拔式架构实现自动化的目的,尤其面向云计算/基于虚拟化的业务。SpacewalkSpacewalk可管理Fedora、红帽、CentOS、SUSE与Debian Linux服务器。当你的数据中心拥有多台Linux服务器时,手动管理将不再是一个好的选择。Spacewalk就可以管理补丁、登录、更新。 [b]在自动化运维和大数据云计算时代实现预设自动化安装服务器环境、应用环境等不仅可以提高运维效率,而且还能大大减少运维的工作任务及出错概率。尤其是对于在服务器数量按几百台、几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,其工作量和周期不可想象。[/b]2、配置管理类工具:
前浪:
ChefChef是一个系统集成框架,可以用Ruby等代码完成服务器的管理配置并编写自己的库。ControlTierControlTier是一个完全开放源码系统的自动化服务管理活动的多个服务器和多个应用层(代码,数据,配置和内容) 。共同使用的ControlTier包括部署应用程序,控制它们的状态,并运行按需行政工作在多个服务器上。ControlTier是跨平台和工程同样的物理服务器,虚拟机,或云计算基础设施。FuncFunc是由红帽子公司以Fedora统一网络控制器Func,目的是为了解决这一系列统一管理监控问题而设计开发的系统管理基础框架,它是一个能有效的简化我们众多服务器系统管理工作的工具,其具备容易学习,容易使用,更容易扩展;功能强大而且配置简单等优点。Puppetpuppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署。后浪
SaltStackSalt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。AnsibleAnsible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。[b]在进行大规模部署时,手工配置服务器环境是不现实的,这时必须借助于自动化部署工具。[/b]
3、监控类工具
NagiosNagios是一款免费的开源IT基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知。OpenNMSOpenNMS是一个网络管理应用平台,可以自动识别网络服务,事件管理与警报,性能测量等任务。CactiCacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。
Zenoss Core一个基于Zope应用服务器的应用/服务器/网络管理平台,提供了Web管理界面,可监控可用性、配置、性能和各种事件。
Zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。用于监控网络上的服务器/服务以及其他网络设备状态的网络管理系统,后台基于C,前台由PHP编写,可与多种数据库搭配使用。提供各种实时报警机制。
GangliaGanglia是一个针对高性能分布式系统(例如,集群、网格、云计算等)所设计的可扩展监控系统。该系统基于一个分层的体系结构,并能够支持2000个节点的集群。它允许用户能够远程监控系统的实时或历史统计数据,包括:CPU负载均衡、网络利用率等。Ganglia依赖于一个基于组播的监听/发布协议来监控集群的状态。Ganglia系统的实现综合了多种技术,包括:XML(数据描述)、XDR(紧凑便携式数据传输)、RRDtool(数据存储和可视化)等。[b]数据监控和业务监控非常关键,及时发现问题,及时解决问题,监控系统主要包括:服务应用监控、主机监控、网络设备监控、网络连通性监控、网络访问质量监控、分布式系统监控、报警预设、监控图形化与历史数据等。[/b]





自动化对运维的意义

自动化就是运维为了减少重复枯燥的工作而建立的流程方法,而除此之外,自动化还能够带来减少人为错误、及时报警与故障恢复、提高业务可用性等好处。运维工作自动化确实包含上述2个方面,归纳总结来其实就是:把零碎的工作集中化,把复杂的工作简单有序化,把流程规范化,最大化地解放生产力,也就是解放运维人员。自动化的技能/意识对于运维工作至关重要。运维工作不是简单的使用工具,这里面还有很多技巧和意识。具体的技巧/意识包括:
[]如何驾驭这些琳琅满目的工具为己所用;[/][]如何根据不同的应用环境来选用不同的工具;[/][]如何根据应用来组合使用工具等等等等。[/]
一定要记住一点:工具只是利用帮助人进行运维的,这中间还需要人的干预和决策,工具不能完全代替全部运维工作。还需要结合实际业务逻辑和业务场景,就像架构一样,并不是淘宝、百度等大公司的架构,一定适合任何公司和业务。

自动化运维范畴

[]安装自动化[/][]部署自动化[/][]监控自动化[/][]发布自动化[/][]升级自动化[/][]安全管控自动化[/][]优化自动化[/][]数据备份自动化[/]
前阶段在自动化管理和安全方面的技术实现,比如说HP和IBM出品的一些ITIL和ITSM产品等,比如HP Openview,IBM Tivoli等等。这些工具都有Linux的版本,与其他同类工具相比的优势应该在于他们的商业应用成熟度,都是老品牌。
现阶段有自动化的一些工具git、svn、Jenkins等等,一些开源的软件!

工具选择

针对不同规模的架构,一个小规模的网站,到百万量级、千万量级的网站,我们选择的工具就有不同。在选择上对于百万量级、千万量级的网站,我们应该考虑选择成熟的工具、性能高的工具、熟悉的工具。而对于小规模的网站,我们应该考虑选择一些开源的、免费的工具。这个原则就是以应用为导向,百万量级、千万量级的网站牵涉的面广、要求高,不成熟的工具往往很难说服领导和公司使用,所以主要是在成熟度方面。

自动化运维规划

自动化的实现不是单纯学习几个工具就能够做好的,甚至于规划不好的情况,自动化不仅没有节省人力,反而带来了更多的问题。
所以运维人员在考虑自动化流程的过程中应该考虑如下几点原则:
[]根据应用选择工具;[/][]对于关键应用,选择成熟度高的工具;[/][]不能过分依赖一种工具,需要进行对比和分析;[/][]对工具的特性做到精通;[/][]是人驾驭工具,人要监督工具,而不是工具来驾驭人;[/][]善于利用脚本实现定制化场景。[/]

自动化经验积累

[]经常逛逛一些不错的IT媒体网站和看看这方面的文章,可以多多涉猎和学习;[/][]针对公司业务场景,选择一些自动化工具,登陆到官网学习和熟悉工作原理;[/][]经常参加一些线下自动化运维的活动和媒体活动,多和一些自动化方面的大拿和资深人士交流。[/] 查看全部


前言


随着各种业务对IT的依赖性渐重以及云计算技术的普及,企业平均的IT基础架构规模正不断扩张。
有些Web 2.0企业可能会需要在两个星期内增加上千台服务器,因此对运维而言,通过手动来一个一个搭建的方法不仅麻烦、效率低下,而且非常不利于维护和扩展。
即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。
在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。


运维自动化前三阶段


    []纯手工阶段:手工操作重复地进行软件部署和运维;[/][]脚本阶段:通过编写脚本、方便地进行软件部署和运维;[/][]工具阶段:借助第三方工具高效、方便地进行软件部署和运维。[/]

 
这几个阶段是随着运维知识、经验、教训不断积累而不断演进的。而且,第2个阶段和第3个阶段可以说是齐头并进,Linux下的第三方工具虽说已经不少了,但是Linux下的脚本编写对运维工作的促进作用是绝对不可以忽视的。
在DevOps出现之前,运维工作者在工作中还是以这两种方式为主。


Linux下好用的开源工具


1、预备类工具:
Kickstart
kickstart安装是redhat开创的按照你设计好的方式全自动安装系统的方式。安装方式可以分为光盘、硬盘、和网络。
Cobbler
Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。
OpenQRM
openQRM提供开放的插件管理架构,你可用很轻松的将现有的数据中心应用程序集成到其中,比如Nagios和VMware。openQRM的自动化数据中心操作不但可用帮助你提高可用性,同时还可以降低您企业级数据中心的管理费用。针对数据中心管理的开源平台,针对设备的部署、监控等多个方面通过可插拔式架构实现自动化的目的,尤其面向云计算/基于虚拟化的业务。
Spacewalk
Spacewalk可管理Fedora、红帽、CentOS、SUSE与Debian Linux服务器。当你的数据中心拥有多台Linux服务器时,手动管理将不再是一个好的选择。Spacewalk就可以管理补丁、登录、更新。
 
[b]在自动化运维和大数据云计算时代实现预设自动化安装服务器环境、应用环境等不仅可以提高运维效率,而且还能大大减少运维的工作任务及出错概率。尤其是对于在服务器数量按几百台、几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,其工作量和周期不可想象。[/b]
2、配置管理类工具:
前浪:
Chef
Chef是一个系统集成框架,可以用Ruby等代码完成服务器的管理配置并编写自己的库。
ControlTier
ControlTier是一个完全开放源码系统的自动化服务管理活动的多个服务器和多个应用层(代码,数据,配置和内容) 。共同使用的ControlTier包括部署应用程序,控制它们的状态,并运行按需行政工作在多个服务器上。ControlTier是跨平台和工程同样的物理服务器,虚拟机,或云计算基础设施。
Func
Func是由红帽子公司以Fedora统一网络控制器Func,目的是为了解决这一系列统一管理监控问题而设计开发的系统管理基础框架,它是一个能有效的简化我们众多服务器系统管理工作的工具,其具备容易学习,容易使用,更容易扩展;功能强大而且配置简单等优点。
Puppet
puppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署。
后浪
SaltStack
Salt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。
Ansible
Ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。
[b]在进行大规模部署时,手工配置服务器环境是不现实的,这时必须借助于自动化部署工具。[/b]

3、监控类工具
Nagios
Nagios是一款免费的开源IT基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知。
OpenNMS
OpenNMS是一个网络管理应用平台,可以自动识别网络服务,事件管理与警报,性能测量等任务。
Cacti
Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。

Zenoss Core
一个基于Zope应用服务器的应用/服务器/网络管理平台,提供了Web管理界面,可监控可用性、配置、性能和各种事件。

Zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。用于监控网络上的服务器/服务以及其他网络设备状态的网络管理系统,后台基于C,前台由PHP编写,可与多种数据库搭配使用。提供各种实时报警机制。

Ganglia
Ganglia是一个针对高性能分布式系统(例如,集群、网格、云计算等)所设计的可扩展监控系统。该系统基于一个分层的体系结构,并能够支持2000个节点的集群。它允许用户能够远程监控系统的实时或历史统计数据,包括:CPU负载均衡、网络利用率等。Ganglia依赖于一个基于组播的监听/发布协议来监控集群的状态。Ganglia系统的实现综合了多种技术,包括:XML(数据描述)、XDR(紧凑便携式数据传输)、RRDtool(数据存储和可视化)等。
[b]数据监控和业务监控非常关键,及时发现问题,及时解决问题,监控系统主要包括:服务应用监控、主机监控、网络设备监控、网络连通性监控、网络访问质量监控、分布式系统监控、报警预设、监控图形化与历史数据等。[/b]

gongju.png


自动化对运维的意义


自动化就是运维为了减少重复枯燥的工作而建立的流程方法,而除此之外,自动化还能够带来减少人为错误、及时报警与故障恢复、提高业务可用性等好处。
运维工作自动化确实包含上述2个方面,归纳总结来其实就是:把零碎的工作集中化,把复杂的工作简单有序化,把流程规范化,最大化地解放生产力,也就是解放运维人员。
自动化的技能/意识对于运维工作至关重要。运维工作不是简单的使用工具,这里面还有很多技巧和意识。具体的技巧/意识包括:
    []如何驾驭这些琳琅满目的工具为己所用;[/][]如何根据不同的应用环境来选用不同的工具;[/][]如何根据应用来组合使用工具等等等等。[/]

一定要记住一点:工具只是利用帮助人进行运维的,这中间还需要人的干预和决策,工具不能完全代替全部运维工作。还需要结合实际业务逻辑和业务场景,就像架构一样,并不是淘宝、百度等大公司的架构,一定适合任何公司和业务。


自动化运维范畴


    []安装自动化[/][]部署自动化[/][]监控自动化[/][]发布自动化[/][]升级自动化[/][]安全管控自动化[/][]优化自动化[/][]数据备份自动化[/]

前阶段在自动化管理和安全方面的技术实现,比如说HP和IBM出品的一些ITIL和ITSM产品等,比如HP Openview,IBM Tivoli等等。这些工具都有Linux的版本,与其他同类工具相比的优势应该在于他们的商业应用成熟度,都是老品牌。
现阶段有自动化的一些工具git、svn、Jenkins等等,一些开源的软件!


工具选择


针对不同规模的架构,一个小规模的网站,到百万量级、千万量级的网站,我们选择的工具就有不同。
在选择上对于百万量级、千万量级的网站,我们应该考虑选择成熟的工具、性能高的工具、熟悉的工具。而对于小规模的网站,我们应该考虑选择一些开源的、免费的工具。
这个原则就是以应用为导向,百万量级、千万量级的网站牵涉的面广、要求高,不成熟的工具往往很难说服领导和公司使用,所以主要是在成熟度方面。


自动化运维规划


自动化的实现不是单纯学习几个工具就能够做好的,甚至于规划不好的情况,自动化不仅没有节省人力,反而带来了更多的问题。

所以运维人员在考虑自动化流程的过程中应该考虑如下几点原则:
    []根据应用选择工具;[/][]对于关键应用,选择成熟度高的工具;[/][]不能过分依赖一种工具,需要进行对比和分析;[/][]对工具的特性做到精通;[/][]是人驾驭工具,人要监督工具,而不是工具来驾驭人;[/][]善于利用脚本实现定制化场景。[/]


自动化经验积累


    []经常逛逛一些不错的IT媒体网站和看看这方面的文章,可以多多涉猎和学习;[/][]针对公司业务场景,选择一些自动化工具,登陆到官网学习和熟悉工作原理;[/][]经常参加一些线下自动化运维的活动和媒体活动,多和一些自动化方面的大拿和资深人士交流。[/]

怎么彻底删除kafka的topic,然后重建?

大数据/云计算Ansible 回复了问题 • 3 人关注 • 3 个回复 • 6418 次浏览 • 2017-08-23 20:25 • 来自相关话题

负载均衡LVS原理和应用详解

运维技术push 发表了文章 • 1 个评论 • 1327 次浏览 • 2016-01-01 19:03 • 来自相关话题

一、LB常用解决方案

1. 硬件负载均衡解决方案:
[]F5公司: BIG-IP[/][]Citrix公司: Netscaler[/][]A10公司: A10[/][]Array [/][]Redware[/]
2. Linux: LVS
完成Linux Virtual Server作者 (章文嵩,花名段正明)
ipvs工作于netfilter框架上
ipvs: 框架,工作在内核中,工作在input链上,需要依赖于规则完成转发。 如果发现发往本机INPUT链的请求,如果能匹配到集群规则,直接转发至post-routing链发出主机。 
规则: 简单来说就是把ip加端口定义为ipvs集群服务,ipvs会为此请求定义一个或多个后端服务目标地址未必会改,但是报文会被强行转发给后端的服务器。 
ipvs组件: ipvsadm(用户空间,用来编写规则) + ipvs(内核空间) 
ipvs工作在第四层: 
     1) 成为四层交换、四层路由。 做第四层转发。

     2) 只能基于ip和port转发,无法在应用层,session级别转发

     3) 不用到达应用层空间,就能转发

lvs 性能很好,但是由于只第四层,不能到用户空间,因此不能进行更加精细的控制。 在精细控制方面,haproxy和Ngnix可以更好的实现。 
lvs通常作为总入口,更精细化的切割可能使用,haproxy或者Nginx实现 
报文的信息流: CIP<–>VIP–DIP<–>RIP
     1) CIP: Client ip 

     2) VIP: virtual ip 

     3) DIP: Director IP 

     4) RIP: Real server Ip 

     客户端请求,被VIP端口接收后,从DIP接口被转发出去,并转发至RIP

二、LVS类型

1. NAT(dNAT)
    访问过程如下:

            1) CIP访问VIP 

            2) VIP接收报文后,做dNAT,指向某一个RIP 

            3) RIP拿到接收到报文后进行回应

            4) 此时需要,RIP网关指向DIP,也就是Director server. 否则若在互联网上,即便报文是可以回应给CIP客户端,但是由于CIP并没有请求RIP服务器,因此报文会被丢弃。 

        NAT特性:

            1) RS应该使用私有地址

            2) RS的网关必须指向DIP 

            3) RIP 和 DIP 必须在一同意网段内

            4) 进出的报文,无论请求还是响应,都必须经过Director Server, 请求报文由DS完成目标地址转换,响应报文由DS完成源地址转换 

            5) 在高负载应用场景中,DS很可能成为系统性能瓶颈。 

            6) 支持端口映射。

            7) 内部RS可以使用任意支持集群服务的任意操作系统。




 
 2. DR 
1)让前端路由将请求发往VIP时,只能是Dirctor上的VIP
     禁止RS响应对VIP的ARP广播请求:
            (1) 在前端路由上实现静态MAC地址VIP的绑定;

                前提:得有路由器的配置权限;

                缺点:Directory故障转时,无法更新此绑定;

            (2) arptables

                前提:在各RS在安装arptables程序,并编写arptables规则

                缺点:依赖于独特功能的应用程序

            (3) 修改Linux内核参数

                前提:RS必须是Linux;

                缺点:适用性差; 

    Linux的工作特性:IP地址是属于主机,而非某特定网卡;也就是说,主机上所有的网卡都会向外通告,需要先配置参数,然后配置IP,因为只要IP地址配置完成则开始想外通告mac地址为了使响应报文由配置有VIP的lo包装,使源地址为VIP,需要配置路由经过lo网卡的别名,最终由eth0发出

             两个参数的取值含义:

                    arp_announce:定义通告模式

                        0: default, 只要主机接入网络,则自动通告所有为网卡mac地址

                        1: 尽力不通告非直接连入网络的网卡mac地址

                        2: 只通告直接进入网络的网卡mac地址

                    arp_ignore:定义收到arp请求的时响应模式

                        0: 只有arp 广播请求,马上响应,并且响应所有本机网卡的mac地址

                        1: 只响应,接受arp广播请求的网卡接口mac地址

                        2: 只响应,接受arp广播请求的网卡接口mac地址,并且需要请求广播与接口地址属于同一网段

                        3: 主机范围(Scope host)内生效的接口,不予响应,只响应全局生效与外网能通信的网卡接口

                        4-7: 保留位

                        8: 不响应一切arp广播请求
    配置方法: 

                    全部网卡

                        arp_ignore 1

                        arp_announce 2 

                    同时再分别配置每个网卡,eth0和lo

                        arp_ignore 1

                        arp_annource 2
2) 特性
   (1)RS是可以使用公网地址,此时可以直接通过互联网连入,配置,监控RS服务器
   (2)RS的网不能指向DIP
   (3)RS跟DS要在同一物理网络内,最好在一同一网段内
   (4)请求报文经过Director但是相应报文不经过Director
   (5)不支持端口映射
   (6)RS可以使用,大多数的操作系统,至少要可以隐藏VIP








3. LVS TUN: IP隧道,IP报文中套IP报文 
        1)RIP,DIP,VIP都必须是公网地址

        2)RS网关不会指向DIP

        3)请求报文经过Director,但相应报文一定不经过Director

        4)不支持端口映射

        5)RS的OS必须得支持隧道功能




 4. FULLNAT: 必须内核打补丁才能使用,使得各RS主机可以跨vlan. 源IP和目标IP都修改。





三、LVS调度算法

1. 静态方法:仅根据算法本身进行调度

        rr: Round Robin

        wrr: Weighted RR

        sh: source hashing,源地址进行hash,然后分配到特定的服务器

        dh: destination hashing

            用于多前端防火墙的场景中,使得访问从一个防火墙进同时还从这个防火墙出来。 

2. 动态方法:根据算法及RS当前的负载状况

        lc: Least Connection

            Overhead=Active*256+Inactive

            结果中,最小者胜出;

        wlc: Weighted LC

            Overhead=(Active*256+Inactive)/weight

        sed: Shortest Expect Delay

            Overhead=(Active+1)*256/weight

        nq: Nerver Queue,在Sed基础上,开局时候先轮寻一圈。 

        lblc: Locality-based Least Connection (基于本地的最小连接) dh+lc

        lblcr: Replicated and Locality-based Least Connection 后端服务器是缓存服务器时, 可以绑定连接到某一缓存服务器中。

3. LVS缺陷: 

    不能检测后端服务器的健康状况,总是发送连接到后端。 

    Session持久机制:

        1、session绑定:始终将同一个请求者的连接定向至同一个RS(第一次请求时仍由调度方法选择);没有容错能力,有损均衡效果;

        2、session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大规模集群环境不适用;

        3、session服务器:利用单独部署的服务器来统一管理session; 

四、ipvsadm使用方法

1.相关命令ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address] 2. 集群服务相关 -A: 添加一个集群服务
-t: tcp
-u: udp
-f: firewall mark,
通常用于将两个或以上的服务绑定为一个服务进行处理时使用
例如httpd和https
iptables mongo表一起使用

service-address:
-t IP:port
-u ip:port
-f firewall_mark

-s 调度方法,默认为wlc
-p timeout: persistent connection, 持久连接
-E 修改定义过的集群服务
-D -t|u|f service-address:删除指定的集群服务 3. RS相关 -a:向指定的Cluster services中添加RS
-t|-u|-f service-address:指明将RS添加至哪个Cluster Service中
-r: 指定RS,可包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口
LVS类型:
-g: Gateway模式,就是DR模型(默认)
-i: ipip模式,TUN模型
-m: masquerade地址伪装自动完成后半段的原地址转换,NAT
指定RS权重:
-w # 省略权重为1
-e: 修改指定的RS属性
-d -t|u|f service-address -r server-address:从指定的集群服务中删除某RS4. 清空所有的集群服务:-C5. 保存规则:(使用输出重定向)ipvsadm-save
ipvsadm -S6. 载入指定的规则:(使用输入重定向)ipvsadm-restore
ipvsadm -R 7. 查看ipvs规则等 -L [options]
-n: 数字格式显示IP地址
-c: 显示连接数相关信息
--stats: 显示统计数据
--rate: 速率
--exact:显示统计数据的精确值
--timeout: 超时时间
-Z: 计数器清零

五、LVS NAT模型的实现

[list=1]
[*]集群环境: 一台Director, 两台后端Real Server RS1,RS2 Director: 两网卡 [/*]
[/list] eth0: 192.168.98.133/24
eth1: 172.25.136.10/24
eth0:1: 192.168.98.128/24 作为VIP地址

RS1:
eth0: 172.25.136.11

RS2:
eth0: 172.25.136.12; Director的eth1和RS1,RS2的eth0在模拟在同一物理网络内,使用VMnet2
物理机windows 7 作为客户端,在192.168.98.0网络内2. 为RS添加网关指向Director RS1:
# ifconfig eth0 172.25.136.11/24
# route add default gw 172.25.136.10
RS2:
# ifconfig eth0 172.25.136.12/24
# route add default gw 172.25.136.10
添加完路由条目后,应该可以ping通Director 192.168.98.0网段的两个地址。3. 修改内核参数,开启转发功能# echo 1 > /proc/sys/net/ipv4/ip_forward 4. 在RS1和RS2上面创建测试页,并在Director验证服务 RS1上
# echo 'web from RS1' > /var/www/html/index.html
# service httpd start
RS2上
# echo 'web from RS2' > /var/www/html/index.html
# service httpd start
Director上验证
# curl 172.25.136.11
web from RS1
# curl 172.25.136.12
web from RS25. 在Director添加集群服务 # ipvsadm -A -t 192.168.98.128:80 -s wlc
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.11:80 -m -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.12:80 -m -w 36. 通过物理机浏览器访问192.168.98.128, 正常情况,就可以看到轮寻的两个RS的主页了。  访问几次后,查看统计数据如下,大概接入报文比例3:1, 说明wlc生效了
# ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.98.128:http 45 227 227 32215 19245
-> 136-11.priv25.nus.edu.sg:htt 12 62 62 8571 6055
-> 136-12.priv25.nus.edu.sg:htt 33 165 165 23644 13190

六、LVS DR模型,当DIP,VIP,RIP都为公网地址时(实验环境中,把这三个地址全部放在同一物理网络中)

[list=1]
[*]地址规划: Director: [/*]
[/list] eth0: 192.168.98.133 作为ssh通信地址
eth0:1: 192.168.98.128 作为VIP, 可以进行浮动
RS1:
eth0: 192.168.98.129/24 作为RIP1
lo:1 : 192.168.98.128 作为隐藏的VIP
RS1:
eth0: 192.168.98.130 作为RIP2
lo:2: 192.168.98.128 作为隐藏VIP 2. 配置地址  Director:
# ifconfig eth0 192.168.98.133/24 up
# ifconfig eth0:1 192.168.98.128/24 up
RS1
# ifconfig eth0 192.168.98.129/24 up
RS2
# ifconfig eth0 192.168.98.130/25 up3. 修改RS1,RS3的内核参数,关闭lo的arp通告和lo的arp响应,并配置隐藏地址 RS1:
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS1的隐藏VIP地址, 并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.128
RS2:
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS2的隐藏VIP地址,并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.1284. 为RS1和RS2添加路由条目,保证其发出报文经过eth0之前,还要先经过lo:1 VIP, 使得源地址成为VIP RS1:
# route add 192.168.98.128 dev lo:1
RS2:
# route add 192.168.98.128 dev lo:15. 此时在Director上面添加,集群服务 # ipvsadm -A -t 192.168.98.128:80 -s wlc
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.129:80 -g -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.130:80 -g -w 3

七、LVS持久连接

[list=1]
[*]PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS 可以通过修改轮寻算法为sh算法实现[/*]
[/list] # ipvsadm -E -t 192.168.98.128:80 -s sh
[root@www ~]# curl 192.168.98.128
eb from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2 2. PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS;

[list=1]
[*]PFMC: 端口绑定,port affinity, 基于防火墙标记,将两个或以上的端口绑定为同一个服务 防火墙打标记[/*]
[/list] # iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)
定义集群服务:
# ipvsadm -A -f #(防火墙打的标记)转载阅读,原文地址:负载均衡LVS原理及其应用 查看全部


一、LB常用解决方案


1. 硬件负载均衡解决方案:
    []F5公司: BIG-IP[/][]Citrix公司: Netscaler[/][]A10公司: A10[/][]Array [/][]Redware[/]

2. Linux: LVS
  1. 完成Linux Virtual Server作者 (章文嵩,花名段正明)

  1. ipvs工作于netfilter框架上

  1. ipvs: 框架,工作在内核中,工作在input链上,需要依赖于规则完成转发。 如果发现发往本机INPUT链的请求,如果能匹配到集群规则,直接转发至post-routing链发出主机。 

  1. 规则: 简单来说就是把ip加端口定义为ipvs集群服务,ipvs会为此请求定义一个或多个后端服务目标地址未必会改,但是报文会被强行转发给后端的服务器。 

  1. ipvs组件: ipvsadm(用户空间,用来编写规则) + ipvs(内核空间) 

  1. ipvs工作在第四层: 

     1) 成为四层交换、四层路由。 做第四层转发。

     2) 只能基于ip和port转发,无法在应用层,session级别转发

     3) 不用到达应用层空间,就能转发

  1. lvs 性能很好,但是由于只第四层,不能到用户空间,因此不能进行更加精细的控制。 在精细控制方面,haproxy和Ngnix可以更好的实现。 

  1. lvs通常作为总入口,更精细化的切割可能使用,haproxy或者Nginx实现 

  1. 报文的信息流: CIP<–>VIP–DIP<–>RIP

     1) CIP: Client ip 

     2) VIP: virtual ip 

     3) DIP: Director IP 

     4) RIP: Real server Ip 

     客户端请求,被VIP端口接收后,从DIP接口被转发出去,并转发至RIP


二、LVS类型


1. NAT(dNAT)
    访问过程如下:

            1) CIP访问VIP 

            2) VIP接收报文后,做dNAT,指向某一个RIP 

            3) RIP拿到接收到报文后进行回应

            4) 此时需要,RIP网关指向DIP,也就是Director server. 否则若在互联网上,即便报文是可以回应给CIP客户端,但是由于CIP并没有请求RIP服务器,因此报文会被丢弃。 

        NAT特性:

            1) RS应该使用私有地址

            2) RS的网关必须指向DIP 

            3) RIP 和 DIP 必须在一同意网段内

            4) 进出的报文,无论请求还是响应,都必须经过Director Server, 请求报文由DS完成目标地址转换,响应报文由DS完成源地址转换 

            5) 在高负载应用场景中,DS很可能成为系统性能瓶颈。 

            6) 支持端口映射。

            7) 内部RS可以使用任意支持集群服务的任意操作系统。
lvs_nat.png

 
 2. DR 
1)让前端路由将请求发往VIP时,只能是Dirctor上的VIP
     禁止RS响应对VIP的ARP广播请求:
            (1) 在前端路由上实现静态MAC地址VIP的绑定;

                前提:得有路由器的配置权限;

                缺点:Directory故障转时,无法更新此绑定;

            (2) arptables

                前提:在各RS在安装arptables程序,并编写arptables规则

                缺点:依赖于独特功能的应用程序

            (3) 修改Linux内核参数

                前提:RS必须是Linux;

                缺点:适用性差; 

    Linux的工作特性:IP地址是属于主机,而非某特定网卡;也就是说,主机上所有的网卡都会向外通告,需要先配置参数,然后配置IP,因为只要IP地址配置完成则开始想外通告mac地址为了使响应报文由配置有VIP的lo包装,使源地址为VIP,需要配置路由经过lo网卡的别名,最终由eth0发出

             两个参数的取值含义:

                    arp_announce:定义通告模式

                        0: default, 只要主机接入网络,则自动通告所有为网卡mac地址

                        1: 尽力不通告非直接连入网络的网卡mac地址

                        2: 只通告直接进入网络的网卡mac地址

                    arp_ignore:定义收到arp请求的时响应模式

                        0: 只有arp 广播请求,马上响应,并且响应所有本机网卡的mac地址

                        1: 只响应,接受arp广播请求的网卡接口mac地址

                        2: 只响应,接受arp广播请求的网卡接口mac地址,并且需要请求广播与接口地址属于同一网段

                        3: 主机范围(Scope host)内生效的接口,不予响应,只响应全局生效与外网能通信的网卡接口

                        4-7: 保留位

                        8: 不响应一切arp广播请求
    配置方法: 

                    全部网卡

                        arp_ignore 1

                        arp_announce 2 

                    同时再分别配置每个网卡,eth0和lo

                        arp_ignore 1

                        arp_annource 2

2) 特性
   (1)RS是可以使用公网地址,此时可以直接通过互联网连入,配置,监控RS服务器
   (2)RS的网不能指向DIP
   (3)RS跟DS要在同一物理网络内,最好在一同一网段内
   (4)请求报文经过Director但是相应报文不经过Director
   (5)不支持端口映射
   (6)RS可以使用,大多数的操作系统,至少要可以隐藏VIP
lvs_dr_1.png

lvs_dr_2.png

3. LVS TUN: IP隧道,IP报文中套IP报文 
        1)RIP,DIP,VIP都必须是公网地址

        2)RS网关不会指向DIP

        3)请求报文经过Director,但相应报文一定不经过Director

        4)不支持端口映射

        5)RS的OS必须得支持隧道功能
lvs_lun.png

 4. FULLNAT: 必须内核打补丁才能使用,使得各RS主机可以跨vlan. 源IP和目标IP都修改
full_nat.png


三、LVS调度算法


1. 静态方法:仅根据算法本身进行调度

        rr: Round Robin

        wrr: Weighted RR

        sh: source hashing,源地址进行hash,然后分配到特定的服务器

        dh: destination hashing

            用于多前端防火墙的场景中,使得访问从一个防火墙进同时还从这个防火墙出来。 

2. 动态方法:根据算法及RS当前的负载状况

        lc: Least Connection

            Overhead=Active*256+Inactive

            结果中,最小者胜出;

        wlc: Weighted LC

            Overhead=(Active*256+Inactive)/weight

        sed: Shortest Expect Delay

            Overhead=(Active+1)*256/weight

        nq: Nerver Queue,在Sed基础上,开局时候先轮寻一圈。 

        lblc: Locality-based Least Connection (基于本地的最小连接) dh+lc

        lblcr: Replicated and Locality-based Least Connection 后端服务器是缓存服务器时, 可以绑定连接到某一缓存服务器中。

3. LVS缺陷: 

    不能检测后端服务器的健康状况,总是发送连接到后端。 

    Session持久机制:

        1、session绑定:始终将同一个请求者的连接定向至同一个RS(第一次请求时仍由调度方法选择);没有容错能力,有损均衡效果;

        2、session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大规模集群环境不适用;

        3、session服务器:利用单独部署的服务器来统一管理session; 


四、ipvsadm使用方法


1.相关命令
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]    
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
 2. 集群服务相关
    -A: 添加一个集群服务
-t: tcp
-u: udp
-f: firewall mark,
通常用于将两个或以上的服务绑定为一个服务进行处理时使用
例如httpd和https
iptables mongo表一起使用

service-address:
-t IP:port
-u ip:port
-f firewall_mark

-s 调度方法,默认为wlc
-p timeout: persistent connection, 持久连接
-E 修改定义过的集群服务
-D -t|u|f service-address:删除指定的集群服务
 3. RS相关
        -a:向指定的Cluster services中添加RS
-t|-u|-f service-address:指明将RS添加至哪个Cluster Service中
-r: 指定RS,可包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口
LVS类型:
-g: Gateway模式,就是DR模型(默认)
-i: ipip模式,TUN模型
-m: masquerade地址伪装自动完成后半段的原地址转换,NAT
指定RS权重:
-w # 省略权重为1
-e: 修改指定的RS属性
-d -t|u|f service-address -r server-address:从指定的集群服务中删除某RS
4. 清空所有的集群服务:
-C
5. 保存规则:(使用输出重定向)
ipvsadm-save 
ipvsadm -S
6. 载入指定的规则:(使用输入重定向)
ipvsadm-restore
ipvsadm -R
 7. 查看ipvs规则等
    -L [options]
-n: 数字格式显示IP地址
-c: 显示连接数相关信息
--stats: 显示统计数据
--rate: 速率
--exact:显示统计数据的精确值
--timeout: 超时时间
-Z: 计数器清零


五、LVS NAT模型的实现


[list=1]
[*]集群环境: 一台Director, 两台后端Real Server RS1,RS2
    Director: 两网卡    [/*]
[/list] eth0: 192.168.98.133/24
eth1: 172.25.136.10/24
eth0:1: 192.168.98.128/24 作为VIP地址

RS1:
eth0: 172.25.136.11

RS2:
eth0: 172.25.136.12;
    Director的eth1和RS1,RS2的eth0在模拟在同一物理网络内,使用VMnet2    
物理机windows 7 作为客户端,在192.168.98.0网络内
2. 为RS添加网关指向Director
    RS1:    
# ifconfig eth0 172.25.136.11/24
# route add default gw 172.25.136.10
RS2:
# ifconfig eth0 172.25.136.12/24
# route add default gw 172.25.136.10
添加完路由条目后,应该可以ping通Director 192.168.98.0网段的两个地址。
3. 修改内核参数,开启转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
 4. 在RS1和RS2上面创建测试页,并在Director验证服务
    RS1上
# echo 'web from RS1' > /var/www/html/index.html
# service httpd start
RS2上
# echo 'web from RS2' > /var/www/html/index.html
# service httpd start
Director上验证
# curl 172.25.136.11
web from RS1
# curl 172.25.136.12
web from RS2
5. 在Director添加集群服务
    # ipvsadm -A -t 192.168.98.128:80 -s wlc    
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.11:80 -m -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.12:80 -m -w 3
6. 通过物理机浏览器访问192.168.98.128, 正常情况,就可以看到轮寻的两个RS的主页了。 
    访问几次后,查看统计数据如下,大概接入报文比例3:1, 说明wlc生效了    
# ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.98.128:http 45 227 227 32215 19245
-> 136-11.priv25.nus.edu.sg:htt 12 62 62 8571 6055
-> 136-12.priv25.nus.edu.sg:htt 33 165 165 23644 13190


六、LVS DR模型,当DIP,VIP,RIP都为公网地址时(实验环境中,把这三个地址全部放在同一物理网络中)


[list=1]
[*]地址规划:
    Director:     [/*]
[/list] eth0: 192.168.98.133 作为ssh通信地址
eth0:1: 192.168.98.128 作为VIP, 可以进行浮动
RS1:
eth0: 192.168.98.129/24 作为RIP1
lo:1 : 192.168.98.128 作为隐藏的VIP
RS1:
eth0: 192.168.98.130 作为RIP2
lo:2: 192.168.98.128 作为隐藏VIP
 2. 配置地址 
    Director: 
# ifconfig eth0 192.168.98.133/24 up
# ifconfig eth0:1 192.168.98.128/24 up
RS1
# ifconfig eth0 192.168.98.129/24 up
RS2
# ifconfig eth0 192.168.98.130/25 up
3. 修改RS1,RS3的内核参数,关闭lo的arp通告和lo的arp响应,并配置隐藏地址
    RS1: 
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS1的隐藏VIP地址, 并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.128
RS2:
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS2的隐藏VIP地址,并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.128
4. 为RS1和RS2添加路由条目,保证其发出报文经过eth0之前,还要先经过lo:1 VIP, 使得源地址成为VIP
    RS1:     
# route add 192.168.98.128 dev lo:1
RS2:
# route add 192.168.98.128 dev lo:1
5. 此时在Director上面添加,集群服务
    # ipvsadm -A -t 192.168.98.128:80 -s wlc    
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.129:80 -g -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.130:80 -g -w 3


七、LVS持久连接


[list=1]
[*]PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS
    可以通过修改轮寻算法为sh算法实现[/*]
[/list] # ipvsadm -E -t 192.168.98.128:80 -s sh
[root@www ~]# curl 192.168.98.128
eb from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
 2. PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS;

[list=1]
[*]PFMC: 端口绑定,port affinity, 基于防火墙标记,将两个或以上的端口绑定为同一个服务
    防火墙打标记[/*]
[/list] # iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)
定义集群服务:
# ipvsadm -A -f #(防火墙打的标记)
转载阅读,原文地址:负载均衡LVS原理及其应用

怎么查看kafka的版本号

大数据/云计算OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 4207 次浏览 • 2016-10-26 21:37 • 来自相关话题

连竞争对手的新闻稿都照抄的公司你听说过吗?

互联网资讯Geek小A 发表了文章 • 5 个评论 • 7355 次浏览 • 2015-12-22 18:25 • 来自相关话题

闲来无事,看看创业抄袭体

在中国做产品,有的人抄源码,有的人抄UI,有的人抄功能,现在竟然还有人连竞争对手的新闻稿都要抄袭!而这么没品的事情,竟然是一家号称要做中国的Oracle的公司干出来的,待我细说端详。事情的起因是酱紫的,我在一家电子商务公司负责移动端,因为产品接了很多第三方API,如友盟的统计,微信的登陆,百度的定位,还有支付宝和银联的支付,所以一直在用监控宝API监控功能。前段时间监控宝对这个功能进行产品升级,所以特别关注了一下这块内容。云智慧官方微信文章



恰好AWS宣布要正式进军国内,在看新闻的时候发现搜狐上有一篇关于API的文章《透过 AWS 峰会看未来 API 监控市场》(http://mt.sohu.com/20151218/n431798253.shtml ),顺手点进去,天啦撸,竟然跟前几天监控宝的微信文章一模一样,顺藤摸瓜,在这家叫OneAPM的公司官网上也找到了这篇文章(http://news.oneapm.com/aws-api/ )。OneAPM搜狐自媒体平台文章列表




OneAPM官网文章列表





下面就让我们看看这两篇几乎一样的文章

云智慧官方微信文章截图如下:




OneAPM官网文章截图如下:



监控宝文章开篇在讲API生态的发展历程和典型API方案架构,而OneAPM开篇先抱AWS大腿,随后开抄,因为监控宝的两张配图有明显水印,所以图片不见了,但文字就显得莫名其妙。


第二段讨论国内API监控发展的内容,继续全文照抄,只是把最后的云智慧监控宝替换成OneAPM。


后面两段关于监控宝“API监控原理”和“API监控新版介绍”的内容 ,因为涉及监控宝API可用性和响应时间策略,所以OneAPM进行了大篇幅的删减,只保留了一张还带着云智慧微信残缺水印的API通信原理图和少量文字,最后一段监控宝产品使用估计抄袭难度太大,所以也得以幸免。


既然连新闻稿都要抄袭,产品是不是也是抄的呢,本着生命不息,八卦不止的精神,上百度搜索“OneAPM 抄袭”,果然看到一个扒皮贴和一篇扒皮文章。先来看看V2EX上的扒皮帖子(链接:http://www.v2ex.com/t/125736):


有人(目测是OneAPM的托)在V2EX发帖说OneAPM家的Python Agent好用,然后网友留言“其实就是 NewRelic 的汉化版嘛”,于是@dreampuf 、@vvvboy认真比较了OneAPM和NewRelic的Agent代码,竟然又是一模一样。






OneAPM的人先是拒不承认抄袭,被扒皮后又说产品开源的目的就是为了让人抄,实在是“见仁见智”。对了,他们还在媒体上说《Blueware何晓阳,不做中国的New Relic》(CSDN专访:http://www.csdn.net/article/2014-07-10/2820605-APM-Software-Service )。
接着看到另一篇《OneAPM何晓阳的美丽人生》(http://news.3news.cn/html/news/cj/2015/0813/23053.html ),原来抄袭只是OneAPM的一项技能,他们还Get了好多Duang~Duang~Duang~的特技:吹牛逼、客户造假、数据造假、融资夸大。
看到这里,至少我是不敢把纯粹抄来的玩意往我家产品里接的,万一出了啥问题,你又搞不定,算谁的?!


结语

我是流氓我怕谁,创客时代,不少创业者,创业公司不择方法。抄袭已经很常见了,很值得思考。
风口上的猪,希望是一只正直、实在、努力的猪。不希望是懒惰、抄袭、拿来主义者。 查看全部


闲来无事,看看创业抄袭体


在中国做产品,有的人抄源码,有的人抄UI,有的人抄功能,现在竟然还有人连竞争对手的新闻稿都要抄袭!而这么没品的事情,竟然是一家号称要做中国的Oracle的公司干出来的,待我细说端详。
事情的起因是酱紫的,我在一家电子商务公司负责移动端,因为产品接了很多第三方API,如友盟的统计,微信的登陆,百度的定位,还有支付宝和银联的支付,所以一直在用监控宝API监控功能。前段时间监控宝对这个功能进行产品升级,所以特别关注了一下这块内容。
云智慧官方微信文章
hack1.png
恰好AWS宣布要正式进军国内,在看新闻的时候发现搜狐上有一篇关于API的文章《透过 AWS 峰会看未来 API 监控市场》(http://mt.sohu.com/20151218/n431798253.shtml ),顺手点进去,天啦撸,竟然跟前几天监控宝的微信文章一模一样,顺藤摸瓜,在这家叫OneAPM的公司官网上也找到了这篇文章(http://news.oneapm.com/aws-api/ )。
OneAPM搜狐自媒体平台文章列表
hack2.png

OneAPM官网文章列表
hack3.png


下面就让我们看看这两篇几乎一样的文章


云智慧官方微信文章截图如下:
hack5.png

OneAPM官网文章截图如下:
hack6.png
监控宝文章开篇在讲API生态的发展历程和典型API方案架构,而OneAPM开篇先抱AWS大腿,随后开抄,因为监控宝的两张配图有明显水印,所以图片不见了,但文字就显得莫名其妙。
hack7.png
第二段讨论国内API监控发展的内容,继续全文照抄,只是把最后的云智慧监控宝替换成OneAPM。
hack8.png
后面两段关于监控宝“API监控原理”和“API监控新版介绍”的内容 ,因为涉及监控宝API可用性和响应时间策略,所以OneAPM进行了大篇幅的删减,只保留了一张还带着云智慧微信残缺水印的API通信原理图和少量文字,最后一段监控宝产品使用估计抄袭难度太大,所以也得以幸免。
hack9.png
既然连新闻稿都要抄袭,产品是不是也是抄的呢,本着生命不息,八卦不止的精神,上百度搜索“OneAPM 抄袭”,果然看到一个扒皮贴和一篇扒皮文章。先来看看V2EX上的扒皮帖子(链接:http://www.v2ex.com/t/125736):
hack10.png
有人(目测是OneAPM的托)在V2EX发帖说OneAPM家的Python Agent好用,然后网友留言“其实就是 NewRelic 的汉化版嘛”,于是@dreampuf 、@vvvboy认真比较了OneAPM和NewRelic的Agent代码,竟然又是一模一样。
hack11.png

hack12.png
OneAPM的人先是拒不承认抄袭,被扒皮后又说产品开源的目的就是为了让人抄,实在是“见仁见智”。对了,他们还在媒体上说《Blueware何晓阳,不做中国的New Relic》(CSDN专访:http://www.csdn.net/article/2014-07-10/2820605-APM-Software-Service )。
接着看到另一篇《OneAPM何晓阳的美丽人生》(http://news.3news.cn/html/news/cj/2015/0813/23053.html ),原来抄袭只是OneAPM的一项技能,他们还Get了好多Duang~Duang~Duang~的特技:吹牛逼、客户造假、数据造假、融资夸大。
看到这里,至少我是不敢把纯粹抄来的玩意往我家产品里接的,万一出了啥问题,你又搞不定,算谁的?!


结语


我是流氓我怕谁,创客时代,不少创业者,创业公司不择方法。抄袭已经很常见了,很值得思考。
风口上的猪,希望是一只正直、实在、努力的猪。不希望是懒惰、抄袭、拿来主义者。

Python input和raw_input的区别

编程语言采菊篱下 发表了文章 • 1 个评论 • 1061 次浏览 • 2015-12-14 23:18 • 来自相关话题

使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的

纯数字输入

当输入为纯数字时
[]input返回的是数值类型,如int,float[/][]raw_inpout返回的是字符串类型,string类型[/]





输入字符串为表达式

input会计算在字符串中的数字表达式,而raw_input不会。
如输入 "57 + 3":
input会得到整数60
raw_input会得到字符串"57 + 3"




输入字符串结果如下:




通过上面的实验我们知道input它会根据用户输入变换相应的类型,而且如果要输入字符和字符串的时候必须要用引号包起来,而raw_input则是不管用户输入什么类型的都会转变成字符型.

python input的实现

看python input的文档,你可以发现input其实是通过raw_input来实现的,原理很简单,就下面一行代码:def input(prompt):
return (eval(raw_input(prompt))) 查看全部
使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的


纯数字输入


当输入为纯数字时
    []input返回的是数值类型,如int,float[/][]raw_inpout返回的是字符串类型,string类型[/]

cb.png


输入字符串为表达式


input会计算在字符串中的数字表达式,而raw_input不会。
如输入 "57 + 3":
input会得到整数60
raw_input会得到字符串"57 + 3"
cb1.png

输入字符串结果如下:
cb3.png

通过上面的实验我们知道input它会根据用户输入变换相应的类型,而且如果要输入字符和字符串的时候必须要用引号包起来,而raw_input则是不管用户输入什么类型的都会转变成字符型.


python input的实现


python input的文档,你可以发现input其实是通过raw_input来实现的,原理很简单,就下面一行代码:
def input(prompt):
return (eval(raw_input(prompt)))

Python在生产环境都可以用来做什么?

编程语言koyo 回复了问题 • 2 人关注 • 3 个回复 • 2310 次浏览 • 2015-12-14 14:45 • 来自相关话题

八大持续集成工具

运维技术push 发表了文章 • 0 个评论 • 4282 次浏览 • 2015-12-10 23:05 • 来自相关话题

下面依次介绍8大持续集成工具

一、Hudson





Hudson 是一个可扩展的持续集成引擎,主要用于:
[]持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]
Hudson的特性如下:
[]易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。[/][]易于配置-所有配置都是通过其提供的web界面实现。[/][]集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。[/][]生成JUnit/TestNG测试报告。[/][]分布式构建支持-Hudson能够让多台计算机一起构建/测试。[/][]文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。[/][]插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。[/]

二、CruiseControl




CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。

三、Continuum




Apache Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。Apache Continuum的特性:
[]与Maven 2.x的紧密集成[/][]与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce[/][]基于web的容易使用的安装和配置接口[/][]Quartz-based scheduling[/][]简单的添加新的项目工程的方法[/][]用于 integration, automation and remoting的XML-RPC interface[/][]邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN[/]

四、QuickBuild




QuickBuild 是一个持续集成和发布管理的服务器软件,它提供了一个统一的控制台用来管理这些发布的信息。

五、Bamboo




Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)。Bamboo的特点:
[]简单的用户界面 容易安装 – 顺利的话,5分钟内就可以让运行起来! 自动检测你的设置 – 如果您的Server上使用了Maven,Ant或者Java设置, Bamboo会自动检测他们; [/][]连续的日志 – 监测你的build的colour coded日志;[/][] 容易显示所有项目[/]

六、Jenkins





Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。
主要用于:
[]持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]

七、TeamCity








TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。

八、CI-Eye




CI-Eye 是一个强大的持续集成构建,无需安装和设置,CI-Eye 通过 REST API 跟很多不同的 CI 服务器交互,当前支持 Hudson, Jenkins, 以及 TeamCity. CI-Eye 在一个独立的 Web 应用中运行。 查看全部
下面依次介绍8大持续集成工具


一、Hudson


hudson.png

Hudson 是一个可扩展的持续集成引擎,主要用于:
    []持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]

Hudson的特性如下:
    []易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。[/][]易于配置-所有配置都是通过其提供的web界面实现。[/][]集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。[/][]生成JUnit/TestNG测试报告。[/][]分布式构建支持-Hudson能够让多台计算机一起构建/测试。[/][]文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。[/][]插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。[/]


二、CruiseControl


CruiseControl.png
CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。


三、Continuum


contuion.png
Apache Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。
Apache Continuum的特性:
    []与Maven 2.x的紧密集成[/][]与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce[/][]基于web的容易使用的安装和配置接口[/][]Quartz-based scheduling[/][]简单的添加新的项目工程的方法[/][]用于 integration, automation and remoting的XML-RPC interface[/][]邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN[/]


四、QuickBuild


quickbuild.png
QuickBuild 是一个持续集成和发布管理的服务器软件,它提供了一个统一的控制台用来管理这些发布的信息。


五、Bamboo


bamboo.png
Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)。
Bamboo的特点:
    []简单的用户界面 容易安装 – 顺利的话,5分钟内就可以让运行起来! 自动检测你的设置 – 如果您的Server上使用了Maven,Ant或者Java设置, Bamboo会自动检测他们; [/][]连续的日志 – 监测你的build的colour coded日志;[/][] 容易显示所有项目[/]


六、Jenkins


jenkines.png

Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。
主要用于:
    []持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]


七、TeamCity


teamcity.png

cityteam.png
TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。


八、CI-Eye


cieye.png
CI-Eye 是一个强大的持续集成构建,无需安装和设置,CI-Eye 通过 REST API 跟很多不同的 CI 服务器交互,当前支持 Hudson, Jenkins, 以及 TeamCity. CI-Eye 在一个独立的 Web 应用中运行。

10个强大的DevOps基础设施自动化工具

运维技术采菊篱下 发表了文章 • 0 个评论 • 2813 次浏览 • 2015-12-07 01:45 • 来自相关话题

Devops基础设施自动化的工具

有许多工具用于基础设施自动化。决定使用哪个工具的体系结构和基础设施的需求。下面我们列出了一些伟大的工具,受到不同类别配置管理、编制、持续集成、监控、等。

1、Chef




Chef是一个基于ruby开发的配置管理工具。你可能会遇到“基础设施代码”这个词,这意味着配置管理。厨师烹饪书的概念,你的代码基础设施DSL(领域特定语言)和一个小的编程。chef规定和配置虚拟机根据规则中提到的食谱。代理将会运行在所有的服务器配置。代理将chef主服务器的cookbooks,在服务器上运行这些配置来达到理想的状态。

2、Puppet




Puppet也基于ruby编写的配置管理工具跟chef一样。配置代码编写使用puppet DSL和封装在模块。而chef更以开发人员为中心,puppet是由系统管理员控制为中心。puppet proxy运行在所有服务器配置,它把编译模块从puppet服务器和安装所需要的软件包中指定模块。

3、Saltstack




Saltstack是一个基于python打开配置管理工具。不像chef和puppet,Saltstack支持远程执行的命令。通常在chef和puppet,配置的代码将从服务器,在Saltstack,代码可以同时被推到许多节点。编译的代码和配置是Saltstack非常快。

4、Ansible




Ansible是一个缺少代理配置管理以及编制工具。在Ansible配置模块中被称为“剧本”。剧本都写在YAML格式和它相对容易写相比其他配置管理工具。像其他工具,Ansible可用于云配置。

5、Juju




Juju是由典型的基于Python的编排工具。它已经在你的云环境应用程序的伟大的UI。你也可以使用命令行界面来完成所有的业务流程的任务。你可以配置,部署和使用且具规模的应用。

6、 Jenkins




Jenkins是一个基于java的持续集成工具更快的应用程序。Jenkins必须关联到一个版本控制系统如github或SVN。每当新代码被推到代码库,詹金斯服务器将构建和测试新代码和通知团队的结果和变化。

7、 Vagrant




vagrant是一个伟大的工具为开发环境配置虚拟机。vagrant的上面运行的VM虚拟框和流浪的解决方案。它使用一个配置文件叫做Vagrantfile,其中包含所需的所有配置VM。一旦创建了一个虚拟机,它可以与其他开发人员共享相同的开发环境。vagrant有云配置插件,配置管理工具(chef、puppet等)和docker。

8、Docker




Docker是一个自动化工具之上的Linux容器(LXC)。它工作在流程级别虚拟化的概念。Docker创造了孤立的环境称为应用程序容器。这些容器可以运往其他服务器无需更改应用程序。Docker被认为是虚拟化的下一步。码头工人有一个巨大的开发者社区,它是获得巨大的声望在Devops从业者和云计算的先驱。

9、New Relic




New relic的基于云的解决方案(SaaS)应用程序监视。它支持各种应用程序的监控像Php、Ruby、Java、NodeJS等等。它给你实时的见解关于您的运行应用程序中。new relic的代理应该配置在应用程序中获得实时数据。New relic使用各种指标提供有价值的见解关于应用程序监控。

10、Sensu




Sensu是一个开放源码监视框架用Ruby编写的。Sensu是一个监控工具专门建立云环境。它可以很容易地部署使用工具如chef和puppet。Sensu也有一个企业版的监控。英文原文链接:http://devopscube.com/devops-tools-for-infrastructure-automation/  查看全部
devops_tools.png


Devops基础设施自动化的工具


有许多工具用于基础设施自动化。决定使用哪个工具的体系结构和基础设施的需求。下面我们列出了一些伟大的工具,受到不同类别配置管理、编制、持续集成、监控、等。


1、Chef


chef.png
Chef是一个基于ruby开发的配置管理工具。你可能会遇到“基础设施代码”这个词,这意味着配置管理。厨师烹饪书的概念,你的代码基础设施DSL(领域特定语言)和一个小的编程。chef规定和配置虚拟机根据规则中提到的食谱。代理将会运行在所有的服务器配置。代理将chef主服务器的cookbooks,在服务器上运行这些配置来达到理想的状态。


2、Puppet


puppet.png
Puppet也基于ruby编写的配置管理工具跟chef一样。配置代码编写使用puppet DSL和封装在模块。而chef更以开发人员为中心,puppet是由系统管理员控制为中心。puppet proxy运行在所有服务器配置,它把编译模块从puppet服务器和安装所需要的软件包中指定模块。


3、Saltstack


saltstack.png
Saltstack是一个基于python打开配置管理工具。不像chef和puppet,Saltstack支持远程执行的命令。通常在chef和puppet,配置的代码将从服务器,在Saltstack,代码可以同时被推到许多节点。编译的代码和配置是Saltstack非常快。


4、Ansible


ansible.png
Ansible是一个缺少代理配置管理以及编制工具。在Ansible配置模块中被称为“剧本”。剧本都写在YAML格式和它相对容易写相比其他配置管理工具。像其他工具,Ansible可用于云配置。


5、Juju


juju.png
Juju是由典型的基于Python的编排工具。它已经在你的云环境应用程序的伟大的UI。你也可以使用命令行界面来完成所有的业务流程的任务。你可以配置,部署和使用且具规模的应用。


6、 Jenkins


jenkines.png
Jenkins是一个基于java的持续集成工具更快的应用程序。Jenkins必须关联到一个版本控制系统如github或SVN。每当新代码被推到代码库,詹金斯服务器将构建和测试新代码和通知团队的结果和变化。


7、 Vagrant


vagrant.png
vagrant是一个伟大的工具为开发环境配置虚拟机。vagrant的上面运行的VM虚拟框和流浪的解决方案。它使用一个配置文件叫做Vagrantfile,其中包含所需的所有配置VM。一旦创建了一个虚拟机,它可以与其他开发人员共享相同的开发环境。vagrant有云配置插件,配置管理工具(chef、puppet等)和docker。


8、Docker


docker.png
Docker是一个自动化工具之上的Linux容器(LXC)。它工作在流程级别虚拟化的概念。Docker创造了孤立的环境称为应用程序容器。这些容器可以运往其他服务器无需更改应用程序。Docker被认为是虚拟化的下一步。码头工人有一个巨大的开发者社区,它是获得巨大的声望在Devops从业者和云计算的先驱。


9、New Relic


NewRelic.png
New relic的基于云的解决方案(SaaS)应用程序监视。它支持各种应用程序的监控像Php、Ruby、Java、NodeJS等等。它给你实时的见解关于您的运行应用程序中。new relic的代理应该配置在应用程序中获得实时数据。New relic使用各种指标提供有价值的见解关于应用程序监控。


10、Sensu


sensu.png
Sensu是一个开放源码监视框架用Ruby编写的。Sensu是一个监控工具专门建立云环境。它可以很容易地部署使用工具如chef和puppet。Sensu也有一个企业版的监控。
英文原文链接:http://devopscube.com/devops-tools-for-infrastructure-automation/