翻一页

熟不知于别人看似种潇洒自由,于已是临近而立之年的自身其实更多是种愚蠢不负责任,然则俗话有云相濡以沫,不如相忘于江湖;苟活受欺死赖于此,倒不如自己再自私洒脱走一回。

辗转奔波两年有余,最后的最后,即便一切依然回归两年前的原点,纵使生活依旧多不堪,也无畏无悔;然则更有甚者没想到如此的付出换来的得到的在别人心中的原来只是:个人问题拖累耽误了工作进展,影响到别人发财啊~呵呵!既然如此,自己更令愿爽快点滚蛋走人

曾经一度视之认定其为自己的事业,全倾心的盲目天真的为之付出培育着。生活中全被工作所独自霸占,忘却掉了曾一度认为工作最终也还是为了放松自己享受生活的想法。

选择离开,不因不看好产品市场前景,而更多或许因某些人做事手段太够欺人太甚,自身不是那种无辜任何摆布的,想必只身一人想混口饭吃还饿不死吧;曾有所不舍,同样不是因前景有多好,更不是薪资有多好,两年过去还不如那时在厦门的时候,而是不甘心。

还是来时那句话,路是自己选择的,跪着也得走完,怨不得谁,扪心自问无愧于己与他人也便没什么可后悔的。

不短不长的时间里,体会各种喜怒哀乐、酸甜苦辣…更多的是心酸辛酸过程,也许在他人眼中只不过一些微不足道的瞬间,然则个人却是在这样不容易的”瞬间“中才有机会实践积累成长自己的技术能力,真正做到Learning By Doing;同时看透更多人性的东西,什么才是实在的东西。

最后盗用张朋友日志的图片结束过去这一切吧

Learning By Doing — 2013

这一年时间感觉过得很快,基本处于被时间追赶的状态,想想去年也是在这里记录的2012总结提及到2013这年主要是规范化,一切基本都在这过程中慢慢改进完善。这一年里大体是在体会世道中面对失望,在告诫自己忍耐中多学习收获,从中萌生了些对整体架构设计的想法,职业上在多年以后希望可以让自己更趋向一个不会编程的伪“运维架构师”的边缘。

就工作技术方面而言,确切的说应该是13年下半年,自己最大的感受是:实践解决问题才是个最好最快的学习积累收获过程,Learning By Doing!公司带给员工价值,不仅应该包括体面的工作、优厚的薪资福利,还有一点容易被忽视的是允许犯错的机会、成长的空间。

下半年来经常跟打战似的,各种忙碌、通宵熬夜导数据,前要盯流量看监控,后要顾集群服务存储兼干DBA活;左边答疑技术支持,右边请教开发确认机制;对外细到服务销售/客户上传数据,对内还需受命服务于两边项目;说白基本是“白天作战UpYUN,晚上转移Huaban”,“白天要跑机房,晚上得理配置,半夜上岗无证DBA临时工”的节奏一点不够分,工作重心由12年的外围CDN更多转向数据中心,虽说多少有放心,但终归精力有限是该“无情”放手。也因此随着这些忙碌让自己有机会不局限于CDN相关服务,再次接触操手折腾学习起数据库方面(MySQL、Redis等)、应用集群、网络、存储等东西,每一次操作影响的面更广更全局,责任更重后让自己不得不学会如何尽量的做到更全面系统的考虑分析问题,如何去避免失误。这或许是对于一个“操作手”无形中最大的压力,不仅得谨慎细致且要够胆大!

不过也是因为这样的忙碌,每次问题每次填坑中才有机会让自己涨知识,涨经验啊~和在打小怪练级一个样,同时提醒自己不仅要知其然,更重要是还要知其所以然,在解决问题中学习新知识,比如:业务量的上升触发到MySQL版本bug 处理过程让自己发现到之前多少配置的不够完善合理;服务器规模上去让自己有幸学习如何网络规划/交换机产品的东西;每每上线后总难免遇到这样那样的瑕疵问题让自己去了解接触到了TCPCopy这样方便的工具等等。更多可关注个人主页

小公司就是这样,就运维干的单且不说没有分“系统运维”和“应用运维”之说,操手网络工程师或DBA的事儿也是很常有的事情啊,哪有什么“也许是你测试的领域太广泛了,很多人,只负责专门的领域”的说法啊。

