<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/tank_fs4t" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/tank_fs4t" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 18 May 2012 07:12:33 GMT</lastBuildDate><title>海底苍鹰(tank)博客</title><description>－－一步，二步，三步，N步，二行脚印</description><image><url>http://www.feedsky.com/feed/tank_fs4t/sc/gif</url><title>海底苍鹰(tank)博客</title><link>http://blog.51yip.com</link></image><link>http://blog.51yip.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Fri, 18 May 2012 07:12:33 GMT</pubDate><item><title>awstats分析nginx日志</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/639851318/6321208/1/item.html</link><content:encoded>&lt;p&gt;看了awstats介绍后，感觉是个好东西，等装好来用的时候，不像那么一回事。awstats说白了就是对nginx,apache产生的日志进行分析。awstats分析出来的数据不准，日志是按照一定的规则来生成的，把访问数据存入到文件中，但是数据存入的时候可能是不全的，awstats分析的时候就有误差。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1411&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，安装awstats&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;yum install awstats&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二，配置awstats&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1，nginx的日志格式&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;log_format  access_www  '$remote_addr - $remote_user [$time_local] &quot;$request&quot; '
 '$status $body_bytes_sent &quot;$http_referer&quot; '
 '&quot;$http_user_agent&quot; $http_x_forwarded_for';
 access_log  /var/log/nginx/access.log  access_www;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;awstats分析现有的日志文件，产生的日志文件名，从头到尾要对得上，要不然会报错的。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2，切割日志脚本cut.sh&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost access] cat /home/zhangy/cut.sh
#!/bin/bash
logs_path=&quot;/var/log/nginx/&quot; #nginx日志位置
# 你的日志名, access_www是web服务器对应log名,accesss_img是图片服务器对应的log名
logs_names=(access_www access_img)
num=${#logs_names[@]}        #数组总数
for((i=0;i&amp;lt;num ;i++));do     #循环
    if [ ! -d ${logs_path}/${logs_names[i]} ]    #判断目录是不是存在
    then
        mkdir -p ${logs_path}${logs_names[i]}   #不存在，建之，日志重新建文件夹，切割后文件很多，所以分目录
    fi
    log_name=&quot;${logs_path}${logs_names[i]}.log&quot;  #原始目录位置
    if [ -f &quot;$log_name&quot; ]; then
        mv ${logs_path}${logs_names[i]}.log ${logs_path}${logs_names[i]}/${logs_names[i]}.log-$(date -d &quot;yesterday&quot; +&quot;%Y%m%d&quot;)
    fi
done
nginx -s reopen   #重新生成原始日志文件&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3，awstats_configure.pl生成配置文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost awstats]# find / -name &quot;awstats_configure.pl&quot; -print
/usr/share/awstats/tools/awstats_configure.pl&lt;/pre&gt;
&lt;p&gt;yum装的，不知道什么位置查找一下。下面重点说一下，生成过程&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost access]# /usr/share/awstats/tools/awstats_configure.pl
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Do you want to continue setup from this NON standard directory [yN] ? y
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Config file path ('none' to skip web server setup):
&amp;gt; none   #用的是nginx上面提示都不符合，在这里选择none
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y   #是否要求新建配置文件
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Your web site, virtual server or profile name:
&amp;gt; access_www      #这里填写的东西，根日志的名称一样就行了，域名，非域名都行
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#下面一路回车就行了。&lt;/pre&gt;
&lt;p&gt;这个操作完了以后，会在/etc/awstats下面生成一个配置文件。&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost awstats]# ls /etc/awstats/ |grep access
awstats.access_www.conf&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;如果你分析多个域名的日志，就把这一步多操作几次&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4，修改生成的配置文件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;修改二个部LogFile和LogFormat&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;LogFile=&quot;/var/log/nginx/access/access.log-%YYYY-24%MM-24%DD-24&quot;
LogFormat=&quot;%host %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other&quot;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;-24表示一天前的，-0表示当前，配置文件里面有说明&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5，生成awstats的静态html&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost awstats]# mkdir -p /var/www/awstats
[root@localhost awstats]# chown -R nginx:nginx /var/www/awstats #nginx的启动用户&lt;/pre&gt;
&lt;p&gt;上面建了一个web目录awstats来存生成的html&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ~]# cat /home/zhangy/static.sh
#!/bin/bash
# The Nginx logs path
logs_names=(access_www access_img)     #log的名称
web_path=&quot;/var/www/awstats&quot;            #静态html的路径
cgi_path=&quot;/usr/share/awstats/wwwroot/cgi-bin&quot;  #awstats可执行文件的存放路径
static_path=&quot;/usr/share/awstats/tools&quot;         #awstats可执行文件的存放路径

num=${#logs_names[@]}
for((i=0;i&amp;lt;num ;i++));do
    if [ ! -d ${web_path}/${logs_names[i]} ]
    then
        mkdir -p ${web_path}/${logs_names[i]}
    fi
    ${static_path}/awstats_buildstaticpages.pl -update \
    -config=${logs_names[i]} -lang=cn -dir=${web_path}/${logs_names[i]} \
    -awstatsprog=${cgi_path}/awstats.pl
done&lt;/pre&gt;
&lt;p&gt;当执行完static.sh后，会在/var/lib/awstats/下面生成一个文件，里面存放了分析后的数据&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost awstats]# ls /var/lib/awstats/ |grep access
awstats052012.access_www.txt&lt;/pre&gt;
&lt;p&gt;http://www.XXX.com/awstats/access_www/awstats.access_www.html&lt;/p&gt;
&lt;p&gt;可以通过这个页面来访问，前提是nginx的root设置的目录是/var/www才行。&lt;/p&gt;
&lt;p&gt;看一下效果图&lt;/p&gt;
&lt;div id=&quot;attachment_1412&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/awstats.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1412&quot; title=&quot;awstats&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/awstats-300x101.jpg&quot; alt=&quot;awstats&quot; width=&quot;300&quot; height=&quot;101&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;awstats&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;awstats每次只能分析一个log文件，也就是说我有10日志文件，当我们运行static.sh的时候，只会读取一个。所以每天都要用awstats来分析日志，/var/lib/awstats下面的数据文件会不断的增加，用crontab定时跑一下。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;59 23 * * * /home/zhangy/cut.sh  #夜里12点切日志
30 04 * * * /home/zhangy/static.sh #凌晨4点生成静态html&lt;/pre&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1411&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/639851318/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/639851318/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/linux/1411.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>看了awstats介绍后，感觉是个好东西，等装好来用的时候，不像那么一回事。awstats说白了就是对nginx,apache产生的日志进行分析。awstats分析出来的数据不准，日志是按照一定的规则来生成的，把访问数据存入到文件中，但是数据存入的时候可能是不全的，awstats分析的时候就有误差。

一，安装awstats
yum install awstats
二，配置awstats
1，nginx的日志格式
log_format  access_www  '$remote_addr - $remote_user [$time_local] &quot;$request&quot; '
 '$status $body_bytes_sent &quot;$http_referer&quot; '
 '&quot;$http_user_agent&quot; $http_x_forwarded_for';
 access_log  /var/log/nginx/access.log  access_www;
