The Mirages

樱桃沟夹事

再过1个小时就是2014年了。 记得谁说过,当你回忆往事的时候,说明你已经老了。 2013年好像啥事情都没做,经历了忙碌2012年,2013年是调整的1年。 总结起来2013年看了很多闲书貌似,然后还从台湾带了几本闲书,顺便去了趟台湾玩,好了,中港澳台都去过了,也算周边中国了。 10月又去了次四川成都和九寨沟。 看了九寨沟和黄龙的晚秋风景,回来后对三里屯东5街的银杏黄叶完全无感了,可还是看到那么多男男女女女来这里拍照。 这1年貌似出差也挺多,其实我这人挺不爱出差,更不怎么想去IDC,不过这1年就必须这样啊。 2013年也看到一张搞笑的运维图片。要都这样运维工作怎么去完成了,要从上层设计的时候避免任何的单点故障,千万别有侥幸的心态,一台服务器安全运行4,5年那都是很难的的,特别是业务变更多的公司。

周五经历了一次艺术之旅,是踢踏舞,我等土鳖理解上只是用鞋跟在地板上踩出不同的声音。 演出剧目为 大河之舞2《舞起狂澜》,大河之舞好像在哪年春晚上有过表演,也是爱尔兰的。这个2也是原先的那个导演John McColgan。 由于有过1的感觉,所以2对我来说也差不多,就是多了一点动画和现场的衔接。 所谓狂澜也就在当中一段而已,故事情节就是在海上漂流,只是当中一场戏是波涛汹涌。而其他场次都是非常平静的。 当中偷偷拍了一段是他们到了城市中的,这段是纯粹的踢踏舞表演,没有什么伴奏,我觉得这个更纯粹一点啦。 当然其他我也看不出有什么特别的了,实在是没有什么艺术细胞,也就这样吧。 http://v.youku.com/v_show/id_XNjQyMzE4MzY0.html

要说旅游,之前一定想着要懂当地的民俗风情,历史渊源,不然你去干嘛? 所以一直很明白为什么上海也是一个旅游城市。 虽然说“百年上海看外滩,十年上海看浦东。” 可要说历史可真心没有西安,南京这样的强大。 那九寨沟呢? 九寨沟除了风景美之外,还有别的吗? 应该是有的。 九寨沟一年四季都很美,春天和夏天的绿色,秋天是黄色的,冬天是白色的。然后里面的寨民也都比较淳朴,买的东西都不贵。 买了一个牦牛皮的挂件5个才10元,一个牦牛角的梳子从3元到30元各种不等的都有。 《旅行的艺术》里说如何旅游经常发生在想象的时候都特别好,结果去了就感叹。 可是九寨沟绝对不是这样的一个地,去之前你能想象的,现实绝对给你更大的回报。 那就再贴一点当地的风光吧,这个还是我们进九寨沟的第一天,晚上住在了藏民家里,招待吃喝,就是晚上老没电。 不知道多少以前的树倒下了,也不知道是因为地震还是人为,反正就这样寂静的倒下了。 内嵌图片 1 多姿多彩的颜色可不光是靠钙化可以完成的,还有别的因素。 内嵌图片 2 远山的倒影就这样躺在了这个湖面上,而近处是芦苇摇曳着。 内嵌图片 3 来到山间,由于各种不同的植被导致了到了深秋大家各自的颜色,我想人工做的可没有这样的丰富啊。 内嵌图片 4 这个好像就是五色湖了,这里人可太多了,今天就拍到这个了,明日再来。 内嵌图片 5 找了一个高处,刚好一群大妈合影呢。 内嵌图片 6 那红色的倒影到底是什么呢? 内嵌图片 7 当然不是枫叶啦。没那么简单啦。 内嵌图片 8 我们先来看看瀑布吧,这可是87版西游记的拍摄场地之一,是不是觉得很熟悉啊。 内嵌图片 9 换个熟悉的角度,不会还想不起来吧。 内嵌图片 10 好了,揭晓上面的答案了,那个红色是樱桃的倒影,为了验证一下,某人还吃了一个,这算破坏公物行为吗? 内嵌图片 11 一些倒下的树干居然有生长了别的植物,难道嫁接就是这样来的? 当然不是啦,有些土又有水,可不合适的植物就在这上面长大了。 内嵌图片 12 找到一棵红叶的,可这不是枫叶哦。 内嵌图片 13 也许没过多久,旁边那个树梢上也会长新东西。至于是什么,我不知道,你也不知道,风知道。 内嵌图片 14 好了,第一天心灵之旅就这样结束了,画个心吧,也算不虚此行了,明日再战。 内嵌图片 15

