博客 2015-08-18


1.VIP:port 提供服务:

       

    唯一标记一个redis实例的是ip和端口,前端是用tcp方式来访问redis的,我们提供给应用访问的是一个vip+63379(一般使用63379) 端口,,vip一定是在master上面的.


因此我们执行如下命令检查redis状态:


[wls81@CNSH044446 ~]$ /wls/wls81/redis/bin/redis-cli -h {vip}  -p 63379 -a {password}  info replication


# Replication

role:master

connected_slaves:1

slave0:ip=10.11.93.12,port=63379,state=online,offset=146649,lag=1

master_repl_offset:146649

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:146648


上面的role这个值一定是master的,只要保证vip在master上我们的Padis cache服务就是没有问题的,如果不通或者role的角色是slave


那就得继续查看是什么问题.



2. 两个redis的角色都是slave的问题


    当两个主机都挂了或者我们自己不小心将两个redis停了,并且我们用下面的命令检查


     /wls/wls81/redis/bin/redis-cli -h  {ip} -p {port} -a {password}  info replication


     发现无论是vip还是另外的两个ip都是role:slave 的角色,这个时候需要对vip所在的主机执行slaveof no one 的操作,将


     vip 所在的redis变成master,如:


     /wls/wls81/redis/bin/redis-cli -h  {vip} -p {port} -a {password}  slaveof no one



博客 2015-08-07


名词解释: 


MTA(Mail transfer Agent) 使用SMTP协议,常用的有Postfix、Sendmail、Qmail、Exim

MUA(Mail User Agent)


SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,主要用在server端,端口25

pop3 IMAP  用来接收邮件,主要用的客户端,端口110  (IMAP 用来同步本地客户端与webmail之间变动的同步)  



可以更改服务器上的默认MTA:

alternatives --display mta

alternatives --set mta /usr/sbin/sendmail.exim



linux 下常用的发送邮件工具 mail、mutt


实例:


实例1: 利用postfix、mutt发送邮件


postfix  网关设置  

vim /etc/postfix/main.cf

relayhost = gatewall.mreald.com


service postfix restart


echo "test" |mail -s "title" qingshanli1988@163.com


使用Mutt可以发送带附件的:

ls |mutt -s "this is subject" -a cdms.txt  qingshanli1988@163.com


查看发送日志:

tail /var/log/maillog



实例2: 利用163邮箱发送邮件


vim /etc/mail.rc


set from=from@163.com 

set smtp=smtp.163.com

set smtp-auth-user=from@163.com 

set smtp-auth-password=aaaa

set smtp-auth=login



cat test.txt| mail -s "test the smtp mail" other@qq.com


实例3:解决cron 造成 clientmqueue满

可能没开启smtp 服务: 


测试:

telnet 127.0.0.1 25



博客 2015-07-20

简介:

有些网站打开非常慢,一个值得关注的原因是:包含国外网站的东东,包括字体、CSS、JS... 如何解决字体问题呢?

比如下面的实例


源代码:

  <head>
    <title>Title</title>
    <meta charset="utf-8">    
    <style>      
        @import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);      
        @import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);      
        @import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);      
        body { font-family: 'Droid Serif'; }      
        h1, h2, h3 {        font-family: 'Yanone Kaffeesatz';        font-weight: normal;      }     
         .remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }   
      </style>
  </head>




博客 2015-07-04

简介:

这里的代理,是自己搭建,用时打开,不是系统本身的代理设置。目的是为上外网:包括google、youtube、facebook......


所用工具: 

1.一个ssh代理,或者一个VPS


2.本地代理转发 使用privoxy

apt-get install privoxy

或者 yum install privoxy

vim     /etc/privoxy/config
confdir /etc/
logdir /var/log
forward-socks4a / 127.0.0.1:7070 .
listen-address :8118

启动:
service privoxy start


快速创建: 

1.开通 ssh 隧道

ssh -4 -D 7070 -C root@190.117.226.242


2.开通转发

 /usr/sbin/privoxy --pidfile /var/run/privoxy.pid /etc/privoxy/config && export http_proxy=http://127.0.0.1:8118


