技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

  本期特邀《循序渐进Linux》《高性能Linux服务器构建实战》一书作者高俊峰老师,针对Linux开源软件的问题给予解答,欢迎网友积极提问,与专家一起讨论!

高俊峰的博客:http://ixdba.blog.51cto.com/
查看本期门诊精彩实录:
http://doctor.51cto.com/develop-254.html
参与最新技术门诊:http://doctor.51cto.com/develop-255.html

精选本期网友提问与专家解答,以供网友学习参考。

Q:请教高俊峰老师,以下列出的是我在工作中常见和常用的一些开源软件和架构。
1、负载均衡软件:LVS,Nginx,HA-Proxy
2、高可用:Heartbat,Keepalived

3、代理缓存服务器软件:Varnish,squid
4、分布式缓存:Memcached
5、web
服务器:Apache,Nginx,Lighttpd,Tomcat
6、Linux群集架构:LVS+keepalived,Nginx+keepalived,DRBD+Heartbeat
想问以下几个问题:
一、您在工作中常见和常用的架构和软件的是什么?请列出。
二、您常用的一些软件和架构,使用他们的理由是什么?也就是说他们有什么优势?
三、您经常使用的一些架构和软件都是在什么场景中进行应用?在其实施的过程中有什么技巧和有什么应该
注意的地方?
请老师不吝赐教!

A:
我简单回复一下吧。其实你列出的这些部分都是我工作中经常用到的软件。只是不同的环境,软件的应用组合方式不同而已。
1:集群架构是我用的比较多的,具体是高可用和负载均衡集群联合构建,使用软件无非 就是Nginx+keepalived、LVS+keepalived+DRBD+Heartbeat。
2:使用这些软件主要原因是功能性、稳定性方面时候我们的要求,并且管理维护方面。
3:关于软件的使用原则,我认为是因环境不同而不同,适合自己的就是最好的。没有统一的标准和规则,根据自己的需求和环境选择适合自己的软件架构就是最好的。

Q:蚂蚁老师,您好,我想问下,从事linux运维,还需要掌握以一些编程语言嘛,例如php,java,还有数据。
因为近期我跟一位从事linux运维的师傅学习运维,发现他在linux上面编译文件,执行脚本,都有涉及到编程语言和数据库知识。所以,对于不熟悉编程和数据库知识的我来说,真的是太难拉。
在这里,我想请教下,如果真正从事linux运维工作,我需要掌握其他方面的哪些知识呢?
A:
技术方面:
1、开发能力,这个很重要,因为运维工具都需要自已开发,开发语言:c/c++(必备其中之一)、perl、python、php等、shell(awk,sed,expect….等),需要有过实际开发经验,否则工作会非常痛苦。2、应用方面需要了解:操作系统(主要是linux、bsd)、webserver相关(nginx,apahe,php,lighttpd)、数据库(mysql,oralce),还有类似系统优化,集群方面的东西。3、网络、安全,存储等需要相当了解。
个人素质方面:1:主动性、执行力、精力旺盛、抗压能力强。2: 沟通能力、团队协作。3:工作中胆大心细、不走寻常路。4:逻辑思维能力要强,为人谦和。5:有探索创新精神。

Q:我现在有2点困惑,希望你能给予指导和建议:
  1.在前面你曾提到找工作岗位,可以找“门户运维或者产品运维”。“门户运维”,我可以理解为大型网站的系统运维人员。可是,“产品运维”是什么样的工作呢?做项目的那种吗?能否再说的细点,或者再提供点思路呢?
  2.我对linux的兴趣,始终就在于这个操作系统本身。后来我才知道,单纯只是掌握好这个系统本身,不能给企业带来利润,那么我们的工作也就无法更加“理想”了。

A:你的理解是正确的。
1:产品运维是对具体的软件产品进行正常监控监控,配置和管理,而门户运维就是对基于web的应用系统进行管理和维护、监控等。
2:单纯的linux系统管理是毫无意义的,在linux系统上做软件的应用和调试,以开源软件结合开源操作系统,达到资源最优配置,以最低的成本获取最高效的性能,是Linux系统要实现的目标,而linux系统仅仅是做应用的基础而已。
企业不不同,运维的规模也不同,以运维为核心的大型企业,很多都将开发也纳入了运维中的一部分了。而某些小型运维企业,由于不具备二次开发能力或者应用需求不需要进行二次开发,所以运维范畴都是以系统、数据库、存储为主的多而杂的工作。
希望我的回答能帮助你!