之前路上看到的到了九寨沟就是小巫见大巫了,而经过汶川时候的难受也一下子烟消云散了。 虽然下面这个已经震惊了我,但是还是感觉很漂亮 内嵌图片 1 到九寨沟必须要经过九道拐,我们终于快到了。 内嵌图片 2 好了,好好休息一个晚上,我们第二天就正式进驻沟里了,这个深秋的九寨真是别有一番风情啊。 进了沟里,直接上了大巴然后去了原始森林。海拔3000米吧,我们一直从原始森林走到天鹅海。 这满山的绿叶,红叶,黄叶,在这里我们也呼吸了大量的负氧离子,回北京可没了,多吸点。 内嵌图片 1 枫叶也在由黄变红中。 内嵌图片 2 这个芦苇荡已经忘记是哪里了,应该是天鹅海的一部分吧。 内嵌图片 3 涓涓的山泉水随着小沟往下飞奔着留着,这些山泉水就是下面各种海的原始材料,加上各种钙化形成了各种各样的颜色。 内嵌图片 4 下面就是各种海了,具体的名字很多已经记不得了,反正就是各种漂亮啊。 内嵌图片 5 内嵌图片 6 内嵌图片 7 内嵌图片 8 内嵌图片 9 内嵌图片 10 内嵌图片 11 内嵌图片 12 内嵌图片 13 内嵌图片 14 内嵌图片 15 内嵌图片 16 内嵌图片 17 倒影,这个好像是镜海,据说每天早上来的时候湖水平静的就跟镜子一样,然后倒影着周围山川。 内嵌图片 18

人间天堂九寨沟,果然深秋的九寨是最美的。 去九寨沟有几条道,直接飞机到九寨沟,下飞机100公里估计开车2个小时。 (缺点是直接到九寨沟的飞机票比较贵,而且航线比较少) 飞机到成都或者兰州,然后坐10个小时汽车。 建议从成都走,这样你一路上就能看到汶川。 从成都出发,总共498公里路。当车在成灌高速上开的时候,我想着,要这样开,5个小时必须能到啊,为什么要10个小时呢。 从成都到汶川这段路是激动的,要不是512地震,去汶川的路必定也不好走啊。刚出成都没多远我们就进入了崇山俊岭中了。 漫山的隧道,一条接着一条,有的长点居然有7公里,有点是几百米,当时我在想,要是没有这些隧道,我们要沿着盘山公路走多久啊! 一路的标识都提示我512的中心马上就要到了。 内嵌图片 1 而映秀也就在旁边了。而旁边就可以看到之前的塌方的一些地方还在建设中,而经常会发生边建设边塌方的情况,导致有些隧道就成了单行道了。 内嵌图片 2 内嵌图片 3 而一旦逆行了,那对面必须是堵车上了,果然,一过去没多久就发现了堵车的车队了。而大部分都是可怜的长途车司机们。我们回来的时候也是堵车堵上了,不过是前面有车抛锚了。 内嵌图片 4 一路上带着这种激动终于到了汶川了,想着如果没有地震我们会知道这个地方吗? 住在这里的少数民族应该是很多很多年以前被我们赶到这里的吧。而去往九寨沟的标识明白的告诉我们还有390公里,真是一个遥远的地方啊。 内嵌图片 5 汶川的旁边就是茂县了,感觉茂县可不像汶川这边高端大气,一辆辆破面包车出卖了茂县。 内嵌图片 6 过了汶川后就再也没有漫山的隧道了,有的都是沿着岷江走的国道了。走了又不知道多久,感觉岷江在这里水量比较充沛。这里就是叠海景区,来两张吧。 内嵌图片 7 内嵌图片 8 这崇山峻岭一眼望不到头啊,其实我不知道,这根本就是一个开始呢。不知道过了多久,好像是在第4个下车点,到了千年大地震松潘的地界了,这里居然看到了蓝天,要说在这山里看到蓝天和太阳出来真是很难得啊。 而美丽的九寨是否也是蓝天呢? 我盼望着! 内嵌图片 9 可没走过几座山又是一会儿多云一会儿蓝天的,之前查过天气预报,九寨1年365天,蓝天的次数可少可少了,也就几十天的水平吧,我们得珍惜啊。 内嵌图片 10 内嵌图片 11