生活上,户外活动除了骑行就是徒步爬山,有兴趣可以转站—Life Cycles 围观欣赏每次骑行的随记分享。对于个人而言终究改不掉在网络上吐槽感慨的坏习惯,毕业已经五年了,却混成这样–两手空空,看着一年年老去,不得不承认外界各种对比无形中的压力让自己难以洒脱的随心,失去曾经那勇气,有时想想,人越活越慢慢失去那份洒脱的勇气,随年龄的增长会变得纠结、求安稳、得过且过、平庸…失去那股随心的洒脱激情斗志,失去自我。或许有人会说那是变成熟了,但个人看来这很多时候不过只是扯淡的借口罢了。同时在社会久了一个人会容易变得也不再真实的自己了,不管相处的对象是谁。当时某种程度可以说为了逃避(一方面来自家里催促;一方面不想看着朋友圈一个个散去时的心伤),外出2年每当工作至夜深内心种隐隐无奈,独在异乡一个人的生活虽然看似无忧无虑,其实也避免不了背后无助落寞感,越这样越不在乎自己身在何处,越想任自己流浪。

有时回想起些事时,混成这样,说实在的没亲身其境根本不知混得有多难堪。几次自己跑机房扛机器一方面得由自己拜托同事抽空帮运(这里还得谢谢@Zolazhou和@Belltoy多次配合帮忙),而后有时还得自己扛上扛下,爬高爬低的拉网线布线,在别人看来还变成似乎理所当然!md,搞得似乎公司是自己似的。说实在很负责的提醒某“董事长”下:林被不是没能力到落魄到没地方去才需要委身于此的,什么事儿都是踏实从低做起来的!让自己最感动的两次是:一次是去年跟网银的人去宁波机房上架,多谢魏旭一句话,让自己可以无需自己动手扛机器;还有一次是最近一次也是让zola和belltoy帮忙托运机器到留下,自己本觉得已经耽误他们工作时间将机器卸下先回去,没想到zola一句看似很平淡“没事,那么多,我们帮忙搬上去”,这就是区别吧,我想很多人始终无法理解这么平常的行为举止或一两句话怎么会让自己感动吧,我只想说你未曾经历过不知正常,但自己不同。其实自己曾一度也想这样累死累活拼上命,又途不上啥~始终不明!但却又一直这样不知不觉就这样坚持着下来,最后才发现唯一驱动自己是:唯有如此自己方可心安过意得去无愧我心吧!令他人负我,自己绝不负他人吧。来杭州2年,赚到的每一分钱,自己都敢拍胸口说都是血汗钱,哥应得的,还少了很多呢!所以只能说社会没有公平可言,嗯。

最后吐槽点入社会后职场的感受,亲身鉴证过2~3家公司由小到大,现在这家可以说是第三家,也是自己呆着最长(第一家让自己呆超过2年的,看着从最初自己初来乍到时技术可以说就两个技术+一个运维到如今虽说不多但至少也按“部门”称呼–技术部+运维部了,虽然看着曾经一起入职都离开好几个了,哎。),最看重其产品的一家,但有一个共同点就是:每一家公司由小变大后,很多东西都会“变质”,最要命关键的是根本还不到那规模阶段,就开始忘记曾经的初衷,慢慢飘飘然然起来搞场面上的东西,其实就阶段目前真正需要的仍然是可以且愿意干实事的人,而非撑排场的人。人员互备是好事,但不代表让主的忙得要死,备的搁置那边闲着没事,看着主的撑不住挂了才顶上,这不是创业共事的该有的,何为共事共事,共同做事。你以为是机器简单的死死的主备,即便是机器的主备,备的有时也提供 read 请求也不是闲着呢。

至于选择大公司还是小公司,一直以来每个人看法都有自己道理,个人的理解是:追求提升学习优先小团队公司、渴望安稳混日子高薪建议考虑大公司,小公司有一点优势就是—只要主动多去参与你就可以学习更多实战积累更多。职场还有一点就是身为领导们通常的一贯都只喜好那些好被自己降服、唯命是从、时刻追随自己等方面的人,圆滑处事或是坚持做自己就看你如何选择吧。可惜自己情商低下,属比较不正常的另类,言论随心、直言不讳、单刀直入、不降服于任何人,不想压抑内心不爽、不想虚假处事,只想做真实自己,哪怕自己知晓这样最终受伤的是自己。因此其实不爽的地方是:那些整天喊着“共同创业,共事”的领导们总就只会口头忽悠说着些多好听的话,毫无任何实际的行动表现,对于员工而言基本是看不到自己所创造的价值所在

普遍现象:身为老板似曾都更偏向喜欢令愿花费重金招一个“新手”来重新培养,而很不甘愿为对于业务已熟知使用上手的老员工适当合理的“善待”啊。可能的原因或许是:“新手”比较听话于自己不用担心反驳上头吧。(合符上面提及到的领导喜好点)