awstats分析现有的日志文件，产生的日志文件名，从头到尾要对得上，要不然会报错的。
2，切割日志脚本cut.sh
[root@localhost access] cat /home/zhangy/cut.sh
#!/bin/bash
logs_path=&quot;/var/log/nginx/&quot; #nginx日志位置
# 你的日志名, access_www是web服务器对应log名,accesss_img是图片服务器对应的log名
logs_names=(access_www access_img)
num=${#logs_names[@]}        #数组总数
for((i=0;i&amp;#60;num ;i++));do     #循环
    if [ ! -d ${logs_path}/${logs_names[i]} ]   [...]&lt;img src=&quot;http://www1.feedsky.com/t1/639851318/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/639851318/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>linux</category><category>日志分析</category><category>nginx</category><category>awstats</category><pubDate>Fri, 18 May 2012 15:12:33 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/linux/1411.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1411</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/linux/1411.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/639851318/6321208</fs:itemid></item><item><title>heartbeat mysql双机互备实现高可用 安装配置</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803464/6321208/1/item.html</link><content:encoded>&lt;p&gt;先说一下heartbeat的原理，在二台机子上都安装heartbeat，这样heartbeat会相互监听，如果主的挂了，从的会变成主的。如果主的恢复了，在转变过来。主的和从的要实现的高可用程序都要启动。没装成功之前我是这样理解的，heartbeat只要装在一台机器上就行了，由heartbeat来监控二台机器，感觉这样更合理一点，不过这种理解是错误的。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1408&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，服务器说明&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;mysqlMaster eth0 192.168.1.108&lt;br /&gt;
mysqlSlave  eth0 192.168.1.106&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;主和从的heartbeat都启动时会在主服务器上产生一个虚拟IP（virtual IP）192.168.1.111&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;我在网上找关于heartbeat安装配置的时候，发现全部是双网卡的，没发现一个是单网卡，开始没配置成功的时候，我还以为使用heartbeat必须是双网卡呢，其实不需要的。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二，安装mysql和实现mysql主主同步&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;mysql安装请参考：&lt;strong&gt;&lt;a title=&quot;linux cmake 安装mysql5.5.11,以及更高版本&quot; href=&quot;http://blog.51yip.com/mysql/1312.html&quot;&gt;linux cmake 安装mysql5.5.11,以及更高版本&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;mysql主主同步：&lt;strong&gt;&lt;a title=&quot;mysql replication 互为主从的安装及配置，以及数据同步&quot; href=&quot;http://blog.51yip.com/mysql/357.html&quot;&gt;mysql replication 互为主从的安装及配置，以及数据同步&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;mysql我安装过好多次，我都记不清了，在arch,centos,ubuntu,rip上面我都装的，博客里单独拿出来写的到是不多，夹杂其他博文里面的比较多，可以搜索一下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三，安装heartbeat，主从一样&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;yum install heartbeat&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四，heartbeat配置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;安装好后是/etc/ha.d/下面是没有配置文件的，你可以从&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
[root@mysqlMaster heartbeat-2.1.4]# cp ha.cf authkeys haresources /etc/ha.d/&lt;/pre&gt;
&lt;p&gt;考过来的这三个文件，其实没有配置什么，基本上都注释掉了，不过可以看参数说明。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1，修改配置文件ha.cf，主从配置差不多&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]#  cat /etc/ha.d/ha.cf |awk '{if($0 !~ /^$/ &amp;amp;&amp;amp; $0 !~ /^#/) {print $0}}'
logfile /var/log/ha-log              //设置heartbeat日志存放位置
keepalive 2                         //设定心跳(监测)时间时间为2秒
deadtime 30                          //设置监测不到，并认定其死机的时间是30
warntime 10                          //设置监测到的警告时间为10
udpport 694                          //设置heartbeat监听端口
initdead 120                           //主机死掉后预留的恢复时间
bcast   eth0                          //设置heartbeat监听的网卡
ucast   eth0 192.168.1.106           //单播，现在是主服务上，在这里填写从服务器IP，如果在从的上面，就填写主的IP
baud    19200                          //设置串行通讯的波特率
auto_failback on                           //主服务恢复后从从服务器切换到主服务器
node mysqlMaster                          //主服务器名，下面会提到如果何设置这个参数
node mysqlSlave                          //从服务器名，这二个名字必须根uname -n一样，不然报错。
ping 192.168.1.1                            //网关
respawn hacluster /usr/lib/heartbeat/ipfail    //可选，列出和heartbeat一起启动和关闭的进程
apiauth ipfail gid=haclient uid=hacluster      //启动用户和组&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2，修改配置authkeys，主从一样&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]#  cat /etc/ha.d/authkeys |awk '{if($0 !~ /^$/ &amp;amp;&amp;amp; $0 !~ /^#/) {print $0}}'
auth 1
1 crc&lt;/pre&gt;
&lt;p&gt;authkeys文件用于设定heartbeat的认证方式，共有三种可用的认证方式：crc、md5和sha1，三种认证方式的安全性依次提高，但是占用的系统资源也依次增加。&lt;/p&gt;
&lt;p&gt;改好后要加权限&lt;br /&gt;
&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;[root@mysqlMaster ha.d]# chmod 600 authkeys &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;不然启动时会报以下错误&lt;br /&gt;
&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;heartbeat: udpport setting must precede media statementsheartbeat[5529]: 2012/05/15_20:09:25 ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3，修改haresources，主从一样&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]#  cat /etc/ha.d/haresources |awk '{if($0 !~ /^$/ &amp;amp;&amp;amp; $0 !~ /^#/) {print $0}}'
mysqlMaster IPaddr::192.168.1.111/24/eth0:0 mysqld&lt;/pre&gt;
&lt;p&gt;说明&lt;br /&gt;
&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;1)，mysqlMaster这里填写主服务器的名称，这个要根uname -n一样&lt;br /&gt;
2)，192.168.1.111这个是虚拟IP&lt;br /&gt;
3)，eth0:0虚拟IP对应的网络接口&lt;br /&gt;
4)，mysqld是mysql服务商的启动脚本，一般是放在/etc/init.d/下面&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四，修改主机名，也就是uname -n&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1，修改主服务器的network&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
#HOSTNAME=localhost.localdomain   //这是以前的，注释掉了
GATEWAY=192.168.1.1
HOSTNAME=mysqlMaster     //这是我添加的&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2，修改从服务器的network&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlSlave ha.d]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
#HOSTNAME=localhost.localdomain   //这是以前的，注释掉了
GATEWAY=192.168.1.1
HOSTNAME=mysqlSlave     //这是我添加的&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3，修改/etc/hosts，主从一样&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;192.168.1.108           mysqlMaster
192.168.1.106           mysqlSlave&lt;/pre&gt;
&lt;p&gt;添加上面的内容后，然后重启网络/etc/init.d/network restart,就能看到&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlMaster ha.d]# uname -n
 mysqlMaster&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;五，主和从都启动heartbeat&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;/etc/init.d/heartbeat start&lt;/p&gt;
&lt;p&gt;启动后mysqld也会被heartbeat启动。&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@mysqlSlave ha.d]# netstat -upnl |grep heart
udp        0      0 0.0.0.0:694                 0.0.0.0:*                               17752/heartbeat: wr
udp        0      0 0.0.0.0:694                 0.0.0.0:*                               17750/heartbeat: wr
udp        0      0 0.0.0.0:56652               0.0.0.0:*                               17752/heartbeat: wr
udp        0      0 0.0.0.0:45286               0.0.0.0:*                               17750/heartbeat: wr&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;694是监听的端口，剩下的二个没弄明白，我猜测是给对方用的，也就是说主的给从的留了二个端口，从的给主的留了二个端口。并且会产生虚拟IP，看下图&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1409&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/heartbeat.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1409&quot; title=&quot;heartbeat启动成功&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/heartbeat-300x61.jpg&quot; alt=&quot;heartbeat启动成功&quot; width=&quot;300&quot; height=&quot;61&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;heartbeat启动成功&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;六，测试heartbeat&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[root@mysqlMaster ha.d]# mysql -utest -p -h 192.168.1.111&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;连接数据库时用这个虚拟IP来连接，这样给人感觉就像一台服务器一样，这个根mysql proxy的连接池有点像。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;把主服务器的heartbeat停止掉后，神奇的事情发生了，虚拟IP从主服务器跑到从服务器去，在从服务器mysql -utest -p -h 192.168.1.111，这样连接可以进去，而主服务器不行了。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;我也发现一个问题，就是当我把主服务器的mysql停止掉，heartbeat不停止，发现从服务器并没有接替主服务器。heartbeat只针对到机器，不针对到进程。如果有人知道怎么解决，还请留个言，非常感谢。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1408&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803464/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803464/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/server/1408.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>先说一下heartbeat的原理，在二台机子上都安装heartbeat，这样heartbeat会相互监听，如果主的挂了，从的会变成主的。如果主的恢复了，在转变过来。主的和从的要实现的高可用程序都要启动。没装成功之前我是这样理解的，heartbeat只要装在一台机器上就行了，由heartbeat来监控二台机器，感觉这样更合理一点，不过这种理解是错误的。

一，服务器说明
mysqlMaster eth0 192.168.1.108
mysqlSlave  eth0 192.168.1.106
主和从的heartbeat都启动时会在主服务器上产生一个虚拟IP（virtual IP）192.168.1.111
 