今天碰到一个诡异的网络故障,在复杂的网络条件下,保证条理的清楚是很重要的,为了警醒自己,特记录如下。 早上碰到一个事情,说IDC之间的VPN挂了,但是看了监控,发现2个IDC之间ping是没有问题的。 先描述一下网络环境。 2个IDC,一个在国内一个在国外,暂时是用pptp连接的,2边都有硬件防火墙。硬件防火墙在上周做了一次策略升级。pptp两边都是之前用linux server搭建的,2边出和进的pptp server都是单独的。基本架构就是下面这个草图了。 内嵌图片 1 现在问题是,2个IDC之间的服务器有些可以ping通,有些不行,刚好加监控的都可以。 端口也可以telnet, 但是无法建立连接,一建立连接就被reset, tcpdump的结果就是如下这样的,下面这个是建立rsync的一次连接。 内嵌图片 2 好了,情况都描述完成了,如何处理吧看。 这台rsync服务器检查了本身,发现没有问题,因为从本地机房进行rsync没有问题。 那问题就应该是在pptp 或者firewall上面了。 由于上周firewall做了一次升级,恢复了配置,发现问题依旧。 于是我思维凌乱了,这个是什么情况呢? 两边可以ping,但是建立被reset, 让我感觉怎么像是gfw干的事情呢。 抱着最后一丝希望,就一点点排错吧。 首先确定了2边IDC各自内部都没有问题。 于是从pptp client上进行查,这下发现了奇怪的现象。 从pptp client服务器到另外IDC的rsync居然是可以建立连接的,那问题就应该是pptp client上了, 回想了一下之前的操作,发现了问题所在。 因为这个pptp client还拨到了c机房,之前在iptalbes中nat链里的out interface是写死了ppp0和ppp1的,但是由于不定时断线,所以哪条是ppp0,哪条是ppp1是不固定的。 于是这次本来去B IDC应该是走ppp1的,结果走了ppp0,从而导致了异常的故障发生。 从这个可以看出来, iptables的nat链是有点问题的,正常情况out interface指错了的话应该就是不通的。 但是查了man一下,发现如果没有指对的话它就会乱走,有没有规律那就再看源码了。 cleardot.gif