一个事实:招聘上写的日常福利有时表面看起来不错,但不见得真的好哦,规定这么说,执行力或许又是一回事。什么每月团建活动,每年部门旅游,很多时候都是扯淡吧,忙都忙不过来还想有时间,能早点洗洗睡去做梦或许就已经来得更实在些;对外各种赞助搞气派挥霍的活动通常倒是挺阔气,或许就是不见得在内部有什么激励的调味的大方啊。说难听点:扣门,都不为过。

所以“可以为理想付出,不要轻易天真为了一个公司倾心” 这话挺有道理,即便你多倾心到头来换来得到的结果或许在别人眼里不过是耽搁工作或就是只够格配那活儿的。你天真自以为当他自己人,现实面前人家压根没放在眼里。一个人若毫无半点适当将心比心的相待,那想必也没什么配得起、好值得让自己敬重的吧。

以上是个人对过去一年—2013年的一点吐槽!想关注更多槽点欢迎围观:

微博:@Yousri

微信:Yousri

Weekly-Notes

2014 年第一周

上月底在豆瓣上某篇评论最后看到这么一句话—“把要做的事情想清楚,把想好的事情做出来,把做过的事情写下来”,让自己产生一个想法接下来一年让自己尝试能坚持做到这样。争取每周或每月记录日常所遇所学问题。


LVS 工作模式


翻阅@吴佳明_普空 分享的关于LVS在淘宝环境中的应用笔记

如今最常用的基本是LVS-DR模式,但其存在一定安&局限性问题,全部对外暴露:集群vip不仅配置在LVS机器,而且后端RealServer也需要绑定集群vip;而且网络要求还需要在同一个Vlan局域网内。LVS-NAT模式虽说可以解决这问题,但其自身存在需配置路由复杂且维护成本高及性能易受影响

淘宝在原生基础上综合新增了LVS-FULLNAT模式,在NAT模式的基础做了些相应改进,将客户端源包全部转化成LVS local源包与RealServer通信。具体原理可见来自其PPT:(这里存在一个问题:RealServer看不到实际客户端来源信息,全部都是变成来自LVS local的’客户端’源,所以要查看到还需要RealServer内核上打淘宝提供的补丁,而且内核要求相对较新2.6.32这2点比较麻烦)

LVS-FULLNAT工作原理

具体安装使用结合官网说明对于 IPVS FULLNAT and SYNPROXY 的介绍 ,后来回头再看了遍之前在小米运维部的NoOPS博客见到那篇LVS-ospf集群(可以说是LVS NAT Cluster的实现吧),总算理解。

通过细细翻阅分享的这话题让自己算是重新对整个LVS各工作模式情况更清晰理解,同时只想说各种工作模式好多,各大公司真是量大牛逼啊!(其实普通公司通常基本模式就够用或单FULLNAT模式足矣,基本不需动用到交换机ospf,配置什么Quagga这东西啊),没想到单单一个LVS的工作模式自己如今了解到就有:原版的 NAT/DR/TUN,淘宝新增的FULLNAT / SYNPROXY,小米的DSNAT,百度?的BigNAT,腾讯的TWG?! 其他未知的


By the way

其中这PPT里对于 FULLNAT 设计考虑部分中提及到 RealServer kernel 开启 tcp_tw_recycle 用户A和B,timestamp 大癿访问成功,timestamp 小癿访问失败的问题中,曾两次帮我顺利快速的解决来自开发同事@lfeng 和@belltoy 反馈的两个问题:关于公司访问CRM慢疑似被’重置’现象;垮IDC机房访问建立连接TCP数据包传输异常。其实两次共同点:通过NAT网关(1个出口ip)访问同一服务(前者出口都是公司公网IP;后者都是走同一台机器路口出去),都是因TCP时间戳及所谓系统内核优化参数配置有关引起,详细分析解释 — tcp_tw_recycle和tcp_timestamps导致connect失败问题

所以其实未搞清楚搞懂TCP和所谓Linux内核,确实不能随便网上轻易随意copy什么内核优化参数啊,不一定是对的,不一定是适合你的。同样道理,不是安装使用上随随便便出个分析报告,说自己研究过,熟悉熟练啥的。


TCPCopy工具使用


个人感触

刚开始每次要使用TCPCopy时,都总为找适合像自己这样新手菜鸟操作使用帮助文档而烦恼(可能自身对其深藏的功能/参数尚不够了然),第一感觉牛人都有喜欢只谈架构原理设计说明的习惯么,而不屑站在菜鸟使用立场考虑下实际基本操作帮助文档说明么?