我在网上找关于heartbeat安装配置的时候，发现全部是双网卡的，没发现一个是单网卡，开始没配置成功的时候，我还以为使用heartbeat必须是双网卡呢，其实不需要的。
二，安装mysql和实现mysql主主同步
mysql安装请参考：linux cmake 安装mysql5.5.11,以及更高版本
mysql主主同步：mysql replication 互为主从的安装及配置，以及数据同步
mysql我安装过好多次，我都记不清了，在arch,centos,ubuntu,rip上面我都装的，博客里单独拿出来写的到是不多，夹杂其他博文里面的比较多，可以搜索一下。
三，安装heartbeat，主从一样
yum install heartbeat
四，heartbeat配置
安装好后是/etc/ha.d/下面是没有配置文件的，你可以从
[root@mysqlMaster ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
[root@mysqlMaster heartbeat-2.1.4]# cp ha.cf authkeys haresources /etc/ha.d/
考过来的这三个文件，其实没有配置什么，基本上都注释掉了，不过可以看参数说明。
1，修改配置文件ha.cf，主从配置差不多
[root@mysqlMaster ha.d]#  cat /etc/ha.d/ha.cf &amp;#124;awk '{if($0 !~ /^$/ &amp;#38;&amp;#38; $0 !~ /^#/) {print $0}}'
logfile /var/log/ha-log              //设置heartbeat日志存放位置
keepalive 2                         //设定心跳(监测)时间时间为2秒
deadtime 30                          //设置监测不到，并认定其死机的时间是30
warntime 10                          //设置监测到的警告时间为10
udpport 694                          //设置heartbeat监听端口
initdead 120                           //主机死掉后预留的恢复时间
bcast   eth0                          //设置heartbeat监听的网卡
ucast   eth0 192.168.1.106           //单播，现在是主服务上，在这里填写从服务器IP，如果在从的上面，就填写主的IP
baud    19200                          //设置串行通讯的波特率
auto_failback on                           [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803464/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803464/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>linux</category><category>heartbeat</category><category>服务器相关</category><category>安装</category><category>mysql</category><category>互备</category><category>配置</category><pubDate>Wed, 16 May 2012 00:26:32 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/server/1408.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1408</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/server/1408.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803464/6321208</fs:itemid></item><item><title>学习很重要</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803465/6321208/1/item.html</link><content:encoded>&lt;p&gt;人活在这个社会上就要不断在学习，从出生那天开始就是这样。机会是给那些有准备的人的。不断的学习，不断提高，强化自己才有机会。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1406&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;1，学习的目的是为了能实际的运用，帮助自己解决问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有一次去一个朋友家，看到书架有很多书，我就说了，你的书好多啊。我的书毕业的时候，都当费纸卖了。朋友说书多，没时间，也懒得看了。突然感觉书只是一种摆设了。实去了它真正的意义。&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
2，学习要注意方法方式，动手很重要&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;没事的时候看到同事在看网页，挺浪费时间的，我自己也看网页，看新闻，但是有一个度。不能一直这样。我就根他们说不忙的时候，可以学习一些知识，来提高自己。特别是做技术这一块。新技术出的很快，如果不学就很难根上了。同事也许意识到了自己的不足，开始学习新的知识。讨论问题的时候，发现他们学习方法不是很得当，站在我立场上是这样的。&lt;/p&gt;
&lt;p&gt;学习光看是没有用的，看二遍你记得了，看过之后还要实际的操作，不然你怎么知道书上说的是对是错，实际操作过，你才能更深的理解，光看不操作过段时间，就忘记了。学习了，实际操作过了，学习新事物你只完成了三分之一。为什么这么说了，自己学根到实际运用有一定的不同。例如我要学web服务器搭建，我会在网上先查这方面的信息，然后在本机搭建。到正式服务器的时候，可能根本机会有所不同，搭建方式会不一样。如果能成功搭建起来，说明学习的东西能实际运用了。web服务器实际运行时会出现些问题，根据自己所学，能实际的快速的解决掉，到这儿学习算是一个暂时性的结束。光学不练没用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3，学习是一个长期的过程，不要等到用的时候，才着急&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每个人对自己的长处和短处都是有所了解的，我哪里比较强，哪里比较弱。我自己就深有体会，做了5年的程序，现在主要做管理和服务器运 维，iptables开始的时候，没有用心学，掌握程度不够，等到我用的时候，心虚了。不敢用，选择了替代品APF，但是有的东西并不是APF能替代的，IPTABLES的灵活性高，能实现的功能更多。有的人问了等到用的时候在学不也行吗？很多人都这样。有的时候一样东西并不是短时间内能学会的，如果想实际的运用更需要时间。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4，帮助别人也是一种学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我自己建了一个有关技术的QQ群，也加入了一些有关技术的QQ群。当别人提问题后，这个问题我也遇到过，但是怎么解决的忘了，这个时候，我会找找以前的笔记，或者实际在操作一下，这样才想起来怎么解决。既帮助了别人，也帮助了自己。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5，学会使用网络资源&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;网上资源很多，就像是浩瀚的宇宙，里面有很多好东西，也有很多垃圾。我毕业后就在也没有买过书，网上电子书很多，边学边可以操作这样很方便。当你遇到问题，去GOOGLE时，肯定会遇到这样的情况，一页里面有很多一样的内容，并且都是相互COPY，这就很让人郁闷了，如果原作者笔误而写错了一些东西，大家这样相互COPY，起不是一错在错。我很反感那些采集内的网站。很让人无语。&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1406&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803465/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803465/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/other/1406.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>人活在这个社会上就要不断在学习，从出生那天开始就是这样。机会是给那些有准备的人的。不断的学习，不断提高，强化自己才有机会。

1，学习的目的是为了能实际的运用，帮助自己解决问题
有一次去一个朋友家，看到书架有很多书，我就说了，你的书好多啊。我的书毕业的时候，都当费纸卖了。朋友说书多，没时间，也懒得看了。突然感觉书只是一种摆设了。实去了它真正的意义。

2，学习要注意方法方式，动手很重要
没事的时候看到同事在看网页，挺浪费时间的，我自己也看网页，看新闻，但是有一个度。不能一直这样。我就根他们说不忙的时候，可以学习一些知识，来提高自己。特别是做技术这一块。新技术出的很快，如果不学就很难根上了。同事也许意识到了自己的不足，开始学习新的知识。讨论问题的时候，发现他们学习方法不是很得当，站在我立场上是这样的。
学习光看是没有用的，看二遍你记得了，看过之后还要实际的操作，不然你怎么知道书上说的是对是错，实际操作过，你才能更深的理解，光看不操作过段时间，就忘记了。学习了，实际操作过了，学习新事物你只完成了三分之一。为什么这么说了，自己学根到实际运用有一定的不同。例如我要学web服务器搭建，我会在网上先查这方面的信息，然后在本机搭建。到正式服务器的时候，可能根本机会有所不同，搭建方式会不一样。如果能成功搭建起来，说明学习的东西能实际运用了。web服务器实际运行时会出现些问题，根据自己所学，能实际的快速的解决掉，到这儿学习算是一个暂时性的结束。光学不练没用。
3，学习是一个长期的过程，不要等到用的时候，才着急
每个人对自己的长处和短处都是有所了解的，我哪里比较强，哪里比较弱。我自己就深有体会，做了5年的程序，现在主要做管理和服务器运 维，iptables开始的时候，没有用心学，掌握程度不够，等到我用的时候，心虚了。不敢用，选择了替代品APF，但是有的东西并不是APF能替代的，IPTABLES的灵活性高，能实现的功能更多。有的人问了等到用的时候在学不也行吗？很多人都这样。有的时候一样东西并不是短时间内能学会的，如果想实际的运用更需要时间。
4，帮助别人也是一种学习
我自己建了一个有关技术的QQ群，也加入了一些有关技术的QQ群。当别人提问题后，这个问题我也遇到过，但是怎么解决的忘了，这个时候，我会找找以前的笔记，或者实际在操作一下，这样才想起来怎么解决。既帮助了别人，也帮助了自己。
5，学会使用网络资源
网上资源很多，就像是浩瀚的宇宙，里面有很多好东西，也有很多垃圾。我毕业后就在也没有买过书，网上电子书很多，边学边可以操作这样很方便。当你遇到问题，去GOOGLE时，肯定会遇到这样的情况，一页里面有很多一样的内容，并且都是相互COPY，这就很让人郁闷了，如果原作者笔误而写错了一些东西，大家这样相互COPY，起不是一错在错。我很反感那些采集内的网站。很让人无语。
收藏、分享这篇文章!&lt;img src=&quot;http://www1.feedsky.com/t1/638803465/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803465/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术其他</category><pubDate>Sun, 13 May 2012 20:50:02 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/other/1406.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1406</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/other/1406.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803465/6321208</fs:itemid></item><item><title>iptables snat和dnat</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803466/6321208/1/item.html</link><content:encoded>&lt;p&gt;iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下.&lt;/p&gt;
&lt;p&gt;dnat是用来做目的网络地址转换的，就是重写包的目的IP地址。如果一个包被匹配了，那么和它属于同一个流的所有的包都会被自动转换，然后就可以被路由到正确的主机或网络。比如，你的Web服务器在LAN内部，而且没有可在Internet上使用的真实IP地址，那就可以使用这个dnat让防火墙把所有到它自己HTTP端口的包转发给LAN内部真正的Web服务器。目的地址也可以是一个范围，这样的话，DNAT会为每次请求随机分配一个机器,这样我们可以用这个dnat做负载平衡。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1405&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;[root@linux ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp\&lt;br /&gt;
--dst 122.225.97.111 --dport 80 -j DNAT --to-destination 192.168.1.130:80&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上面的例子是把所有通过eth0这个网卡发往地址122.225.97.111的包都转发到局域网的中192.168.1.130这台机器上.它也可以配全--string功能更强大.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[root@linux ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80\&lt;br /&gt;
-m string --string &quot;img.51yip.com&quot; --algo bm -j DNAT --to-destination 192.168.1.136:80&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将匹配到img.51yip.com的请求转到局域网的192.168.1.136这台机器上.&lt;/p&gt;
&lt;p&gt;snat可以让本地ip地址伪装成其他机器的ip地址,或者是公网IP,&lt;br /&gt;
假如我有三台机器,一台能上外网,另外二台却不可以.不能上网的机器可以伪装成可上网的那机器的IP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[root@linux ~]# iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-destination 192.168.1.108&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;192.168.10.0/24这个IP段是不可以上网的,108这台机器是可以上网的.&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1405&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803466/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803466/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/linux/1405.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下.
dnat是用来做目的网络地址转换的，就是重写包的目的IP地址。如果一个包被匹配了，那么和它属于同一个流的所有的包都会被自动转换，然后就可以被路由到正确的主机或网络。比如，你的Web服务器在LAN内部，而且没有可在Internet上使用的真实IP地址，那就可以使用这个dnat让防火墙把所有到它自己HTTP端口的包转发给LAN内部真正的Web服务器。目的地址也可以是一个范围，这样的话，DNAT会为每次请求随机分配一个机器,这样我们可以用这个dnat做负载平衡。

[root@linux ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp\
--dst 122.225.97.111 --dport 80 -j DNAT --to-destination 192.168.1.130:80
上面的例子是把所有通过eth0这个网卡发往地址122.225.97.111的包都转发到局域网的中192.168.1.130这台机器上.它也可以配全--string功能更强大.
[root@linux ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80\
-m string --string &quot;img.51yip.com&quot; --algo bm -j DNAT --to-destination 192.168.1.136:80
将匹配到img.51yip.com的请求转到局域网的192.168.1.136这台机器上.
snat可以让本地ip地址伪装成其他机器的ip地址,或者是公网IP,
假如我有三台机器,一台能上外网,另外二台却不可以.不能上网的机器可以伪装成可上网的那机器的IP
[root@linux ~]# iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-destination 192.168.1.108
192.168.10.0/24这个IP段是不可以上网的,108这台机器是可以上网的.
收藏、分享这篇文章!&lt;img src=&quot;http://www1.feedsky.com/t1/638803466/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803466/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>dnat</category><category>linux</category><category>snat</category><category>iptables</category><pubDate>Fri, 11 May 2012 17:00:18 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/linux/1405.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1405</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/linux/1405.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803466/6321208</fs:itemid></item><item><title>iptables 添加，删除，查看，修改</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803467/6321208/1/item.html</link><content:encoded>&lt;p&gt;iptables是linux系统自带的防火墙，功能强大，学习起来需要一段时间，下面是一些习iptables的时候的记录。如果iptables不熟悉的话可以用apf，是一款基于iptables的防火墙，挺好用的。请参考：&lt;strong&gt;&lt;a title=&quot;linux apf 防火墙 安装 配置&quot; href=&quot;http://blog.51yip.com/server/1347.html&quot; target=&quot;_blank&quot;&gt;linux apf 防火墙 安装 配置&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1404&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一,安装并启动防火墙&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# /etc/init.d/iptables start&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;当我们用iptables添加规则，保存后，这些规则以文件的形势存在磁盘上的，以centos为例，文件地址是/etc/sysconfig/iptables，我们可以通过命令的方式去添加，修改，删除规则，也可以直接修改/etc/sysconfig/iptables这个文件就行了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二,添加防火墙规则&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1,添加filter表&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  //开放21端口&lt;/pre&gt;
&lt;p&gt;出口我都是开放的&lt;strong&gt;iptables -P OUTPUT ACCEPT&lt;/strong&gt;，所以出口就没必要在去开放端口了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2,添加nat表&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE&lt;/pre&gt;
&lt;p&gt;将源地址是 192.168.10.0/24 的数据包进行地址伪装&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3,-A默认是插入到尾部的，可以-I来插入到指定位置&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT

[root@linux ~]# iptables -L -n --line-number
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20                //-I指定位置插的
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
7    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID,NEW
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21                //-A默认插到最后

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;三,查下iptable规则&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1,查看filter表&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -L -n --line-number |grep 21 //--line-number可以显示规则序号，在删除的时候比较方便
5    ACCEPT     tcp  --  192.168.1.0/24       0.0.0.0/0           tcp dpt:21&lt;/pre&gt;
&lt;p&gt;如果不加-t的话，默认就是filter表，查看，添加，删除都是的&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2,查看nat表&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -t nat -vnL POSTROUTING --line-number
Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 MASQUERADE  all  --  *      *       192.168.10.0/24      0.0.0.0/0&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;四，修改规则&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -R INPUT 3 -j DROP    //将规则3改成DROP&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;五,删除iptables规则&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -D INPUT 3  //删除input的第3条规则

[root@linux ~]# iptables -t nat -D POSTROUTING 1  //删除nat表中postrouting的第一条规则

[root@linux ~]# iptables -F INPUT   //清空 filter表INPUT所有规则

[root@linux ~]# iptables -F    //清空所有规则

[root@linux ~]# iptables -t nat -F POSTROUTING   //清空nat表POSTROUTING所有规则&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;六，设置默认规则&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@linux ~]# iptables -P INPUT DROP  //设置filter表INPUT默认规则是 DROP&lt;/pre&gt;
&lt;p&gt;所有添加，删除，修改后都要保存起来，/etc/init.d/iptables save.上面只是一些最基本的操作，要想灵活运用，还要一定时间的实际操作。&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1404&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803467/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803467/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/linux/1404.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>iptables是linux系统自带的防火墙，功能强大，学习起来需要一段时间，下面是一些习iptables的时候的记录。如果iptables不熟悉的话可以用apf，是一款基于iptables的防火墙，挺好用的。请参考：linux apf 防火墙 安装 配置

一,安装并启动防火墙
[root@linux ~]# /etc/init.d/iptables start
当我们用iptables添加规则，保存后，这些规则以文件的形势存在磁盘上的，以centos为例，文件地址是/etc/sysconfig/iptables，我们可以通过命令的方式去添加，修改，删除规则，也可以直接修改/etc/sysconfig/iptables这个文件就行了。
二,添加防火墙规则
1,添加filter表
[root@linux ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  //开放21端口
出口我都是开放的iptables -P OUTPUT ACCEPT，所以出口就没必要在去开放端口了。
2,添加nat表
[root@linux ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
将源地址是 192.168.10.0/24 的数据包进行地址伪装
3,-A默认是插入到尾部的，可以-I来插入到指定位置
[root@linux ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT

[root@linux ~]# iptables -L -n --line-number
Chain [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803467/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803467/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>linux</category><category>修改</category><category>删除</category><category>查看</category><category>iptables</category><category>添加</category><pubDate>Thu, 10 May 2012 13:09:28 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/linux/1404.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1404</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/linux/1404.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803467/6321208</fs:itemid></item><item><title>centos5.5 vpn 安装配置详解</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803468/6321208/1/item.html</link><content:encoded>&lt;p&gt;虚拟专用网络（Virtual Private Network  ，简称VPN)指的是在公用网络上建立专用网络的技术。其之所以称为虚拟网，主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到 端的物理链路，而是架构在公用网络服务商所提供的网络平台&lt;/p&gt;
&lt;p&gt;这二天在搞VPN，搞得头都大了。在网上找了好多文章，90%都是一样的，可我都试了没有一个可配置成功的，后来问了一下别人搞定了，下面说一下配置的详细过程。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1401&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，安装ppp和pptpd&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;yum install ppp
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;根据自己的linux版本和位数来选择不同的pptpd，我在网上找这方面文章的时候，发现有安装vpn的sh脚本，这个很方便，不过是centos 64位机器上面用的。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二，配置pptpd&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1,修改配置文件options.pptpd&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ~]# cat /etc/ppp/options.pptpd |awk '{if($0 !~ /^$/ &amp;amp;&amp;amp; $0 !~ /^#/) {print $0}}'
name ads
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2,修改配置文件chap-secrets&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

vpn ads 11111 *&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;vpn:是登录用户名&lt;br /&gt;
ads:自定义的服务器名&lt;br /&gt;
11111:是密码&lt;br /&gt;
*:是ip，在这里是正则&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3，修改配置文件pptpd.conf&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# vim /etc/pptpd.conf    //在文件底部加上以下内容
localip 192.168.10.108
remoteip 192.168.10.11-33&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;这里的localip我一直很纠结，有人说是公网的ip，有的人说不是，我一开始的理解是公网IP，但是后来想想不对，当我们在windows系统中创建vpn网络连接时，会让你填写公网IP的，在这里根本不需要公网IP。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;后来我再想localip这里填写vpn服务器所对应的局域网IP，由公网IP到局域网IP，这样也讲的通，这样配置后，能连接vpn，却上不了网，显示是连接成功，也有收发数据包。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;正确的方式是：这里的localip和remoteip都是自定义的IP，vpn的意思就是虚拟专用网络，在公网上建立私有网络。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三，修改sysctl.conf&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1             //找到这行，把0改成1  

//保存，退出，使参数生效
[root@localhost ppp]# sysctl -p&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;四，iptables配置&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;//添加转发规则
[root@localhost ppp]# iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to 192.168.1.108

//开放1723端口
[root@localhost ppp]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;这里的192.168.1.108是vpn服务端对应的局域网的IP地址。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;五，启动pptpd和iptables&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# /etc/init.d/pptpd start
[root@localhost ppp]# /etc/init.d/iptables start&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;六，查看iptables端口是不是开启，转发规则是不是正常&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# iptables -L -t nat -n --line-num    //转发规则OK了
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    SNAT       all  --  192.168.10.0/24      0.0.0.0/0           to:192.168.1.108 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
[root@localhost ppp]# iptables -L -n --line-num |grep 1723  //端口已开放
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:1723&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;七，路由器配置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果用到路由器的话，在路由器开放一下1723端口，登录到路由管理页面，转发规则=》虚拟服务器=》添加新条目，端口添写1723，ip就填写vpn服务端所对应的局域网IP。连接成功后，windows会得到一个vpn服务端分配的IP&lt;/p&gt;
&lt;div id=&quot;attachment_1403&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/vpn_connect.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1403&quot; title=&quot;vpn分配给客户端的ip&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/vpn_connect-300x126.jpg&quot; alt=&quot;vpn分配给客户端的ip&quot; width=&quot;300&quot; height=&quot;126&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;vpn分配给客户端的ip&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;到这一步vpn就可以用了，如果vpn连接了上不网了，怎么办，这个问题我就遇到，并且挡我一整天的时间。&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ppp]# iptables -L -n

Chain FORWARD (pllicy ACCETP)
target     prot  opt source    destination
REJECT     ALL   --  0.0.0.0/0    0.0.0.0/0    reject-with icmp-host-prohibited //如果有这条规则，删除掉&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;你可以在/etc/sysconfig/iptables里面直接删除，你也可通过命令，iptables -D FORWARD 1这里的1对应是规则对应的编号。然后保存/etc/init.d/iptables save,重启/etc/init.d/iptables restart&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1402&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/vpn.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1402&quot; title=&quot;vpn配置成功&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/05/vpn-300x110.jpg&quot; alt=&quot;vpn配置成功&quot; width=&quot;300&quot; height=&quot;110&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;vpn配置成功&lt;/p&gt;&lt;/div&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1401&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803468/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803468/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/server/1401.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>虚拟专用网络（Virtual Private Network  ，简称VPN)指的是在公用网络上建立专用网络的技术。其之所以称为虚拟网，主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到 端的物理链路，而是架构在公用网络服务商所提供的网络平台
这二天在搞VPN，搞得头都大了。在网上找了好多文章，90%都是一样的，可我都试了没有一个可配置成功的，后来问了一下别人搞定了，下面说一下配置的详细过程。

一，安装ppp和pptpd
yum install ppp
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm
根据自己的linux版本和位数来选择不同的pptpd，我在网上找这方面文章的时候，发现有安装vpn的sh脚本，这个很方便，不过是centos 64位机器上面用的。
二，配置pptpd
1,修改配置文件options.pptpd
[root@localhost ~]# cat /etc/ppp/options.pptpd &amp;#124;awk '{if($0 !~ /^$/ &amp;#38;&amp;#38; $0 !~ /^#/) {print $0}}'
name ads
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4
2,修改配置文件chap-secrets
[root@localhost ppp]# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret        [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803468/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803468/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>服务器相关</category><category>安装</category><category>centos</category><category>配置</category><category>vpn</category><pubDate>Tue, 08 May 2012 11:38:40 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/server/1401.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1401</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/server/1401.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803468/6321208</fs:itemid></item><item><title>nginx限制ip连接数和带宽</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803469/6321208/1/item.html</link><content:encoded>&lt;p&gt;今天有个人问我，nginx怎么限制ip连接数，突然想不起来了，年龄大了，脑子不怎么好使了。还要看一下配置才想起了。那个人又问我，你测试过的吗？一下子把我问蒙了，我真没测试过了，也不知道启作用了没有。下面我做了一下测试。以前用apache的时候到是做过测试，apache怎么限制ip数，请参考：&lt;strong&gt;&lt;a title=&quot;利用apache限制IP并发数和下载流量控制&quot; href=&quot;http://blog.51yip.com/apachenginx/917.html&quot;&gt;利用apache限制IP并发数和下载流量控制&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1400&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1,配置nginx.conf&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;http{
.............
limit_zone   one  $binary_remote_addr  10m;  //我记得默认配置就有，只不过是注释掉了，如果没有加一下
..............
 server{
 .................
 location {
 .........
 limit_conn one 20;          //连接数限制
 limit_rate 500k;            //带宽限制
 ........
 }
 .................
 }
.............
}

[root@localhost nginx]# /etc/init.d/nginx reload //重新加载&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2，测试限制ip连接数&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost nginx]#  webbench -c 100 -t 2 http://127.0.0.1/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/index.php
100 clients, running 2 sec.

Speed=429959 pages/min, 2758544 bytes/sec.
Requests: 14332 susceed, 0 failed.

[root@localhost nginx]# cat /var/log/nginx/access.log|grep 503 |more   //这样的数据有很多，最好加个more或者less
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] &quot;GET /index.php HTTP/1.0&quot; 503 213 &quot;-&quot; &quot;WebBench 1.5&quot; -
..............................................................................................&lt;/pre&gt;
&lt;p&gt;通过以上测试，可以得出限制ip连接数是没有问题的，但是限制带宽看不出来，说实话这个不好测试，所以就没测试了。&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1400&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803469/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803469/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/apachenginx/1400.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>今天有个人问我，nginx怎么限制ip连接数，突然想不起来了，年龄大了，脑子不怎么好使了。还要看一下配置才想起了。那个人又问我，你测试过的吗？一下子把我问蒙了，我真没测试过了，也不知道启作用了没有。下面我做了一下测试。以前用apache的时候到是做过测试，apache怎么限制ip数，请参考：利用apache限制IP并发数和下载流量控制

1,配置nginx.conf
http{
.............
limit_zone   one  $binary_remote_addr  10m;  //我记得默认配置就有，只不过是注释掉了，如果没有加一下
..............
 server{
 .................
 location {
 .........
 limit_conn one 20;          //连接数限制
 limit_rate 500k;            //带宽限制
 ........
 }
 .................
 }
.............
}

[root@localhost nginx]# /etc/init.d/nginx reload //重新加载
2，测试限制ip连接数
[root@localhost nginx]#  webbench -c 100 -t 2 http://127.0.0.1/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/index.php
100 clients, running 2 sec.

Speed=429959 pages/min, 2758544 bytes/sec.
Requests: 14332 [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803469/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803469/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>连接数</category><category>nginx</category><category>带宽</category><category>ip</category><category>apache/nginx</category><pubDate>Wed, 25 Apr 2012 18:10:36 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/apachenginx/1400.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1400</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/apachenginx/1400.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803469/6321208</fs:itemid></item><item><title>nagios 飞信(fetion) 短信报警</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803470/6321208/1/item.html</link><content:encoded>&lt;p&gt;前面提到nagios用邮件来发邮件报警，如果能将报警信息发到手机上来不是更好。其实手机上也可以使用邮箱的。邮箱和手机绑定一下就行了。下面说一下，centos6.0 64位的系统下，用飞信来发报警信息。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1397&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，安装所要的软件&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;总下载地址：&lt;a title=&quot;linux飞信下载&quot; href=&quot;http://bbs.it-adv.net/viewthread.php?tid=1081&amp;amp;extra=page%3D1&quot;&gt;http://bbs.it-adv.net/viewthread.php?tid=1081&amp;amp;extra=page%3D1&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;wget &lt;a href=&quot;http://www.it-adv.net/fetion/cenos54X64_20101113.rar&quot;&gt;http://www.it-adv.net/fetion/cenos54X64_20101113.rar&lt;/a&gt;&lt;br /&gt;
wget &lt;a href=&quot;http://www.it-adv.net/fetion/linuxso_20101113.rar&quot;&gt;http://www.it-adv.net/fetion/linuxso_20101113.rar&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;&lt;strong&gt;//下面的这个连接是下载飞信的可执行文件fetion，要注册回复后才能看到，有点恶&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;http://bbs.it-adv.net/attachment.php?aid=43&amp;amp;k=954fb0d183808bfb706d8c4a35308874&amp;amp;t=1335168710&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;&lt;strong&gt;//下面的这个连接是下载rar的解压缩软件文件的软件&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; padding-left: 30px;&quot;&gt;wget &lt;a href=&quot;http://www.rarlab.com/rar/rarlinux-3.9.2.tar.gz&quot;&gt;http://www.rarlab.com/rar/rarlinux-3.9.2.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二，解压下载的软件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1，安装rar的解压缩软件&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;tar zxvf rarlinux-3.9.2.tar.gz
cd rar
make &amp;amp;&amp;amp; make install&lt;/pre&gt;
&lt;p&gt;make时如果报以下&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;rar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost download]# yum install libstdc++.so.6&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2，解压cenos54X64_20101113.rar，linuxso_20101113.rar&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost download]# rar x cenos54X64_20101113.rar
[root@localhost download]# cp cenos54X64_20101113/lib/* /usr/local/lib  //我的/usr/local/lib下面是没有东西的，避免根系统自带的冲突了。
[root@localhost download]# rar x linuxso_20101113.rar    //解压后的文件在当前文件夹，总共4个文件
[root@localhost download]# cp ./lib* /usr/local/lib  //也cp过去，在这里根cenos54X64有部分冲突直接覆盖掉。
[root@localhost download]# cp fetion /usr/local/bin  //将fetion主程序，拷贝到/usr/local/bin下面。
[root@localhost download]# chown nagios:nagios /usr/local/bin/fetion  //给nagios权限
[root@localhost download]# chmod +x  /usr/local/bin/fetion  //命令行下，别的用户也可以用
[root@localhost download]# chmod +x  /usr/local/lib/*  //给/usr/local/lib/下面的.so文件加可执行权限&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;别忘了下面这一步，很重要&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost download]# ldconfig /usr/local/lib/&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;三，测试发短信，以及遇到的问题&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;1，&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;[root@localhost lib64]# fetion --mobile=1582170xxxx --pwd=**** --to=1582170xxxx --msg-utf8=测试&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;如果报以下错误：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;-bash: fetion: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;解决方法&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;strong&gt;[root@localhost download]# yum install /lib/ld-linux.so.2&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;2，&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;[root@localhost local]# fetion --mobile=1582170xxxx --pwd=****** --to=1582170xxxx --msg-utf8=测试&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;如果报以下错误：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;fetion: error while loading shared libraries: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;strong&gt;[root@localhost local]# yum install libgssapi_krb5.so.2&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;如果还报错，&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;libgssapi_krb5.so.2 i686 conflicts with file libgssapi_krb5.so.2 x86冲突了&lt;/strong&gt;&lt;/span&gt;。由于急着解决报错，错误没有记下来，系统有了libgssapi_krb5.so.2，但是是64位的。我在网上查了一下，说把有libgssapi_krb5.so.2卸载掉，在重新装，问题就能解决，说实话不敢卸载，因为libgssapi_krb5.so.2这个东西我没有装过，估计是系统自带，卸载掉，怕系统崩掉。&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;解决办法：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;strong&gt;[root@localhost local]# yum install krb5-libs    //先安装rb5-libs&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;strong&gt;[root@localhost local]# yum install libgssapi_krb5.so.2  //安装libgssapi_krb5.so.2&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;这样就搞定了。&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;3，&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;[root@localhost lib]# fetion --mobile=1582170xxxx --pwd=******* --to=1582170xxxx --msg-utf8=测试&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;如果报以下错误&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;fetion: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;解决办法：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;strong&gt;[root@localhost lib]# yum install libz.so.1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;查看一下fetion加载情况：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost lib]# ldd fetion
        linux-gate.so.1 =&amp;gt;  (0x0078c000)
        libACE-5.7.2.so =&amp;gt; /usr/local/lib/libACE-5.7.2.so (0x00110000)
        libACE_SSL-5.7.2.so =&amp;gt; /usr/local/lib/libACE_SSL-5.7.2.so (0x00b9d000)
        libssl.so.4 =&amp;gt; /usr/local/lib/libssl.so.4 (0x0069d000)
        libstdc++.so.6 =&amp;gt; /usr/local/lib/libstdc++.so.6 (0x004f8000)
        libm.so.6 =&amp;gt; /lib/libm.so.6 (0x00a04000)
        libgcc_s.so.1 =&amp;gt; /lib/libgcc_s.so.1 (0x007e4000)
        libc.so.6 =&amp;gt; /lib/libc.so.6 (0x002af000)
        libcrypto.so.4 =&amp;gt; /usr/local/lib/libcrypto.so.4 (0x03e4a000)
        librt.so.1 =&amp;gt; /lib/librt.so.1 (0x00b26000)
        libdl.so.2 =&amp;gt; /lib/libdl.so.2 (0x0043f000)
        libgssapi_krb5.so.2 =&amp;gt; /lib/libgssapi_krb5.so.2 (0x0065b000)
        libkrb5.so.3 =&amp;gt; /lib/libkrb5.so.3 (0x00802000)
        libcom_err.so.2 =&amp;gt; /usr/local/lib/libcom_err.so.2 (0x00444000)
        libk5crypto.so.3 =&amp;gt; /lib/libk5crypto.so.3 (0x00ae1000)
        libresolv.so.2 =&amp;gt; /lib/libresolv.so.2 (0x00447000)
        libz.so.1 =&amp;gt; /lib/libz.so.1 (0x00461000)
        /lib/ld-linux.so.2 (0x00bd4000)
        libpthread.so.0 =&amp;gt; /lib/libpthread.so.0 (0x00475000)
        libkrb5support.so.0 =&amp;gt; /lib/libkrb5support.so.0 (0x00cb4000)
        libkeyutils.so.1 =&amp;gt; /lib/libkeyutils.so.1 (0x00b3b000)
        libselinux.so.1 =&amp;gt; /lib/libselinux.so.1 (0x00490000)&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;如果有提示not found是不能发短信的。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1398&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/fetion.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1398&quot; title=&quot;fetion发消息测试 &quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/fetion-300x225.jpg&quot; alt=&quot;fetion发消息测试&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;fetion发消息测试 &lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;四，配置nagios&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1，建一个发飞信的脚本，当然你也可以直接在nagios配置中写命令&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# vim /usr/lib64/nagios/plugins/fetion.sh
fetion --mobile=1582170xxxx --pwd=***** --to=&quot;$1&quot; --msg-utf8=&quot;$2&quot;   //添加

[root@localhost nagios]# chmod 777 /usr/lib64/nagios/plugins/fetion.sh
[root@localhost nagios]# chown nagios:nagios /etc/nagios/fetion.sh
[root@localhost nagios]# /usr/lib64/nagios/plugins/fetion.sh 1582170xxxx 'fasdfasdf'
SIP-C/4.0 280 Send SMS OK
T: sip:858225965@fetion.com.cn;p=7118
I: 2
Q: 1 M
L: 115
D: Tue, 24 Apr 2012 03:25:05 GMT
XI: EC6F4C81FB87A69DF75FAEBB840DD928&lt;/pre&gt;
&lt;p&gt;如果不想显示发送成功的信息，fetion.sh文件中，在--msg-utf8=&quot;$2&quot; 后面加上 &amp;gt; /dev/null&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2，修改模板配置文件templates.cfg&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# vim /etc/nagios/objects/templates.cfg  //找到以下内容

define contact{
 name                            generic-contact         
 service_notification_period     24x7                    
 host_notification_period        24x7                     
 service_notification_options    w,u,c,r,f,s           
 host_notification_options       d,u,r,f,s            
 service_notification_commands   notify-service-by-email,notify-service-by-fetion     //添加飞信发送模块
 host_notification_commands      notify-host-by-email,notify-host-by-fetion      //添加飞信发送模块
 register                        0                       
 }&lt;/pre&gt;
&lt;p&gt;这样的话，邮件和短信都能收到通知。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3，修改命令配置文件commands.cfg&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# vim /etc/nagios/objects/commands.cfg //添加以下内容

# 'notify-host-by-fetion' command definition
define command{
 command_name    notify-host-by-fetion
 command_line    $USER1$/fetion.sh $CONTACTPAGER$ &quot;$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$&quot;
 }

# 'notify-service-by-fetion' command definition
define command{
 command_name    notify-service-by-fetion
 command_line    $USER1$/fetion.sh $CONTACTPAGER$ &quot;$NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$&quot;
 }&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4，修改联系人配置文件contacgs.cfg&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# vim /etc/nagios/objects/contacts.cfg 

define contact{
 contact_name                    nagiosadmin             ; Short name of user
 use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
 alias                           Nagios Admin            ; Full name of user
 email                           95219454@qq.com         ; &amp;lt;&amp;lt;***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
 pager                           1582170xxxx             //添加这一行，这个pager不是自定义的。
 }&lt;/pre&gt;
&lt;p&gt;到这儿就配置好了，最后别忘了重一下nagios，/etc/init.d/nagios restart。看一下效果图：&lt;/p&gt;
&lt;div id=&quot;attachment_1399&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_fetion.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1399&quot; title=&quot;nagios用飞信发消息报警成功&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_fetion-300x60.jpg&quot; alt=&quot;nagios用飞信发消息报警成功&quot; width=&quot;300&quot; height=&quot;60&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;nagios用飞信发消息报警成功&lt;/p&gt;&lt;/div&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1397&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803470/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803470/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/server/1397.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>前面提到nagios用邮件来发邮件报警，如果能将报警信息发到手机上来不是更好。其实手机上也可以使用邮箱的。邮箱和手机绑定一下就行了。下面说一下，centos6.0 64位的系统下，用飞信来发报警信息。

一，安装所要的软件
总下载地址：http://bbs.it-adv.net/viewthread.php?tid=1081&amp;#38;extra=page%3D1
wget http://www.it-adv.net/fetion/cenos54X64_20101113.rar
wget http://www.it-adv.net/fetion/linuxso_20101113.rar
//下面的这个连接是下载飞信的可执行文件fetion，要注册回复后才能看到，有点恶
http://bbs.it-adv.net/attachment.php?aid=43&amp;#38;k=954fb0d183808bfb706d8c4a35308874&amp;#38;t=1335168710
//下面的这个连接是下载rar的解压缩软件文件的软件
wget http://www.rarlab.com/rar/rarlinux-3.9.2.tar.gz
二，解压下载的软件
1，安装rar的解压缩软件
tar zxvf rarlinux-3.9.2.tar.gz
cd rar
make &amp;#38;&amp;#38; make install
make时如果报以下
rar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决方法：
[root@localhost download]# yum install libstdc++.so.6
2，解压cenos54X64_20101113.rar，linuxso_20101113.rar
[root@localhost download]# rar x cenos54X64_20101113.rar
[root@localhost download]# cp cenos54X64_20101113/lib/* /usr/local/lib  //我的/usr/local/lib下面是没有东西的，避免根系统自带的冲突了。
[root@localhost download]# rar x linuxso_20101113.rar    //解压后的文件在当前文件夹，总共4个文件
[root@localhost download]# cp ./lib* /usr/local/lib  //也cp过去，在这里根cenos54X64有部分冲突直接覆盖掉。
[root@localhost [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803470/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803470/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>linux</category><category>服务器相关</category><category>nagios</category><category>短信</category><category>飞信</category><category>fetion</category><pubDate>Wed, 25 Apr 2012 11:22:10 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/server/1397.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1397</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/server/1397.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803470/6321208</fs:itemid></item><item><title>nagios 多服务器监控 服务端与客户端 配置</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803471/6321208/1/item.html</link><content:encoded>&lt;p&gt;nagios可以一台机器监控多台服务器，客户端可以是linux，也可以是windows服务器。我现在nagios的监控是这样的。nagios服务端和邮件服务器放在一起，剩下的服务器都装一下nagios的客户端，这样我就可以在服务端的web界面里，看到所有服务器状况，并且还有邮件报警。&lt;/p&gt;
&lt;p&gt;服务端ip地址：192.168.1.122&lt;/p&gt;
&lt;p&gt;客户端ip地址：192.168.1.120&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1394&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，服务端安装nagios-plugins-nrpe&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost nagios]# ll /usr/lib64/nagios/plugins/ |grep nrpe
-rwxr-xr-x  1 root root    21840 10月 25 2010 check_nrpe
//如果没有显示上面的内容，说明你没有安装

//安装check_nrpe
[root@localhost nagios]# yum install nagios-plugins-nrpe&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;在这里只是提到了，多服务器监控所要的软件，如果要从头开始来安装nagios，请参考前面几篇博客&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二，客户端要安装nrpe&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost nagios]# yum install nagios-plugin nagios nrpe fcgi-devel fcgi nagios-plugins-all
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: #800080;&quot;&gt;开始我以为在客户端上安装nrpe就行了，但是不对，这根munin不一样，思维定式啊。客户端不要安装web环境。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三，服务端配置&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# cp /etc/nagios/objects/localhost.cfg /etc/nagios/objects/192.168.1.120.cfg
[root@localhost objects]# vim /etc/nagios/objects/192.168.1.120.cfg    //修改配置文件1

define host{
        use                     linux-server
        host_name               ads2               //把localhost改成你知道是哪台标识
        alias                   ads2
        address                 192.168.1.120     //被监控服务器的ip,可以是局域网，也可以是共网的
        }

//把define hostgroup，全注释掉。加上hostgroup，重加载就报错
#define hostgroup{
#        hostgroup_name  linux-servers
#         alias           Linux Servers
#        members         192.168.1.120
#        }

//define service有很多以check_disk为例说一下
define service{
        use                             generic-service        //local-service改成generic-service
        host_name                       ads2                   //localhost改成自定义ads2
        service_description             Root Partition
        check_command                   check_nrpe!check_disk!20%!10%!/
        }

//把上面的check_local_disk改成check_nrpe!check_disk，如果有不带local的，例如：check_ping改成check_nrpe!check_ping

[root@localhost objects]# vim /etc/nagios/objects/commands.cfg //修改配置文件2
//添加以下内容
define command{
 command_name    check_nrpe
 command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
 }

[root@localhost objects]# vim /etc/nagios/nagios.cfg     //修改配置文件3

cfg_file=/etc/nagios/objects/192.168.1.120.cfg     //加上这一行。&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;到此服务器的配置就完成了，重新加载一下nagios。/etc/init.d/nagios reload&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四，客户端配置&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost ~]# vim /etc/nagios/nrpe.cfg
allowed_hosts=192.168.1.122,127.0.0.1  //79行，加上服务端的ip，可以是局域网，或者是共网的IP

command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/VolGroup-lv_root
command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
command[check_http]=/usr/lib64/nagios/plugins/check_http -H 127.0.0.1 -w 5 -c 10
command[check_ping]=/usr/lib64/nagios/plugins/check_ping -H 127.0.0.1 -w 3000.0,80% -c 5000.0,100% -p 5
command[check_ssh]=/usr/lib64/nagios/plugins/check_ssh -4 127.0.0.1
command[check_swap]=/usr/lib64/nagios/plugins/check_swap  -w 30% -c 10%&lt;/pre&gt;
&lt;p&gt;在配置过程中遇到以下错误：&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;1,NRPE: Command 'check_http' not defined&lt;br /&gt;
2,NRPE: Command 'check_ssh' not defined&lt;br /&gt;
3,NRPE: Command 'check_ping' not defined&lt;br /&gt;
4,NRPE: Command 'check_disk' not defined&lt;br /&gt;
5,NRPE: Command 'check_swap' not defined&lt;br /&gt;
6,NRPE: Command 'check_procs' not defined&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;就是/etc/nagios/nrpe.cfg里面添加相应的command[]配置，例如解决check_http not defined只要加一个command[check_http]就行了。&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
以下是我在命令行下的测试，只要命令行下OK了，nagios的web监控就不会报错了。&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_http
OK - load average: 1.04, 0.31, 0.10|load1=1.040;15.000;30.000;0; load5=0.310;10.000;25.000;0; load15=0.100;5.000;20.000;0; 

[root@localhost ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_ping
PING OK - Packet loss = 0%, RTA = 0.04 ms|rta=0.035000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0

[root@localhost ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_disk
DISK OK - free space: / 41756 MB (87% inode=96%);| /=6080MB;40316;45356;0;50396

[root@localhost ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_ssh
SSH OK - OpenSSH_5.3 (protocol 2.0)

[root@localhost ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_swap
SWAP OK - 100% free (10047 MB out of 10047 MB) |swap=10047MB;3014;1004;0;10047

[root@localhost ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.120 -c check_procs
PROCS CRITICAL: 285 processes&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;客户端配置很简单，重起一下/etc/init.d/nrpe reload&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;如果使用了iptables等类似防火墙的话，开一个端口5666，你可以通过netstat来查看端口情况。或者是配置文件。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1395&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_more.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1395&quot; title=&quot;nagios监控多台服务器&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_more-300x170.jpg&quot; alt=&quot;nagios监控多台服务器&quot; width=&quot;300&quot; height=&quot;170&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;nagios监控多台服务器&lt;/p&gt;&lt;/div&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1394&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803471/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803471/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/server/1394.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>nagios可以一台机器监控多台服务器，客户端可以是linux，也可以是windows服务器。我现在nagios的监控是这样的。nagios服务端和邮件服务器放在一起，剩下的服务器都装一下nagios的客户端，这样我就可以在服务端的web界面里，看到所有服务器状况，并且还有邮件报警。
服务端ip地址：192.168.1.122
客户端ip地址：192.168.1.120

一，服务端安装nagios-plugins-nrpe
[root@localhost nagios]# ll /usr/lib64/nagios/plugins/ &amp;#124;grep nrpe
-rwxr-xr-x  1 root root    21840 10月 25 2010 check_nrpe
//如果没有显示上面的内容，说明你没有安装

//安装check_nrpe
[root@localhost nagios]# yum install nagios-plugins-nrpe
在这里只是提到了，多服务器监控所要的软件，如果要从头开始来安装nagios，请参考前面几篇博客
二，客户端要安装nrpe
[root@localhost nagios]# yum install nagios-plugin nagios nrpe fcgi-devel fcgi nagios-plugins-all

开始我以为在客户端上安装nrpe就行了，但是不对，这根munin不一样，思维定式啊。客户端不要安装web环境。
三，服务端配置
[root@localhost objects]# cp /etc/nagios/objects/localhost.cfg /etc/nagios/objects/192.168.1.120.cfg
[root@localhost objects]# vim /etc/nagios/objects/192.168.1.120.cfg    //修改配置文件1

define host{
        use     [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803471/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803471/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>linux</category><category>服务器相关</category><category>服务端</category><category>nagios</category><category>配置</category><category>客户端</category><category>多服务器</category><pubDate>Sat, 21 Apr 2012 15:31:03 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/server/1394.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1394</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/server/1394.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803471/6321208</fs:itemid></item><item><title>nagios  邮件报警配置</title><link>http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803472/6321208/1/item.html</link><content:encoded>&lt;p&gt;nagios最主要优点就是在于它的报警功能，下面讲解一下用nagios来发邮件警告。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1391&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一，配置contacts.cfg&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;vim /etc/nagios/objects/contacts.cfg

define contact{                   //30行
        contact_name                    nagiosadmin
        use                             generic-contact
        alias                           Nagios Admin
        email                           xxxx@163.com     //这里改成自己的邮箱
        }&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;二，配置nagios.cfg和localhost.cfg&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;vim /etc/nagios/nagios.cfg 

enable_notifications=1                //807行，开启报警

上面的总的开启也就是nagios装的所有插件，出现问题都会报警

vim /etc/nagios/objects/localhost.cfg 

define service{                   //以processes为例
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Total Processes
        check_command                   check_local_procs!250!400!RSZDT
        notifications_enabled           1
        }&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;如果总的没有开启的话，localhost.cfg里面可以一个一个配置，这样比较麻烦。如果总的开启了，里面有些不想开启就可以notifications_enabled设置成0这样，这个就不用发报警，其他的发报警。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三，添加发报警用户&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;[root@localhost objects]# cyradm -u cyrus localhost --auth plain
verify error:num=18:self signed certificate
Password:
IMAP Password:
localhost&amp;gt; cm nagios
localhost&amp;gt; quit&lt;/pre&gt;
&lt;p&gt;为什么要添加一个邮件用户nagios呢？可以看一下nagios发邮件的配置文件commands.cfg&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf &quot;%b&quot; &quot;***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:
    $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n&quot; | /bin/mail -s &quot;** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **&quot;
    $CONTACTEMAIL$
        }&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #800080;&quot;&gt;&lt;strong&gt;从上面/bin/mail我们可以看出，它是用了系统mail命令来发邮件的，并且没有指定用户，发邮件时会当前的默认用户，nagios的启动用户默认是nagios，可以在主配置nagios.cfg的123行找到nagios_user=nagios，所以要加一个nagios邮件用户，当然你可以把启动用户改掉。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四，重启动一下nagios&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;/etc/init.d/nagios restart&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;五，测试nagios是不是可以发邮件&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;如果服务器一切正常，当然是不会发报警邮件的，但是重起肯定会发邮件的。重启一下看看是不是能收到邮件。如果收不到邮件，是什么原因呢？您可以按照以下几步来排查。&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;1，查看邮件服务器是不是启动了，nagios服务器和客户端是不是启动了。你可以通过netstat，或者ps去查。&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;2，如果都已经正常启动的话，手动敲命令来发封邮件是不是能收到，因为nagios也是调用了mail命令来发邮件的，确保这一步是通的，收件方是能收到邮件的。例如：&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=code&gt;mail -s '看一下' 95219454@qq.com  &amp;lt; /etc/imapd.conf&lt;/pre&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;3，如果用mail命令来发邮件能收到邮件，而nagios发的报警邮件还是收不到怎么办呢。这种情比较郁闷，并且我遇到了。查看一下mail的log日志文件/var/log/maillog，我当时用的是qq邮箱来收邮件的，发现qq的邮件服务器会拒绝。看下图&lt;/p&gt;
&lt;div id=&quot;attachment_1392&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_qq.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1392&quot; title=&quot;qq拒绝nagios的报警邮件&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_qq-300x35.jpg&quot; alt=&quot;qq拒绝nagios的报警邮件&quot; width=&quot;300&quot; height=&quot;35&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;qq拒绝nagios的报警邮件&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;拒绝也不是全部拒绝，能收到邮件，但是延迟比较严重。建议不要用qq邮箱来收邮件。&lt;/p&gt;
&lt;div id=&quot;attachment_1393&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 310px&quot;&gt;&lt;a href=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_mail.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1393&quot; title=&quot;qq收到的nagios报警邮件&quot; src=&quot;http://blog.51yip.com/wp-content/uploads/2012/04/nagios_mail-300x149.jpg&quot; alt=&quot;qq收到的nagios报警邮件&quot; width=&quot;300&quot; height=&quot;149&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;qq收到的nagios报警邮件&lt;/p&gt;&lt;/div&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;javascript:&quot; needth=&quot;&quot; title=&quot;可以通过E-mail分享, 用del.icio.us、Google等网络书签收藏！&quot; id=&quot;akst_link_1391&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;收藏、分享这篇文章!&lt;/script&gt;&lt;/a&gt;


&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638803472/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803472/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.51yip.com/server/1391.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>nagios最主要优点就是在于它的报警功能，下面讲解一下用nagios来发邮件警告。

一，配置contacts.cfg
vim /etc/nagios/objects/contacts.cfg

define contact{                   //30行
        contact_name                    nagiosadmin
      [...]&lt;img src=&quot;http://www1.feedsky.com/t1/638803472/tank_fs4t/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/tank_fs4t/~8218006/638803472/6321208/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>邮件报警</category><category>linux</category><category>服务器相关</category><category>nagios</category><category>配置</category><pubDate>Fri, 20 Apr 2012 14:46:56 +0800</pubDate><author>张映</author><comments>http://blog.51yip.com/server/1391.html#comments</comments><guid isPermaLink="false">http://blog.51yip.com/?p=1391</guid><dc:creator>张映</dc:creator><fs:srclink>http://blog.51yip.com/server/1391.html</fs:srclink><fs:srcfeed>http://blog.51yip.com/feed</fs:srcfeed><fs:itemid>feedsky/tank_fs4t/~8218006/638803472/6321208</fs:itemid></item></channel></rss>