最近发现dns请求里有一些不正常的域名请求,由于bind9早期的版本在这方面比较弱,而且再越上层做越好,那就在iptables上做最好了,当然在外网防火墙上做也行,2层过滤更好。 在iptables有一个string模块就是用来做这个事情,支持很多种模式,u32, string, hex-string 都有,效率最高的是u32了。 具体看看自己iptables支持那些模式可以查看以下文件 c /proc/net/ip_tables_matches 具体的过滤命令很容易,就一句, 意思就是过滤input链的udp的53端口,匹配里面的数据含有packetdevil字符的直接drop掉。 ```c
-A INPUT -p udp –dport 53 -m string –algo bm –string “packetdevil” -j DROP


在linux下想看什么分区对应的哪个盘没有第三方工具根本搞不定啊。默认的/dev/disk/by-id/ 还是太弱了。网上找到如下工具。主要是分为raid模式和非raid模式。 而且现在各种raid,就得注意哪个raid分的是哪个磁盘哪个分区。 无raid模式下很简单,一个物理硬盘就代表一个设备。主要工具是sdparm或者是hdparm。 这2个工具其实是差不多的。只是现在都是sata2以后的接口了,所以还是sdparm更多点

1
2
3
sdparm -p sn /dev/sda 对应与 hdparm -i /dev/sda
[timo@11 hdparm-9.43]# sdparm -p sn /dev/sda
/dev/sda: ATA ST32000645NS RA0A Unit serial number VPD page: Z1K000VR #ST32000645NS:这个就是磁盘的型号 #Z1K000VR: 这个是磁盘的序列号

而对于装了megacli工具的,那也可以用下面命令查看Inquiry Data这行信息就能知道了。 megacli -PDList -aALL 还有工具是lsscsi工具也可以,但是这个工具看不到序列号。 有raid模式的稍微复杂点了,只能通过megacli这样的工具来看了,下面这个命令的slot number就是对应的插槽号。

1
megacli -cfgdsply -aALL 

如果用lsscsi显示的话,可以看到那行显示的就是磁盘的型号,而是raid卡型号。

1
[timo@11 ~]# lsscsi -p [0:2:0:0] disk DELL PERC H710 2.12 /dev/sda 
阅读全文 »

墾丁的第二天,天气晴,时有多云。这一天是来台湾后去的各种景点最多的一天,可也有2个地方没有去成。 早上起来发现天气还不错,吃过民宿的早饭后,骑着民宿的电动自行车就出发了,这这个自行车最多只能来回15公里左右。 第一站,墾丁牧场。 这里是墾丁奶牛的家,这边很多店里有卖产自这边奶牛的新鲜牛奶。看它们自由自在的吃着草呢。 内嵌图片 1 看完牧场后本来想买点当地的特色,可惜这个牧场跟特产专卖是2个地,为了节约电池就没有去成。 转完牧场就直接往鹅栾鼻公园挺近了。 为了节约电池,这一路上下坡基础都没加速,直到时速低于10公里了才加点油门。走着走着经过了船帆石。 听这个名字就能明白这里有各跟船帆一样的石头,可惜小人眼浊居然没有看出来这个石头怎么像船帆了,船帆不就是类似三角形的布啊。 可这个就是个正方体啊。只能说台湾人太会起名了。上次在野柳,各种石头都有名字,什么冰激凌啊等等。 内嵌图片 2 这墾丁的天气就是变化多端啊,刚才路上还阳光明媚,现在居然多云了,并且下起了小雨来了,不管它丫了,我们可不能这点小雨而放弃了行程。 车行到砂岛的时候太阳居然又出来了,为了怕后面到了鹅栾鼻公园天气不好,我两还抓紧在这里照了几张大海的照片。这碧绿碧蓝的海啊,岸边都是各种珊瑚礁,两呆子在这边摆好三脚架各种自拍啊。 终于到了鹅栾鼻公园了,门票忘记是否免费了,但是停车费10元新台币倒是记得很真切,毕竟一个在大陆从来没有交过停车费的人,来这里居然成了有车一族,还给交了停车费。 这里其实大着呢,有灯塔,有鹅栾鼻的碑,还有海边栈道,这个都是木头的架在了珊瑚礁之上。趁着光景好,赶紧来几张。 内嵌图片 3 走完海边栈道,就是一段丛林小路,直接到了观景台,在观景台上我们可以看见对面的猫鼻头,据说那是一块伸出去的石头像是猫的鼻子,可惜我也没看出来,不知道是不是角度的原因。 在观景台也TMD再次碰见雨神了,于是我对于下午的行程感觉黯淡啊,估计得下雨,可再下雨也无法阻挡我们的行进步伐。 这个鹅栾鼻公园可是台湾八景之一,但是不知道是不是指这个灯塔,还是别的。这个碑下面明显有破坏的痕迹,但是不知道为什么没有维修。 内嵌图片 4 出了公园,看了地图。 发现这边离台湾最南点的标志还是比较近,于是就准备去了,但是还是抉择了好久,因为早上老板说了,这个电池只能往返鹅栾鼻公园和民宿之间,再远就没法保证是否能回来了。 于是赌了一把, 大概有20分钟就到了,一路上一会儿上坡一会儿下坡的。终于到了最南点。在路边停好电动自行车,见当地人都是直接把头盔挂后视镜上就走了,难道他们不怕偷吗? 下午去了白沙更是如此。 下了车,走了没500米,就看到一个楼,写着“台湾最南点观景台”, 其实这边最最南点还有800多米呢,感情这边也有山寨景点。 又走过800米的热带雨林,我们终于到了最南点,来个特写。 内嵌图片 5 再远的风吹沙实在不敢去了,毕竟还是离的很远的地,无奈返航。 回到民宿,一路上还很顺利,没有电池没有电哦。 回到了民宿,老板很慷慨的借了我们氢气车,这个是在当地有很多地方可以更换氢气的,这样就不用回来了,可这个理论上是需要驾照才可以开的,不过是绿牌的,老板说很少会被抓。 得了,上路。 这风驰电掣的。一瞬溜就到了后碧湖,这是干嘛的地呢? 这是潜水和吃海鲜的,我们都会去。 吃了最有名的一个大排档,100元台币20块生鱼片,这厚,这大,这个真是值啊。当地越是这种新鲜不烹调的东西越是便宜。而一些炒菜就要200,300这样的。所以来这种地方就吃生鱼片等等这样的就可以了。这个量实在有点多,结果最后还没吃完,行吧,打包我们走吧。 潜水,这个就算了。一个是不会游泳,另外一个危险。我们来这里是来换氢气瓶的。当然不是马上来换的,当中又去了一次猫鼻头。这边的海风明显比早上大很多,因为这边左边是台湾海鲜,右边是巴士海峡。又是当中一个比较突出的点,于是往来的海风就比较猛烈了点。 来台湾都没有怎么去过很好的沙滩,这个就很快弥补了。 白沙,是当地很有名的沙滩。开车走了,到了就发现当地车都是把安全帽挂后视镜的。而我们两居然拿着安全帽,背着包,以及那个生鱼片就上去了。球子宝宝还脱了鞋在沙滩上玩呢,这玩着玩着浪就来了。 内嵌图片 6 你看这父母带着孩子来玩的,还有居然带着小狗子来的,一个大浪过来把这些小狗子给吓的哦。哈哈哈。 远处还有撑着太阳伞的。这有点跟巴塞罗那那个海滩一样,不过人家大多是裸女晒太阳的。

因为跟后端app的统计时间对不上,所以有点怀疑是不是nginx proxy这边出了问题。 一开始用的strace来进行检查,发现是 recvfrom()这个系统函数比较慢,但是要更深入的解析,那strace就没有办法了。

1
strace -s 5000 -rp 1991 2>&1 | awk '$1 > 0.01' 

google了下下发现agentzh大神写了很多关于systemtap的小工具,于是就直接用上了进行了分析。 主要是两个部分,一个nginx的用户空间的调用,另外一个是内核空间的调用。 要调试内核空间的话一定要安装kernel-debuginfo包才行,大家根据自己的内核版本来安装吧。 https://github.com/agentzh/nginx-systemtap-toolkit 由于系统默认的systemtap版本比较低,所以要自己手动编译安装2.1以上的版本,我就装了比较新的2.2.1版本,安装这个需要先安装好kernel-devel包才行。

1
2
3
4
wget http://sourceware.org/systemtap/ftp/releases/systemtap-2.2.1.tar.gz 
yum install kernel-devel-2.6.32-358.el6.x86_64
wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-2.6.32-358.14.1.el6.x86_64.rpm
wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-common-x86_64-2.6.32-358.14.1.el6.x86_64.rpm rpm -ivh *.rpm

在都安装完systemtap和debuginfo包之后执行下面这个进行测试看看: stap -v -e ‘probe vfs.read {printf(“read performedn”); exit()}’ 具体的用法在https://github.com/agentzh/nginx-systemtap-toolkit都有介绍的,下面是简单演示了一下其中几个的用法

1
[root@11 nginx-systemtap-toolkit]# ./ngx-active-reqs -p 23187 ERROR: MAXACTION exceeded near keyword at <input type="text" >:32:13 Tracing 23187 (/usr/local/nginx/sbin/nginx)... req "POST /bid?", r=0x11c4510, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.036s, buffered=0, conn: ssl=0, from=110.75.20.114, reqs=11, err=0, fd=272, buffered=0, sending request to upstream req "POST /bid?", r=0x10a0fe0, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.003s, buffered=0, conn: ssl=0, from=110.75.36.5, reqs=6, err=0, fd=56, buffered=0, sending request to upstream req "POST /bid?", r=0x11c4e50, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.011s, buffered=0, conn: ssl=0, from=110.75.20.115, reqs=23, err=0, fd=269, buffered=0, sending request to upstream req "POST /?", r=0x10a14e0, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.001s, buffered=0, conn: ssl=0, from=101.226.62.84, reqs=26585, err=0, fd=220, buffered=0, sending request to upstream req "POST /bid?", r=0x11af4f0, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.014s, buffered=0, conn: ssl=0, from=110.75.36.5, reqs=1, err=0, fd=316, buffered=0, sending request to upstream req "POST /bid?", r=0x11a2ef0, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.036s, buffered=0, conn: ssl=0, from=110.75.36.3, reqs=11, err=0, fd=184, buffered=0, sending request to upstream req "POST /bid?", r=0x10e9f30, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.017s, buffered=0, conn: ssl=0, from=110.75.36.5, reqs=2, err=0, fd=134, buffered=0, sending request to upstream req "POST /bid?", r=0x10bac20, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.019s, buffered=0, conn: ssl=0, from=110.75.20.112, reqs=3, err=0, fd=150, buffered=0, sending request to upstream req "POST /bid?", r=0x1180a10, keepalive=1, spdy=0, host=www.sina.com, status=0, time=0.006s, buffered=0, conn: ssl=0, from=110.75.36.4, reqs=6, err=0, fd=147, buffered=0, sending request to upstream WARNING: Number of errors: 1, skipped probes: 0 WARNING: /usr/bin/staprun exited with status: 1 Pass 5: run failed. \[man error::pass5\] 
阅读全文 »
0%