后来发现是自己土鳖错了,应该首选看英文文档,比中文版来得更详细清晰易理解,看来技术这东西还确认应该看英文版,自以为是国人开源的产品中文文档可能会更易懂,没想到作者可谓达到高大上档次的国际范(可能技术的东西英文描述起来更容易理解的缘故吧)


使用方法

支持多种测试模式

--enable-debug      #compile TCPCopy with debug support (saved in a log file)
--enable-mysqlsgt   #run TCPCopy at mysql skip-grant-tables mode
--enable-mysql      #run TCPCopy at mysql mode
--enable-offline    #run TCPCopy at offline mode
--enable-thread     #run TCPCopy server (intercept) at multi-threading mode
--enable-nfqueue    #run TCPCopy server (intercept) at nfqueue mode (without this setting, ip queue mode will be used by default)

这里有个麻烦就是,要不同测试模式,都需要重新编译一次TCPCopy二进制支持,这个以用户的角度应该是一次编译多次多种使用,具体由程序内部控制区分开发选择的不同参数不同测试模式。就如@timebug 所言:“其实如果非要这样的话,应该选择让用户安装一次,然后通过 bash 或者其他封装一下不同二进制,这样用户使用起来就方便了 ./tcpcopy -type xxx 类似的”


测试服务器Target Server 配置

基本步骤:

  1. 加载模块:

    modprobe ip_queue

  2. 设置iptables拦截TCP包:

    iptables -I OUTPUT -p tcp –sport 3130 -j QUEUE #3130测试服务器服务端口

  3. 启动接收包服务端:

    /usr/local/sbin/intercept -d

其中 intercept 常用参数使用说明:

-x ip,ip 授权可直接访问测试服务器自身服务(不然前面设置被拦截掉)
-b < ip_addr > 指定服务监听的IP地址,默认监听所有 0.0.0.0
-d 后台运行


线上服务器Source Server 配置

基本使用:

/usr/local/sbin/tcpcopy &

tcpcopy 常用参数使用说明:

-x sourceIP:sourcePort-targetIP:targetPort,… #服务器ip:端口-测试服务器ip:端口,…支持多服务copy
-i file #保留TCP数据包,离线copy,enable-offline模式下
-n number #放大线上流量多少倍到测试服务器,最大 1023
-r number #引线上多少比例的流量到测试服务器上(数值范围:1~100)


TCPCoy 间接功能

在查找TCPCopy使用帮助过程,无意间看到这篇文章 — Migrating memcached 其一方面借助tcpcopy引流测试外,另一方面还间接起到预热 memcached 的效果。自己不由产生之前琢磨怎么有效的对数据库做预热的困惑可谓有解 — 借助tcpcopy引流功能;支持 MySQL 服务,来对数据库 MySQL 的InnoDB内存池做线下预热操作,相比其他预热方式看似来得更靠谱些,因为其是引用线上真实生产环境请求过来的相当于用户直接的访问。

看来TCPcopy不仅让测试更真实,让开发更大胆调试,让运维更方便操作,看来后续还有可能尝试着拿来作为类似 Cache 功能的预热工具啊。


运维工具

13年9月份自己曾在微博感慨过点愚见:工具终究是辅助,自动化快速轻松的前提是先需要将服务标准化规范化服务化,及对业务服务了然于心后积累成型的。同时面对实际问题的定位分析解决才是更关键吧,否则最终只能说是个操作员吧。

个人分别体验使用过salt和ansible两者工具后,最大的感受未来基本趋势是:Salt其强大确实更偏向走系统化路线,是作为服务状态/配置管理维护的首选,加上其拥有齐全的api接口更易按需定制成平台化吧(同样具备后者实时管理等功能);而相对而言ansible比较适用于日常实时操作管理/维护发布部署。


兴趣与态度

“如果一个人对所做的事情感兴趣,那么自然愿意投入时间,与是否工作无关,与是否IT行业无关。”

说到心坎上,只有兴趣的东西才是长久的,技术能力其实并非是最关键,态度/责任更胜一切,最近半年最大的感受是:有心学习搞懂搞明白其实技术也就那么回事而已,遇到问题用心弄清楚后便会发现并不是想象中那么神秘,而兴趣/态度/责任完全不是靠培养学习能成就的。


Want To Do

  1. 重拾iptables
  2. TCP协议/网络规划
  3. MySQL参数整理/监控