需求:


1.如果想同时设置http、 https代理

export http_proxy=https://127.0.0.1:8118
export http_proxy=http://127.0.0.1:8118


2.如果想设置系统的代理环境:

Linux 系统配置里面设置 IP:127.0.0.1     端口:8118




博客 2015-07-04

简介:

Heka 是类似于 logstash 的日志集中管理系统,基于Go语言开发,所有并行处理速度很快。logstash 可以处理 1万条/s ,而Heka 可以达到10万条/s。安装本来是很easy 的事情,但遇到网络问题,让人难受。下面来分享安装过程。


下载源代码: 

官网安装手册:


http://hekad.readthedocs.org/en/v0.9.2/installing.html


下载:

  git clone https://github.com/mozilla-services/heka


编译安装:

cd heka
./build.sh


问题:


编译时,一部分代码从github 下载,一部分从code.google.com下载,前者可直接下载,但后者无法直接下载


解决办法:


方法一:设置http 、https代理


博客 2015-06-24

有感而发:

为了自己方便,上次写了个小爬虫,抓取Profile 上面的精华文章。


经过半个月,600篇左右大致看了一大半,收获很大。但着眼于现在与未来,不免有一丝伤感。


百家争鸣:

从2012年09月,林城的第一篇Profile 发表,到现在,俨然就是一部史书,书写着大家的努力与进步,激情与梦想!


新机房搬迁,Profile、Case等系统的开发,给大家一个个机会去锻炼,去学习


比如:

沛公把两条路由合并成一条,让金中中奖了,写了一篇好文

常哥增加的nscd 服务,大大提升了解析速度 缓解了DNS服务器的压力

有人一不小心用 >/var/db/nscd/hosts 清空DNS数据,结果让沛公忙了一个早上,写了经典的排错过程

老廖写的NAS数据迁移让人眼睛一亮 :netapp大容量nas卷迁移方法 

backlog 问题也难到不少人

余帅的 connect hack 、MTU问题,处理也是很精辟

...........


改朝换代:

改朝换代:

曾经的波哥是带头大哥,主导技术,带领大家勇往之前,帮助大家解决疑难问题


技术牛,但更牛的是带人,他会引导大家去思考,去深入研究问题,激发你的学习热情

比如:

帮工 的NAS问题,给指导方向

博客 2015-06-11

1. 如何快速查找大文件

比如根文件系统,最大的前10个文件?

tree -finxs -L 5 / |sort -k2n -t '[' |tail


-f  列出全路径,直观,方便后面使用

-x  当前文件系统。比如/ 下面挂载个/wls卷(另外一个ext4文件系统),就不会去查找

-L  列出路径深度,越深越慢,5 层挺好的


实例:

[root@localhost mreald]# tree -finxs -L 5 / |sort -k2n -t '[' |tail 
[142363262]  //public/jdk1.7.0_67.tgz
[161505713]  //public/sosreport-CNSZ031314-702153-da593f.tar.bz2
[162204545]  //public/wlas.tar.gz
[167106418]  //root/slogs/2015-04-28_20:20:42pts-203public.log
[175738200]  //public/PA18CMSDMZ7603.out.20150511
[647942144]  //root/chkusr@10.11.100.141
[694297784]  //root/slogs/2015-05-15_11:03:00pts-255public.log
[700575507]  //root/slogs/2015-05-15_10:26:39pts-271public.log
[1101279689]  //root/slogs/2015-04-24_14:02:48pts-177public.log
[1956988917]  //chkusr/CNSZ040588.osbackup.tgz


如果空间满了,又不能删除,这样处理

gzip /public/PA18CMSDMZ7603.out.20150511


就会生成  //public/PA18CMSDMZ7603.out.20150511.gz 并会自动删除原文件


2. 查找一个路径下面哪些目录占的空间大:

du -hx --max-depth=1 /


--max-depth 设置列出层次

-x 只在当前文件系统


这样可以递归查询哪些目录最大



3. 查找一个文件或者目录或者路径:

