Category: Linux

  • linux连接数统计查看

    在日常工作中经常要查看连接数,以下是几个例子

    先安装

    yum install net-tools -y

    统计80端口连接数

    netstat -na | grep -i "80" | wc -l

    统计已连接上的,状态为“established’的连接数

    netstat -na | grep ESTABLISHED | wc -l

    ESTABLISHED来源IP访问量前5名

    netstat -na | grep ESTABLISHED | awk '{print$5}' | awk -F : '{print$1}' | sort | uniq -c | sort -k 1 -n -r | head -n 5

    正在SYN来源IP访问量前5名

    netstat -na | grep SYN | awk '{print$5}' | awk -F : '{print$1}' | sort | uniq -c | sort -k 1 -n -r | head -n 5

    将不同的tcp连接状态打印出来

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}'

     

    TIME_WAIT 257 等待所有分组死掉
    SYN_SENT 2 应用已经开始,打开一个连接
    FIN_WAIT1 49 应用说它已经完成
    FIN_WAIT2 60 另一边已同意释放
    ESTABLISHED 509 正常数据传输状态/当前并发连接数
    SYN_RECV 5 一个连接请求已经到达,等待确认
    CLOSING 1 无连接是活动的或正在进行
    LAST_ACK 37 等待所有分组死掉

    netstat 查看 unix socket 使用

    netstat -ntlpx

    参考:http://www.letuknowit.com/post/31.html

  • linux write命令给其他用户发消息

    使用w或`last | grep stil`可以查看到哪些用户正在登陆

    11:46:19 up 82 days, 5:58, 2 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    jpuyy pts/0 192.168.1.2 11:45 3.00s 0.53s 0.00s w
    jpuyy pts/3 192.168.1.3 11:45 19.00s 0.57s 0.57s -bash

    现在在pts/0向pts/3的jpuyy用户写消息

    jpuyy@ip-172-31-11-178:~$ sudo write jpuyy pts/3

    [sudo] password for jpuyy:

    write: warning: write will appear from jpuyy
    foo
    bar

    当发送命令后,对方会收到一条

    Message from yourname@yourhost on yourtty at hh:mm …
    foo
    bar

    方便在没有其他通讯的时候发消息,测试下来不支持中文。

  • ssh端口转发

    很多时候服务器集群是有跳板机,远程进行任何操作的时候都是先登陆跳板机,再登陆内网的机器。

    我们把本机叫做local,跳板机叫做tiaoban,真正要连接的集群内的服务器叫做node1。如何快速从local登陆到node1? 操作如下:

    方法一:

    1. 在 tiaoban 上输入如下命令

     ssh -CfNg -L 3333:node1:22 root@node1

    -L表示local,即在跳板机上开设一个3333的端口,保证有ssh连接到3333时,转发到node1的22端口。

    然后在local去连跳板机的3333端口

    ssh -p 3333 root@tiaoban

    注意,上面我都用的是root。实际是node1的用户是什么就写什么,这样就可以直接登陆到机器node1了。

    这种方法会在跳板机上打开3333端口,暴露了端口。

    方法二:通过proxycommand 和 netcat

    这种方法不需要对tiaoban和node1进行任何操作,只需在local机器的ssh_config(或是~/.ssh/config)添加如下配置

    Host node1
    HostName node1
    Port 22
    ProxyCommand ssh -p 3333 root@tiaoban ; nc %h %p

    然后在local输入

    ssh root@node1

    这样可直接转发,nc的作用是做一个tunnel,在跳板机上不会暴露端口。

    应用:在本地启一个 socks5 代理

    ssh -D 1081 jpuyy@yyhome -p 22

    在外面连接家里的路由器界面

    ssh -L 8989:192.168.1.1:80 [email protected]
    # 浏览器打开 127.0.0.1:8989 即可管理路由器
    
  • sublime使用中文输入法ibus

    在ubuntu下使用sublime,直接使用不能输入中文

    这需要插件才能实现,实际使用上实现了功能,如果英文好平时还是少打点汉字吧

    安装方法

    cd ~/.config/sublime-text-2/Packages
    git clone https://github.com/xgenvn/InputHelper.git

    接下来打开sublime,在输入界面按下 Ctrl + Shift + Z , 会弹出一个小框,切换到ibus中文输入之后回车,已经输入的字会出现在sublime光标的后面。

  • ubuntu安装nvidia 710M驱动

    笔记本是acer E1 -471G

    NVIDIA GeForce 710M属于700M Series (Notebooks)

    可以到如下页面下载,ubuntu 12.04 (64-bit)选择系统为Linux 64-bit

    http://www.nvidia.com/Download/index.aspx?lang=en-us

    下载后得到NVIDIA-Linux-x86_64-331.20.run,加执行权限安装即可。

    更为方便的方式:

    sudo add-apt-repository ppa:xorg-edgers/ppa
    sudo apt-get update
    sudo apt-get install nvidia-331 nvidia-current

    重启后如果出现分辨率640*480,可尝试将/etc/X11/xorg.conf和~/.config/monitors.xml文件移走,重启。

    查看nvidia显示

    # lspci | grep -i nvidia
    01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M / GT 620M/625M/630M/720M] (rev ff)

    对于E1-471G这种双显卡的机器,需要安装,最后可以切换

    sudo apt-get install nvidia-prime
  • 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挂掉及恢复,服务是否高可用运转即可。