??xml version="1.0" encoding="utf-8" standalone="yes"?>ɱ̨:BlogJava - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/zh-cnWed, 16 Oct 2019 02:39:48 GMTWed, 16 Oct 2019 02:39:48 GMT60linux抓包工具 - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/archive/2015/08/10/426702.htmlEric_jiangEric_jiangMon, 10 Aug 2015 00:51:00 GMT//www.lmlez.icu/jjshcc/archive/2015/08/10/426702.html//www.lmlez.icu/jjshcc/comments/426702.html//www.lmlez.icu/jjshcc/archive/2015/08/10/426702.html#Feedback0//www.lmlez.icu/jjshcc/comments/commentRss/426702.html//www.lmlez.icu/jjshcc/services/trackbacks/426702.html1.wireshark

wireshark安装
 #yum install wireshark wireshark-gnome
wireshark使用
   #wireshark

2.tcpdump

tcpdump采用命o行方式,它的命o格式为:
      tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文g?]
          [ -i |络接口 ] [ -r 文g名] [ -s snaplen ]
          [ -T cd ] [ -w 文g?] [表达?]

//anheng.com.cn/news/24/586.html

(1). tcpdump的选项介绍 
//anheng.com.cn/news/24/586.html

   -a    网l地址和广播地址转变成名字;
   -d    匹配信息包的代码以Z能够理解的汇~格式给出;
   -dd    匹配信息包的代码以c语言E序D늚格式l出Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -ddd   匹配信息包的代码以十进制的形式l出Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -e    在输打印出数据链路层的头部信息;
   -f    外部的Internet地址以数字的形式打印出来Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -l    使标准输出变为缓冲行形式Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -n    不把|络地址转换成名字;
   -t    在输出的每一行不打印旉戻I
   -v    输出一个稍微详l的信息Q例如在ip包中可以包括ttl和服务类型的信息Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -vv    输出详细的报文信息;
   -c    在收到指定的包的数目后,tcpdump׃停止Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -F    从指定的文g中读取表辑ּ,忽略其它的表辑ּQ?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -i    指定监听的网l接口;
   -r    从指定的文g中读取包(q些包一般通过-w选项产生)Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />   -w    直接包写入文g中,q不分析和打印出来;
   -T    监听到的包直接解释为指定的cd的报文,常见的类型有rpc Q远E过E调用)和snmpQ简单网l管理协议;Q?/p>

Ethereal和Sniffit两个|络分析工具


