Nginx的五种负载均衡策略

运维技术chris 发表了文章 • 0 个评论 • 261 次浏览 • 2017-07-03 23:36 • 来自相关话题

Nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
 
nginx的upstream目前支持的5种方式的分配

1、轮询(默认)​

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2、指定权重

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、 ip_hash(ip绑定)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。upstream backserver {
server server1;
server server2;
fair;
}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
} 在需要使用负载均衡的server中增加 proxy_pass http://backserver/;

upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
} max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 

fail_timeout:max_fails次失败后,暂停的时间 查看全部
Nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
 
nginx的upstream目前支持的5种方式的分配


1、轮询(默认)​


每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver { 
server 192.168.0.14;
server 192.168.0.15;
}


2、指定权重


指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 
upstream backserver { 
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}


3、 ip_hash(ip绑定)


每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver { 
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}


4、fair(第三方)


按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver { 
server server1;
server server2;
fair;
}


5、url_hash(第三方)


按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 
upstream backserver { 
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加 
proxy_pass http://backserver/; 

upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 

fail_timeout:max_fails次失败后,暂停的时间

不仅是 Linux 运维最佳实践

运维技术OS小编 发表了文章 • 0 个评论 • 203 次浏览 • 2017-06-30 00:07 • 来自相关话题

我们面对的是一个不断变化的世界,业务需求在变,技术架构在变,开源工具与商业系统异构部署,新工具和技术概念层出不穷,唯有一套科学的技术方法论才能应对这些变化。很多时候,我们在面对新的问题时,会束手无措。因此,在 OSC 第 132 期高手问答中,我们策划了“Linux 运维最佳实践”的主题,并邀请了@xufengnju(胥峰)作为高手嘉宾。

@xufengnju(胥峰),资深运维专家,有 10 年运维经验,在业界颇具威望和影响力。也是盛大游戏高级研究员,2006 年毕业于南京大学,2011 年加入盛大游戏,工作至今,曾参与盛大游戏多款大型端游和手游的上线运维,主导运维自动化平台的功能设计和实施。拥有工信部认证高级信息系统项目管理师资格。

自动化运维在近几年一直都是很火热的话题,技术也一直在进步,因此对于技术人员来说,最重要的思维上、思想上的适应与转变。毕竟技术不是运维的终极追求,思想才是运维人员应该毕生修炼的目标!本次高手问答的高手嘉宾对运维服务体系有着深度的思考,因此问答中产生的内容也是十分有质量。

本文从多个角度整理了与运维相关的内容,包括工具的选择、运维中遇到的问题、自动化运维相关等等。
 
Q&A​
 一、工欲善其事必先利其器,如何选择工具? 
1. 对服务器安全和监控,可以推荐一些开源工具吗?监控好像也就 nagios, cacti, zabbix,还有其他可以推荐的吗?安全方面如何监控?

监控工具各有侧重点,zabbix 同时支持 snmp 和自己的 agent,也支持自定义模板,在大部分场景下都是不错的选择。

另外,不要把 zabbix 视为只能监控服务器信息,通过自定义模板,也可以监控业务层面的指标。安全监控分为主动检测,如 Tenable Nessus,以及 IDS、IPS。

2. Linux 运维中,服务器版本都用什么版本?CentOS 5 还是 CentOS 6、Ubuntu?为什么选择这个版本?有做哪些测试?

目前我们以 CentOS6.X 为主。不同 Linux 分支各有特点,比如 Ubuntu 新版本发布较快,如果追求内核版本升级速度的话,可以考虑。CentOS 一直是我们的主要 Linux 发行版,主要是考虑到它的稳定性以及熟悉程度最高。

3. 对于使用缓存有什么推荐吗?一般就 Redis, Codis。还有那些比较好用的开源软件?

对于类似 session-id 这样的可以非持久存储的数据,可以考虑 memcached,使用一致性哈希算法分布式存储。

4. 做自动化发布,除了 Jenkins 持续集成工具,还有那些好用的工具呢?

目前我所知道的,一般都是 Hudson 或者 Jenkins,后者是前者分支出来的。这些工具都有丰富的插件,灵活使用这些插件是关键所在。

5. 问个 MySQL 问题,三个版本(MySQL(官方版本)、Percona Server 、MariaDB)您建议使用哪个版本,原因是?

我们团队一般使用的是官方版本。主要是考虑到支持和生态。

6. 服务器日志收集和分析有什么好工具推荐吗?ELK 貌似有点复杂,不太会用,有其他的推荐么?

ELK 确实是目前使用比较广泛的日志收集和分析的工具。虽然有些学习成本,但还是值得去研究和尝试的。

7. 书里有开源出一些工具和脚本吗,哪里可以下载到?

书上的脚本我正在整理,其中一部分通过 git 可以下载 https://github.com/xufengnju/books.git  

8. 请问你们现在运维都是基于 Ansible 吗?我们之前都是用 chef puppt 来管理。最近感觉 Ansible 很火,还没实践用过,请问这个用起来差别大吗?

各种不同的批量管理工具各具特点,根据自己的熟悉程度和实际业务需要选择一个完全掌握即可
目前 IaaS 平台是自研的,基于 KVM

二、绝知此事要躬行,运维中遇到问题?1. LVS 和 HAPROXY 后端服务器规模可以到什么程度,比如有多少个应用,多少台后端服务器?

这个取决于应用的类型,在实际的业务场景下,需要关注 LVS 等负载均衡器本身的连接数、PPS 数据以及延迟。如果后端吞吐量比较大,可以考虑 LVS 的 DR 模式。一般情况下,负载均衡器不太会成为瓶颈。

负载均衡器本身的连接数、PPS 数据以及延迟如何进行计算和统计?
通过开源的 Zabbix 模板或者自定义模板,这些都不难实现。有没有相关的命令集进行统计,或者详细的统计实例?

针对 HAProxy 建议参考咱们书中 P76 页最佳实践 29 HAProxy 监控的内容。Zabbix 模板技术,建议参考下咱们书中第 12 章的内容。可以使用的命令包括 ipvsadm,netstat 等。

2. 对于涉及多个平台(Unix, Linux, Windows)的统一管理(认证,配置,服务)有什么好的解决方案或者思路么?

先说下认证这一块吧。Unix、Linux 都支持 OpenLDAP 认证,可以考虑,这个和 Windows 下的 AD 是兼容的。配置和服务可以考虑下开源的通用产品,比如 Ansible 或者 Salt。目前我们用的自研系统,思路和 Ansible 类似。

3. 如何监控服务,业务运行状态监控你是怎么做的?

我们的监控系统是自研的,对游戏来说,很重要的一个业务指标是在线人数,它是通过监控系统周期性轮询游戏服务器来进行收集和绘制图表的。

4. 你们是如何批量管理各个业务模块的机器系统及配置的。我们目录使用 Ansible 使用批量命令和脚本,业务上使用上线平台 SVN 管理业务程序及配置。是否开发了 CMDB 平台?

我们批量管理服务器的方式是 ssh,思路和 Ansible 类似。CMDB 提供基础数据的管理,是自研的。

5. 请问有使用过流量镜像吗?就是把线上的流量镜像一份,引到测试环境,用真实的用户数据测试,想了解下从 0 开始实施的过程。

关于流量镜像的原理,可以参考《Linux 运维最佳实践》第 15 章中网卡混杂模式和 RawSocket 技术。看了这一部分后,你应该可以自己写一套。我没有亲自实践过,你可以自己关注下 tcpcopy 这个项目。

6. CentOS 6 要如何做系统和网络优化?/etc/sysctl.conf 中的这个参数
net.ipv4.tcp_max_tw_buckets = 6000要如何设置,是越多越好吗?设置成 16000?
net.ipv4.tcp_max_tw_buckets = 16000

对于系统优化来说,要有针对性。tcp_max_tw_buckets 针对的是 time wait bucket,如系统中 timewait 状态较多,可以考虑 net.ipv4.tcp_tw_reuse 和 net.ipv4.tcp_tw_recycle 这 2 个值调整。另外,如果使用长连接对于减少该状态的连接数有效。

7. 如果有 100 多台服务器,大部分都是在提供业务的服务器,如何升级呢?除了停机维护,现在有什么比较好的解决方案吗?

如果本身业务切分比较好,例如采用无状态的微服务等架构,可以通过前端负载均衡器进行灰度升级。如果应用做的不好,只有单台的这种,或者集中数据库,就比较麻烦了。

8. LVS 和 HAPROXY 分别能支持多少类似 FARM 的概念?

你说的 FARM 应该是某硬件负载均衡设备的专有名词,应该是负载均衡组的概念。在 LVS 和 HAProxy 里面,负载均衡组的数量上没有硬限制,但实践中一般不会配置太多,因为这涉及到维护成本以及 HA 环境下主备切换时的开销。

9. 系统是 CentOS release 6.5 (Final), 系统没有自动回收内存,16G,我自己写了个 Shell 脚本,每次执行判断小于 1G 的时候回收内存

可以关注下 sysctl 中 swap 以及 swappiness 的一些配置

10. 请问如果是有很多 ECS/VPS,系统一般是 CentOS。目前很多堡垒机也有类似的 SSH 同步密钥下发命令等功能,但是如果还有 Win的堡垒机支持很少。有别的开源工具或者办法来混合管理所有的 Linux, Windows 机器吗? 

在我的这个演讲里面讲到了异构系统的批量管理方法,你可以参考下。

http://www.build.net/greatops/453250.html  。另外,你可以参考下 Ansible 或者 salt。

三、自动化运维相关,工程师思维?
1. 可以说下什么是自动化运维,如何才算服务器做了自动化运维?包括哪些?自动化发布,有问题可以回滚?

运维自动化是一个仁者见仁智者见智的概念。我的理解是,运维自动化要打通从代码开发完到正式上线的所有环节,包括版本构建、打通自动测试、自动化上线以及自动化监控。

在这个大命题下,可以根据自己工作环境和自动化水平的不同,选择一两个痛点开始进行自动化实践。最后形成完整体系。

2. 想请问一下自动化运维怎么做的?需要从那些方面考虑?我所考虑到的有实施运维,日常巡检维护,以及故障自动化处理,和提醒。除了这些请问还要注意那些方面?另外,随着 IT 技术的日新月异,涌现了很多新的应用,请问该如果有一个基本的路子来做运维,或者规律,流程来达到运维需求?例如现在比较火的OpenStack Docker 大数据。这些技术实现功能只是很小的一步,更多的是上线后的运维。更多是想要一种思路,能列举大家遇到过的问题,以及问题如何处理? 

你的问题很好,但这个话题比较大。我先说下我的理解吧。传统的运维服务流程 ITIL 还有一定的价值,但需要结合一些 DevOps 思想来进行适当的改造,融合两者的长处。从拥抱变化开始,以一种开放的态度来进行运维。但不变的一点是,以为业务创造价值为最终目标,这就是运维的目标。

3. 实现运维自动化,最主要就是配置管理、状态管理和变更管理,其中配置管理要如何来做,有什么好的方法分享下吗?

对配置管理,我认为应该分为“基础架构资源配置管理”和“软件/应用配置管理”。

前者是一般意义上的 CMDB 的范畴,这个可以根据自己业务特点在开源 CMDB 方案的基础上做一定的适配;

对于后者,一方面是系统(例如版本控制系统的结合),一方面是流程(例如和变更管理挂钩)。在我们的实践中,这 2 个方面都有涉及。

4. 请问你主导运维自动化平台的功能设计和实施,是通过 Python 开发管理工具吗?另外,你们是重新开发,还是根据 Saltstack 之类的进行二次开发。

底层使用 SSH 协议建立服务器管理通道,上层使用 PHP 开发管理界面以及封装一些常用操作,比如密码修改、脚本下发和执行等。完全自主开发。

 
四、做好安全措施很重要,安全相关的问题1. 运维离不开安全,服务器的安全也很重要,书中有讲运维安全这块吗,如何把控安全这块?

书中有安全主题。安全是一个庞大的体系,书中主要讲了保障 Linux 系统安全的一些措施。其他安全主题,比如社会工程和入侵检测,可能需要看更专业的书。你可以先看看咱们《Linux 运维最佳实践》是否能满足你的基本安全需求。谢谢支持。

2. Web 安全监控有开源解决方案吗,能否做到在接入层就把一些可能的漏洞拦掉?Suricata?

Suricata 没有研究和实践过。《Linux 运维最佳实践》中第 11 章 Web 服务器安全部分提到了几个工具,你可以参考下。但 ModSecurity 规则在上线前要进行严格详细测试,不要出现误判。另外,建议对生产环境进行定期的安全扫描,例如使用 Tenable Nessus 工具等。安全专家的人工渗透测试也是必须的。

 
五、Docker 很火热,在运维中结合使用?1. 在网易游戏运维中是否用到了最近很火的 Docker 技术以及应用在哪,存在什么问题,如何解决?

目前我们在调研 Docker 技术,只有少量游戏测试使用。需要根据不同的业务模型选择对应的网络模型和存储方案。Docker 技术会改变传统的运维方式,要考虑和原有运维系统整合以及运维习惯的调整所带来的挑战。另外,我不是网易公司的,我目前在盛大游戏工作。 

2. Docker 化对运维影响深远吗?

Docker 化对运维有影响,它带来的影响包括:持续交付、微服务以及 DevOps 理念的冲击。作为运维,我们要拥抱这个变化,通过不断学习和实践来迎接这些挑战。

3. 为何国内没有一家成熟的 Docker 方案公布细节呢?

Docker 还是一个新生事物,各家使用的场景和模式有所不同,而且会有一些二次开发的管理系统和调度系统。

 
六、不是所有对比都会产生伤害,工程师想的只是最优方案1. 游戏服务器运维和网站服务器运维以及 APP 服务器运维,有哪些不同点和相同点?

这个问题很有代表性。不同点是,网站和 APP 运维接触的通用开源软件比较多,游戏运维接触的大部分都是自研的程序。

共同点是,都需要掌握操作系统知识、软件硬件以及网络知识,还有排查问题的思路和容量规划等。两者都需要引入运维自动化的思维和体系。《Linux 运维最佳实践》最后 2 章描述了游戏运维的相关体系和技术。

2. 作为运维人员,Python 这样的脚本在进行系统管理和监控的时候相比 Shell 有怎样的优势呢?

作为高级编程语言,Python 有非常丰富的库,包括核心库和第三方库,很多时候不需要自己造轮子;

相比 Shell,它有更好的控制力、重试机制,比如对 Socket 设置超时等等。

3. CentOS 比起 Ubuntu 来说有啥优势?为什么服务器大多用 CentOS?

不同 Linux 分支各有特点,比如 Ubuntu 新版本发布较快,如果追求内核版本升级速度的话,可以考虑。CentOS 一直是我们的主要 Linux 发行版,稳定性以及熟悉程度最高。

选择某个发行版时,要考虑它的生态,比如上下游的支持,还有一点,就是运维人员招聘的方便程度,国内熟悉 CentOS 的稍多一些。

4. 想问下只有一台服务器,有多个应用,是用 LVS 做负载好还是 Nginx?差别大吗?

你说的后端应用是基于 HTTP 或者 HTTPS 的吗?如果是的话,并且吞吐量不大的情况下,使用 Nginx 即可;如果非 HTTP 或者 HTTPS 的 TCP 应用,建议使用 LVS;如果 HTTP 或者 HTTPS 吞吐量特别大的情况下,使用 LVS DR 模式。

七、You Need Backup,与备份相关的一些问题1. 1000 台机器规模,备份系统应该要做到什么程度?

1000 台服务器,要区分业务类型,如果类型单一,备份就比较好做。如果类型多,那么要考虑的地方包括:数据库更新的频率(全备+增量备份?还是只使用全备)、数据备份的大小、数据集中归档的要求。

2. 备份是怎么做的?上百 T 的图片、附件有什么高雅的备份方案?

在线备份这一块,可以考虑使用 erasure coding 算法,在增加一定可靠性的能力下,不至于导致备份存储的成本过高。同时要考虑离线备份,比如磁带。

八、路漫漫其修远兮,运维工程师的职业生涯1. 你觉得在未来,运维的核心会是什么,自动化,预判或是其他?

我觉得,未来的运维应该是智能化的。把现在需要人做的容量规划、扩缩容、排障全部实现智能化。运维的任务就是编程,把自己的能力灌输到机器上。当然,理想很丰满,现实很骨感。这需要我们的不懈努力。

2. 作为工作 4 年多的测试工作者,在运维方面也是有一定的涉猎,在公司维护自己的测试环境,有时候也需要一定运维功底,从 Windows Server 到 Linux,学习很多,也总结了很多。上家公司着手 Docker 部署的时候刚好离开公司了。真是有点遗憾,后续工作也没时间去实践,目前使用的是 ng 负载,采用 Tomcat 部署方案,工作实在比较忙,很想在运维方面也有一定的提升!不知道从何入手好,求大神指教。

从你的描述来看,目前是兼职运维。我建议是否可以考虑,在搭建环境之外,多多研究下其中的原理,同时用自动化脚本维护这些环境呢。相信你也有一些编程经验,这些对于你后续实践运维也是有帮助的。另外,就是可以多看看别人总结的运维案例,少走一些弯路。

3. 运维技术挺杂的,如何看待这种杂?给人感觉好像什么都会点,对于工作 5-6 年的运维来说,有什么好的学习建议?

如你所说,运维技术要求范围确实蛮广的。我觉得,对于工作了一定时间的运维同学来说,可以考虑的方向有以下几个:
DevOps 实践(加强自己的编程能力,系统学习一门高级编程语言,运维自动化)对自己的技术薄弱点重点学习,比如系统学习网络知识看一些比较好的运维技术书籍,学习别人的干货

4. 由于运维系统有全面的数据收集、自动处理、报警和自动恢复的机制,我们这里将运维和 BI 结合在一起。扩展运维工具和架构,将已成熟的 BI 接入运维体系,解放业务专员的工作,常规的业务分析、报表、数据监控都可依赖这套运维系统。在我们这里,运维从一层平台逐渐变成一种框架,有需要的场景都可以套用。技术一直在变,但最重要的不是技术,而是用技术提供服务的思想。
 
除了和 BI 结合,运维思维还可以和哪些相关业务场景结合,可以在新的方向上产生价值呢?

我很赞同你的想法和实践,“用技术提供服务的思想”。我个人认为,运维的终极目标可能是“没有运维工程师的”自运维,或者叫智能运维,是 AI 在运维领域的深度融合和实践。容量规划算法的不断优化、基于公有云的资源自动调度都应该是智能化的。当然,实现这个目标还有很长的路要走。

5. Devops 对运维有那些改变,能简单说下嘛?

Devops 从概念提出到现在已经有一段比较长的时间了,总体来说,我认为它带来的变化是:持续交付能力需要打通研发、测试和部署运维的整个链路,它对运维自动化的能力要求更高了。我们必须通过掌握一些运维自动化框架加上一定的编程能力才能根据业务场景来应对这种变化。另外,对运维来说,就是要拥抱变化,以开放的态度进行协作。

6. 现在哪个版本的 Linux 使用最广泛,还有 Linux 运维,我们需要学习一些语言吗,比如 Python 之类,这样才能算是一个真正的好运维?

不要犹豫了,立即开始学习编程吧,不管 Perl 还是 Python,熟悉哪一种都行。在这里,我不对比 Perl 和 Python 的优缺点。坚持用自己的代码(加上别人的框架和库)来解决重复的运维问题,你会成长的更快。CentOS 用的比较多。

《Linux 运维最佳实践》第 18 章是使用 Perl 进行系统自动化编程的内容,你可以先看看。如果感兴趣的话,立即开始吧。

7. 请问您写书,是怎么坚持写下来的?是把平时工作重点的问题,记录下来,每天写一点,再总结吗?写书有什么工具软件吗,还是只是用 Word 来写?能分享下写运维书籍的方法吗?

这个问题非常好,也是我想分享的。写书的素材依赖于平时的积累,建议大家平时多写写标准的文档,word 格式可以参考咱们这本书的编排。比较重要的 3 点是:
visio 图要保留下来,不能只存图片,因为可能还要调整排版有些故障现场,尽量记录详细,现象和分析过程、辅助的日志和抓包文件等,建议都保留下来脚本按照分类保存下来,以便查找

有关 Linux 运维最佳实践的问答内容至此结束,各位读者可以转到原帖浏览更多内容。
原文:运维技术干货 — 不仅是 Linux 运维最佳实践 。 查看全部
我们面对的是一个不断变化的世界,业务需求在变,技术架构在变,开源工具与商业系统异构部署,新工具和技术概念层出不穷,唯有一套科学的技术方法论才能应对这些变化。很多时候,我们在面对新的问题时,会束手无措。因此,在 OSC 第 132 期高手问答中,我们策划了“Linux 运维最佳实践”的主题,并邀请了@xufengnju(胥峰)作为高手嘉宾。

@xufengnju(胥峰),资深运维专家,有 10 年运维经验,在业界颇具威望和影响力。也是盛大游戏高级研究员,2006 年毕业于南京大学,2011 年加入盛大游戏,工作至今,曾参与盛大游戏多款大型端游和手游的上线运维,主导运维自动化平台的功能设计和实施。拥有工信部认证高级信息系统项目管理师资格。

自动化运维在近几年一直都是很火热的话题,技术也一直在进步,因此对于技术人员来说,最重要的思维上、思想上的适应与转变。毕竟技术不是运维的终极追求,思想才是运维人员应该毕生修炼的目标!本次高手问答的高手嘉宾对运维服务体系有着深度的思考,因此问答中产生的内容也是十分有质量。

本文从多个角度整理了与运维相关的内容,包括工具的选择、运维中遇到的问题、自动化运维相关等等。
 
Q&A​
 
一、工欲善其事必先利其器,如何选择工具?
 
1. 对服务器安全和监控,可以推荐一些开源工具吗?监控好像也就 nagios, cacti, zabbix,还有其他可以推荐的吗?安全方面如何监控?


监控工具各有侧重点,zabbix 同时支持 snmp 和自己的 agent,也支持自定义模板,在大部分场景下都是不错的选择。

另外,不要把 zabbix 视为只能监控服务器信息,通过自定义模板,也可以监控业务层面的指标。安全监控分为主动检测,如 Tenable Nessus,以及 IDS、IPS。


2. Linux 运维中,服务器版本都用什么版本?CentOS 5 还是 CentOS 6、Ubuntu?为什么选择这个版本?有做哪些测试?


目前我们以 CentOS6.X 为主。不同 Linux 分支各有特点,比如 Ubuntu 新版本发布较快,如果追求内核版本升级速度的话,可以考虑。CentOS 一直是我们的主要 Linux 发行版,主要是考虑到它的稳定性以及熟悉程度最高。


3. 对于使用缓存有什么推荐吗?一般就 Redis, Codis。还有那些比较好用的开源软件?


对于类似 session-id 这样的可以非持久存储的数据,可以考虑 memcached,使用一致性哈希算法分布式存储。


4. 做自动化发布,除了 Jenkins 持续集成工具,还有那些好用的工具呢?


目前我所知道的,一般都是 Hudson 或者 Jenkins,后者是前者分支出来的。这些工具都有丰富的插件,灵活使用这些插件是关键所在。


5. 问个 MySQL 问题,三个版本(MySQL(官方版本)、Percona Server 、MariaDB)您建议使用哪个版本,原因是?


我们团队一般使用的是官方版本。主要是考虑到支持和生态。


6. 服务器日志收集和分析有什么好工具推荐吗?ELK 貌似有点复杂,不太会用,有其他的推荐么?


ELK 确实是目前使用比较广泛的日志收集和分析的工具。虽然有些学习成本,但还是值得去研究和尝试的。


7. 书里有开源出一些工具和脚本吗,哪里可以下载到?


书上的脚本我正在整理,其中一部分通过 git 可以下载 https://github.com/xufengnju/books.git  


8. 请问你们现在运维都是基于 Ansible 吗?我们之前都是用 chef puppt 来管理。最近感觉 Ansible 很火,还没实践用过,请问这个用起来差别大吗?


各种不同的批量管理工具各具特点,根据自己的熟悉程度和实际业务需要选择一个完全掌握即可
目前 IaaS 平台是自研的,基于 KVM


二、绝知此事要躬行,运维中遇到问题?
1. LVS 和 HAPROXY 后端服务器规模可以到什么程度,比如有多少个应用,多少台后端服务器?


这个取决于应用的类型,在实际的业务场景下,需要关注 LVS 等负载均衡器本身的连接数、PPS 数据以及延迟。如果后端吞吐量比较大,可以考虑 LVS 的 DR 模式。一般情况下,负载均衡器不太会成为瓶颈。


负载均衡器本身的连接数、PPS 数据以及延迟如何进行计算和统计?
通过开源的 Zabbix 模板或者自定义模板,这些都不难实现。
有没有相关的命令集进行统计,或者详细的统计实例?


针对 HAProxy 建议参考咱们书中 P76 页最佳实践 29 HAProxy 监控的内容。Zabbix 模板技术,建议参考下咱们书中第 12 章的内容。可以使用的命令包括 ipvsadm,netstat 等。


2. 对于涉及多个平台(Unix, Linux, Windows)的统一管理(认证,配置,服务)有什么好的解决方案或者思路么?


先说下认证这一块吧。Unix、Linux 都支持 OpenLDAP 认证,可以考虑,这个和 Windows 下的 AD 是兼容的。配置和服务可以考虑下开源的通用产品,比如 Ansible 或者 Salt。目前我们用的自研系统,思路和 Ansible 类似。


3. 如何监控服务,业务运行状态监控你是怎么做的?


我们的监控系统是自研的,对游戏来说,很重要的一个业务指标是在线人数,它是通过监控系统周期性轮询游戏服务器来进行收集和绘制图表的。


4. 你们是如何批量管理各个业务模块的机器系统及配置的。我们目录使用 Ansible 使用批量命令和脚本,业务上使用上线平台 SVN 管理业务程序及配置。是否开发了 CMDB 平台?


我们批量管理服务器的方式是 ssh,思路和 Ansible 类似。CMDB 提供基础数据的管理,是自研的。


5. 请问有使用过流量镜像吗?就是把线上的流量镜像一份,引到测试环境,用真实的用户数据测试,想了解下从 0 开始实施的过程。


关于流量镜像的原理,可以参考《Linux 运维最佳实践》第 15 章中网卡混杂模式和 RawSocket 技术。看了这一部分后,你应该可以自己写一套。我没有亲自实践过,你可以自己关注下 tcpcopy 这个项目。


6. CentOS 6 要如何做系统和网络优化?/etc/sysctl.conf 中的这个参数
net.ipv4.tcp_max_tw_buckets = 6000
要如何设置,是越多越好吗?设置成 16000?
net.ipv4.tcp_max_tw_buckets = 16000


对于系统优化来说,要有针对性。tcp_max_tw_buckets 针对的是 time wait bucket,如系统中 timewait 状态较多,可以考虑 net.ipv4.tcp_tw_reuse 和 net.ipv4.tcp_tw_recycle 这 2 个值调整。另外,如果使用长连接对于减少该状态的连接数有效。


7. 如果有 100 多台服务器,大部分都是在提供业务的服务器,如何升级呢?除了停机维护,现在有什么比较好的解决方案吗?


如果本身业务切分比较好,例如采用无状态的微服务等架构,可以通过前端负载均衡器进行灰度升级。如果应用做的不好,只有单台的这种,或者集中数据库,就比较麻烦了。


8. LVS 和 HAPROXY 分别能支持多少类似 FARM 的概念?


你说的 FARM 应该是某硬件负载均衡设备的专有名词,应该是负载均衡组的概念。在 LVS 和 HAProxy 里面,负载均衡组的数量上没有硬限制,但实践中一般不会配置太多,因为这涉及到维护成本以及 HA 环境下主备切换时的开销。


9. 系统是 CentOS release 6.5 (Final), 系统没有自动回收内存,16G,我自己写了个 Shell 脚本,每次执行判断小于 1G 的时候回收内存


可以关注下 sysctl 中 swap 以及 swappiness 的一些配置


10. 请问如果是有很多 ECS/VPS,系统一般是 CentOS。目前很多堡垒机也有类似的 SSH 同步密钥下发命令等功能,但是如果还有 Win的堡垒机支持很少。有别的开源工具或者办法来混合管理所有的 Linux, Windows 机器吗? 


在我的这个演讲里面讲到了异构系统的批量管理方法,你可以参考下。

http://www.build.net/greatops/453250.html  。另外,你可以参考下 Ansible 或者 salt。


三、自动化运维相关,工程师思维?

1. 可以说下什么是自动化运维,如何才算服务器做了自动化运维?包括哪些?自动化发布,有问题可以回滚?


运维自动化是一个仁者见仁智者见智的概念。我的理解是,运维自动化要打通从代码开发完到正式上线的所有环节,包括版本构建、打通自动测试、自动化上线以及自动化监控。

在这个大命题下,可以根据自己工作环境和自动化水平的不同,选择一两个痛点开始进行自动化实践。最后形成完整体系。


2. 想请问一下自动化运维怎么做的?需要从那些方面考虑?我所考虑到的有实施运维,日常巡检维护,以及故障自动化处理,和提醒。除了这些请问还要注意那些方面?另外,随着 IT 技术的日新月异,涌现了很多新的应用,请问该如果有一个基本的路子来做运维,或者规律,流程来达到运维需求?例如现在比较火的OpenStack Docker 大数据。这些技术实现功能只是很小的一步,更多的是上线后的运维。更多是想要一种思路,能列举大家遇到过的问题,以及问题如何处理? 


你的问题很好,但这个话题比较大。我先说下我的理解吧。传统的运维服务流程 ITIL 还有一定的价值,但需要结合一些 DevOps 思想来进行适当的改造,融合两者的长处。从拥抱变化开始,以一种开放的态度来进行运维。但不变的一点是,以为业务创造价值为最终目标,这就是运维的目标。


3. 实现运维自动化,最主要就是配置管理、状态管理和变更管理,其中配置管理要如何来做,有什么好的方法分享下吗?


对配置管理,我认为应该分为“基础架构资源配置管理”和“软件/应用配置管理”。

前者是一般意义上的 CMDB 的范畴,这个可以根据自己业务特点在开源 CMDB 方案的基础上做一定的适配;

对于后者,一方面是系统(例如版本控制系统的结合),一方面是流程(例如和变更管理挂钩)。在我们的实践中,这 2 个方面都有涉及。


4. 请问你主导运维自动化平台的功能设计和实施,是通过 Python 开发管理工具吗?另外,你们是重新开发,还是根据 Saltstack 之类的进行二次开发。


底层使用 SSH 协议建立服务器管理通道,上层使用 PHP 开发管理界面以及封装一些常用操作,比如密码修改、脚本下发和执行等。完全自主开发。


 
四、做好安全措施很重要,安全相关的问题
1. 运维离不开安全,服务器的安全也很重要,书中有讲运维安全这块吗,如何把控安全这块?


书中有安全主题。安全是一个庞大的体系,书中主要讲了保障 Linux 系统安全的一些措施。其他安全主题,比如社会工程和入侵检测,可能需要看更专业的书。你可以先看看咱们《Linux 运维最佳实践》是否能满足你的基本安全需求。谢谢支持。


2. Web 安全监控有开源解决方案吗,能否做到在接入层就把一些可能的漏洞拦掉?Suricata?


Suricata 没有研究和实践过。《Linux 运维最佳实践》中第 11 章 Web 服务器安全部分提到了几个工具,你可以参考下。但 ModSecurity 规则在上线前要进行严格详细测试,不要出现误判。另外,建议对生产环境进行定期的安全扫描,例如使用 Tenable Nessus 工具等。安全专家的人工渗透测试也是必须的。


 
五、Docker 很火热,在运维中结合使用?
1. 在网易游戏运维中是否用到了最近很火的 Docker 技术以及应用在哪,存在什么问题,如何解决?


目前我们在调研 Docker 技术,只有少量游戏测试使用。需要根据不同的业务模型选择对应的网络模型和存储方案。Docker 技术会改变传统的运维方式,要考虑和原有运维系统整合以及运维习惯的调整所带来的挑战。另外,我不是网易公司的,我目前在盛大游戏工作。 


2. Docker 化对运维影响深远吗?


Docker 化对运维有影响,它带来的影响包括:持续交付、微服务以及 DevOps 理念的冲击。作为运维,我们要拥抱这个变化,通过不断学习和实践来迎接这些挑战。


3. 为何国内没有一家成熟的 Docker 方案公布细节呢?


Docker 还是一个新生事物,各家使用的场景和模式有所不同,而且会有一些二次开发的管理系统和调度系统。


 
六、不是所有对比都会产生伤害,工程师想的只是最优方案
1. 游戏服务器运维和网站服务器运维以及 APP 服务器运维,有哪些不同点和相同点?


这个问题很有代表性。不同点是,网站和 APP 运维接触的通用开源软件比较多,游戏运维接触的大部分都是自研的程序。

共同点是,都需要掌握操作系统知识、软件硬件以及网络知识,还有排查问题的思路和容量规划等。两者都需要引入运维自动化的思维和体系。《Linux 运维最佳实践》最后 2 章描述了游戏运维的相关体系和技术。


2. 作为运维人员,Python 这样的脚本在进行系统管理和监控的时候相比 Shell 有怎样的优势呢?


作为高级编程语言,Python 有非常丰富的库,包括核心库和第三方库,很多时候不需要自己造轮子;

相比 Shell,它有更好的控制力、重试机制,比如对 Socket 设置超时等等。


3. CentOS 比起 Ubuntu 来说有啥优势?为什么服务器大多用 CentOS?


不同 Linux 分支各有特点,比如 Ubuntu 新版本发布较快,如果追求内核版本升级速度的话,可以考虑。CentOS 一直是我们的主要 Linux 发行版,稳定性以及熟悉程度最高。

选择某个发行版时,要考虑它的生态,比如上下游的支持,还有一点,就是运维人员招聘的方便程度,国内熟悉 CentOS 的稍多一些。


4. 想问下只有一台服务器,有多个应用,是用 LVS 做负载好还是 Nginx?差别大吗?


你说的后端应用是基于 HTTP 或者 HTTPS 的吗?如果是的话,并且吞吐量不大的情况下,使用 Nginx 即可;如果非 HTTP 或者 HTTPS 的 TCP 应用,建议使用 LVS;如果 HTTP 或者 HTTPS 吞吐量特别大的情况下,使用 LVS DR 模式。


七、You Need Backup,与备份相关的一些问题
1. 1000 台机器规模,备份系统应该要做到什么程度?


1000 台服务器,要区分业务类型,如果类型单一,备份就比较好做。如果类型多,那么要考虑的地方包括:数据库更新的频率(全备+增量备份?还是只使用全备)、数据备份的大小、数据集中归档的要求。


2. 备份是怎么做的?上百 T 的图片、附件有什么高雅的备份方案?


在线备份这一块,可以考虑使用 erasure coding 算法,在增加一定可靠性的能力下,不至于导致备份存储的成本过高。同时要考虑离线备份,比如磁带。


八、路漫漫其修远兮,运维工程师的职业生涯
1. 你觉得在未来,运维的核心会是什么,自动化,预判或是其他?


我觉得,未来的运维应该是智能化的。把现在需要人做的容量规划、扩缩容、排障全部实现智能化。运维的任务就是编程,把自己的能力灌输到机器上。当然,理想很丰满,现实很骨感。这需要我们的不懈努力。


2. 作为工作 4 年多的测试工作者,在运维方面也是有一定的涉猎,在公司维护自己的测试环境,有时候也需要一定运维功底,从 Windows Server 到 Linux,学习很多,也总结了很多。上家公司着手 Docker 部署的时候刚好离开公司了。真是有点遗憾,后续工作也没时间去实践,目前使用的是 ng 负载,采用 Tomcat 部署方案,工作实在比较忙,很想在运维方面也有一定的提升!不知道从何入手好,求大神指教。


从你的描述来看,目前是兼职运维。我建议是否可以考虑,在搭建环境之外,多多研究下其中的原理,同时用自动化脚本维护这些环境呢。相信你也有一些编程经验,这些对于你后续实践运维也是有帮助的。另外,就是可以多看看别人总结的运维案例,少走一些弯路。


3. 运维技术挺杂的,如何看待这种杂?给人感觉好像什么都会点,对于工作 5-6 年的运维来说,有什么好的学习建议?


如你所说,运维技术要求范围确实蛮广的。我觉得,对于工作了一定时间的运维同学来说,可以考虑的方向有以下几个:

  • DevOps 实践(加强自己的编程能力,系统学习一门高级编程语言,运维自动化)
  • 对自己的技术薄弱点重点学习,比如系统学习网络知识
  • 看一些比较好的运维技术书籍,学习别人的干货


4. 由于运维系统有全面的数据收集、自动处理、报警和自动恢复的机制,我们这里将运维和 BI 结合在一起。扩展运维工具和架构,将已成熟的 BI 接入运维体系,解放业务专员的工作,常规的业务分析、报表、数据监控都可依赖这套运维系统。在我们这里,运维从一层平台逐渐变成一种框架,有需要的场景都可以套用。技术一直在变,但最重要的不是技术,而是用技术提供服务的思想。
 
除了和 BI 结合,运维思维还可以和哪些相关业务场景结合,可以在新的方向上产生价值呢?


我很赞同你的想法和实践,“用技术提供服务的思想”。我个人认为,运维的终极目标可能是“没有运维工程师的”自运维,或者叫智能运维,是 AI 在运维领域的深度融合和实践。容量规划算法的不断优化、基于公有云的资源自动调度都应该是智能化的。当然,实现这个目标还有很长的路要走。


5. Devops 对运维有那些改变,能简单说下嘛?


Devops 从概念提出到现在已经有一段比较长的时间了,总体来说,我认为它带来的变化是:持续交付能力需要打通研发、测试和部署运维的整个链路,它对运维自动化的能力要求更高了。我们必须通过掌握一些运维自动化框架加上一定的编程能力才能根据业务场景来应对这种变化。另外,对运维来说,就是要拥抱变化,以开放的态度进行协作。


6. 现在哪个版本的 Linux 使用最广泛,还有 Linux 运维,我们需要学习一些语言吗,比如 Python 之类,这样才能算是一个真正的好运维?


不要犹豫了,立即开始学习编程吧,不管 Perl 还是 Python,熟悉哪一种都行。在这里,我不对比 Perl 和 Python 的优缺点。坚持用自己的代码(加上别人的框架和库)来解决重复的运维问题,你会成长的更快。CentOS 用的比较多。

《Linux 运维最佳实践》第 18 章是使用 Perl 进行系统自动化编程的内容,你可以先看看。如果感兴趣的话,立即开始吧。


7. 请问您写书,是怎么坚持写下来的?是把平时工作重点的问题,记录下来,每天写一点,再总结吗?写书有什么工具软件吗,还是只是用 Word 来写?能分享下写运维书籍的方法吗?


这个问题非常好,也是我想分享的。写书的素材依赖于平时的积累,建议大家平时多写写标准的文档,word 格式可以参考咱们这本书的编排。比较重要的 3 点是:

  • visio 图要保留下来,不能只存图片,因为可能还要调整排版
  • 有些故障现场,尽量记录详细,现象和分析过程、辅助的日志和抓包文件等,建议都保留下来
  • 脚本按照分类保存下来,以便查找


有关 Linux 运维最佳实践的问答内容至此结束,各位读者可以转到原帖浏览更多内容。
原文:运维技术干货 — 不仅是 Linux 运维最佳实践 。

基于CMDB与SALTSTACK的运维自动化之路

运维技术OS小编 发表了文章 • 0 个评论 • 275 次浏览 • 2017-06-29 01:10 • 来自相关话题

作者介绍​

张延礼,现苏州蜗牛高级运维经理,就职于腾讯多年,熟悉基础架构运维及业务运维,在运维技术实施、流程及标准化体系建设、运维自动化架构设计及实现,运维支撑体系规划和执行团队管理等方面具有丰富经验。

正文

本文基于蜗牛从零开始建设运维自动化的一些实践,总结自动化建设过程中涉及的体系规划、实施路线、产品设计及架构设计等方面的经验。

一、自动化体系规划

1、自动化要解决什么问题

运维层面的工作可以归结为如下三大块




服务管理层面主要是从运维总体支撑的角度来管理运维质量、规范、成本等等,处在运维工作的最高层;技术决策主要是为实现管理目标去制定总体方案,实施路径;技术执行则是落地的最后一环,这一环工作往往呈现零散、杂乱、重复、频繁变更的特点,承接的需求量最多,但价值体现却是较低的一环。

当前运维自动化的首要目标还是在解决”技术执行”这一层面的问题:将大量重复低价值含量的人力实施变成自动化执行,最大化地降低人力依赖,提升运维效率及业务支撑能力。

2、自动化建设思路

对于如何建设自动化运维,个人认为首要的是要有建设思路与方法论,以下供参考:









3、自动化建设总体框架

自动化的建设水平在行业内差异化还是明显的,如果处于运维自动化起步的阶段,建议是组建运维开发团队,从整体规划,基于ESB思想,分层建设,让支撑平台从业务逻辑中解耦。比如就业务运维而言,整个操作工作面无非就是对业务运营环境的各种操作、配置,以及对业务应用程序的管理,简单来说就是OS层和应用层。




要做自动化实施首先得有准确对称的数据,然后需要一个统一的管控平台,能并发的控制和操作远程大量主机,这解决了OS层面的操作问题,但需要管理应用层面的东西还需要与应用的研发人员规范相关接口,这对于开源组件应用而言一般不会有什么问题。因此如果是从零开始做自动化,个人认为CMDB、管控平台、业务进程管理工具这三部分是地基。在此基础之上,可以针对运维各类场景和业务逻辑去做相应的垂直功能系统,再上一层,可以使用流程引擎之类的组件来实现业务运维流程的纵向整合,最终实现运维各类业务流程的纯线上自动化。
 

二、自动化实施路线

业务发展往往带来运维块面的应用形态、运营环境、、部署结构、基础架构规模及组织流程等多样化、复杂化;如无统一的标准及规范,运维支撑工作将异常混乱,自动化也难以实施。因此自动化有一个基础:标准化,标准化是将一切杂乱无章、千头万绪的运维工作变得有序及可控,流程规范与执行标准的落地是自动化的一大基石。结合我司实际运维现状及需求,基于以上自动化体系建设思路,前期规划的建设线路如下




1、信息的标准化管理:CMDB

在运维工作中,信息的管理往往是难点,运维侧涉及的信息太多,且也与其他职能部门多点关联,信息流转于整个流程的多个职能部门、多个环节




中小型企业中,手工线下记录的方式居多,线上线下信息一致性保持、内部外部信息传递、共享、同步等均存在较大问题,经常出现:
线下表格有,实际位置找不到,或信息不对称不清楚设备状态,不清楚哪个业务在使用一个部门做了变更,其他部门不知情变更一条上联链路,无法及时判断影响范围及程度

根本问题及给运维工作带来的痛点如下




因此我们引入一套基于ITIL体系的配置管理数据库CMDB,旨在为运维团队建立线下与线上一致性的基础信息库,作为运维标准化、自动化、平台化的基础输入。重点解决IT基础架构信息化以及业务配置信息线上化,系统主要功能模块如下图:




系统本身主要功能可归结为2个方面:基础架构信息管理、业务信息管理。此两大方面的功能使用者为web-user,除此之外,对于API-user,此系统提供了一整套接口界面与其它任何需要信息的系统进行对接,这也是设计初衷,将信息从一个统一的、标准的源头输出给各垂直或水平业务功能系统,而运维需要做的就是维护CMDB本身基础数据的完整性、准确性,CMDB与各流程系统、垂直功能系统结合之后实现信息数据一处变更,处处同步。




如上为CMDB业务管理模型,作为运维统一信息库,与其他系统平台数据互通,深度整合后实现信息的管理、维护、展现全部线上化。

产品设计过程中涉及的几个关键点:
CI及属性需要贴合实际环境,同时考虑长期的运维规划管理的不仅是CI及其属性,还有CI之间的关系,状态流转机制等等充分考虑扩展性及灵活性,如引入自定义属性来满足未来或暂时不可预见的需求
 
2、通用型作业平台
对于运维执行工作而言,绝大部分的实现均是对运营环境的各类操作,在业务体量上去后,需求导致的运维操作密集度不断增加,如公司内某款游戏业务部署在近上百台主机上,一次维护要对此上百台逐一进行相应的操作,如通过人工去完成则费时费力、效率低下、且影响业务可用性。由此运维面临的问题是:




我们决定做一个通用型运维操作平台来解决这些问题,为运维人员提供一个可以批量控制和操作大规模主机的通道,运维人员在web界面中可以定制所有的运维操作,指定执行的对象,通过平台下发执行并返回结果,例如 批量shell脚本执行,大量文件传输,发布变更,数据备份等等各类场景。对于产品设计上遵循以下几点:




技术实现上,基于公司运维环境,我们对后端系统有如下需求:
良好的scale-up/scale-out,灵活扩展,支持复杂网络结构轻量级、高效的后端通信机制,成千上万的管理规模跨平台,支持windows、unix-like多平台,无需重复开发

运维门槛低,使用运维熟悉的命令操作及脚本语言即可完成一切作业,无需学习众多的特定模块或yaml语法,为此我们迅速找到了saltstack作为后端系统;前端系统涉及到的交互逻辑及业务逻辑自主研发,自研部分需实现的逻辑如下:
全网统一的一套基于web的用户界面,将所有操作逻辑通过web层来调用salt-api,web前端提供与直接登录机器操作一样的灵活性和自由度,运维人员在web上完成所有操作。对运维操作进行建模,将其分解为几大原子操作类型,一切复杂的序列化操作逻辑可通过原子的自由组合来实现,给用户提供自由灵活的操作方式基于以上逻辑,再给salt加一层应用接口,便于后续其他系统平台可直接调用或整合UJOBS以建设更高层次的平台。




后端salt的逻辑这里不赘述,由于实际网络环境的特殊性,我们采用了二层架构,即master-syndic-minion,公网与内网相结合的方式最大限度提升系统性能。

权限控制、执行对象等等与CMDB打通,可以非常灵活的适应各类业务,各种场景。

如运维人员可以在界面定义好一个版本发布作业:xx业务发布,分解整个发布流程中到每一步骤,并写脚本或调用外部接口来实现具体的操作,最终线上操作只需在页面点击开始执行就可:




当然用户自定义作业可以复用,通过传参的方式实现实例化,避免必要每次发布都建作业。
 
3、建设过程中的问题总结
 
做好产品设计及架构设计
充分解析运维内部需求,各具体平台或产品业务区分明确,产品定位一定要清晰,不要想着让微波炉具备电冰箱的功能,自动化整个体系不是一个产品能解决所有问题,需要自顶向下分层设计,产品之间相互解耦且又对外提供接口,能方便的整合与被整合。

组建运维内部开发团队
运维自动化的建设,最好是组建运维内部团队来进行开发,直接丢给业务研发部门往往做出来的东西不是运维侧想要的,因其不易理解运维侧的需求场景、痛点,操作方式等等;如实在没有运维开发团队,那就找个深度理解运维场景的PM去跟开发团队吧。

推动业务开发侧的标准化
其实产品开发团队的研发管理水平及标准化程度直接决定了运维人员爽与不爽,绝大多数研发人员往往只考虑产品功能实现,而很少关注可维护性设计,导致业务给运维人员带来很大的无价值工作量,更有甚者直接是将运维人员当成代码逻辑的一部分。让运维人员参与产品研发的可维护性设计是很多必要的,运维侧需形成可维护性标准规范,推动业务开发遵循将非常利于运维自动化的建设。

文章来源:微信订阅号"运维帮"
地址:http://dwz.cn/6c2Yqz  查看全部


作者介绍​


张延礼,现苏州蜗牛高级运维经理,就职于腾讯多年,熟悉基础架构运维及业务运维,在运维技术实施、流程及标准化体系建设、运维自动化架构设计及实现,运维支撑体系规划和执行团队管理等方面具有丰富经验。


正文


本文基于蜗牛从零开始建设运维自动化的一些实践,总结自动化建设过程中涉及的体系规划、实施路线、产品设计及架构设计等方面的经验。


一、自动化体系规划


1、自动化要解决什么问题

运维层面的工作可以归结为如下三大块
sank.png

服务管理层面主要是从运维总体支撑的角度来管理运维质量、规范、成本等等,处在运维工作的最高层;技术决策主要是为实现管理目标去制定总体方案,实施路径;技术执行则是落地的最后一环,这一环工作往往呈现零散、杂乱、重复、频繁变更的特点,承接的需求量最多,但价值体现却是较低的一环。

当前运维自动化的首要目标还是在解决”技术执行”这一层面的问题:将大量重复低价值含量的人力实施变成自动化执行,最大化地降低人力依赖,提升运维效率及业务支撑能力。

2、自动化建设思路

对于如何建设自动化运维,个人认为首要的是要有建设思路与方法论,以下供参考:
gui1.png

gui2.png


3、自动化建设总体框架

自动化的建设水平在行业内差异化还是明显的,如果处于运维自动化起步的阶段,建议是组建运维开发团队,从整体规划,基于ESB思想,分层建设,让支撑平台从业务逻辑中解耦。比如就业务运维而言,整个操作工作面无非就是对业务运营环境的各种操作、配置,以及对业务应用程序的管理,简单来说就是OS层和应用层。
osapp.png

要做自动化实施首先得有准确对称的数据,然后需要一个统一的管控平台,能并发的控制和操作远程大量主机,这解决了OS层面的操作问题,但需要管理应用层面的东西还需要与应用的研发人员规范相关接口,这对于开源组件应用而言一般不会有什么问题。因此如果是从零开始做自动化,个人认为CMDB、管控平台、业务进程管理工具这三部分是地基。在此基础之上,可以针对运维各类场景和业务逻辑去做相应的垂直功能系统,再上一层,可以使用流程引擎之类的组件来实现业务运维流程的纵向整合,最终实现运维各类业务流程的纯线上自动化。
 


二、自动化实施路线


业务发展往往带来运维块面的应用形态、运营环境、、部署结构、基础架构规模及组织流程等多样化、复杂化;如无统一的标准及规范,运维支撑工作将异常混乱,自动化也难以实施。因此自动化有一个基础:标准化,标准化是将一切杂乱无章、千头万绪的运维工作变得有序及可控,流程规范与执行标准的落地是自动化的一大基石。结合我司实际运维现状及需求,基于以上自动化体系建设思路,前期规划的建设线路如下
auto.png

1、信息的标准化管理:CMDB

在运维工作中,信息的管理往往是难点,运维侧涉及的信息太多,且也与其他职能部门多点关联,信息流转于整个流程的多个职能部门、多个环节
cmdb.png

中小型企业中,手工线下记录的方式居多,线上线下信息一致性保持、内部外部信息传递、共享、同步等均存在较大问题,经常出现:
  • 线下表格有,实际位置找不到,或信息不对称
  • 不清楚设备状态,不清楚哪个业务在使用
  • 一个部门做了变更,其他部门不知情
  • 变更一条上联链路,无法及时判断影响范围及程度


根本问题及给运维工作带来的痛点如下
td.png

因此我们引入一套基于ITIL体系的配置管理数据库CMDB,旨在为运维团队建立线下与线上一致性的基础信息库,作为运维标准化、自动化、平台化的基础输入。重点解决IT基础架构信息化以及业务配置信息线上化,系统主要功能模块如下图:
cmdbmodle.png

系统本身主要功能可归结为2个方面:基础架构信息管理、业务信息管理。此两大方面的功能使用者为web-user,除此之外,对于API-user,此系统提供了一整套接口界面与其它任何需要信息的系统进行对接,这也是设计初衷,将信息从一个统一的、标准的源头输出给各垂直或水平业务功能系统,而运维需要做的就是维护CMDB本身基础数据的完整性、准确性,CMDB与各流程系统、垂直功能系统结合之后实现信息数据一处变更,处处同步。
list.png

如上为CMDB业务管理模型,作为运维统一信息库,与其他系统平台数据互通,深度整合后实现信息的管理、维护、展现全部线上化。

产品设计过程中涉及的几个关键点:
  • CI及属性需要贴合实际环境,同时考虑长期的运维规划
  • 管理的不仅是CI及其属性,还有CI之间的关系,状态流转机制等等
  • 充分考虑扩展性及灵活性,如引入自定义属性来满足未来或暂时不可预见的需求

 
2、通用型作业平台
对于运维执行工作而言,绝大部分的实现均是对运营环境的各类操作,在业务体量上去后,需求导致的运维操作密集度不断增加,如公司内某款游戏业务部署在近上百台主机上,一次维护要对此上百台逐一进行相应的操作,如通过人工去完成则费时费力、效率低下、且影响业务可用性。由此运维面临的问题是:
problem.png

我们决定做一个通用型运维操作平台来解决这些问题,为运维人员提供一个可以批量控制和操作大规模主机的通道,运维人员在web界面中可以定制所有的运维操作,指定执行的对象,通过平台下发执行并返回结果,例如 批量shell脚本执行,大量文件传输,发布变更,数据备份等等各类场景。对于产品设计上遵循以下几点:
ci.png

技术实现上,基于公司运维环境,我们对后端系统有如下需求:
  • 良好的scale-up/scale-out,灵活扩展,支持复杂网络结构
  • 轻量级、高效的后端通信机制,成千上万的管理规模
  • 跨平台,支持windows、unix-like多平台,无需重复开发


运维门槛低,使用运维熟悉的命令操作及脚本语言即可完成一切作业,无需学习众多的特定模块或yaml语法,为此我们迅速找到了saltstack作为后端系统;前端系统涉及到的交互逻辑及业务逻辑自主研发,自研部分需实现的逻辑如下:
  • 全网统一的一套基于web的用户界面,将所有操作逻辑通过web层来调用salt-api,web前端提供与直接登录机器操作一样的灵活性和自由度,运维人员在web上完成所有操作。
  • 对运维操作进行建模,将其分解为几大原子操作类型,一切复杂的序列化操作逻辑可通过原子的自由组合来实现,给用户提供自由灵活的操作方式
  • 基于以上逻辑,再给salt加一层应用接口,便于后续其他系统平台可直接调用或整合UJOBS以建设更高层次的平台。

archflow.png

后端salt的逻辑这里不赘述,由于实际网络环境的特殊性,我们采用了二层架构,即master-syndic-minion,公网与内网相结合的方式最大限度提升系统性能。

权限控制、执行对象等等与CMDB打通,可以非常灵活的适应各类业务,各种场景。

如运维人员可以在界面定义好一个版本发布作业:xx业务发布,分解整个发布流程中到每一步骤,并写脚本或调用外部接口来实现具体的操作,最终线上操作只需在页面点击开始执行就可:
scripts.png

当然用户自定义作业可以复用,通过传参的方式实现实例化,避免必要每次发布都建作业。
 
3、建设过程中的问题总结
 
做好产品设计及架构设计
充分解析运维内部需求,各具体平台或产品业务区分明确,产品定位一定要清晰,不要想着让微波炉具备电冰箱的功能,自动化整个体系不是一个产品能解决所有问题,需要自顶向下分层设计,产品之间相互解耦且又对外提供接口,能方便的整合与被整合。

组建运维内部开发团队
运维自动化的建设,最好是组建运维内部团队来进行开发,直接丢给业务研发部门往往做出来的东西不是运维侧想要的,因其不易理解运维侧的需求场景、痛点,操作方式等等;如实在没有运维开发团队,那就找个深度理解运维场景的PM去跟开发团队吧。

推动业务开发侧的标准化
其实产品开发团队的研发管理水平及标准化程度直接决定了运维人员爽与不爽,绝大多数研发人员往往只考虑产品功能实现,而很少关注可维护性设计,导致业务给运维人员带来很大的无价值工作量,更有甚者直接是将运维人员当成代码逻辑的一部分。让运维人员参与产品研发的可维护性设计是很多必要的,运维侧需形成可维护性标准规范,推动业务开发遵循将非常利于运维自动化的建设。


文章来源:微信订阅号"运维帮"
地址:http://dwz.cn/6c2Yqz 


人脸识别引爆智能黑科技

互联网资讯OT学习平台 发表了文章 • 0 个评论 • 155 次浏览 • 2017-06-28 16:12 • 来自相关话题

不得不说,AlphaGo再一次引爆人们对于人工智能的认知。在智能化引领发展的阶段中,人工智能技术正在越来越广泛地应用在移动互联网领域,越来越多的人工智能技术更多地参与到移动互联网发展中来。
说到人工智能,不得不提人脸识别技术,今天小编要跟大家分享的就是这项引爆市场的“黑科技”。
都说这是一个刷脸的时代,是的“刷脸”的时代真的来了。
6月30日14:00“身边的黑科技,人脸识别的场景化应用”直播活动即将在OTpub平台开启,与您见证万能的“刷脸时代”,我们从人工智能平台到人脸识别技术,完整的介绍人脸识别在我们身边的场景化应用。

直播预约地址:http://www.otpub.com/home/live/baoming.html
  查看全部
不得不说,AlphaGo再一次引爆人们对于人工智能的认知。在智能化引领发展的阶段中,人工智能技术正在越来越广泛地应用在移动互联网领域,越来越多的人工智能技术更多地参与到移动互联网发展中来。
说到人工智能,不得不提人脸识别技术,今天小编要跟大家分享的就是这项引爆市场的“黑科技”。
都说这是一个刷脸的时代,是的“刷脸”的时代真的来了。
6月30日14:00“身边的黑科技,人脸识别的场景化应用”直播活动即将在OTpub平台开启,与您见证万能的“刷脸时代”,我们从人工智能平台到人脸识别技术,完整的介绍人脸识别在我们身边的场景化应用。

直播预约地址:http://www.otpub.com/home/live/baoming.html
 

org.apache.hadoop.hbase.NotServingRegionException: Region

运维技术采菊篱下 回复了问题 • 2 人关注 • 1 个回复 • 352 次浏览 • 2017-06-27 17:44 • 来自相关话题

利用ITIL建立高效能IT服务

运维技术Something 发表了文章 • 0 个评论 • 187 次浏览 • 2017-06-27 00:03 • 来自相关话题

急需转型的企业IT服务
 
在企业里,IT部门一般是作为服务部门而存在,大部分企业IT部门是以提供基础架构服务和通用IT服务为主,如何提高系统的可用性和提升响应速度就变成IT服务管理内容的核心。
 
目前,国内企业的IT管理经历了系统管理、网络管理之后,现在正逐渐向IT服务管理阶段过渡。但许多企业IT服务远没有实现主动式管理,依然停留在服务支持管理的层面上。
 

IT服务管理的必要理念

目前,IT已成为许多业务流程中必不可少的部分,IT服务地位的提升意味着IT要承担更大的责任。一方面,IT必须满足业务流程不断变化的需求;另一方面,IT服务的相关成本也要随之不断降低。但是我们看见,IT在这两个方面都没有做出令人满意的答案。
 

IT服务管理的根本目标

IT服务管理的根本目标有三个:
第一,以用户为中心提供IT服务第二,提供高质量、低成本的服务第三,提供可量化计价的服务。
如果简单说明,IT服务管理可概括为"二次转换",第一次是"梳理",第二次是"打包"。
 
首先,将纵向的各种IT技术管理工作(传统IT管理的重点),如服务器管理、网络管理和系统软件管理等进行“梳理”,形成典型的流程,这是第一次转换。这主要是供IT部门内部使用,用户对此并不感兴趣。但是,仅是这些流程还不能保证服务质量或客户满意,还需将流程按需”打包“成特定的IT服务,提供给用户,这是第二次转换。
 
简单来说,第一次转换是将IT技术管理转化为IT流程管理,第二次转换是将IT流程管理转化为IT服务管理。
 
从用户的角度来说, IT只是提高运营业务效率的一种工具,用户不需要对IT有太多的了解,用户需要的是IT所实现的功能。用户和IT部门之间的交流,使用的是”商业语言“而不是”技术语言“,IT部门需要向用户提供的是 IT服务。
 
为了能够灵活、及时和有效地提供IT服务,并保证服务质量、理化计算有关成本,IT服务就必须事先对服务进行一定程度上的分类和打包。




 

ITIL高效解决IT服务问题

ITIL的全名是IT基础设施库,简单的说,就是一套针对各行业的IT服务管理标准库。 ITIL结合流程、人员和技术三要素,为企业的IT构建一套从计划、研发、实施到运行维护的最佳实践方案。
 
一套协同流程是ITIL框架的核心,它通过服务级别协议(SLA)来保证IT服务的质量。它融合了系统管理、网络管理、系统开发管理等管理活动,以及关于变更管理、资产管理、问题管理等许多流程的理论和实践。
 
ITIL提供的是一种流程处理的IT服务管理方案,它通过工作单形成IT服务流程闭环,以确保整个IT服务过程有据可查。同时,ITIL还制定了明确的服务流程规范,员工需要严格按照流程进行操作。ITIL不断高效地解决IT服务问题,提高IT部门服务效率,以此使用户感到满意,从而达到优质的服务。ITIL是一个很好的手段, 它简化了IT服务管理,变得优质与高效。




 建立高效能IT服务告别危机时代
 

清晰IT服务质量SLA目标

IT服务的质量目标是各方对IT服务管理的期望,它是业务部门和IT部门双方根据业务目标制定的。一个好的IT服务目标要有这几个方面的作用:明确持续服务管理,改进活动的方向;促使有关人员朝正确方向采取行动;协调不同人员的多个行动;简要有力地说明高层管理者的意图。
 

分析IT服务管理的现状

评估企业目前的IT服务管理现状和成熟度级别是核心步骤之一。ITIL自我评估手册提供了一个全面的评估方法。因为,用户的需求和IT服务现状是决定所提供IT服务的基础,而服务流程、职能、技能、企业结构和文化等则是根据用户需求和所提供的服务类型决定的。
 
分析和评价的现状要从这几个方面考虑:IT部门是否理解业务战略和方向、业务面临的问题;IT部门是否理解技术对业务的作用;IT部门和业务部门对当前IT服务成熟度和IT服务质量的看法是否一致;IT部门是否清楚了解利益相关者的需求; IT部门是否清楚了解不改进IT服务质量的后果等。
 

制定高效的IT服务管理方案

管理方案包括两个方面,一是选用何种服务管理工具,二是进行教育、培训、文化变革。经验表明,成功的IT服务管理实施,更多的是要依靠后者。
 
这一阶段的IT服务工作包括以下几点:
文件和制度制定:主要有IT制度文件准备、编制用户手册、工作记录手册及IT管理人员工作指南等。
员工培训工作:对与IT系统相关的每位员工都要进行适当的培训,一方面是对IT人员要加强业务知识技能的培训,理解业务原理及本质

对业务人员要加强IT知识技能的培训,通过培训可以使IT业务人员都能理解IT服务管理各流程的基本原则。
 
关键成功因素和绩效指标决定IT服务考核标准
 
检查IT服务效果是保障IT服务高质量的关键过程之一。这需要事先明确定义一系列可测量的目标和指标,然后在每个时期内进行评审,检查IT服务目标是否达到,服务质量是否得到提高。否则,就需要提出和采取补救和改进措施来实现预期目标。

因此,可以先为每个IT服务确定和定义一些关键成功因素(CSF)和关键绩效指标 (KPI)。关键成功因素是使每个IT服务达到高质量所需达到的最低要素,关键绩效指标是测量每个关键成功因素是否实现的具体数量指标。关键成功因素和关键绩效指标建立了每个IT服务的绩效考核基准。
 

总结

俗语说:创业难,守业更难。逆水行舟,不进则退。先前的IT服务活动已经达到目标,继而就要巩固取得的成果并采取进一步的改进行动。我们必须明白一个道理,提高IT服务质量是一个永无止境的持续过程。

摩卡业务服务管理(Mocha BSM)能够监控基础设施和应用,也能够将复杂的IT设施转化为简单的业务视图,它帮助我们从IT服务的角度出发,保障IT部门提供稳定可靠的服务。
阅读分享:http://www.sootoo.com/content/47944.shtml  查看全部
急需转型的企业IT服务
 
在企业里,IT部门一般是作为服务部门而存在,大部分企业IT部门是以提供基础架构服务和通用IT服务为主,如何提高系统的可用性和提升响应速度就变成IT服务管理内容的核心。
 
目前,国内企业的IT管理经历了系统管理、网络管理之后,现在正逐渐向IT服务管理阶段过渡。但许多企业IT服务远没有实现主动式管理,依然停留在服务支持管理的层面上。
 


IT服务管理的必要理念


目前,IT已成为许多业务流程中必不可少的部分,IT服务地位的提升意味着IT要承担更大的责任。一方面,IT必须满足业务流程不断变化的需求;另一方面,IT服务的相关成本也要随之不断降低。但是我们看见,IT在这两个方面都没有做出令人满意的答案。
 


IT服务管理的根本目标


IT服务管理的根本目标有三个:
  • 第一,以用户为中心提供IT服务
  • 第二,提供高质量、低成本的服务
  • 第三,提供可量化计价的服务。

如果简单说明,IT服务管理可概括为"二次转换",第一次是"梳理",第二次是"打包"。
 
首先,将纵向的各种IT技术管理工作(传统IT管理的重点),如服务器管理、网络管理和系统软件管理等进行“梳理”,形成典型的流程,这是第一次转换。这主要是供IT部门内部使用,用户对此并不感兴趣。但是,仅是这些流程还不能保证服务质量或客户满意,还需将流程按需”打包“成特定的IT服务,提供给用户,这是第二次转换。
 
简单来说,第一次转换是将IT技术管理转化为IT流程管理,第二次转换是将IT流程管理转化为IT服务管理。
 
从用户的角度来说, IT只是提高运营业务效率的一种工具,用户不需要对IT有太多的了解,用户需要的是IT所实现的功能。用户和IT部门之间的交流,使用的是”商业语言“而不是”技术语言“,IT部门需要向用户提供的是 IT服务。
 
为了能够灵活、及时和有效地提供IT服务,并保证服务质量、理化计算有关成本,IT服务就必须事先对服务进行一定程度上的分类和打包。
cmdb.png

 


ITIL高效解决IT服务问题


ITIL的全名是IT基础设施库,简单的说,就是一套针对各行业的IT服务管理标准库。 ITIL结合流程、人员和技术三要素,为企业的IT构建一套从计划、研发、实施到运行维护的最佳实践方案。
 
一套协同流程是ITIL框架的核心,它通过服务级别协议(SLA)来保证IT服务的质量。它融合了系统管理、网络管理、系统开发管理等管理活动,以及关于变更管理、资产管理、问题管理等许多流程的理论和实践。
 
ITIL提供的是一种流程处理的IT服务管理方案,它通过工作单形成IT服务流程闭环,以确保整个IT服务过程有据可查。同时,ITIL还制定了明确的服务流程规范,员工需要严格按照流程进行操作。ITIL不断高效地解决IT服务问题,提高IT部门服务效率,以此使用户感到满意,从而达到优质的服务。ITIL是一个很好的手段, 它简化了IT服务管理,变得优质与高效。
itil.png

 建立高效能IT服务告别危机时代
 


清晰IT服务质量SLA目标


IT服务的质量目标是各方对IT服务管理的期望,它是业务部门和IT部门双方根据业务目标制定的。一个好的IT服务目标要有这几个方面的作用:明确持续服务管理,改进活动的方向;促使有关人员朝正确方向采取行动;协调不同人员的多个行动;简要有力地说明高层管理者的意图。
 


分析IT服务管理的现状


评估企业目前的IT服务管理现状和成熟度级别是核心步骤之一。ITIL自我评估手册提供了一个全面的评估方法。因为,用户的需求和IT服务现状是决定所提供IT服务的基础,而服务流程、职能、技能、企业结构和文化等则是根据用户需求和所提供的服务类型决定的。
 
分析和评价的现状要从这几个方面考虑:IT部门是否理解业务战略和方向、业务面临的问题;IT部门是否理解技术对业务的作用;IT部门和业务部门对当前IT服务成熟度和IT服务质量的看法是否一致;IT部门是否清楚了解利益相关者的需求; IT部门是否清楚了解不改进IT服务质量的后果等。
 


制定高效的IT服务管理方案


管理方案包括两个方面,一是选用何种服务管理工具,二是进行教育、培训、文化变革。经验表明,成功的IT服务管理实施,更多的是要依靠后者。
 
这一阶段的IT服务工作包括以下几点:
文件和制度制定:主要有IT制度文件准备、编制用户手册、工作记录手册及IT管理人员工作指南等。
员工培训工作:对与IT系统相关的每位员工都要进行适当的培训,一方面是对IT人员要加强业务知识技能的培训,理解业务原理及本质

对业务人员要加强IT知识技能的培训,通过培训可以使IT业务人员都能理解IT服务管理各流程的基本原则。
 
关键成功因素和绩效指标决定IT服务考核标准
 
检查IT服务效果是保障IT服务高质量的关键过程之一。这需要事先明确定义一系列可测量的目标和指标,然后在每个时期内进行评审,检查IT服务目标是否达到,服务质量是否得到提高。否则,就需要提出和采取补救和改进措施来实现预期目标。

因此,可以先为每个IT服务确定和定义一些关键成功因素(CSF)和关键绩效指标 (KPI)。关键成功因素是使每个IT服务达到高质量所需达到的最低要素,关键绩效指标是测量每个关键成功因素是否实现的具体数量指标。关键成功因素和关键绩效指标建立了每个IT服务的绩效考核基准。
 


总结


俗语说:创业难,守业更难。逆水行舟,不进则退。先前的IT服务活动已经达到目标,继而就要巩固取得的成果并采取进一步的改进行动。我们必须明白一个道理,提高IT服务质量是一个永无止境的持续过程。

摩卡业务服务管理(Mocha BSM)能够监控基础设施和应用,也能够将复杂的IT设施转化为简单的业务视图,它帮助我们从IT服务的角度出发,保障IT部门提供稳定可靠的服务。
阅读分享:http://www.sootoo.com/content/47944.shtml 

腾讯发布云实验室、开源开发工具,助力开发者连接AI未来

大数据/云计算图灵之歌 发表了文章 • 0 个评论 • 215 次浏览 • 2017-06-26 12:16 • 来自相关话题

当人工智能不再遥不可及,用户像“插上电”一样“接入云”,开发者再次迎来新一波的机遇。在云+未来峰会上,腾讯云正式推出“智能云”。而在6月22日的开发者专场上,腾讯发布面向开发者的云实验室,让未来AI技术唾手可得。

同时预告,针对AI领域,即将开源Angel、NCNN等项目,并表示支撑3000多家企业的腾讯高效开发工具TAPD将在腾讯云开放,以及明年初开放支持移动APP开发的持续集成云平台。
 
现场,腾讯云揭秘内测中的CDN边缘计算,可一次部署全球执行,应用在多个场景。同时腾讯云欢迎开发者参与到Serverless的优化中。以上分享进一步满足人工智能、云计算下开发者的需求(即希望使用更敏捷的开发、更敏捷的基础服务等),降低AI使用门槛,加速AI的落地。
 
著名Angular框架推广者大漠穷秋做了开场演讲,分享互联网的四波浪潮,即桌面互联网、移动互联网时代、云计算时代和人工智能时代。并表示,在桌面互联网时代,开发者或者初创企业想去做一件事情很困难,人工智能时代则不一样,开发者依然有发挥空间,这不只是巨头的红利时代,市场需求背后隐藏的未知领域需要各行业共同开拓。


陈子舜:腾讯云实验室发布,未来技术唾手可得

 

腾讯云技术总监陈子舜分享,“我的一个朋友和我分享他的见闻,‘一个优秀云计算工程师有5家企业在争抢,他们的平均薪资比传统IT人员高出40%’。”他表示,这是一个很好的时代,腾讯云希望将自身拥有的大数据、AI等前沿技术,向开发者开放,让未来技术变得唾手可得。

为此,腾讯云正式发布实验室,为开发者提供从学习工具、实验内容到经验分享的闭环服务,开发者可以获得一站式的沉浸式学习环境,使用微信扫码即可免费领取实验机器,直接采用真实的环境作为实验基础。同时,腾讯云还引入社区+实验室的服务模式,让开发者在技术社区提问或分享经验教程,帮助更多开发者解决问题。

按照腾讯云在开发者社区的计划,不仅为开发者提供开发者实验室,还会提供开源技术、开发工具和文档、线下活动、培训和认证等各类服务。


许勇:腾讯开源在路上,工程师热情参与

 

腾讯研发管理部总监许勇揭秘了腾讯开源之路,从腾讯人的角度,解读腾讯开源的技术。目前,腾讯已经开源的项目有RapidJSON、Tinker、WEUI、Mars、MSEC、Libco、GT、Tars、WCDB等,针对AI领域,腾讯还即将开源AI框架Angel、NCNN等项目,以满足高性能机器学习、天天P图及其他不同应用场景的需求。许勇表示,相比于国外成熟的开源社区,腾讯还在追赶阶段,不过,腾讯正被开源的力量唤醒,和开发者一起把中国的开源做得更好。

许勇致力于腾讯内部开源社区建设及外部开源项目管理,他分享到,腾讯内部开源社区提供了从轻量到重度参与开源的各种形式,可以简简单单的分享片段,也可以分享自己的开源项目,以实现更大的技术价值,建立自己的技术影响力。截止2016年,腾讯内部的开源组件达到了1600个以上,目前的日活跃用户数量在3000以上。

同时腾讯云作为腾讯开源的一支重要力量,积极参与开源社区,最近2个月加入3个开源组织,首先在5月加入CNCF基金会和Linux基金会,在容器服务和KVM虚拟化方面贡献自己的力量,同时于6月加入MariaDB基金会。去年腾讯也加入了Alloyteam基金会,腾讯同时也在运营独立开源社区OpenDaylight,在外界有不错的口碑,并汇聚了一群热心的开发者。腾讯也在积极贡献一些开源项目,包括docker,维护Hadoop、patch的提交等等,越来越多的腾讯工程师热情参与到开源中来。


陆莹:开放腾讯2万多人使用的敏捷研发平台TAPD 

 

面对复杂多变、快速迭代的开发环境,腾讯拥有2万多人的研发团队,同时进行3000多个项目,孕育400多个产品的背景下,如何进行高效合作?

腾讯产品专家陆莹的答案是腾讯敏捷研发平台TAPD,20个模块可以灵活应用,可以自由搭配适合自己研发过程的流程,赋予了团队更多的可能。去年6月份TAPD开始提供给腾讯投资的一些公司和腾讯云部分用户使用,到2017年5月,TAPD已经全面开放注册,目前成功支撑3000多家企业进行敏捷研发协作。 

她表示,将和腾讯云一起将TAPD开放给更多致力敏捷研发的伙伴们,“我们将会分享腾讯近十年的研发协作案例和经验,让腾讯云生态上的小伙伴们都能进行敏捷研发,让协作更敏捷。”


魏文强:腾讯将提供持续集成云平台,开放游戏经验



腾讯互娱持续集成平台负责人魏文强从Why、How两个角度带来了持续集成云平台上的一些思考。他表示,现在竞争越来越激烈,特别是游戏行业,经常是你问产品下一步要做什么事情,可能只有一个大概的方向,但具体做什么不知道,所以要求开发迭代越来越快,周期越来越短。

这样会导致什么问题?软件开发不是在最后产品部署阶段才有云上需求,而是贯穿整个生命周期,从软件开发初始阶段就要考虑云怎么部署。在云上提供集成平台服务,是必做的环节。此外,代码托管、持续集成、项目管理、工具链等云平台逐步发展,带来了持续集成平台的需求。

关于如何做,魏文强从突出自己特色、安全和稳定、构建速度以及最佳实践和灵活替换四个角度作了总结。他表示,在2018年初计划提供优先支持移动APP开发,特别是针对手游做特定优化的持续集成云平台,2018年年中对docker和windows进行支持。
 

余子军:揭秘腾讯云CDN边缘计算,解决多个关键问题

 

腾讯CDN技术总监余子军揭秘内测中的腾讯云CDN边缘计算,这是适应大数据、AI时代对网络加速需求而诞生的服务。余子军现场举例说到,腾讯的用户到腾讯的CDN平均距离是170多公里,如果采用光缆,成本非常昂贵的,而采用CDN可以很好地解决这个问题。

腾讯云CDN边缘计算可以在离用户更近的地方进行计算,一次部署全球执行,更快速更安全。还可以应用在多个场景,灵活敏捷低成本地解决关键问题:
•    图片自适应的场景:根据终端类型、网络状态和请求字段等决策编码方案,支持图片缩放、裁剪、水印等。
•    防盗链和权限控制的场景:可灵活控制全部禁止、部分禁止、限速的结果;还可以用在灰度测试中,新版本发布的时候。
•    控制发布进度的场景:灵活决策新版本的用户范围、设置Cookie标记用户和上报访问日志。


周军:腾讯云CAM应用,如何灵活保障用户信息的安全


 
腾讯云产品总监周军从腾讯云CAM应用案例,分享腾讯如何通过对用户认知、权限验证以及日志审计等各个环节的把控,为用户保障信息的安全、无泄漏。

“简单来说,在用户认证访问时,我们通常先问你是谁,问你想干什么。这些东西验证下来就让账户体系变得很复杂,这就是我们常说的鱼和熊掌不可兼得,安全与便捷也是一样的。”周军说,“如果没有安全问题,很多的服务成本可以去掉,不考虑黑客问题,不考虑别人盗用数据问题,安全是负成本的问题,但是要安全就很可能不便捷。”

为了让账户既安全又便捷,腾讯做了几件事情,第一个事情是账户关联,所有账户体系都支持。第二是认证体系里二次验证变得非常灵活,用户可以采用任何一种方式来验证。周军还提到,腾讯云、企业邮箱、企业微信都做到了账户互通,用户可以用一个企业微信账户体系来授权和管理腾讯云的所有东西。


黄文俊: Serverless让开发者抽离繁重运维

 

腾讯云技术专家黄文俊打了一个比方,一个基因数据公司,利用基因数据进行相应的数据分析,需要面对有各种各样的分析函数,不同的执行流程。为了解决这个问题,首先要准备相应的服务器,让用户提交数据,上传数据;每次提交来做相应执行,再用另外一个服务器接受这些任务,处理这些数据;真正处理数据的程序还要进行开发部署,完成了开发部署还要去规划,究竟要用多大的服务器,多少台服务器来准备,后期服务器的运维又将多么复杂,这是每一个开发者需要烦恼的问题。

“我们能否有一个更好的解决方法?把我们从繁重的运维上抽离出来?”黄文俊说,无服务器计算可以很好地解决这个问题,“这是一个很新的概念,无服务器是不是就没有服务器了?是不是真的Serverless了?不,Serverless不是说没有服务器,而是开发人员和运维人员不需要再考虑服务器,不需要再放太多的精力在上面,而是交给云。”

用户只需要上传代码即可以最便捷的方式使用腾讯云高效稳定的全球基础设施,并可实现毫秒级的弹性伸缩,服务成本低廉,代码按需运行,空闲时不收费。经测试,按调用次数和运行时间付费,在每个月请求不足百万时,使用无服务器云函数比使用多台云主机搭建集群的成本减少约70%,适用于云计算和AI时代下需要低门槛进入技术,以及体验佳的要求。

他提到,这里面有两个核心,一个是Function as a Service,以函数的形式委托到云上来,由云来做顶层管理。还有一个就是Backend as a Service,比如说对象存储、数据库、消息队列或者云的缓存。其中Function as a Service的核心就是腾讯云最新推出的产品——Serverless Cloud Function。目前腾讯云的Serverless架构在内测阶段,非常欢迎开发者积极参与到Serverless无服务器的优化当中,共筑最佳运维环境。

英特尔刘斌:FPGA异构计算的价值在计算力、灵活性、未来可扩展性

 

英特尔可编程解决方案事业部亚太区计算业务总经理刘斌带来FPGA异构计算前沿的分享,“我们看到一个问题,今天谈人工智能,特别是谈更多智能化事物的时候,可能会遇到需要解决感知的问题,需要解决决策的问题,需要解决执行的问题。异构的好处就是,在需要解决多种问题的时候,在计算力、效率灵活性、未来可扩展性上是它的价值所在。”

分享中,刘斌还讲述了异构计算出现的三个推动力,一是强计算、高性能计算的需求;二是数据的存取、访问、缓存的需求;三是成本的需求。他表示,异构计算是为解决问题复杂度而催生出的新技术。

异构的计算是解决现在所出现问题的主要结构,可以提供不同的价值,如何构建异构计算系统并提升开发者的生产力是目前的主要挑战,异构的结构下面是不是还存在其他的东西,是需要发展的方向。未来,异构性是长期存在的,怎么样在高阶上实现开发系统的融合,是短期内需要思考的问题。
  查看全部
当人工智能不再遥不可及,用户像“插上电”一样“接入云”,开发者再次迎来新一波的机遇。在云+未来峰会上,腾讯云正式推出“智能云”。而在6月22日的开发者专场上,腾讯发布面向开发者的云实验室,让未来AI技术唾手可得。

同时预告,针对AI领域,即将开源Angel、NCNN等项目,并表示支撑3000多家企业的腾讯高效开发工具TAPD将在腾讯云开放,以及明年初开放支持移动APP开发的持续集成云平台。
 
现场,腾讯云揭秘内测中的CDN边缘计算,可一次部署全球执行,应用在多个场景。同时腾讯云欢迎开发者参与到Serverless的优化中。以上分享进一步满足人工智能、云计算下开发者的需求(即希望使用更敏捷的开发、更敏捷的基础服务等),降低AI使用门槛,加速AI的落地。
 
著名Angular框架推广者大漠穷秋做了开场演讲,分享互联网的四波浪潮,即桌面互联网、移动互联网时代、云计算时代和人工智能时代。并表示,在桌面互联网时代,开发者或者初创企业想去做一件事情很困难,人工智能时代则不一样,开发者依然有发挥空间,这不只是巨头的红利时代,市场需求背后隐藏的未知领域需要各行业共同开拓。


陈子舜:腾讯云实验室发布,未来技术唾手可得

 

腾讯云技术总监陈子舜分享,“我的一个朋友和我分享他的见闻,‘一个优秀云计算工程师有5家企业在争抢,他们的平均薪资比传统IT人员高出40%’。”他表示,这是一个很好的时代,腾讯云希望将自身拥有的大数据、AI等前沿技术,向开发者开放,让未来技术变得唾手可得。

为此,腾讯云正式发布实验室,为开发者提供从学习工具、实验内容到经验分享的闭环服务,开发者可以获得一站式的沉浸式学习环境,使用微信扫码即可免费领取实验机器,直接采用真实的环境作为实验基础。同时,腾讯云还引入社区+实验室的服务模式,让开发者在技术社区提问或分享经验教程,帮助更多开发者解决问题。

按照腾讯云在开发者社区的计划,不仅为开发者提供开发者实验室,还会提供开源技术、开发工具和文档、线下活动、培训和认证等各类服务。


许勇:腾讯开源在路上,工程师热情参与

 

腾讯研发管理部总监许勇揭秘了腾讯开源之路,从腾讯人的角度,解读腾讯开源的技术。目前,腾讯已经开源的项目有RapidJSON、Tinker、WEUI、Mars、MSEC、Libco、GT、Tars、WCDB等,针对AI领域,腾讯还即将开源AI框架Angel、NCNN等项目,以满足高性能机器学习、天天P图及其他不同应用场景的需求。许勇表示,相比于国外成熟的开源社区,腾讯还在追赶阶段,不过,腾讯正被开源的力量唤醒,和开发者一起把中国的开源做得更好。

许勇致力于腾讯内部开源社区建设及外部开源项目管理,他分享到,腾讯内部开源社区提供了从轻量到重度参与开源的各种形式,可以简简单单的分享片段,也可以分享自己的开源项目,以实现更大的技术价值,建立自己的技术影响力。截止2016年,腾讯内部的开源组件达到了1600个以上,目前的日活跃用户数量在3000以上。

同时腾讯云作为腾讯开源的一支重要力量,积极参与开源社区,最近2个月加入3个开源组织,首先在5月加入CNCF基金会和Linux基金会,在容器服务和KVM虚拟化方面贡献自己的力量,同时于6月加入MariaDB基金会。去年腾讯也加入了Alloyteam基金会,腾讯同时也在运营独立开源社区OpenDaylight,在外界有不错的口碑,并汇聚了一群热心的开发者。腾讯也在积极贡献一些开源项目,包括docker,维护Hadoop、patch的提交等等,越来越多的腾讯工程师热情参与到开源中来。


陆莹:开放腾讯2万多人使用的敏捷研发平台TAPD 

 

面对复杂多变、快速迭代的开发环境,腾讯拥有2万多人的研发团队,同时进行3000多个项目,孕育400多个产品的背景下,如何进行高效合作?

腾讯产品专家陆莹的答案是腾讯敏捷研发平台TAPD,20个模块可以灵活应用,可以自由搭配适合自己研发过程的流程,赋予了团队更多的可能。去年6月份TAPD开始提供给腾讯投资的一些公司和腾讯云部分用户使用,到2017年5月,TAPD已经全面开放注册,目前成功支撑3000多家企业进行敏捷研发协作。 

她表示,将和腾讯云一起将TAPD开放给更多致力敏捷研发的伙伴们,“我们将会分享腾讯近十年的研发协作案例和经验,让腾讯云生态上的小伙伴们都能进行敏捷研发,让协作更敏捷。”


魏文强:腾讯将提供持续集成云平台,开放游戏经验



腾讯互娱持续集成平台负责人魏文强从Why、How两个角度带来了持续集成云平台上的一些思考。他表示,现在竞争越来越激烈,特别是游戏行业,经常是你问产品下一步要做什么事情,可能只有一个大概的方向,但具体做什么不知道,所以要求开发迭代越来越快,周期越来越短。

这样会导致什么问题?软件开发不是在最后产品部署阶段才有云上需求,而是贯穿整个生命周期,从软件开发初始阶段就要考虑云怎么部署。在云上提供集成平台服务,是必做的环节。此外,代码托管、持续集成、项目管理、工具链等云平台逐步发展,带来了持续集成平台的需求。

关于如何做,魏文强从突出自己特色、安全和稳定、构建速度以及最佳实践和灵活替换四个角度作了总结。他表示,在2018年初计划提供优先支持移动APP开发,特别是针对手游做特定优化的持续集成云平台,2018年年中对docker和windows进行支持。
 

余子军:揭秘腾讯云CDN边缘计算,解决多个关键问题

 

腾讯CDN技术总监余子军揭秘内测中的腾讯云CDN边缘计算,这是适应大数据、AI时代对网络加速需求而诞生的服务。余子军现场举例说到,腾讯的用户到腾讯的CDN平均距离是170多公里,如果采用光缆,成本非常昂贵的,而采用CDN可以很好地解决这个问题。

腾讯云CDN边缘计算可以在离用户更近的地方进行计算,一次部署全球执行,更快速更安全。还可以应用在多个场景,灵活敏捷低成本地解决关键问题:
•    图片自适应的场景:根据终端类型、网络状态和请求字段等决策编码方案,支持图片缩放、裁剪、水印等。
•    防盗链和权限控制的场景:可灵活控制全部禁止、部分禁止、限速的结果;还可以用在灰度测试中,新版本发布的时候。
•    控制发布进度的场景:灵活决策新版本的用户范围、设置Cookie标记用户和上报访问日志。


周军:腾讯云CAM应用,如何灵活保障用户信息的安全


 
腾讯云产品总监周军从腾讯云CAM应用案例,分享腾讯如何通过对用户认知、权限验证以及日志审计等各个环节的把控,为用户保障信息的安全、无泄漏。

“简单来说,在用户认证访问时,我们通常先问你是谁,问你想干什么。这些东西验证下来就让账户体系变得很复杂,这就是我们常说的鱼和熊掌不可兼得,安全与便捷也是一样的。”周军说,“如果没有安全问题,很多的服务成本可以去掉,不考虑黑客问题,不考虑别人盗用数据问题,安全是负成本的问题,但是要安全就很可能不便捷。”

为了让账户既安全又便捷,腾讯做了几件事情,第一个事情是账户关联,所有账户体系都支持。第二是认证体系里二次验证变得非常灵活,用户可以采用任何一种方式来验证。周军还提到,腾讯云、企业邮箱、企业微信都做到了账户互通,用户可以用一个企业微信账户体系来授权和管理腾讯云的所有东西。


黄文俊: Serverless让开发者抽离繁重运维

 

腾讯云技术专家黄文俊打了一个比方,一个基因数据公司,利用基因数据进行相应的数据分析,需要面对有各种各样的分析函数,不同的执行流程。为了解决这个问题,首先要准备相应的服务器,让用户提交数据,上传数据;每次提交来做相应执行,再用另外一个服务器接受这些任务,处理这些数据;真正处理数据的程序还要进行开发部署,完成了开发部署还要去规划,究竟要用多大的服务器,多少台服务器来准备,后期服务器的运维又将多么复杂,这是每一个开发者需要烦恼的问题。

“我们能否有一个更好的解决方法?把我们从繁重的运维上抽离出来?”黄文俊说,无服务器计算可以很好地解决这个问题,“这是一个很新的概念,无服务器是不是就没有服务器了?是不是真的Serverless了?不,Serverless不是说没有服务器,而是开发人员和运维人员不需要再考虑服务器,不需要再放太多的精力在上面,而是交给云。”

用户只需要上传代码即可以最便捷的方式使用腾讯云高效稳定的全球基础设施,并可实现毫秒级的弹性伸缩,服务成本低廉,代码按需运行,空闲时不收费。经测试,按调用次数和运行时间付费,在每个月请求不足百万时,使用无服务器云函数比使用多台云主机搭建集群的成本减少约70%,适用于云计算和AI时代下需要低门槛进入技术,以及体验佳的要求。

他提到,这里面有两个核心,一个是Function as a Service,以函数的形式委托到云上来,由云来做顶层管理。还有一个就是Backend as a Service,比如说对象存储、数据库、消息队列或者云的缓存。其中Function as a Service的核心就是腾讯云最新推出的产品——Serverless Cloud Function。目前腾讯云的Serverless架构在内测阶段,非常欢迎开发者积极参与到Serverless无服务器的优化当中,共筑最佳运维环境。

英特尔刘斌:FPGA异构计算的价值在计算力、灵活性、未来可扩展性

 

英特尔可编程解决方案事业部亚太区计算业务总经理刘斌带来FPGA异构计算前沿的分享,“我们看到一个问题,今天谈人工智能,特别是谈更多智能化事物的时候,可能会遇到需要解决感知的问题,需要解决决策的问题,需要解决执行的问题。异构的好处就是,在需要解决多种问题的时候,在计算力、效率灵活性、未来可扩展性上是它的价值所在。”

分享中,刘斌还讲述了异构计算出现的三个推动力,一是强计算、高性能计算的需求;二是数据的存取、访问、缓存的需求;三是成本的需求。他表示,异构计算是为解决问题复杂度而催生出的新技术。

异构的计算是解决现在所出现问题的主要结构,可以提供不同的价值,如何构建异构计算系统并提升开发者的生产力是目前的主要挑战,异构的结构下面是不是还存在其他的东西,是需要发展的方向。未来,异构性是长期存在的,怎么样在高阶上实现开发系统的融合,是短期内需要思考的问题。
 

​大数据与商业智能BI的关系密不可分

大数据/云计算OT学习平台 发表了文章 • 0 个评论 • 252 次浏览 • 2017-06-20 16:33 • 来自相关话题

大数据应用的数据来源,主要是包括非机构化的数据、各种系统数据、数据库数据等。而BI大数据应用则是在数据集成方面的技术更加成熟,对于数据的提取和挖掘方面的要求来说,数据集成平台会帮助企业实现数据的流通和交互使用,而企业内部部署BI应用就是为了更好的分享和使用数据。






大数据对于传统BI,既有继承,也有发展;BI与大数据区别在于前者更倾向于决策,对事实描述更多是基于群体共性,帮助决策者掌握宏观统计趋势,适合经营运营指标支撑类问题,大数据则内涵更广,倾向于刻画个体,更多的在于个性化的决策。
BI的发展要从传统的商务智能模式开始转换,对于企业来说,BI不仅仅是一个IT项目,更是一种管理和思维的方式,从技术的部署到业务的流程规划,BI迎来新的发展。对于大数据来说,现阶段更多的大数据关注在非结构化数据,不同的数据分析工具的出现和行内的应用范围不断的加大,对于大数据应用来说,怎么与应用的行业进行一个深层次的结合才是最重要的。

更多关于大数据的知识请关注OTPUB《大数据论坛》
OTpub,专业的IT学习直播平台:www.otpub.com
  查看全部
大数据应用的数据来源,主要是包括非机构化的数据、各种系统数据、数据库数据等。而BI大数据应用则是在数据集成方面的技术更加成熟,对于数据的提取和挖掘方面的要求来说,数据集成平台会帮助企业实现数据的流通和交互使用,而企业内部部署BI应用就是为了更好的分享和使用数据。

大数据与商业智能BI的关系密不可分.jpg


大数据对于传统BI,既有继承,也有发展;BI与大数据区别在于前者更倾向于决策,对事实描述更多是基于群体共性,帮助决策者掌握宏观统计趋势,适合经营运营指标支撑类问题,大数据则内涵更广,倾向于刻画个体,更多的在于个性化的决策。
BI的发展要从传统的商务智能模式开始转换,对于企业来说,BI不仅仅是一个IT项目,更是一种管理和思维的方式,从技术的部署到业务的流程规划,BI迎来新的发展。对于大数据来说,现阶段更多的大数据关注在非结构化数据,不同的数据分析工具的出现和行内的应用范围不断的加大,对于大数据应用来说,怎么与应用的行业进行一个深层次的结合才是最重要的。

更多关于大数据的知识请关注OTPUB《大数据论坛
OTpub,专业的IT学习直播平台:www.otpub.com
 

Centos7下使用Yum安装Zabbix2.4

运维技术Geek小A 发表了文章 • 0 个评论 • 224 次浏览 • 2017-06-17 18:09 • 来自相关话题

一、Zabbix简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
 

二、Zabbix安装

本文档在同一台机器上安装了zabbix-server 和zabbix-agent 自己监控自己。
 
 
1、配置LAMP
 
这个可以参考之前的文章:http://openskill.cn/article/578 
 
2、配置Yum源
Zabbix在CentOS基本源里不可获得,因此必须配置EPEL 和Zabbix 官方repository

安装EPEL repository
yum install epel-release配置ZabbixZone package repository and GPG key
rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
rpm -Uv http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm3、安装Zabbix server and agent(agent是可选的)
安装Zabbix server and agent:(配置自己监控自己,所以安装了zabbix-agent)
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-java-gateway编辑 file /etc/httpd/conf.d/zabbix:
vi /etc/httpd/conf.d/zabbix.conf更新时区:
php_value date.timezone Asia/Shanghai重启httpd
systemctl restart httpd
4、创建MySQL 数据库和用户
 
登录MariaDB:
mysql –u root –p创建一个数据库‘zabbixdb’和数据库用户‘zabbix’
MariaDB [(none)]> create database zabbix character set utf8;

MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';

MariaDB [(none)]> flush privileges;
 5、数据库导入zabbix template
使用数据库用户zabbix登录数据库
mysql –uzabbix –p切换到zabbix数据库
use zabbix导入模板数据
MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/schema.sql

MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/images.sql

MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/data.sql
 6、配置Zabbix server
编辑文件/etc/zabbix/zabbix_server.conf
vi /etc/zabbix/zabbix_server.conf配置下面的三个参数
[...]
DBName=zabbix
[...]
DBUser=zabbix
[...]
DBPassword=zabbix
[...]
 7、配置zabbix-agent
vi /etc/zabbix/zabbix_agentd.conf配置zabbix server 的ip
[...]

## Line 85 - Specify Zabbix server ##

Server=127.0.0.1

[...]

## Line 126 - Specify Zabbix server ##

ServerActive=127.0.0.1

[...]

## Line 137 - Specify Zabbix server Hostname or IP address ##

Hostname=127.0.0.1

[...]
8、修改PHP 设置
 
修改php.ini为zabbix 建议的设置

编辑文件 php.ini
vi /etc/php.ini设置下面的参数
max_execution_time = 600
max_input_time = 600
memory_limit = 256
Mpost_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai
9、修改Firewall 和SELinux 设置
 
开放zabbix端口10050 and 10051.
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-port=10051/tcp重启firewall
systemctl restart firewalld如果使用 SELinux, 运行以下命令使 Apache 可以和 Zabbix通信
setsebool -P httpd_can_connect_zabbix=1
 10、允许Zabbix web console 对特定IP段可用 (可选)
编辑文件 /etc/httpd/conf.d/zabbix.conf
vi /etc/httpd/conf.d/zabbix.conf添加允许访问 zabbix web interface的ip段. 如果设置 ‘Allow from All’, 这可以允许全部可以访问
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted

<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Shanghai
</IfModule>
</Directory>

<Directory "/usr/share/zabbix/conf">
Require all denied
</Directory>

<Directory "/usr/share/zabbix/include">
Require all denied
</Directory>启动zabbix-server 和zabbix-agent。重启httpd,,并设置zabbix-server和zabbix-agent开机自动启动
systemctl start zabbix-server

systemctl start zabbix-agent

systemctl restart httpd

systemctl restart mariadb

systemctl enable zabbix-server

systemctl enable zabbix-agent ---- (可选)
11、通过控制台配置Zabbix
 
浏览器访问http://ip-address/zabbix



检查包的完整性和参数配置




数据zabbix数据库名、数据库用户和密码,并测试




输入Server name(可选)




预安装summary




点击完成,完成安装




安装完成后,重定向到zabbix控制台登录页面. 输入用户名和密码,默认的用户名和密码为admin/zabbix.




管理仪表盘页面如下




英文原文地址:http://www.unixmen.com/how-to-install-zabbix-server-on-centos-7/​   查看全部


一、Zabbix简介


zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
 


二、Zabbix安装


本文档在同一台机器上安装了zabbix-server 和zabbix-agent 自己监控自己。
 
 
1、配置LAMP
 
这个可以参考之前的文章:http://openskill.cn/article/578 
 
2、配置Yum源
Zabbix在CentOS基本源里不可获得,因此必须配置EPEL 和Zabbix 官方repository

安装EPEL repository
yum install epel-release
配置ZabbixZone package repository and GPG key
rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
rpm -Uv http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
3、安装Zabbix server and agent(agent是可选的)
安装Zabbix server and agent:(配置自己监控自己,所以安装了zabbix-agent)
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-java-gateway
编辑 file /etc/httpd/conf.d/zabbix:
vi /etc/httpd/conf.d/zabbix.conf
更新时区:
php_value date.timezone Asia/Shanghai
重启httpd
systemctl restart httpd

4、创建MySQL 数据库和用户
 
登录MariaDB:
mysql –u root –p
创建一个数据库‘zabbixdb’和数据库用户‘zabbix’
MariaDB [(none)]> create database zabbix character set utf8;

MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';

MariaDB [(none)]> flush privileges;

 5、数据库导入zabbix template
使用数据库用户zabbix登录数据库
mysql –uzabbix –p
切换到zabbix数据库
use zabbix
导入模板数据
MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/schema.sql

MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/images.sql

MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-2.4.7/create/data.sql

 6、配置Zabbix server
编辑文件/etc/zabbix/zabbix_server.conf
vi /etc/zabbix/zabbix_server.conf
配置下面的三个参数
[...]
DBName=zabbix
[...]
DBUser=zabbix
[...]
DBPassword=zabbix
[...]

 7、配置zabbix-agent
vi /etc/zabbix/zabbix_agentd.conf
配置zabbix server 的ip
[...]

## Line 85 - Specify Zabbix server ##

Server=127.0.0.1

[...]

## Line 126 - Specify Zabbix server ##

ServerActive=127.0.0.1

[...]

## Line 137 - Specify Zabbix server Hostname or IP address ##

Hostname=127.0.0.1

[...]

8、修改PHP 设置
 
修改php.ini为zabbix 建议的设置

编辑文件 php.ini
vi /etc/php.ini
设置下面的参数
max_execution_time = 600
max_input_time = 600
memory_limit = 256
Mpost_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai

9、修改Firewall 和SELinux 设置
 
开放zabbix端口10050 and 10051.
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-port=10051/tcp
重启firewall
systemctl restart firewalld
如果使用 SELinux, 运行以下命令使 Apache 可以和 Zabbix通信
setsebool -P httpd_can_connect_zabbix=1

 10、允许Zabbix web console 对特定IP段可用 (可选)
编辑文件 /etc/httpd/conf.d/zabbix.conf
vi /etc/httpd/conf.d/zabbix.conf
添加允许访问 zabbix web interface的ip段. 如果设置 ‘Allow from All’, 这可以允许全部可以访问
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted

<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Shanghai
</IfModule>
</Directory>

<Directory "/usr/share/zabbix/conf">
Require all denied
</Directory>

<Directory "/usr/share/zabbix/include">
Require all denied
</Directory>
启动zabbix-server 和zabbix-agent。重启httpd,,并设置zabbix-server和zabbix-agent开机自动启动
systemctl start zabbix-server

systemctl start zabbix-agent

systemctl restart httpd

systemctl restart mariadb

systemctl enable zabbix-server

systemctl enable zabbix-agent ---- (可选)

11、通过控制台配置Zabbix
 
浏览器访问http://ip-address/zabbix
zabbix1.png
检查包的完整性和参数配置
zabbix2.png

数据zabbix数据库名、数据库用户和密码,并测试
zabbix3.png

输入Server name(可选)
zabbix4.png

预安装summary
zabbix5.png

点击完成,完成安装
zabbix6.png

安装完成后,重定向到zabbix控制台登录页面. 输入用户名和密码,默认的用户名和密码为admin/zabbix.
zabbix7.png

管理仪表盘页面如下
zabbix8.png

英文原文地址:http://www.unixmen.com/how-to-install-zabbix-server-on-centos-7/​  

Centos7下配置LAMP过程记录

运维技术Geek小A 发表了文章 • 0 个评论 • 273 次浏览 • 2017-06-17 00:45 • 来自相关话题

LAMP指的Linux(操作系统)、Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的 优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
 
下面讨论如何在RHEL/CentOS/Scientific Linux 7上搭建LAMP环境.

一、Install Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

在终端以root权限运行以下命令:yum install httpd -y启动Apachesystemctl start httpd设置开机启动systemctl enable httpdfirewall设置允许远程登录:firewall-cmd --permanent --add-service=http

systemctl restart firewalld测试Apache

浏览器访问 http://localhost/ or http://server-ip-address/





二、Install MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
 
安装MariaDB:yum install mariadb-server mariadb -y启动MariaDBsystemctl start mariadb设置开机启动systemctl enable mariadb设置root密码
默认情况下,root密码为空。为防止未授权的访问,我们设置root密码mysql_secure_installation

三、Install PHP

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言,主要适用于Web开发领域。

使用以下的命令安装phpyum install php php-mysql php-gd php-pear -y测试PHP:
在Apache文档根目录创建“testphp.php”vi /var/www/html/testphp.php编辑内容如下<?php
phpinfo();
?>重启 httpd 服务:systemctl restart httpd浏览器访问 http://server-ip-address/testphp.php. 将会显示php的版本信息.




也可以使用如下命令安装所有php modules,重启httpd服务,查看http://server-ip-address/testphp.php  ,可以看到所有安装的modulesyum install php* -y

四、Install phpMyAdmin (可选)

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

添加 EPEL repository   参照(Install EPEL Repository on RHEL/CentOS/Scientific Linux 7)yum install epel-release安装 phpMyAdmin:yum install phpmyadmin -y配置phpMyAdmin

默认,phpMyAdmin只能由本机访问。为了能够远程访问,编辑phpmyadmin.conf file:vi /etc/httpd/conf.d/phpMyAdmin.conf查找/<Directory> ,注释掉或删除如下内容<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>添加<Directory /usr/share/phpMyAdmin/>
Options none
AllowOverride Limit
Require all granted
</Directory>编辑“config.inc.php” 改变phpMyAdmin的authentication,修改“cookie” 为 “http”vi /etc/phpMyAdmin/config.inc.phpChange ‘cookie’ to ‘http’.




重启the Apache service:systemctl restart httpd访问 phpmyadmin 的控制台 http://server-ip-address/phpmyadmin/




输入MySQL username and password,将重定向到PhpMyAdmin main web interface.




现在你可以通过phpMyAdmin web interface 管理你的MariaDB数据库了。 查看全部
LAMP指的Linux(操作系统)、Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的 优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
 
下面讨论如何在RHEL/CentOS/Scientific Linux 7上搭建LAMP环境.


一、Install Apache


Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

在终端以root权限运行以下命令:
yum install httpd -y
启动Apache
systemctl start httpd
设置开机启动
systemctl enable httpd
firewall设置允许远程登录:
firewall-cmd --permanent --add-service=http

systemctl restart firewalld
测试Apache

浏览器访问 http://localhost/ or http://server-ip-address/
apachetesting.png


二、Install MariaDB


MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
 
安装MariaDB:
yum install mariadb-server mariadb -y
启动MariaDB
systemctl start mariadb
设置开机启动
systemctl enable mariadb
设置root密码
默认情况下,root密码为空。为防止未授权的访问,我们设置root密码
mysql_secure_installation


三、Install PHP


PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言,主要适用于Web开发领域。

使用以下的命令安装php
yum install php php-mysql php-gd php-pear -y
测试PHP:
在Apache文档根目录创建“testphp.php”
vi /var/www/html/testphp.php
编辑内容如下
<?php 
phpinfo();
?>
重启 httpd 服务:
systemctl restart httpd
浏览器访问 http://server-ip-address/testphp.php. 将会显示php的版本信息.
phpinfo.png

也可以使用如下命令安装所有php modules,重启httpd服务,查看http://server-ip-address/testphp.php  ,可以看到所有安装的modules
yum install php* -y


四、Install phpMyAdmin (可选)


phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

添加 EPEL repository   参照(Install EPEL Repository on RHEL/CentOS/Scientific Linux 7)
yum install epel-release
安装 phpMyAdmin:
yum install phpmyadmin -y
配置phpMyAdmin

默认,phpMyAdmin只能由本机访问。为了能够远程访问,编辑phpmyadmin.conf file:
vi /etc/httpd/conf.d/phpMyAdmin.conf
查找/<Directory> ,注释掉或删除如下内容
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
添加
<Directory /usr/share/phpMyAdmin/>
Options none
AllowOverride Limit
Require all granted
</Directory>
编辑“config.inc.php” 改变phpMyAdmin的authentication,修改“cookie” 为 “http”
vi /etc/phpMyAdmin/config.inc.php
Change ‘cookie’ to ‘http’.
cookie.png

重启the Apache service:
systemctl restart httpd
访问 phpmyadmin 的控制台 http://server-ip-address/phpmyadmin/
phpmyadmin.png

输入MySQL username and password,将重定向到PhpMyAdmin main web interface.
madmin.png

现在你可以通过phpMyAdmin web interface 管理你的MariaDB数据库了。