locate filename/path/dirname/keyword


博客 2015-06-03


昨天碰到一个su 切换不成功的问题


下面是su 切换过程的日志:


[root@blog-mreald-com ~]# tail -f /var/log/secure|grep  su:
Jun  2 17:23:14 blog-mreald-com su: pam_unix(su-l:auth): authentication failure; logname=root uid=20002 euid=20002 tty=pts/8 ruser=mc rhost=  user=root
Jun  2 17:23:22 blog-mreald-com su: pam_unix(su-l:auth): authentication failure; logname=root uid=20002 euid=20002 tty=pts/8 ruser=mc rhost=  user=root
Jun  2 17:28:13 blog-mreald-com su: pam_unix(su-l:auth): authentication failure; logname=root uid=20002 euid=20002 tty=pts/8 ruser=mc rhost=  user=chkusr



换个主机,能正常切换的日志:

[root@nexthost ~]# tail -f  /var/log/secure|grep su:
Jun  2 17:27:19 nexthost su: pam_tally(su-l:account): option deny=5 allowed in auth phase only
Jun  2 17:27:19 nexthost su: pam_tally(su-l:account): unknown option: reset
Jun  2 17:27:19 nexthost su: pam_tally(su-l:account): option no_lock_time allowed in auth phase only
Jun  2 17:27:19 nexthost su: pam_unix(su-l:session): session opened for user chkusr by root(uid=2146)



开始感觉是pam 中的login、su 认证模块配置错误 ,但查不出问题


后面看到 报错中的logname=root uid=20002 euid=20002

uid==euid 明显不对啊


博客 2015-05-29

简介:

环境的搭建过程,与应用case处理不是同一组人处理 。出现问题往往不容易查到原因,下面来处理一个类似的实例。


应用信息:

1.应用实例:

nts-server1234
10.12.21.3 Ins IP  
10.12.22.3 F5 IP  
10.12.194.130  主机 IP    端口 30793


2.F5信息

10.12.14.16 vs_nts-prms_https_WII_PrdService 443



Trouble Shooting 过程: 

第一步:浏览器打开,一直在转,很久之后超时

http://nts-prms.blog.mreald.com/PRMS

域名解析了吗:
ping nts-prms.blog.mreald.com
PING nts-prms.blog.mreald.com (10.12.14.16) 56(84) bytes of data.
64 bytes from 10.12.14.16: icmp_seq=1 ttl=252 time=0.810 ms
64 bytes from 10.12.14.16: icmp_seq=2 ttl=252 time=0.933 ms


第三步:访问单独应用:正常

博客 2015-04-19


    三年前读过这篇文章 或者   这里,今天了解到Go语言,就在想以后语言会是什么样?我想再多也没用,因为没有达到大牛的思想境界,只到再看五年前大神的分析。在些做一点总结。


1.语言发展很慢,而快速发展的是:框架 、工具


2.语言抽象级别越来越高,更简易使用。比如:scala 基于框架构建的


3.未来趋势会是:声明式(Declarative)、动态(Dynamic)、并发(Concurrent)


4.什么是声明式编程?

声明式编程:主要有DSL、函数式编程。(如今的两项成果)

比如查找一个大于20元的单子:

用Java的循环就要写过程(How)

用数据库只用写一句(What)---DSL


5.DSL(Domain Specific Language,领域特定语言,比如:css、sql、Logo)

外部DSL 比如sql、unix-command、XSLT

内部DSL 一系列特别的API、使用模式的别称 比如LINQ查询语句、Ruby on Rails、jQuery代码 


6.函数式编程


说白了就如写数学算式一样,y=x+1 (x、y都是不可变状态)。不是平时用的x=x+1 (x是变量,可变状态)

APL、Haskell、Scheme、ML、LISP


7.动态语言、静态语言

趋势:现在分,以后就不会再分了。

动态语言:Ruby Python Javascripts LISP(比如声明变量,可以不用指定 是int 型,自动会判断)

静态语言:C C++ Java 


8.元编程:代码生成的别称(动态语言容易实现)


9.并发


i-- 4/10 i++