PSQ?a style="border-bottom: rgb(0,102,0) 1px dashed; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,102,0); text-decoration: none; padding-top: 0px" title="tcpdump" >tcpdump是一个用于截取网l分l,q输出分l内容的工具Q简单说是数据包抓包工兗tcpdump凭借强大的功能和灵zȝ截取{略Q其成?a style="border-bottom: rgb(0,102,0) 1px dashed; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,102,0); text-decoration: none; padding-top: 0px" title="Linux" >Linuxpȝ下用于网l分析和问题排查的首选工兗?/strong>

tcpdump提供了源代码Q公开了接口,因此具备很强的可扩展性,对于|络l护和入侵者都是非常有用的工具。tcpdump存在于基本的Linuxpȝ中,׃它需要将|络界面讄为؜杂模式,普通用户不能正常执行,但具?a style="border-bottom: rgb(0,102,0) 1px dashed; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,102,0); text-decoration: none; padding-top: 0px" title="root" >root权限的用户可以直接执行它来获取网l上的信息。因此系l中存在|络分析工具主要不是Ҏ机安全的威胁Q而是对网l上的其他计机的安全存在威胁?/p>

一、概q?/strong>
֐思义Qtcpdump可以网l中传送的数据包的“?#8221;完全截获下来提供分析。它支持针对|络层、协议、主机、网l或端口的过滤,q提供and、or、not{逻辑语句来帮助你L无用的信息?/p>


# tcpdump -vv
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:53:21.444591 IP (tos 0x10, ttl  64, id 19324, offset 0, flags [DF], proto 6, length: 92) asptest.localdomain.ssh > 192.168.228.244.1858: P 3962132600:3962132652(52) ack 2726525936 win 1266
asptest.localdomain.1077 > 192.168.228.153.domain: [bad udp cksum 166e!]  325+ PTR? 244.228.168.192.in-addr.arpa. (46)
11:53:21.446929 IP (tos 0x0, ttl  64, id 42911, offset 0, flags [DF], proto 17, length: 151) 192.168.228.153.domain > asptest.localdomain.1077:  325 NXDomain q: PTR? 244.228.168.192.in-addr.arpa. 0/1/0 ns: 168.192.in-addr.arpa. (123)
11:53:21.447408 IP (tos 0x10, ttl  64, id 19328, offset 0, flags [DF], proto 6, length: 172) asptest.localdomain.ssh > 192.168.228.244.1858: P 168:300(132) ack 1 win 1266
347 packets captured
1474 packets received by filter
745 packets dropped by kernel

不带参数的tcpdump会收集网l中所有的信息包头Q数据量巨大Q必过滤?/p>

二、选项介绍

-A 以ASCII格式打印出所有分l,q将链\层的头最化?/p>

-c 在收到指定的数量的分l后Qtcpdump׃停止?/p>

-C 在将一个原始分l写入文件之前,查文件当前的大小是否过了参数file_size 中指定的大小。如果超q了指定大小Q则关闭当前文gQ然后在打开一个新的文件。参?file_size 的单位是兆字节(?,000,000字节Q而不?,048,576字节Q?/p>

-d 匹配信息包的代码以Z能够理解的汇~格式给出?/p>

-dd 匹配信息包的代码以c语言E序D늚格式l出?/p>

-ddd 匹配信息包的代码以十进制的形式l出?/p>

-D 打印出系l中所有可以用tcpdump截包的网l接口?/p>

-e 在输打印出数据链路层的头部信息?/p>

-E 用spi@ipaddr algo:secret解密那些以addr作ؓ地址Qƈ且包含了安全参数索引值spi?a style="border-bottom: rgb(0,102,0) 1px dashed; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,102,0); text-decoration: none; padding-top: 0px" title="IPsec" >IPsec ESP分组?/p>

-f 外部的Internet地址以数字的形式打印出来?/p>

-F 从指定的文g中读取表辑ּQ忽略命令行中给出的表达式?/p>

-i 指定监听的网l接口?/p>

-l 使标准输出变为缓冲行形式Q可以把数据导出到文件?/p>

-L 列出|络接口的已知数据链路?/p>

-m 从文件module中导入SMI MIB模块定义。该参数可以被用多ơ,以导入多个MIB模块?/p>

-M 如果tcp报文中存在TCP-MD5选项Q则需要用secret作ؓ׃n的验证码用于验证TCP-MD5选选项摘要Q详情可参考RFC 2385Q?/p>

-b 在数?链\层上选择协议Q包括ip、arp、rarp、ipx都是q一层的?/p>

-n 不把|络地址转换成名字?/p>

-nn 不进行端口名U的转换?/p>

-N 不输Z机名中的域名部分。例如,‘nic.ddn.mil‘只输?#8217;nic‘?/p>

-t 在输出的每一行不打印旉戟?/p>

-O 不运行分l分l匹配(packet-matchingQ代码优化程序?/p>

-P 不将|络接口讄成؜杂模式?/p>

-q 快速输出。只输出较少的协议信息?/p>

-r 从指定的文g中读取包(q些包一般通过-w选项产生)?/p>

-S tcp的序列号以绝对值Ş式输出,而不是相对倹{?/p>

-s 从每个分l中d最开始的snaplen个字节,而不是默认的68个字节?/p>

-T 监听到的包直接解释为指定的cd的报文,常见的类型有rpcq程q程调用Q和snmpQ简单网l管理协议;Q?/p>

-t 不在每一行中输出旉戟?/p>

-tt 在每一行中输出非格式化的时间戳?/p>

-ttt 输出本行和前面一行之间的旉差?/p>

-tttt 在每一行中输出由date处理的默认格式的旉戟?/p>

-u 输出未解码的NFS句柄?/p>

-v 输出一个稍微详l的信息Q例如在ip包中可以包括ttl和服务类型的信息?/p>

-vv 输出详细的报文信息?/p>

-w 直接分l写入文件中Q而不是不分析q打印出来?/p>

三、tcpdump的表辑ּ介绍

表达式是一个正则表辑ּQtcpdump利用它作滤报文的条gQ如果一个报文满 辑ּ的条Ӟ则这个报文将会被捕获。如果没有给ZQ何条Ӟ则网l上所有的信息?会被截莗?/p>

在表辑ּ中一般如下几U类型的关键字:

W一U?/strong>是关于类型的关键字,主要包括hostQnetQportQ例?host 210.27.48.2Q?指明 210.27.48.2是一C机,net 202.0.0.0指明202.0.0.0是一个网l地址Qport 23 指明端口h23。如果没有指定类型,~省的类型是host?/p>

W二U?/strong>是确定传输方向的关键字,主要包括srcQdstQdst or srcQdst and srcQ?q些关键字指明了传输的方向。D例说明,src 210.27.48.2 Q指明ip包中源地址?210.27.48.2 Q?dst net 202.0.0.0 指明目的|络地址?02.0.0.0。如果没有指?方向关键字,则缺省是src or dst关键字?/p>

W三U?/strong>是协议的关键字,主要包括fddiQipQarpQrarpQtcpQudp{类型。Fddi指明是在FDDI (分布式光U数据接口网l?上的特定的网l协议,实际上它?#8221;ether”的别名,fddi和ether hcM的源地址和目的地址Q所以可以将fddi协议包当作ether的包q行处理和分析?其他的几个关键字是指明了监听的包的协议内容。如果没有指定Q何协议,则tcpdump 会 监听所有协议的信息包?/p>

除了q三U类型的关键字之外,其他重要的关键字如下QgatewayQ?broadcastQlessQ?greaterQ?q有三种逻辑q算Q取非运是 ‘not ‘ ‘! ‘Q?与运是’and’Q?#8217;&&’;或运是’or’ Q?#8217;||’Q?q些关键字可以组合v来构成强大的l合条g来满h们的需要?/p>

四、输出结果介l?/strong>

下面我们介绍几种典型的tcpdump命o的输Z?/p>

(1) 数据链\层头信息
使用命oQ?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#tcpdump --e host ICE
ICE 是一台装有linux的主机。它的MAC地址?Q?0Q?7Q?8QAFQ?A H219是一台装?a style="border-bottom: rgb(0,102,0) 1px dashed; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,102,0); text-decoration: none; padding-top: 0px" title="Solaris" >Solaris的SUN工作站。它的MAC地址?Q?Q?0Q?9Q?BQ?6Q?上一条命令的输出l果如下所C:

21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ICE.  telne t 0:0(0) ack 22535 win 8760 (DF)

21Q?0Q?2是显C的旉Q?847509是IDPeth0 <表示从网l接口eth0接收该分l, eth0 >表示从网l接口设备发送分l, 8:0:20:79:5b:46是主机H219的MAC地址Q?它表明是从源地址H219发来的分l? 0:90:27:58:af:1a是主机ICE的MAC地址Q?表示该分l的目的地址是ICE?ip 是表明该分组是IP分组Q?0 是分l的长度Q?h219.33357 > ICE. telnet 表明该分l是从主机H219?3357端口发往LICE?TELNET(23)端口?ack 22535 表明对序列号?22535的包q行响应?win 8760表明?送窗口的大小?760?/p>

(2) ARP包的tcpdump输出信息

使用命oQ?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#tcpdump arp

得到的输出结果是Q?/p>

22:32:42.802509 eth0 > arp who-has route tell ICE (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

22:32:42是时间戳Q?802509是IDP eth0 >表明从主机发分组Qarp表明是ARPh包, who-has route tell ICE表明是主机ICEhLroute的MAC地址?0:90:27:58:af:1a是主?ICE的MAC地址?/p>

(3) TCP包的输出信息

用tcpdump捕获的TCP包的一般输Z息是Q?/p>

src > dst: flags data-seqno ack window urgent options

src > dst:表明从源地址到目的地址Q?flags是TCP报文中的标志信息QS 是SYN标志Q?F (FIN)Q?P (PUSH) Q?R (RST) “.” (没有标记); data-seqno是报文中的数?的顺序号Q?ack是下ơ期望的序P window是接收缓存的H口大小Q?urgent表明 报文中是否有紧急指针?Options是选项?/p>

(4) UDP包的输出信息

用tcpdump捕获的UDP包的一般输Z息是Q?/p>

route.port1 > ICE.port2: udp lenth

UDP十分单,上面的输表明从主机route的port1端口发出的一个UDP报文 C机ICE的port2端口Q类型是UDPQ?包的长度是lenth?/p>

五、D?/strong>

(1) 惌截获所?10.27.48.1 的主机收到的和发出的所有的分组Q?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#tcpdump host 210.27.48.1

(2) 惌截获L210.27.48.1 和主?10.27.48.2?10.27.48.3的通信Q用命令(注意Q括号前的反斜杠是必ȝQ:
#tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )

(3) 如果惌获取L210.27.48.1除了和主?10.27.48.2之外所有主机通信的ip包,使用命oQ?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

(4) 如果惌获取L192.168.228.246接收或发出的ssh包,q且不{换主机名使用如下命oQ?br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#tcpdump -nn -n src host 192.168.228.246 and port 22 and tcp

(5) 获取L192.168.228.246接收或发出的ssh包,q把mac地址也一同显C:
# tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn

(6) qo的是源主Zؓ192.168.0.1与目的网lؓ192.168.0.0的报_
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

(7) qo源主机物理地址为XXX的报_
tcpdump ether src 00:50:04:BA:9B and dst……
Qؓ什么ether src后面没有host或者netQ物理地址当然不可能有|络喽)?/p>

(8) qo源主?92.168.0.1和目的端口不是telnet的报_q导入到tes.t.txt文g中:
Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt

ip icmp arp rarp ?tcp、udp、icmpq些选项{都要放到第一个参数的位置Q用来过滤数据报的类型?/strong>

例题Q如何用tcpdump监听来自eth0适配卡且通信协议为port 22Q目标来源ؓ192.168.1.100的数据包资料Q?/strong>

{:tcpdump -i eth0 -nn port 22 and src host 192.168.1.100

例题Q如何用tcpdump抓取讉Keth0适配卡且讉K端口为tcp 9080Q?/strong>

{?tcpdump -i eth0 dst 172.168.70.35 and tcp port 9080

例题Q如何用tcpdump抓取与主?92.168.43.23或着与主?92.168.43.24通信报文Qƈ且显C在控制C

tcpdump -X -s 1024 -i eth0 host (192.168.43.23 or 192.168.43.24) and  host 172.16.70.35



Eric_jiang 2015-08-10 08:51 发表评论
]]>
Linux iostat监测IO状?/title><link>//www.lmlez.icu/jjshcc/archive/2015/07/29/426481.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Wed, 29 Jul 2015 02:54:00 GMT</pubDate><guid>//www.lmlez.icu/jjshcc/archive/2015/07/29/426481.html</guid><wfw:comment>//www.lmlez.icu/jjshcc/comments/426481.html</wfw:comment><comments>//www.lmlez.icu/jjshcc/archive/2015/07/29/426481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.lmlez.icu/jjshcc/comments/commentRss/426481.html</wfw:commentRss><trackback:ping>//www.lmlez.icu/jjshcc/services/trackbacks/426481.html</trackback:ping><description><![CDATA[<p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">Linuxpȝ出现了性能问题Q一般我们可以通过top、iostat、free、vmstat{命令来查看初步定位问题。其中iostat可以l我们提供丰富的IO状态数据?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="red">1. 基本使用</font></p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">$iostat -d -k 1 10</div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">参数 -d 表示Q显C备(盘Q用状态;-k某些使用block为单位的列强制用Kilobytes为单位;1 10表示Q数据显C每?U刷Cơ,共显C?0ơ?span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" id="more-1228"></span></p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">$iostat -d -k 1 10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 39.29 21.14 1.44 441339807 29990031 sda1 0.00 0.00 0.00 1623 523 sda2 1.32 1.43 4.54 29834273 94827104 sda3 6.30 0.85 24.95 17816289 520725244 sda5 0.85 0.46 3.40 9543503 70970116 sda6 0.00 0.00 0.00 550 236 sda7 0.00 0.00 0.00 406 0 sda8 0.00 0.00 0.00 406 0 sda9 0.00 0.00 0.00 406 0 sda10 60.68 18.35 71.43 383002263 1490928140 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 327.55 5159.18 102.04 5056 100 sda1 0.00 0.00 0.00 0 0 </div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">tps</font>Q该讑֤每秒的传输次敎ͼIndicate the number of transfers per second that were issued to the device.Q?#8220;一ơ传?#8221;意思是“一ơI/Oh”。多个逻辑h可能会被合ƈ?#8220;一ơI/Oh”?#8220;一ơ传?#8221;h的大是未知的?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">kB_read/s</font>Q每U从讑֤Qdrive expressedQ读取的数据量;<font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">kB_wrtn/s</font>Q每U向讑֤Qdrive expressedQ写入的数据量;<font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">kB_read</font>Q读取的L据量Q?font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">kB_wrtn</font>Q写入的L量数据量Q这些单位都为Kilobytes?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">上面的例子中Q我们可以看到磁盘sda以及它的各个分区的统计数据,当时l计的磁盘总TPS?9.29Q下面是各个分区的TPS。(因ؓ是瞬间|所以总TPSq不严格{于各个分区TPS的dQ?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="red">2. -x 参数</font></p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">使用-x参数我们可以获得更多l计信息?/p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">iostat -d -x -k 1 10 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 1.56 28.31 7.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 2.00 20.00 381.00 7.00 12320.00 216.00 6160.00 108.00 32.31 1.75 4.50 2.17 84.20 </div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">rrqm/s</font>Q每U这个设备相关的dh有多被Merge了(当系l调用需要读取数据的时候,VFS请求发到各个FSQ如果FS发现不同的读取请求读取的是相同Block的数据,FS会将q个h合ƈMergeQ;wrqm/sQ每U这个设备相关的写入h有多被Merge了?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">rsec/s</font>Q每U读取的扇区敎ͼ<font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">wsec/</font>Q每U写入的扇区数?font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">r/s</font>QThe number of read requests that were issued to the device per secondQ?font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">w/s</font>QThe number of write requests that were issued to the device per secondQ?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">await</font>Q每一个IOh的处理的q_旉Q单位是<del style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" datetime="2011-03-01T08:00:29+00:00">微秒</del>毫秒Q。这里可以理解ؓIO的响应时_一般地pȝIO响应旉应该低于5msQ如果大?0ms比较大了?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="blue">%util</font>Q在l计旉内所有处理IO旉Q除以dl计旉。例如,如果l计间隔1U,该设备有0.8U在处理IOQ?.2U闲|,那么该设备的%util = 0.8/1 = 80%Q所以该参数暗示了设备的J忙E度。一般地Q如果该参数?00%表示讑֤已经接近满负药行了Q当然如果是多磁盘,即%util?00%Q因为磁盘的q发能力Q所以磁盘用未必就C瓉Q?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="red">3. -c 参数</font></p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">iostatq可以用来获取cpu部分状态|</p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode"><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px">iostat -c 1 10</strong> avg-cpu: %user %nice %sys %iowait %idle 1.98 0.00 0.35 11.45 86.22 avg-cpu: %user %nice %sys %iowait %idle 1.62 0.00 0.25 34.46 63.67</div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="red">4. 常见用法</font></p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看讑֤使用率(%utilQ、响应时_awaitQ? iostat -c 1 10 #查看cpu状? </div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px" color="red">5. 实例分析</font></p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">$$iostat -d -k 1 |grep sda10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda10 60.72 18.95 71.53 395637647 1493241908 sda10 299.02 4266.67 129.41 4352 132 sda10 483.84 4589.90 4117.17 4544 4076 sda10 218.00 3360.00 100.00 3360 100 sda10 546.00 8784.00 124.00 8784 124 sda10 827.00 13232.00 136.00 13232 136</div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">上面看到Q磁盘每U传输次数^均约400Q每U磁盘读取约5MBQ写入约1MB?/p><pre style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><div style="border-left: rgb(22,100,217) 6px solid; padding-bottom: 10px; background-color: rgb(34,34,34); margin: 0px 0px 12px; padding-left: 10px; width: 724px; padding-right: 10px; display: block; font: 1em Fixedsys, 'Courier New', Courier, monospace; color: rgb(0,204,0); overflow: scroll; padding-top: 10px" class="mycode">iostat -d -x -k 1 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29 sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25 sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24</div></pre> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">可以看到盘的^均响应时?lt;5msQ磁盘用率>80。磁盘响应正常,但是已经很繁忙了?/p> <p style="text-align: justify; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 28px; margin: 0px 0px 12px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">参考文献:</p> <ol style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px 0px 0px 55px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/22px Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><li style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px">Linux man iostat</li><li style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px"><a style="padding-bottom: 0px; margin: 0px; outline-style: none; outline-color: invert; padding-left: 0px; outline-width: medium; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; color: rgb(0,84,179); text-decoration: underline; padding-top: 0px" >How Linux iostat computes its results</a></li><li style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; padding-top: 0px"><a style="padding-bottom: 0px; margin: 0px; outline-style: none; outline-color: invert; padding-left: 0px; outline-width: medium; padding-right: 0px; font-family: Arial, Helvetica, sans-serif; color: rgb(0,84,179); text-decoration: underline; padding-top: 0px" >Linux iostat</a></li></ol><img src ="//www.lmlez.icu/jjshcc/aggbug/426481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.lmlez.icu/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-29 10:54 <a href="//www.lmlez.icu/jjshcc/archive/2015/07/29/426481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nginx/LVS/HAProxy负蝲均衡软g的优~点详解 - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/archive/2015/07/27/426446.htmlEric_jiangEric_jiangMon, 27 Jul 2015 07:37:00 GMT//www.lmlez.icu/jjshcc/archive/2015/07/27/426446.html//www.lmlez.icu/jjshcc/comments/426446.html//www.lmlez.icu/jjshcc/archive/2015/07/27/426446.html#Feedback0//www.lmlez.icu/jjshcc/comments/commentRss/426446.html//www.lmlez.icu/jjshcc/services/trackbacks/426446.html

一般对负蝲均衡的用是随着|站规模的提升根据不同的阶段来用不同的技术。具体的应用需求还得具体分析,如果是中型的Web应用Q比如日PV于1000万,用Nginx完全可以了Q如果机器不,可以用DNS轮询QLVS所耗费的机器还是比较多的;大型|站或重要的服务Q且服务器比较多Ӟ可以考虑用LVS?/p>

ADQ?/p>


PSQ?a style="color: rgb(0,66,118); text-decoration: underline" title="Nginx" >Nginx/LVS/HAProxy是目前用最q泛的三U负载均衡YӞ本h都在多个目中实施过Q参考了一些资料,l合自己的一些用经验,ȝ一下?/strong>

一般对负蝲均衡的用是随着|站规模的提升根据不同的阶段来用不同的技术。具体的应用需求还得具体分析,如果是中型的Web应用Q比如日PV于1000万,用Nginx完全可以了Q如果机器不,可以用DNS轮询QLVS所耗费的机器还是比较多的;大型|站或重要的服务Q且服务器比较多Ӟ可以考虑用LVS?/p>

一U是通过g来进行进行,常见的硬件有比较昂贵的F5和Array{商用的负蝲均衡器,它的优点是有专业的l护团队来对q些服务q行l护、缺点就是花销太大Q所以对于规模较的|络服务来说暂时q没有需要用;另外一U就是类gNginx/LVS/HAProxy的基?a style="color: rgb(0,66,118); text-decoration: underline" title="Linux" >Linux的开源免费的负蝲均衡软gQ这些都是通过软gU别来实玎ͼ所以费用非怽廉?/p>

目前关于|站架构一般比较合理流行的架构ҎQWeb前端采用Nginx/HAProxy+Keepalived作负载均衡器Q后端采?span style="color: rgb(255,0,0)">MySQL数据库一d从和d分离Q采用LVS+Keepalived的架构。当然要Ҏ目具体需求制定方案?/p>

下面说说各自的特点和适用场合?/p>

Nginx的优ҎQ?/strong>

1、工作在|络?层之上,可以针对http应用做一些分的{略Q比如针对域名、目录结构,它的正则规则比HAProxy更ؓ强大和灵z,q也是它目前q泛行的主要原因之一QNginx单凭q点可利用的场合p多于LVS了?/p>

2、Nginx对网l稳定性的依赖非常,理论上能ping通就pq行负蝲功能Q这个也是它的优势之一Q相反LVS对网l稳定性依赖比较大Q这Ҏ人深有体会;

3、Nginx安装和配|比较简单,试h比较方便Q它基本能把错误用日志打印出来。LVS的配|、测试就要花比较长的旉了,LVS对网l依赖比较大?/p>

3、可以承担高负蝲压力且稳定,在硬件不差的情况下一般能支撑几万ơ的q发量,负蝲度比LVS相对些?/p>

4、Nginx可以通过端口到服务器内部的故障Q比如根据服务器处理|页q回的状态码、超时等{,q且会把q回错误的请求重新提交到另一个节点,不过其中~点是不支持url来检。比如用h在上传一个文Ӟ而处理该上传的节点刚好在上传q程中出现故障,Nginx会把上传切到另一台服务器重新处理Q而LVSq接断掉了Q如果是上传一个很大的文g或者很重要的文件的话,用户可能会因此而不满?/p>

5、Nginx不仅仅是一ƾ优U的负载均衡器/反向代理软gQ它同时也是功能强大的Web应用服务器。LNMP也是q几q非常流行的web架构Q在高流量的环境中稳定性也很好?/p>

6、Nginx现在作ؓWeb反向加速缓存越来越成熟了,速度比传l的Squid服务器更快,可以考虑用其作ؓ反向代理加速器?/p>

7、Nginx可作Z层反向代理用,q一层面Nginx基本上无ҎQ唯一可以ҎNginx的就只有lighttpd了,不过lighttpd目前q没有做到Nginx完全的功能,配置也不那么清晰易读Q社料也q远没Nginxz跃?/p>

8、Nginx也可作ؓ静态网和囄服务器,q方面的性能也无Ҏ。还有NginxC֌非常z跃Q第三方模块也很多?/p>

Nginx的缺ҎQ?/strong>

1、Nginx仅能支持http、https和Email协议Q这样就在适用范围上面些Q这个是它的~点?/p>

2、对后端服务器的健康查,只支持通过端口来检,不支持通过url来检。不支持Session的直接保持,但能通过ip_hash来解冟?/p>

LVSQ用Linux内核集群实现一个高性能、高可用的负载均衡服务器Q它h很好的可伸羃性(Scalability)、可靠性(Reliability)和可理性(Manageability)?/p>

LVS的优ҎQ?/strong>

1、抗负蝲能力强、是工作在网l?层之上仅作分发之用,没有量的生,q个特点也决定了它在负蝲均衡软g里的性能最强的Q对内存和cpu资源消耗比较低?/p>

2、配|性比较低Q这是一个缺点也是一个优点,因ؓ没有可太多配|的东西Q所以ƈ不需要太多接触,大大减少了h为出错的几率?/p>

3、工作稳定,因ؓ其本w抗负蝲能力很强Q自w有完整的双机热备方案,如LVS+KeepalivedQ不q我们在目实施中用得最多的q是LVS/DR+Keepalived?/p>

4、无量QLVS只分发请求,而流量ƈ不从它本w出去,q点保证了均衡器IO的性能不会收到大流量的影响?/p>

5、应用范围比较广Q因为LVS工作?层,所以它几乎可以Ҏ有应用做负蝲均衡Q包括http、数据库、在U聊天室{等?/p>

LVS的缺ҎQ?/strong>

1、Y件本w不支持正则表达式处理,不能做动静分;而现在许多网站在q方面都有较强的需求,q个是Nginx/HAProxy+Keepalived的优势所在?/p>

2、如果是|站应用比较庞大的话QLVS/DR+Keepalived实施h比较复杂了Q特别后面有Windows Server的机器的话,如果实施及配|还有维护过E就比较复杂了,相对而言QNginx/HAProxy+Keepalivedq单多了?/p>

HAProxy的特ҎQ?/strong>

1、HAProxy也是支持虚拟L的?/p>

2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引|同时支持通过获取指定的url来检后端服务器的状态?/p>

3、HAProxy跟LVScMQ本w就只是一ƾ负载均衡YӞ单纯从效率上来讲HAProxy会比Nginx有更的负载均衡速度Q在q发处理上也是优于Nginx的?/p>

4、HAProxy支持TCP协议的负载均衡{发,可以对MySQL读进行负载均衡,对后端的MySQL节点q行和负蝲均衡Q大家可以用LVS+Keepalived对MySQLM做负载均衡?/p>

5、HAProxy负蝲均衡{略非常多,HAProxy的负载均衡算法现在具体有如下8U:

① roundrobinQ表C简单的轮询Q这个不多说Q这个是负蝲均衡基本都具备的Q?/p>

② static-rrQ表C根据权重,xQ?/p>

③ leastconnQ表C最连接者先处理Q徏议关注;

④ sourceQ表C根据请求源IPQ这个跟Nginx的IP_hash机制cMQ我们用其作决session问题的一U方法,xQ?/p>

⑤ riQ表C根据请求的URIQ?/p>

⑥ rl_paramQ表C根据请求的URl参数’balance url_param’ requires an URL parameter nameQ?/p>

⑦ hdr(name)Q表C根据HTTPh头来锁定每一ơHTTPhQ?/p>

⑧ rdp-cookie(name)Q表C根据据cookie(name)来锁定ƈ哈希每一ơTCPh?/p>

Nginx和LVSҎ的ȝQ?/strong>

1、Nginx工作在网l的7层,所以它可以针对http应用本n来做分流{略Q比如针对域名、目录结构等Q相比之下LVSq不具备q样的功能,所以Nginx单凭q点可利用的场合p多于LVS了;但Nginx有用的这些功能其可调整度要高于LVSQ所以经常要去触触ͼ触碰多了Qh为出问题的几率也׃大?/p>

2、Nginx对网l稳定性的依赖较小Q理Z只要ping得通,|页讉K正常QNginxpq得通,q是Nginx的一大优势!Nginx同时q能区分内外|,如果是同时拥有内外网的节点,q当于单机拥有了备份线路;LVS比较依赖于|络环境Q目前来看服务器在同一|段内ƈ且LVS使用direct方式分流Q效果较能得C证。另外注意,LVS需要向托管商至申请多一个ip来做Visual IPQ貌似是不能用本w的IP来做VIP的。要做好LVS理员,实得跟q学习很多有关网l通信斚w的知识,׃再是一个HTTP那么单了?/p>

3、Nginx安装和配|比较简单,试h也很方便Q因为它基本能把错误用日志打印出来。LVS的安装和配置、测试就要花比较长的旉了;LVS对网l依赖比较大Q很多时候不能配|成功都是因为网l问题而不是配|问题,Z问题要解决也相应的会ȝ得多?/p>

4、Nginx也同栯承受很高负蝲且稳定,但负载度和稳定度差LVSq有几个{QNginx处理所有流量所以受限于机器IO和配|;本n的bug也还是难以避免的?/p>

5、Nginx可以到服务器内部的故障Q比如根据服务器处理|页q回的状态码、超时等{,q且会把q回错误的请求重新提交到另一个节炏V目前LVS?ldirectd也能支持针对服务器内部的情况来监控,但LVS的原理其不能重发请求。比如用h在上传一个文Ӟ而处理该上传的节点刚好在上传q程中出现故障,Nginx会把上传切到另一台服务器重新处理Q而LVSq接断掉了Q如果是上传一个很大的文g或者很重要的文件的话,用户可能会因此而恼火?/p>

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务Q那么出现很多的H带链接时apache服务器将会占用大 量内存而不能释放,使用多一个Nginx做apache代理的话Q这些窄带链接会被Nginx挡住Qapache上就不会堆积q多的请求,q样减了相当多的资源占用。这点用squid也有相同的作用,即squid本n配置Z~存Q对apacheq是有很大帮助的?/p>

7、Nginx能支持http、https和emailQemail的功能比较少用)QLVS所支持的应用在q点上会比Nginx更多。在使用上,一般最前端所采取的策略应是LVSQ也是DNS的指向应为LVS均衡器,LVS的优点o它非帔R合做这个Q务。重要的ip地址Q最好交由LVS托管Q比如数据库?ip、webservice服务器的ip{等Q这些ip地址随着旉推移Q用面会越来越大,如果更换ip则故障会接踵而至。所以将q些重要ip交给 LVS托管是最为稳妥的Q这样做的唯一~点是需要的VIP数量会比较多。Nginx可作为LVS节点机器使用Q一是可以利用Nginx的功能,二是可以利用Nginx的性能。当然这一层面也可以直接用squidQsquid的功能方面就比Nginx׃了Q性能上也有所逊色于Nginx。Nginx也可作ؓ中层代理使用Q这一层面Nginx基本上无ҎQ唯一可以撼动Nginx的就只有lighttpd了,不过lighttpd目前q没有能做到 Nginx完全的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,所以中层代理也拥有一个VIP和LVS是最完美的方案了。具体的应用q得具体分析Q如果是比较的|站Q日PV于1000万)Q用Nginx完全可以了Q如果机器也不少Q可以用DNS轮询QLVS所耗费的机器还是比较多的;大型|站或者重要的服务Q机器不发愁的时候,要多多考虑利用LVS?/p>

现在对网l负载均衡的使用是随着|站规模的提升根据不同的阶段来用不同的技术:

W一阶段Q利用Nginx或HAProxyq行单点的负载均衡,q一阶段服务器规模刚q开单服务器、单数据库的模式Q需要一定的负蝲均衡Q但是仍然规模较没有专业的l护团队来进行维护,也没有需要进行大规模的网站部|Ӏ这样利用Nginx或HAproxy是W一选择Q此时这些东西上手快Q?配置ҎQ在七层之上利用HTTP协议可以。这时是W一选择?/p>

W二阶段Q随着|络服务q一步扩大,q时单点的Nginx已经不能满Q这时用LVS或者商用Array是首要选择QNginx此时׃为LVS或者Array的节Ҏ使用Q具体LVS或Array的是选择是根据公司规模和预算来选择QArray的应用交付功能非常强大,本h在某目中用过Q性h比也q高于F5Q商用首选!但是一般来说这阶段相关人才跟不上业务的提升Q所以购买商业负载均衡已l成Z必经之\?/p>

W三阶段Q这时网l服务已l成Z品,此时随着公司知名度也q一步扩展,相关人才的能力以及数量也随之提升Q这时无Z开发适合自n产品的定Ӟ以及降低成本来讲开源的LVSQ已l成为首选,q时LVS会成Z?/p>

最lŞ成比较理想的基本架构为:Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer?/p>

原文链接Q?a style="color: rgb(0,66,118); text-decoration: underline" >//www.ha97.com/5646.html

【编辑推荐?/p>



Eric_jiang 2015-07-27 15:37 发表评论
]]>
shell~程中的date用法 - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/archive/2015/07/23/426394.htmlEric_jiangEric_jiangThu, 23 Jul 2015 07:50:00 GMT//www.lmlez.icu/jjshcc/archive/2015/07/23/426394.html//www.lmlez.icu/jjshcc/comments/426394.html//www.lmlez.icu/jjshcc/archive/2015/07/23/426394.html#Feedback0//www.lmlez.icu/jjshcc/comments/commentRss/426394.html//www.lmlez.icu/jjshcc/services/trackbacks/426394.html1、date --help

%% 输出%W号 a literal %
%a 当前域的星期~写 locale’s abbreviated weekday name (Sun..Sat)
%A 当前域的星期全写 locale’s full weekday name, variable length (Sunday..Saturday)
%b 当前域的月䆾~写 locale’s abbreviated month name (Jan..Dec)
%B 当前域的月䆾全称 locale’s full month name, variable length (January..December)
%c 当前域的默认旉格式 locale’s date and time (Sat Nov 04 12:02:33 EST 1989)
%C n癑ֹ century (year divided by 100 and truncated to an integer) [00-99]
%d 两位的天 day of month (01..31)
%D 短时间格?date (mm/dd/yy)
%e 短格式天 day of month, blank padded ( 1..31)
%F 文g旉格式 same as %Y-%m-%d
%g the 2-digit year corresponding to the %V week number
%G the 4-digit year corresponding to the %V week number
%h same as %b
%H 24时制的时 hour (00..23)
%I 12时制的时 hour (01..12)
%j 一q中的第几天 day of year (001..366)
%k 短格?4时制的时 hour ( 0..23)
%l 短格?2时制的时 hour ( 1..12)
%m 双位月䆾 month (01..12)
%M 双位分钟 minute (00..59)
%n 换行 a newline
%N 十亿分之一U?nanoseconds (000000000..999999999)
%p 大写的当前域的上下午指示 locale’s upper case AM or PM indicator (blank in many locales)
%P 写的当前域的上下午指示 locale’s lower case am or pm indicator (blank in many locales)
%r 12时制的旉表示Q时:?U?双位Q?time, 12-hour (hh:mm:ss [AP]M)
%R 24时制的旉表示 Q时:?双位Qtime, 24-hour (hh:mm)
%s 自基旉 1970-01-01 00:00:00 到当前时ȝU数 seconds since `00:00:00 1970-01-01 UTC’ (a GNU extension)
%S 双位U?second (00..60); the 60 is necessary to accommodate a leap second
%t 横向制表?tab) a horizontal tab
%T 24时制时间表C?time, 24-hour (hh:mm:ss)
%u 数字表示的星期(从星期一开?1-7Qday of week (1..7); 1 represents Monday
%U 一q中的第几周星期天ؓ开?week number of year with Sunday as first day of week (00..53)
%V 一q中的第几周星期一为开?week number of year with Monday as first day of week (01..53)
%w 一周中的第几天 星期天ؓ开?0-6 day of week (0..6); 0 represents Sunday
%W 一q中的第几周星期一为开?week number of year with Monday as first day of week (00..53)
%x 本地日期格式 locale’s date representation (mm/dd/yy)
%X 本地旉格式 locale’s time representation (%H:%M:%S)
%y 两位的年 last two digits of year (00..99)
%Y q?year (1970…)
%z RFC-2822 标准旉格式表示的域 RFC-2822 style numeric timezone (-0500) (a nonstandard extension)
%Z 旉?time zone (e.g., EDT), or nothing if no time zone is determinable

By default, date pads numeric fields with zeroes. GNU date recognizes
the following modifiers between `%’ and a numeric directive.

`-’ (hyphen) do not pad the field
`_’ (underscore) pad the field with spaces

--------------------------------------------------------------------------------

2、一些用?/p>

1Q?以yymmdd的格式输?3天前的当前时?/p>

date +%Y%m%d --date='43 days ago'       

 

2Q? 试十亿分之一U?br />date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’

3Q?创徏以当前时间ؓ文g名的目录
mkdir `date +%Y%m%d`

 

4Q?备䆾以时间做为文件名?br />tar -cvf ./htdocs`date +%Y%m%d`.tar ./*

 

5Q?昄旉后蟩行,再显C目前日?nbsp;

date +%T%n%Y%m%d

 

6Q?只显C月份与日数 

date +%B%d

 

7Q?获取上周日期Qday,month,year,hourQ?/p>

date -d "-1 week" +%Y%m%d   

 

8Q?获取24时前日?/p>

date --date="-24 hour" +%Y%m%d

 

9Q?shell脚本里面赋给变量?/p>

date_now=`date +%s`

 

10Q?计算执行一Dsql脚本的运行时?/p>

 

TIME_BEGIN=$(date '+%s.%N')
$sqlcli < queries/q1.3.sql 1>> $FILE_RESULT  2>> $FILE_ERROR
TIME_END=$(date '+%s.%N')
TIME_RUN=$(awk 'BEGIN{print '$TIME_END' - '$TIME_BEGIN'}')

 

11Q?~写shell脚本计算自q日还有多天Q?/p>

    read -p "Input your birthday(YYYYmmdd):" date1

  m=`date --date="$date1" +%m`    #得到生日的月

  d=`date --date="$date1" +%d`    #得到生日的日

  date_now=`date +%s`             #得到当前旉的秒?/p>

  y=`date +%Y`                    #得到当前旉的年

  birth=`date --date="$y$m$d" +%s`      #得到今年的生日日期的U?/p>

  internal=$(($birth-$date_now))        #计算今日到生日日期的间隔旉

  if [ "$internal" -lt "0" ]; then             #判断今天的生日是否已q?/p>

  birth=`date --date="$(($y+1))$m$d" +%s`      #得到明天的生日日期秒?/p>

  internal=$(($birth-$date_now))               #计算今天C一个生日的间隔旉

  fi

  echo "There is :$((einternal/60/60/24)) days."       #输出l果Q秒换算为天

 

 

12Q?若是不以加号作ؓ开_则表C讑֮旉Q而时间格式ؓ MMDDhhmm[[CC]YY][.ss]Q?/p>

其中 MM 为月份,

DD 为日Q?/p>

hh 为小Ӟ

mm 为分钟,

CC 为年份前两位数字Q?/p>

YY 为年份后两位数字Q?/p>

ss 为秒?/p>

 

13Q?/p>

#昄目前的格林威L_也叫“世界?#8221;。是英国的标准时_也是世界各地旉的参考标准。中׃国的标准时差?个小Ӟ卌国的当地旉比中国的北京旉?时?/p>

date -u              
Thu Sep 28 09:32:04 UTC 2006

 

14Q?修改旉

date -s
按字W串方式修改旉
可以只修Ҏ?不修Ҏ?输入: date -s 2007-08-03
只修Ҏ?输入:date -s 14:15:00
同时修改日期旉,注意要加双引?日期与时间之间有一I格,输入:date -s "2007-08-03 14:15:00"

修改完后,记得输入:clock -w
把系l时间写入CMOS



Eric_jiang 2015-07-23 15:50 发表评论
]]>
java GC日志参数讄 - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/archive/2015/07/23/426391.htmlEric_jiangEric_jiangThu, 23 Jul 2015 06:30:00 GMT//www.lmlez.icu/jjshcc/archive/2015/07/23/426391.html//www.lmlez.icu/jjshcc/comments/426391.html//www.lmlez.icu/jjshcc/archive/2015/07/23/426391.html#Feedback0//www.lmlez.icu/jjshcc/comments/commentRss/426391.html//www.lmlez.icu/jjshcc/services/trackbacks/426391.html增加GC相关选项Q?/p>
  1. -verbose:gc
  2. -XX:+UseGCLogFileRotation
  3. -XX:NumberOfGCLogFiles=5
  4. -XX:GCLogFileSize=512K
  5. -XX:+PrintGCDetails
  6. -XX:+PrintGCTimeStamps
  7. -XX:+PrintGCDateStamps
  8. -XX:+PrintTenuringDistribution
  9. -XX:+PrintGCApplicationStoppedTime
  10. -Xloggc:/var/app/log/Push-server/gc.log
  1. 如果不能定所需内存Q用自动jvm自动调优Q?/li>
  2. 大致定所需内存后,使用-Xmx -Xms讄堆大;
  3. 观察GC log定FullGC后剩余堆大小Q即为活跃数据大)Q?/li>
  4. 整个堆大宜年代活跃数据大的3-4倍;
  5. 怹带大应该比怹带活跃数据大1.2~1.5倍;
  6. 新生代空间应该ؓ老年代空间活跃数据的1~1.5倍;
  7. 通过top命o观察栈占用空间、直接内存占用空_军_所需机器内存大小Q?/li>
  8. 新生代大决定了Minor GC的周期和旉Q羃短新生代大小可以减少停顿旉Q但是增加了GC频率Q在调整新生代大时Q尽量保持老年代大不变;
  9. 老年代大不应该于z跃数据?.5倍;新生代空间至ؓjava堆大的10%Q增加堆大小Ӟ注意不要过可用物理内存敎ͼ
  10. 从throughput攉器迁UdCMSӞ需要将老年代空间增?0%~30%Q?/li>
  11. 新生代分为Eden和Survivor两部分,Survivor可以通过-XX:SurvivorRatio=xx来控Ӟ对应的大ؓ-Xmn<value>/(ratio+2)Q?/li>
  12. 通过-XX:MaxTenuringThreshold=<n>来指定晋升阈|q龄Q,n?~15之间Q?/li>
  13. 期望SurvivorI间为剩余dzd象大的2?age=1Q?/li>
  14. 注意调节Survivor大小Ӟ保持Eden大小不变Q?/li>
  15. 如果SurvivorI间_大,且对象大部分q未到达老年代,那么可以将晋升q纪指定的够大Q?5Q。在Eden与Survivor之间复制和CMS老年代空间压~之_我们宁愿选择前者;
  16. CMS必须能以对象从新生代提升到老年代的同等速度对老年代中的对象进行收集,否则Q就会失速;
  17. 如果观察?concurrent mode failures'Q意味着失速已l发生,必须减少-XX:CMSInitiatingOccupancyFraction=<percent>的|
  18. 使用上述选项的同Ӟ最好同时?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">-XX:+UseCMSInitiatingOccupancyOnlyQ强制用该比例,该比例的大小应该大于老年代占用空间和z跃数据大小之比Q一般而言老年代大?该比?gt;1.5*老年代活跃数据大?/code>Q?/li>
  19. 使用-XX:+ExplicitGCInvokesConcurrentAndUnloadsCloasses可以使用CMSq行昑ּ垃圾回收Q?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">System.gc())Q通过-XX:+DisableExplicitGC关闭昄垃圾回收Q慎用)Q?/li>
  20. 使用-XX:+CMSClassUnloadingEnabled打开怹带垃圑֛Ӟ使用-XX:+CMSPermGenSweepingEnabled打开CMSҎ久带的扫描;使用-XX:CMSInitiatingPermOccupancyFraction=<perscent>Ȁzd收比例阈|
  21. 使用-XX:ParallelGCThreads=<n>控制扫描U程敎ͼ使用-XX:+CMSScavengeBeforeRemark强制重新标记前进行一ơMinorGCQ如果由大量的引用对象或可终l对象要处理Q?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">-XX:+ParallelRefProcEnabledQ?/li>
  22. CMS包括Minor GC所带来的开销应该于10%Q?/li>
  23. 如果~少长时间调优的条gQ安全v见,可以使用G1Q仅讄如下参数卛_Q?/li>
  1. -d64
  2. -Xmx5g
  3. -Xms5g
  4. -XX:PermSize=100m
  5. -XX:MaxPermSize=100m
  6. -XX:MaxDirectMemorySize=1g
  7. -XX:+UseG1GC
  8. -XX:MaxGCPauseMillis=80

G1不必明确讄新生代大,其自动调优也十分可靠Q对于停时间往往在长旉q行后可以达到预期效果;对吞吐量优先的应用,可能不是那么明显?/p>

Eric_jiang 2015-07-23 14:30 发表评论
]]>
Linux traceroute命o详解和用例子(q踪路由信息Q?/title><link>//www.lmlez.icu/jjshcc/archive/2015/07/21/426361.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Tue, 21 Jul 2015 06:06:00 GMT</pubDate><guid>//www.lmlez.icu/jjshcc/archive/2015/07/21/426361.html</guid><wfw:comment>//www.lmlez.icu/jjshcc/comments/426361.html</wfw:comment><comments>//www.lmlez.icu/jjshcc/archive/2015/07/21/426361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.lmlez.icu/jjshcc/comments/commentRss/426361.html</wfw:commentRss><trackback:ping>//www.lmlez.icu/jjshcc/services/trackbacks/426361.html</trackback:ping><description><![CDATA[<div id="art_desc">通过traceroute我们可以知道信息从你的计机C联网另一端的L是走的什么\径。当然每ơ数据包由某一同样的出发点QsourceQ到达某一同样的目的地(destination)走的路径可能会不一P但基本上来说大部分时候所走的路由是相同的</div><br /><br /> <p>linuxpȝ中,我们UC为traceroute,在MS Windows中ؓtracert?traceroute通过发送小的数据包到目的设备直到其q回Q来量光要多长时间。一条\径上的每个设备traceroute要测3ơ。输出结果中包括每次试的时?ms)和设备的名称Q如有的话)及其IP地址?/p> <p>在大多数情况下,我们会在linuxLpȝ下,直接执行命o行:traceroute hostname</p> <p>而在Windowspȝ下是执行tracert的命令: tracert hostname</p> <p><strong class="znkp">1.命o格式Q?/strong></p> <p>traceroute[参数][L]</p> <p><strong class="znkp">2.命o功能Q?/strong></p> <p>traceroute指o让你q踪|络数据包的路由途径Q预设数据包大小?0BytesQ用户可另行讄?/p> <p>具体参数格式Qtraceroute [-dFlnrvx][-f<存活数?gt;][-g<|关>...][-i<|络界面>][-m<存活数?gt;][-p<通信端口>][-s<来源地址>][-t<服务cd>][-w<时U数>][L名称或IP地址][数据包大]<br /></p> <p><strong class="znkp">3.命o参数Q?/strong></p> <p>-d 使用Socket层的排错功能?/p> <p>-f 讄W一个检数据包的存zL值TTL的大?/p> <p>-F 讄勿离断位?/p> <p>-g 讄来源路由|关Q最多可讄8个?/p> <p>-i 使用指定的网l界面送出数据包?/p> <p>-I 使用ICMP回应取代UDP资料信息?/p> <p>-m 讄数据包的最大存zL值TTL的大?/p> <p>-n 直接使用IP地址而非L名称?/p> <p>-p 讄UDP传输协议的通信端口?/p> <p>-r 忽略普通的Routing TableQ直接将数据包送到q端L上?/p> <p>-s 讄本地L送出数据包的IP地址?/p> <p>-t 讄数据包的TOS数倹{?/p> <p>-v 详细昄指o的执行过E?/p> <p>-w 讄{待q端L回报的时间?/p> <p>-x 开启或关闭数据包的正确性检验?/p> <p><strong class="znkp">4.使用实例Q?/strong></p> <p><strong class="znkp">实例1Qtraceroute 用法单、最常用的用?/strong></p> <p>命oQtraceroute www.baidu.com </p> <p>输出Q?br />[root@localhost ~]# traceroute www.baidu.com<br />traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets<br />1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms<br />2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms<br />3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms<br />4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms<br />5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms<br />6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms<br />7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms<br />8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms<br />9 * * *<br />30 * * *<br />[root@localhost ~]# <br /></p> <p> </p> <p>说明Q?/p> <p>记录按序列号?开始,每个U录是一?Q每跌CZ个网养I我们看到每行有三个时_单位?msQ其实就?q的默认参数。探数据包向每个网兛_送三个数据包后,|关响应后返回的旉Q如果您?traceroute -q 4 www.58.com Q表C向每个|关发?个数据包?/p> <p>有时我们traceroute 一C机时Q会看到有一些行是以星号表示的。出现这L情况Q可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据?/p> <p>有时我们在某一|关处g时比较长Q有可能是某台网x较阻塞,也可能是物理讑֤本n的原因。当然如果某台DNS出现问题Ӟ不能解析L名、域名时Q也?有g旉的现象;您可以加-n 参数来避免DNS解析Q以IP格式输出数据?/p> <p>如果在局域网中的不同|段之间Q我们可以通过traceroute 来排查问题所在,是主机的问题q是|关的问题。如果我们通过q程来访问某台服务器遇到问题Ӟ我们用到traceroute q踪数据包所l过的网养I提交IDC服务商,也有助于解决问题Q但目前看来在国内解册L问题是比较困隄Q就是我们发现问题所在,IDC服务商也不可能帮助我们解冟?/p> <p><strong class="znkp">实例2Q蟩数设|?/strong></p> <p>命oQtraceroute -m 10 www.baidu.com</p> <p>输出Q?br />[root@localhost ~]# traceroute -m 10 www.baidu.com<br />traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets<br />1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms<br />2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms<br />3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms<br />4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms<br />5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms<br />6 bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms<br />7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms<br />8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms<br />9 * * *<br />10 * * *<br />[root@localhost ~]#<br /></p><br /> <p> </p> <p><strong class="znkp">实例3Q显CIP地址Q不查主机名</strong><strong class="znkp"></strong></p> <p>命oQtraceroute -n www.baidu.com</p> <p>输出Q?br />[root@localhost ~]# traceroute -n www.baidu.com<br />traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets<br />1 211.151.74.2 5.430 ms 5.636 ms 5.802 ms<br />2 211.151.56.57 0.627 ms 0.625 ms 0.617 ms<br />3 211.151.227.206 0.575 ms 0.584 ms 0.576 ms<br />4 210.77.139.145 0.703 ms 0.754 ms 0.806 ms<br />5 202.106.42.101 23.683 ms 23.869 ms 23.998 ms<br />6 202.106.228.37 247.101 ms * *<br />7 61.148.146.29 5.256 ms 124.65.58.213 4.386 ms 4.373 ms<br />8 202.106.35.190 1.610 ms 61.148.156.138 1.786 ms 61.148.3.34 2.089 ms<br />9 * * *<br />30 * * *<br />[root@localhost ~]# traceroute www.baidu.com<br />traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets<br />1 211.151.74.2 (211.151.74.2) 4.671 ms 4.865 ms 5.055 ms<br />2 211.151.56.57 (211.151.56.57) 0.619 ms 0.618 ms 0.612 ms<br />3 211.151.227.206 (211.151.227.206) 0.620 ms 0.642 ms 0.636 ms<br />4 210.77.139.145 (210.77.139.145) 0.720 ms 0.772 ms 0.816 ms<br />5 202.106.42.101 (202.106.42.101) 7.667 ms 7.910 ms 8.012 ms<br />6 bt-228-025.bta.net.cn (202.106.228.25) 2.965 ms 2.440 ms 61.148.154.97 (61.148.154.97) 431.337 ms<br />7 124.65.58.213 (124.65.58.213) 5.134 ms 5.124 ms 5.044 ms<br />8 202.106.35.190 (202.106.35.190) 1.917 ms 2.052 ms 2.059 ms<br />9 * * *<br />30 * * *<br />[root@localhost ~]# <br /></p> <p> </p> <p><strong class="znkp">实例4Q探包使用的基本UDP端口讄6888</strong></p> <p>命oQtraceroute -p 6888 <a >www.baidu.com</a><br />[root@localhost ~]# traceroute -p 6888 www.baidu.com<br />traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets<br />1 211.151.74.2 (211.151.74.2) 4.927 ms 5.121 ms 5.298 ms<br />2 211.151.56.1 (211.151.56.1) 0.500 ms 0.499 ms 0.509 ms<br />3 211.151.224.90 (211.151.224.90) 0.637 ms 0.631 ms 0.641 ms<br />4 * * *<br />5 220.181.70.98 (220.181.70.98) 5.050 ms 5.313 ms 5.596 ms<br />6 220.181.17.94 (220.181.17.94) 1.665 ms !X * *<br />[root@localhost ~]# <br /></p> <p> </p> <p><strong class="znkp">实例5Q把探测包的个数讄为?</strong></p> <p>命oQtraceroute -q 4 www.baidu.com</p> <p> <br />[root@localhost ~]# traceroute -q 4 www.baidu.com<br />traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets<br />1 211.151.74.2 (211.151.74.2) 40.633 ms 40.819 ms 41.004 ms 41.188 ms<br />2 211.151.56.57 (211.151.56.57) 0.637 ms 0.633 ms 0.627 ms 0.619 ms<br />3 211.151.227.206 (211.151.227.206) 0.505 ms 0.580 ms 0.571 ms 0.569 ms<br />4 210.77.139.145 (210.77.139.145) 0.753 ms 0.800 ms 0.853 ms 0.904 ms<br />5 202.106.42.101 (202.106.42.101) 7.449 ms 7.543 ms 7.738 ms 7.893 ms<br />6 61.148.154.97 (61.148.154.97) 316.817 ms bt-228-025.bta.net.cn (202.106.228.25) 3.695 ms 3.672 ms *<br />7 124.65.58.213 (124.65.58.213) 3.056 ms 2.993 ms 2.960 ms 61.148.146.29 (61.148.146.29) 2.837 ms<br />8 61.148.3.34 (61.148.3.34) 2.179 ms 2.295 ms 2.442 ms 202.106.35.190 (202.106.35.190) 7.136 ms<br />9 * * * *<br />30 * * * *<br />[root@localhost ~]# <br /></p><br /> <p><strong class="znkp">实例6Q绕q正常的路由表,直接发送到|络相连的主?/strong></p> <p>命oQtraceroute -r www.baidu.com</p> <p>输出Q?br />[root@localhost ~]# traceroute -r www.baidu.com<br />traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets<br />connect: |络不可?br />[root@localhost ~]# <br /></p> <p> </p> <p>实例7Q把对外发探包的等待响应时间设|ؓ3U?/p> <p>命oQtraceroute -w 3 www.baidu.com</p> <p>输出Q?br /><br />[root@localhost ~]# traceroute -w 3 www.baidu.com<br />traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets<br />1 211.151.74.2 (211.151.74.2) 2.306 ms 2.469 ms 2.650 ms<br />2 211.151.56.1 (211.151.56.1) 0.621 ms 0.613 ms 0.603 ms<br />3 211.151.227.206 (211.151.227.206) 0.557 ms 0.560 ms 0.552 ms<br />4 210.77.139.145 (210.77.139.145) 0.708 ms 0.761 ms 0.817 ms<br />5 202.106.42.101 (202.106.42.101) 7.520 ms 7.774 ms 7.902 ms<br />6 bt-228-025.bta.net.cn (202.106.228.25) 2.890 ms 2.369 ms 61.148.154.97 (61.148.154.97) 471.961 ms<br />7 124.65.58.221 (124.65.58.221) 4.490 ms 4.483 ms 4.472 ms<br />8 123.126.6.198 (123.126.6.198) 2.948 ms 61.148.156.6 (61.148.156.6) 7.688 ms 7.756 ms<br />9 * * *<br />30 * * *<br />[root@localhost ~]# <br /></p><br /> <p> </p> <p><strong class="znkp">Traceroute的工作原理:</strong></p> <p>Traceroute最单的基本用法是:traceroute hostname</p> <p>TracerouteE序的设计是利用ICMP及IP header的TTLQTime To LiveQ栏位(fieldQ。首先,traceroute送出一个TTL?的IP datagramQ其实,每次送出的ؓ3?0字节的包Q包括源地址Q目的地址和包发出的时间标{)到目的地Q当路径上的W一个\由器QrouterQ收到这个datagramӞ它将TTL?。此ӞTTL变ؓ0了,所以该路由器会此datagram丢掉Qƈ送回一个「ICMP time exceeded」消息(包括发IP包的源地址QIP包的所有内容及路由器的IP地址Q,traceroute 收到q个消息后,便知道这个\由器存在于这个\径上Q接着traceroute 再送出另一个TTL? 的datagramQ发现第2 个\由器...... traceroute 每次送出的datagram的TTL ?来发现另一个\由器Q这个重复的动作一直持l到某个datagram 抵达目的地。当datagram到达目的地后Q该Lq不会送回ICMP time exceeded消息Q因为它已是目的CQ那么traceroute如何得知目的地到达了呢?</p> <p>Traceroute在送出UDP datagrams到目的地Ӟ它所选择送达的port number 是一个一般应用程序都不会用的LQ?0000 以上Q,所以当此UDP datagram 到达目的地后该主Z送回一个「ICMP port unreachable」的消息Q而当traceroute 收到q个消息Ӟ便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon E式?/p> <p>Traceroute提取?ICMP TTL到期消息讑֤的IP地址q作域名解析。每?QTraceroute都打印出一pd数据,包括所l过的\p备的域名?IP地址,三个包每ơ来回所花时间?/p> <p><strong class="znkp">windows之tracert:</strong></p> <p>格式Q?/p> <p>tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name</p> <p>参数说明Q?/p> <p>tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name</p> <p>该诊断实用程序通过向目的地发送具有不同生存时?(TL) ?Internet 控制信息协议 (CMP) 回应报文Q以定至目的地的\由。\径上的每个\由器都要在{发该 ICMP 回应报文之前其 TTL D减 1Q因?TTL 是有效的跌{计数。当报文?TTL 值减到 0 Ӟ路由器向源系l发?ICMP 时信息。通过发?TTL ?1 的第一个回应报文ƈ且在随后的发送中每次?TTL 值加 1Q直到目标响应或辑ֈ最?TTL |Tracert 可以定路由。通过查中间\由器发发回的 ICMP 时 (ime Exceeded) 信息Q可以确定\由器。注意,有些路由?#8220;安静”C弃生存时?(TLS) q期的报文ƈ且对 tracert 无效?/p> <p>参数Q?/p> <p>-d 指定不对计算机名解析地址?/p> <p>-h maximum_hops 指定查找目标的蟩转的最大数目?/p> <p>-jcomputer-list 指定?computer-list 中松散源路由?/p> <p>-w timeout {待?timeout Ҏ个应{指定的毫秒数?/p> <p>target_name 目标计算机的名称?/p> <p>实例Q?br /><br /></p> <div class="msgheader"> <div class="right"><span style="cursor: pointer"></span><u> </u><br />C:\Users\Administrator>tracert www.58.com<br />Tracing route to www.58.com [221.187.111.30]<br />over a maximum of 30 hops:<br />1 1 ms 1 ms 1 ms 10.58.156.1<br />2 1 ms <1 ms <1 ms 10.10.10.1<br />3 1 ms 1 ms 1 ms 211.103.193.129<br />4 2 ms 2 ms 2 ms 10.255.109.129<br />5 1 ms 1 ms 3 ms 124.205.98.205<br />6 2 ms 2 ms 2 ms 124.205.98.253<br />7 2 ms 6 ms 1 ms 202.99.1.125<br />8 5 ms 6 ms 5 ms 118.186.0.113<br />9 207 ms * * 118.186.0.106<br />10 8 ms 6 ms 11 ms 124.238.226.201<br />11 6 ms 7 ms 6 ms 219.148.19.177<br />12 12 ms 12 ms 16 ms 219.148.18.117<br />13 14 ms 17 ms 16 ms 219.148.19.125<br />14 13 ms 13 ms 12 ms 202.97.80.113<br />15 * * * Request timed out.<br />16 12 ms 12 ms 17 ms bj141-147-82.bjtelecom.net [219.141.147.82]<br />17 13 ms 13 ms 12 ms 202.97.48.2<br />18 * * * Request timed out.<br />19 14 ms 14 ms 12 ms 221.187.224.85<br />20 15 ms 13 ms 12 ms 221.187.104.2<br />21 * * * Request timed out.<br />22 15 ms 17 ms 18 ms 221.187.111.30<br />Trace complete.<br /></div></div><img src ="//www.lmlez.icu/jjshcc/aggbug/426361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.lmlez.icu/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-21 14:06 <a href="//www.lmlez.icu/jjshcc/archive/2015/07/21/426361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>/etc/resolv.conf中关键字search和domain的作?/title><link>//www.lmlez.icu/jjshcc/archive/2015/07/21/426356.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Tue, 21 Jul 2015 04:49:00 GMT</pubDate><guid>//www.lmlez.icu/jjshcc/archive/2015/07/21/426356.html</guid><wfw:comment>//www.lmlez.icu/jjshcc/comments/426356.html</wfw:comment><comments>//www.lmlez.icu/jjshcc/archive/2015/07/21/426356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.lmlez.icu/jjshcc/comments/commentRss/426356.html</wfw:commentRss><trackback:ping>//www.lmlez.icu/jjshcc/services/trackbacks/426356.html</trackback:ping><description><![CDATA[<span style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/21px simsun; white-space: normal; float: none; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px">domain 声明L的域名。很多程序用到它Q如邮gpȝQ当为没有域名的Lq行DNS 查询Ӟ也要用到。如果没有域名,L名将被用,删除所有在W一个点( . )前面的内宏V?/span><br style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; font: 14px/21px simsun; white-space: normal; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px" /><span style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/21px simsun; white-space: normal; float: none; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px">search 它的多个参数指明域名查询序。当要查询没有域名的LQ主机将在由search 声明的域中分别查找。domain 和search 不能共存Q如果同时存在,后面出现的将会被使用?/span><br style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; font: 14px/21px simsun; white-space: normal; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px" /> <div style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; font: 14px/21px simsun; white-space: normal; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px"><br /></div> <div style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; font: 14px/21px simsun; white-space: normal; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px">下面的说明更清晰</div> <div style="text-align: left; text-transform: none; background-color: rgb(202,155,112); text-indent: 0px; letter-spacing: normal; font: 14px/21px simsun; white-space: normal; color: rgb(70,70,70); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <div class="znkp"> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px">?tt>/etc/resolv.conf</tt><span class="Apple-converted-space"> </span>配置文gQdomain 和search作用是一L</p> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px">domain linpro.no<br />search linpro.no uio.no ifi.uio.no</p> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px"><span style="line-height: 21px; word-wrap: normal; color: rgb(255,0,0); word-break: normal">domain function:</span></p> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px">Had I typed<span class="Apple-converted-space"> </span><tt>telnet math.uio.no</tt>. with the trailing dot, the resolver would have known it was an FQDN and would have looked up<span class="Apple-converted-space"> </span><tt>math.uio.no</tt><span class="Apple-converted-space"> </span>at once, without trying to append the specified domain first. Not all applications are tolerant of the trailing dot, though, so it can't always be specified.</p> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px"><span style="line-height: 21px; word-wrap: normal; color: rgb(255,0,0); word-break: normal">search function:</span></p> <p style="border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 21px; list-style-type: none; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; word-wrap: normal; word-break: normal; border-top: 0px; border-right: 0px; padding-top: 0px">When<span class="Apple-converted-space"> </span><tt>ssh gram</tt><span class="Apple-converted-space"> </span>is executed, the resolver first looks for<span class="Apple-converted-space"> </span><tt>gram.linpro.no</tt>, which does not exist; then<tt>gram.uio.no</tt>, which does not exist, either; and finally<span class="Apple-converted-space"> </span><tt>gram.ifi.uio.no</tt>, which will succeed because it does exist</p></div></div><img src ="//www.lmlez.icu/jjshcc/aggbug/426356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.lmlez.icu/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-21 12:49 <a href="//www.lmlez.icu/jjshcc/archive/2015/07/21/426356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nginx+keepalived来实现nginx服务器的高可?/title><link>//www.lmlez.icu/jjshcc/archive/2015/07/20/426325.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Mon, 20 Jul 2015 05:29:00 GMT</pubDate><guid>//www.lmlez.icu/jjshcc/archive/2015/07/20/426325.html</guid><wfw:comment>//www.lmlez.icu/jjshcc/comments/426325.html</wfw:comment><comments>//www.lmlez.icu/jjshcc/archive/2015/07/20/426325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.lmlez.icu/jjshcc/comments/commentRss/426325.html</wfw:commentRss><trackback:ping>//www.lmlez.icu/jjshcc/services/trackbacks/426325.html</trackback:ping><description><![CDATA[<p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">之前有做qlvs+keepalived来实现高可用。可是现在nginx已经用到了很多公司的web服务器上Qƈ且也表现Z良的性能?br />那么在架构中Qnginx攑֜前端用作负蝲均衡和处理静态页面以及缓存,是一个很重要的位|,必须要保证nginx服务器的高可用,<br />今天单介l下用nginx+keepalived来实现nginx服务器的高可?卛_现故障自动切换?br /><span id="more-56"></span><br />环境Q?br />主nginx服务?192.168.2.117<br />备nginx服务?192.168.0.170<br />VIP:192.168.2.114<br />nginx服务器的安装和配|在此不做介l,不会的话可以参考:</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">//www.linuxyan.com/web-server/6.html</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">1、keepalived安装(在主和备2台nginx服务器上都安?</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">wget //www.keepalived.org/software/keepalived-1.2.2.tar.gz<br />tar xzf keepalived-1.2.2.tar.gz<br />cd keepalived-1.2.2<br />./configure –prefix=/usr/local/keepalived<br />make && make install<br />cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/<br />cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/<br />chmod +x /etc/init.d/keepalived<br />mkdir /etc/keepalived<br />ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">然后对主nginx服务器的keepalivedq行配置<br />vi /etc/keepalived/keepalived.conf<br />global_defs {<br />notification_email {<br />admin@centos.bz               #接收警报的email地址,可以d多个<br />}<br />notification_email_from keepalived@domain.com   ###发g人地址<br />smtp_server 127.0.0.1          ###发送邮件的服务?br />smtp_connect_timeout 30      ###时旉<br />router_id LVS_DEVEL      ####load balancer 的标?ID,用于email警报<br />}<br />vrrp_script chk_http_port {<br />script “/opt/nginx_pid.sh” ####nginx状态的脚本路径<br />interval 2<br />weight 2<br />}<br />vrrp_instance VI_1 {<br />state MASTER ############ 辅机?BACKUP<br />interface eth0 ####HA 监测|络接口<br />virtual_router_id 51 #丅R备机的 virtual_router_id 必须相同<br />mcast_src_ip 192.168.2.117 ###本机IP地址<br />priority 102 ########### 权D?back ?br />advert_int 1 #d之间的通告间隔U数<br />authentication {<br />auth_type PASS ###d切换时的验证<br />auth_pass 1111<br />}<br />track_script {<br />chk_http_port ### 执行监控的服?br />}<br />virtual_ipaddress {<br />192.168.2.114 ####vip的地址<br />}<br />}</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">备nginx服务器上配置<br />global_defs {<br />notification_email {<br />admin@centos.bz<br />}<br />notification_email_from keepalived@domain.com<br />smtp_server 127.0.0.1<br />smtp_connect_timeout 30<br />router_id LVS_DEVEL<br />}<br />vrrp_script chk_http_port {<br />script “/opt/nginx_pid.sh” ##nginx状态的脚本<br />interval 2<br />weight 2<br />}<br />vrrp_instance VI_1 {<br />state BACKUP<br />interface eth0<br />virtual_router_id 51 #### 保持M服务器一?br />mcast_src_ip 192.168.0.170 ###本机的IP地址<br />priority 101 ##########权?要比 master 低。?br />advert_int 1<br />authentication {<br />auth_type PASS<br />auth_pass 1111<br />}<br />track_script {<br />chk_http_port ### 执行监控的服?br />}<br />virtual_ipaddress {<br />192.168.2.114 ###vip的地址<br />}<br />}</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">之后分别在主从服务器建立nginx的监控脚本:<br />vi /opt/nginx_pid.sh<br />#!/bin/bash<br />A=`ps -C nginx –no-header |wc -l`<br />if [ $A -eq 0 ];then<br />/usr/local/nginx/sbin/nginx ##q个地方写你nginx命o的\?br />sleep 3<br />if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then<br />killall keepalived<br />fi<br />fi</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">配置好之后,分别?台服务器上启动nginx和keepalived<br />/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf<br />/etc/init.d/keepalived start</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">在主nginx服务器上执行ip a<br />[root@localhost ~]# ip a<br />1: lo: mtu 16436 qdisc noqueue<br />link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />inet 127.0.0.1/8 scope host lo<br />inet6 ::1/128 scope host<br />valid_lft forever preferred_lft forever<br />2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />link/ether 00:0c:29:58:58:5f brd ff:ff:ff:ff:ff:ff<br /><span style="color: rgb(255,0,0)">inet 192.168.2.117/22 brd 192.168.3.255 scope global eth0</span><br /><span style="color: rgb(255,0,0)">inet 192.168.2.114/32 scope global eth0</span><br />inet6 fe80::20c:29ff:fe58:585f/64 scope link<br />valid_lft forever preferred_lft forever<br />3: sit0: mtu 1480 qdisc noop<br />link/sit 0.0.0.0 brd 0.0.0.0<br />可以看到2.114q个vip已经l定在主nginx服务器上?q个时候把nginx停掉<br />[root@localhost ~]# killall nginx<br />[root@localhost ~]# ps aux |grep nginx<br />root 9175 0.0 0.3 43268 916 ? Ss 05:45 0:00 nginx: master process /usr/local/nginx/sbin/nginx<br />nginx 9176 0.0 0.5 43648 1468 ? S 05:45 0:00 nginx: worker process<br />root 9187 0.0 0.2 61180 716 pts/0 R+ 05:45 0:00 grep nginx<br />额额Q,Q怎么停不掉,Q,Q?br />注意看监控nginx的脚?当脚本检到nginx没有q行的时候,会尝试启动一ơ,如果启动成功Q则不{Uvip。如果启动失败,则把keepalived停掉Q从机的keepalived会把vipl定到备nginx服务器上Q这个时候就是备nginx的服务器在提供服务了?br />Z看下效果Q暂且把q个脚本修改一下,不让他尝试启动nginx服务<br />q个时候把nginx服务停掉Q我们用ip a来看下vip是否q在主nginx服务器上l定着<br />[root@localhost ~]# ip a<br />1: lo: mtu 16436 qdisc noqueue<br />link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />inet 127.0.0.1/8 scope host lo<br />inet6 ::1/128 scope host<br />valid_lft forever preferred_lft forever<br />2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />link/ether 00:0c:29:58:58:5f brd ff:ff:ff:ff:ff:ff<br /><span style="color: rgb(255,0,0)">inet 192.168.2.117/22 brd 192.168.3.255 scope global eth0</span><br />inet6 fe80::20c:29ff:fe58:585f/64 scope link<br />valid_lft forever preferred_lft forever<br />3: sit0: mtu 1480 qdisc noop<br />link/sit 0.0.0.0 brd 0.0.0.0</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">可以看到已经没有vipq个地址?br />ȝ备nginx服务器上看vip是否l定在了上面<br />[root@localhost etc]# ip a<br />1: lo: mtu 16436 qdisc noqueue<br />link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />inet 127.0.0.1/8 scope host lo<br />inet6 ::1/128 scope host<br />valid_lft forever preferred_lft forever<br />2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />link/ether 00:0c:29:34:cc:f9 brd ff:ff:ff:ff:ff:ff<br /><span style="color: rgb(255,0,0)">inet 192.168.0.170/22 brd 192.168.1.255 scope global eth0</span><br /><span style="color: rgb(255,0,0)">inet 192.168.2.114/32 scope global eth0</span><br />inet6 fe80::20c:29ff:fe34:ccf9/64 scope link<br />valid_lft forever preferred_lft forever<br />3: sit0: mtu 1480 qdisc noop<br />link/sit 0.0.0.0 brd 0.0.0.0</p> <p style="padding-bottom: 0px; text-transform: none; text-indent: 0px; margin: 0px 0px 15px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 16px/30px Verdana, 'Microsoft YaHei'; white-space: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">okQ可以看到vip已经l定在备nginx服务器上了?/p><img src ="//www.lmlez.icu/jjshcc/aggbug/426325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.lmlez.icu/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-20 13:29 <a href="//www.lmlez.icu/jjshcc/archive/2015/07/20/426325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>负蝲均衡器技术Nginx和F5的优~点Ҏ - 4399ɱol|ɱ佫//www.lmlez.icu/jjshcc/archive/2015/07/20/426321.htmlEric_jiangEric_jiangMon, 20 Jul 2015 02:53:00 GMT//www.lmlez.icu/jjshcc/archive/2015/07/20/426321.html//www.lmlez.icu/jjshcc/comments/426321.html//www.lmlez.icu/jjshcc/archive/2015/07/20/426321.html#Feedback0//www.lmlez.icu/jjshcc/comments/commentRss/426321.html//www.lmlez.icu/jjshcc/services/trackbacks/426321.html对于数据量q大的网l中Q往往单一讑֤无法承担Q需要多台设备进行数据分,而负载均衡器是用来数据分到多台讑֤的一个{发器?/p>

目前有许多不同的负蝲均衡技术用以满不同的应用需求,如Y/g负蝲均衡、本?全局负蝲均衡、更高网l层负蝲均衡Q以及链路聚合技术?/p>

我们使用的是软负载均衡器Nginx,而农行用的是F5负载均衡器Q这里就单介l下q两U技术:

a.软g负蝲均衡解决Ҏ

在一台服务器的操作系l上Q安装一个附加Y件来实现负蝲均衡Q如Nginx负蝲均衡Q我们管理系l^C用的也是q款均衡器)。它的优ҎZ特定环境、配|简单、用灵zR成本低廉,可以满大部分的负蝲均衡需求?/p>

一、什么是Nginx

Nginx ("engine x") 是一个高性能?HTTP ?反向代理 服务器,也是一?IMAP/POP3/SMTP 代理服务器?可以说Nginx 是目前用最为广泛的HTTP软负载均衡器Q其源代码以类BSD许可证的形式发布Q商业友好)Q同时因高效的性能、稳定性、丰富的功能集、示例配|文件和低系l资源的消耗而闻名于业界。像腾讯、淘宝、新等大型门户及商业网站都采用Nginxq行HTTP|站的数据分?/p>

二、Nginx的功能特?/p>

1、工作在|络?层之上,可以针对http应用做一些分的{略Q比如针对域名、目录结构;

2、Nginx对网l的依赖比较;

3、Nginx安装和配|比较简单,试h比较方便Q?/p>

4、也可以承担高的负蝲压力且稳定,一般能支撑过1万次的ƈ发;

5、Nginx可以通过端口到服务器内部的故障Q比如根据服务器处理|页q回的状态码、超时等{,www.linuxidc.com q且会把q回错误的请求重新提交到另一个节点,不过其中~点是不支持url来检;

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx能支持http和EmailQ这样就在适用范围上面很多;

8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负蝲均衡法?/p>

三、Nginx的原?/p>

Nginx采用的是反向代理技术,代理服务器来接受internet上的q接hQ然后将h转发l内部网l上的服务器Qƈ从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现Z个服务器。反向代理负载均衡技术是把将来自internet上的q接h以反向代理的方式动态地转发l内部网l上的多台服务器q行处理Q从而达到负载均衡的目的?/p>

b.g负蝲均衡解决Ҏ

直接在服务器和外部网l间安装负蝲均衡讑֤Q这U设备我们通常UC载均衡器。由于专门的讑֤完成专门的Q务,独立于操作系l,整体性能得到大量提高Q加上多样化的负载均衡策略,化的量理Q可辑ֈ最佳的负蝲均衡需求?一般而言Q硬件负载均衡在功能、性能上优于Y件方式,不过成本昂贵Q比如最常见的就是F5负蝲均衡器?/p>

什么是F5 BIG-IP

F5负蝲均衡器是应用交付|络的全球领DF5 Networks公司提供的一个负载均衡器专用讑֤QF5 BIG-IP LTM 的官方名U叫做本地流量管理器Q可以做4-7层负载均衡,h负蝲均衡、应用交换、会话交换、状态监控、智能网l地址转换、通用持箋性、响应错误处理、IPv6|关、高U\由、智能端口镜像、SSL加速、智能HTTP压羃、TCP优化、第7层速率整Ş、内容缓册Ӏ内容{换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒l服?DoS)d和SYN Flood保护、防火墙—包过滤、包消毒{功能?/p>

以下是F5 BIG-IP用作HTTP负蝲均衡器的主要功能Q?/p>

  ①、F5 BIG-IP提供12U灵zȝ法所有流量均衡的分配到各个服务器Q而面对用P只是一台虚拟服务器?/p>

  ②、F5 BIG-IP可以认应用E序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障QF5会检查出来ƈ该服务器标识ؓ宕机Q从而不用L讉Kh传送到该台发生故障的服务器上。这P只要其它的服务器正常Q用L讉K׃会受到媄响。宕Z旦修复,F5 BIG-IP׃自动查证应用已能对客戯求作出正响应ƈ恢复向该服务器传送?/p>

  ③、F5 BIG-IPh动态Session的会话保持功能?/p>

  ④、F5 BIG-IP的iRules功能可以做HTTP内容qoQ根据不同的域名、URLQ将讉Kh传送到不同的服务器?/p>


Ҏ优缺点对?/p>

Zg的方?F5)

优点Q能够直接通过交换机实?处理能力更强Q而且与系l无养I负蝲性能强更适用于一大堆讑֤、大讉K量、简单应?/p>

~点Q成本高Q除讑֤h高昂Q而且配置冗余Q很难想象后面服务器做一个集,但最关键的负载均衡设备却是单炚w|;无法有效掌握服务器及应用状?

g负蝲均衡Q一般都不管实际pȝ与应用的状态,而只是从|络层来判断Q所以有时候系l处理能力已l不行了Q但|络可能q来 得及反应Q这U情况非常典型,比如应用服务器后面内存已l占用很多,但还没有d不行Q如果网l传输量不大未必在|络层能反映出来Q?/p>

Z软g的方?Nginx)

优点Q基于系l与应用的负载均衡,能够更好地根据系l与应用的状冉|分配负蝲。这对于复杂应用是很重要的,性h比高Q实际上如果几台服务器,用F5之类的硬件品显得有些浪费,而用软gp合算得多Q因为服务器同时q可以跑应用做集等?/p>

~点Q负载能力受服务器本w性能的媄响,性能好Q负载能力越大?/p>

lDQ对我们理pȝ应用环境来说Q由于负载均衡器本n不需要对数据q行处理Q性能瓉更多的是在于后台服务器,通常采用软负载均衡器已非常够用且其商业友好的软g源码授权使得我们可以非常灉|的设计,无逢的和我们管理系l^台相l合?/p>

Eric_jiang 2015-07-20 10:53 发表评论
]]>
bash?2>&1 & 的解?/title><link>//www.lmlez.icu/jjshcc/archive/2015/07/15/426227.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Wed, 15 Jul 2015 01:56:00 GMT</pubDate><guid>//www.lmlez.icu/jjshcc/archive/2015/07/15/426227.html</guid><wfw:comment>//www.lmlez.icu/jjshcc/comments/426227.html</wfw:comment><comments>//www.lmlez.icu/jjshcc/archive/2015/07/15/426227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.lmlez.icu/jjshcc/comments/commentRss/426227.html</wfw:commentRss><trackback:ping>//www.lmlez.icu/jjshcc/services/trackbacks/426227.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">1、首先,bash?Q?Q?三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENOQ即标准输入Q一般是键盘Q,标准输出Q一般是昄屏,准确的说是用L端控制台Q,标准错误Q出错信息输出)?/p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">2、输入输出可以重定向Q所谓重定向输入是在命令中指定具体的输入来源,譬如 cat < test.c test.c重定向ؓcat命o的输入源。输出重定向是指定具体的输出目标以替换默认的标准输出Q譬如ls > 1.txtls的结果从标准输出重定向ؓ1.txt文本。有时候会看到?ls >> 1.txtq类的写法,> ?>> 的区别在于:> 用于新徏?gt;>用于q加。即ls > 1.txt会新Z?.txt文gq且ls的内容输出到新徏?.txt中,而ls >> 1.txt则用?.txt已经存在Q而我们只是想ls的内容追加到1.txt文本中的时候?br /></p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">3、默认输入只有一个(0QSTDIN_FILENOQ,而默认输出有两个Q标准输? STDOUT_FILENOQ标准错? STDERR_FILENOQ。因此默认情况下Qshell输出的错误信息会被输出到2Q而普通输Z息会输出?。但是某些情况下Q我们希望在一个终端下看到所有的信息Q包括标准输Z息和错误信息Q,要怎么办呢Q?/p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">       对了Q你可以使用我们上面讲到的输出重定向。思\有了Q怎么写呢Q?非常直观的想法就?>1Q将2重定向到1嘛)Q行不行呢?试一试就知道了。我们进行以下测试步骤:</p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">1Qmkdir test && cd test                ; 创徏test文g夹ƈq入test目录</p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">2Qtouch a.txt b.c c                          ; 创徏a.txt b.c c 三个文g</p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">3Qls > 1                                           ; 按我们的猜测Q这句应该是ls的结果重定向到标准输出,因此效果和直接ls应该一栗但是实际这句执行后Q标准输Zq没有Q何信息?/p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">4Qls                                                  ; 执行3之后再次lsQ则会看到test文g夹中多了一个文?</p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">5Qcat 1                                            ; 查看文g1的内容,实际l果为:1 a.txt b.c c     可见步骤3?ls > 1q不是将ls的结果重定向为标准输出,而是结果重定向C一个文?中。即1在此处不被解释ؓSTDOUT_FILENOQ而是文g1?/p> <p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/26px Arial; white-space: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">4、到了此Ӟ你应该也能猜?>&1的用意了。不错,2>&1是用来标准错?重定向到标准输出1中的。此?前面?amp;是Z让bash?解释成标准输不是文?。至于最后一?amp;Q则是让bash在后台执行?/p><img src ="//www.lmlez.icu/jjshcc/aggbug/426227.html" width = "1" height = "1" /><br><br><div align=right><a href="//www.lmlez.icu/" title="4399ɱol">4399ɱol</a> 2015-07-15 09:56 <a href="//www.lmlez.icu/jjshcc/archive/2015/07/15/426227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <script>(function(){ var src = (document.location.protocol == "") ? "//js.passport.qihucdn.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743":"https://jspassport.ssl.qhimg.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743"; document.write('<script src="' + src + '" id="sozz"><\/script>'); })(); </script>