Blog

  • 2013总结

    马上元旦了,即将迈入2014年

    2013影响我最大的两句话:

    1.错过现在中国发展的快车,就像一百五十年前错过美国发展一样可惜

    2.http://zhouhongyi.blog.techweb.com.cn/archives/42
    大家一定要记住,混日子就是在浪费自己的时间。想一想,你35岁以后还能混么?那个时候会有更多的年轻人,他们比你更努力,比你更能干,要求也比你低。你要是没学到东西,没锻炼出来能力,他们会代替你的。

    2013从南京换工作到了上海,进入了更快的节奏。

    2013更深理解了两个很重要但小学时就学过的道理,一个是小马过河,一个是熟能生巧。这两个道理运用在工作中就是不断尝试,不断强化。于是裸辞找工作,没想象的那么难,还找到了预想的工作。

    自从到了上海之后,越来越觉得这座城市的新鲜,速度,也越来越感到渺小,找不到方向,要快点追赶前人的脚步。社会永远是没有梦想的人跑在有梦想人的后面,有小梦想的人跑在大梦想的人后面。有太多的人他们不停下脚步,他们全年无休。

    新认识:

    有很多关键字,随着经历的增多,会有新的认识,甚至与之前的认识是相反的。比如

    稳定的工作 —- 以前认为一份稳定的工作比较重要,现在我觉得在不稳定中做出很多决策,遇到很多风险会更cool一点,摸索前进,学习比较重要,比如那些搞音乐的,登山的,创业家。

    机会 —- 机会的抓取能力是源自之前的积累,这一点已经不能再怀疑了,小机会每天都有,那大机会呢?比如说创办一家公司的机会,可能就只在人的某一年会有,那么如何抓住。学习一种知识的机会就只有在这个季度有,过了这个季度就不可能往那个方向发展。不能等。

    面子 —- 钱和面子的关系很紧密,从没钱到有钱肯定要放下面子来赚钱,有钱了一定可以用钱来买面子。真正有知识的人肯定会放下面子来请教,抓住时间来看书,不怕别人说自己白痴,也不怕别人说自己装。

    信息对等 —- 人与人交流很重要的就是信息对等,对事物的认识程度一定要对等才行,如果不对等,很少有对话的机会,希望与高手和大师对话,那么自己要把信息量提升上去,多看,多听,多学习。

    功劳与苦劳:

    有太多的功劳与苦劳的事了,看电视剧里有很多的人在自己被淘汰的时候大喊:我没有功劳也有苦劳啊!没有功劳想必是有很多问题没有想清楚,把关注点放在了简单、重要的事上,虽然比没有苦劳混日子的强,但是还是得把关注点放在更有价值的点上,不能白让自己的时间浪费在这些苦劳上。

    没想明白:

    这一生要做点什么才算有价值;把钱用在什么地方才算有价值;在年轻的时候省钱重要还是花钱重要;我现在没钱,怎么样能保持健康快乐,怎么能赚钱,怎么能突破能力和职业上的瓶颈。

    假如说上海比其他城市发展快20年,欧美比中国发展要先进100年,那上海就是内地的未来,欧美就是上海的未来,那未何不在有生之年去未来看看?

  • lvs+keepalived实现负载均衡

    目的要求:

    访问vip时,调度器ipvs可以轮调realserver,实现负载均衡。
    keepalived使调度器(ipvs)实现master和backup,如果master挂掉,backup可以补上,保持高可用,keepalived在lvs的作用参考http://www.linuxvirtualserver.org/docs/ha/keepalived.html。

    安装要求:

    调度器,安装ipvsadm+keepalived
    192.168.9.205 lvs+keepalived master
    192.168.9.204 lvs+keepalived slave

    Realserver安装web服务
    192.168.9.203
    192.168.9.201

    vip
    192.168.9.206

    所有机器都在一个交换机,并且在一个网段。使用LVS VS/DR模式,即直接路由实现虚拟服务器。

    在master和backup上要安装ipvsadm和keepalived

    下载软件包

    在http://www.linuxvirtualserver.org/ 下载lvs的软件包

    在http://www.keepalived.org/ 下载keepalived软件包

    先编译安装lvs,再安装keepalived,安装lvs需要内核源码

    下载lvs源码的时候,一定要选择你内核版本对应的源码包。

    yum install kernel-devel -y
    ln -s /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ /usr/src/linux
    wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
    tar zxvf ipvsadm-1.26.tar.gz
    cd ipvsadm-1.26
    make && make install

    到这里ipvs调度器已经安装完毕,使用ipvsadm命令查看ipvs的状态

    使用lsmod | grep ip_vs可以查看已经加载的模块以及调度算法,如下显示使e用的算法是rr

    ip_vs_rr 1420 1 
    ip_vs 115643 3 ip_vs_rr
    libcrc32c 1246 1 ip_vs
    ipv6 321422 16 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

    接下来安装keepalived

    wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz
    tar vxzf keepalived-1.2.9.tar.gz
    cd keepalived-1.2.9
    ./configure的时候,检查以下几行
    Use IPVS Framework : Yes
    IPVS sync daemon support : Yes
    代表检测到了lvs,接下来运行make && make install安装即可。

    对keepalived目录结构进行调整

    mkdir -p /etc/keepalived
    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

    在安装好lvs和keepalived之后,即修改/etc/keepalived/keepalived.conf配置文件,以下是MASTER的配置

    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS_DEVEL
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.9.206
        }
    }
    
    virtual_server 192.168.9.206 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
    #    persistence_timeout 5
        protocol TCP
    
        real_server 192.168.9.203 80 {
            weight 3
            TCP_CHECK {
               connect_timeout 3
               nb_get_retry 3
               delay_before_retry 3
               connect_port 80
            }
        }
    
        real_server 192.168.9.201 80 {
            weight 3
            TCP_CHECK {
               connect_timeout 3
               nb_get_retry 3
               delay_before_retry 3
               connect_port 80
            }
        }
    }

    在BACKUP将上面的state MASTER替换为state BACKUP即可

    在realserver上的配置:
    根据lvs的官方文档,DR模式需要在realserver上添加本地回环的vip,并且是Non-ARP,对外不可见,这样使响应报文的源地址也是vip。参见:http://zh.linuxvirtualserver.org/node/28

    为方便使用,创建realserver-vip.sh,添加

    #!/bin/bash
    #description:start realserver
    vip=192.168.9.206
    source /etc/rc.d/init.d/functions
    case $1 in
    start)
            echo "Start Realserver"
            /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
            echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
            echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    stop)
            echo "Stop Realserver"
            /sbin/ifconfig lo:0 down
            echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
            echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    *)
            echo "Usage: $0 (start | stop)"
    exit 1
    esac

    执行bash realserver-vip.sh start,添加lo:0

    使用ip addr list命令可查看当前机器的vip是否生效。

    接下来测试,模拟MASTER挂掉和恢复,realserver挂掉及恢复,服务是否高可用运转即可。

  • linux查看RAID信息

    RAID分为软RAID和硬RAID

    软RAID查看

    cat /proc/mdstat

    硬RAID查看

    在启动画面进raid卡查看

    IM(RAID1)、IME(RAID1E)、IS(RAID0)

    在系统中查看

    # dmesg |grep -i raid
    
    [ 6.346983] megaraid_sas 0000:03:00.0: PCI INT A -> GSI 33 (level, low) -> IRQ 33
    [ 6.346992] megaraid_sas 0000:03:00.0: setting latency timer to 64
    [ 6.470380] scsi0 : LSI SAS based MegaRAID driver
    [ 25.827254] md: Autodetecting RAID arrays.

    proc中的RAID信息

    # cat /proc/scsi/scsi
    
    Attached devices:
    Host: scsi0 Channel: 00 Id: 32 Lun: 00
    Vendor: DP Model: BACKPLANE Rev: 1.07
    Type: Enclosure ANSI SCSI revision: 05
    Host: scsi0 Channel: 02 Id: 00 Lun: 00
    Vendor: DELL Model: PERC 6/i Rev: 1.22
    Type: Direct-Access ANSI SCSI revision: 05
    Host: scsi0 Channel: 02 Id: 01 Lun: 00
    Vendor: DELL Model: PERC 6/i Rev: 1.22
    Type: Direct-Access ANSI SCSI revision: 05
    Host: scsi1 Channel: 00 Id: 00 Lun: 00
    Vendor: TEAC Model: DVD-ROM DV-28SW Rev: R.2A
    Type: CD-ROM ANSI SCSI revision: 05

    查看RAID卡型号

    # lspci | grep RAID
    03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)

    可以发现上面这台服务器的RAID卡是LSI的,服务器是DELL的,要查看更详尽的信息就需要针对RAID卡在系统里面装驱动了,如去LSI,或DELL网站可以找到对应的驱动。

    http://www.lsi.com/support/pages/download-search.aspx

    搜到megaCLI可以试一下

    http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/1.01.39_Linux_Cli.zip

    通过DELL对应驱动查看

    http://www.dell.com/support/drivers/us/en/04/Product/poweredge-r710

    网上还有通用工具,如megasasctl,很久没有更新了,也可以试一下

    http://sourceforge.net/projects/megactl/files/

    更多可参考:http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS

    dmesg 显示时间

    dmesg -T
  • ethtool检测和管理网卡

    ethtool是检测和管理网卡设置的工具

    ethtool的实用之处之一是可以查看网线是否插到网卡上

    如果有显示信息Link detected: yes,则说明在链路状态,表明插上网线并且在通讯

    #ethtool em1
    
    Settings for em1:
    Supported ports: [ TP ]
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: g
    Wake-on: d
    Link detected: yes

    如果显示Link detected: no,表明插上网线但没有链路

    #ethtool em2
    Settings for em2:
    Supported ports: [ TP ]
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: Unknown!
    Duplex: Half
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: g
    Wake-on: d
    Link detected: no

    如果找不到设备,则没有网线插入

    #ethtool em3
    Settings for em3:
    Cannot get device settings: No such device
    Cannot get wake-on-lan settings: No such device
    Cannot get message level: No such device
    Cannot get link status: No such device
    No data available

    查看 veth 设备对的 peer 另一端

    ethtool -S veth1
  • smbclient的使用

    使用smbclient可以方便的连接上windows共享目录或samba

    smbclient //192.168.11.32/test -U administrator 回车输入密码
    Enter administrator's password: 
    Domain=[COMPUTER] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
    smb: \>

    常用的命令有ls显示,cd切换目录,del删除,put上传,get下载等。

  • chattr lsattr命令

    chattr与lsattr可以修改文件属性,是比chmod, chown的属性更底层的属性。

    chattr可以结合 -减  +增  = 指定 属性

    查看属性,默认只有一个e属性

    #lsattr /etc/hosts
    -------------e- /etc/hosts

    添加i属性,则这个文件将不能修改,删除,重命名,追加,也不能创建硬链接。root也只能在回收这个属性值之后才能正常使用。

    # chattr +i /etc/hosts
    # lsattr /etc/hosts
    ----i--------e- /etc/hosts
    rm /etc/hosts会出现Operation not permitted

    添加a属性,使文件只能被追加,不能被删除,常用于日志文件,比如说在logrotate的时候对日志文件先-a,然后再+a。如nginx的logrotate

    # This configuration is from jpuyy 2013-12-16
     /web/nginx/logs/access.log {
     weekly
     rotate 5
     compress
     sharedscripts
     prerotate
     /usr/bin/chattr -a /web/nginx/logs/access.log
     endscript
     sharedscripts
     postrotate
     /usr/bin/killall -HUP nginx
     /usr/bin/chattr +a /web/nginx/logs/access.log
     endscript
     }

    chattr -R 递规更改属性