2013年1月13日 星期日

服务器信息脚本

echo "#开机时间"
w | grep up | awk -F"up" '{print "up"$2}' | awk -F"," '{print $1}'
echo ""
echo "#硬件BOIS信息,必须root执行"
dmidecode | grep -E 'Release Date|UUID|Product Name|Vendor|Serial Number: '| sed -n '1,5p'
echo ""
echo "#cpu情况"
grep "model name" /proc/cpuinfo  | awk '{++SUM[$4$5" "$7$8$9]}END{for(a in SUM)print a,"(*"SUM[a]")"}'
echo ""
echo "#磁盘情况"
fdisk -l | grep Disk | awk -F"," '{print $1}'
echo ""
echo "#内存、swap情况"
free -g | grep -E 'Mem|Swap' | awk '{print $1,$2+1"GB"}'
echo ""
echo "系统内核情况"
uname -a | awk '{print $3"("$(NF-1)")"}'
echo ""
echo "MAC地址"
ifconfig | grep HWaddr
echo ""
echo "登陆情况"
last |grep -E '0[0-6]:[0-5][0-9] - [0-9][0-9]:[0-5][0-9]'
echo "磁盘情况"
df -h | awk '{print $1,$2}'

2012年12月18日 星期二

heartbeat3.05安装

CentOS6.3
http://www.thatsgeeky.com/2011/07/installing-heartbeat-on-amazon%E2%80%99s-ec2/
http://www.linuxso.com/linuxrumen/6445.html
http://hi.baidu.com/_you_yan/item/aa08890d295709cf74cd3c24     the new
http://blog.csdn.net/lhfeng/article/details/5992116
http://www.wenzizone.cn/?tag=heartbeat
一、LVS安装
系统默认是支持LVS功能的(有如下信息表示支持)。
# modprobe -l |grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
二、在Director Server上安装IPVS管理软件
首先从 http://www.linuxvirtualserver.org/software/ipvs.html 下载对应的IPVS源码
我这里下载 ipvsadm-1.24.tar.gz
安装方法一:(推荐用这个方便快捷):
# yum install -y ipvsadm
# ipvsadm --help  有相关信息输出,表时IPVS已经安装成功。
安装方法二:
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# make
# make install
三、安装heartbeat
-----------------------------------------------
首先下载libnet工具,并安装
http://sourceforge.net/projects/libnet-dev/
# tar zxvf libnet-1.1.6.tar.gz
# cd libnet-1.1.6
# ./configure
# make
# make install
-----------------------------------------------
heartbeat下载并安装(三个文件:Heartbeat、Cluster Glue、Resource Agents)
http://linux-ha.org/wiki/Downloads
# yum -y install glib2-devel libtool-ltdl-devel net-snmp-devel bzip2-devel \
ncurses-devel openssl-devel libtool libxml2-devel gettext bison flex zlib-devel \
mailx which libxslt-devel docbook-dtds docbook-style-xsl PyXML shadow-utils opensp autoconf automake libuuid-devel \
libexslt libexslt-devel libgcrypt-devel pkgconfig libgpg-error-devel sgml-common opensp openjade xml-common \
docbook-dtds docboot-style -y 
1、安装Cluster Glue
# groupadd haclient
# useradd hacluster -g haclient -s /sbin/nologin
# tar jxvf Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2
# cd Reusable-Cluster-Components-glue--glue-1.0.9
# ./autogen.sh
# ./configure --prefix=/usr/local/ha_soft
# make
# make install
2、安装Resource Agents
# cd ../
# tar zxvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
# cd ClusterLabs-resource-agents-b735277
# ./autogen.sh
# ./configure --prefix=/usr/local/ha_soft CFLAGS=-I/usr/local/ha_soft/include \
LDFLAGS=-L/usr/local/ha_soft/lib
# vi /usr/local/ha_soft/include/heartbeat/glue_config.h(找到如下几个设置项删除对应的行)
HA_SYSCONFDIR
HA_HBCONF_DIR
HA_HBCONF_DIR
# make
# vi /etc/ld.so.conf.d/heartbeat.conf (输入如下行)
/usr/local/ha_soft/lib
# ldconfig
# make install
3、安装heartbeat
# cd ..
# tar jxvf Heartbeat-3-0-7e3a82377fa8.tar.bz2
# cd Heartbeat-3-0-7e3a82377fa8
# ./bootstrap
# ./configure --prefix=/usr/local/ha_soft CFLAGS=-I/usr/local/ha_soft/include \
LDFLAGS=-L/usr/local/ha_soft/lib
# cp /srv/Heartbeat-3-0-7e3a82377fa8/lib/plugins/HBcomm/hbaping.c /srv/Heartbeat-3-0-STABLE-3.0.4/lib/plugins/HBcomm/hbaping.c.bak
# vi /srv/Heartbeat-3-0-STABLE-3.0.4/lib/plugins/HBcomm/hbaping.c(安装源码目录,删除326行)
# make
# make install
四、配置(节点1和节点2相同,区别就是检查ip是对方) ? 从源码编译目录中复制配置文件到安装目录
复制附件<配置文件>里的配置文件到 /usr/local/ha_soft/etc/ha.d/
编辑ha.cf 主配置文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim ha.cf
#debugfile /var/log/ha-debug
#logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 6
warntime 4
initdead 30
udpport 694
ucast eth1 192.168.1.200
auto_failback off
node aos
node weibo
compression bz2
compression_threshold 2
ping_group group1 xxxxx82 xxxx.80
respawn root /usr/local/ha_soft/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debug 0
? 编辑authkeys 验证信息文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim authkeys
auth 1
1 crc
[root@aos ha.d]# chmod 600 authkeys
? 编辑haresources 资源控制配置文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim haresources
aos IPaddr::xxxxx.70/25/eht0/xxxxx.127
? 链接文件
[root@aos heartbeat]# vim /etc/ld.so.conf(加入到文件末尾)
/usr/local/ha_soft/lib/
[root@aos heartbeat]# ldconfig
#cp /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs.bak
[root@aos heartbeat]# vim +35 /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs(注释35行)
(六) 注册并且启动服务
[root@aos ha.d]# chkconfig --add heartbeat
[root@aos ha.d]# chkconfig levles 2345 heartbeat on
[root@aos ha.d]# /etc/init.d/heartbeat start
-------------------------------------------------------------------
In file included from libipvs.c:23:
1.找到ip_vs.h文件.copy to /usr/include/net下
2.ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
3.修改当前目录和libipvs目录中的Makefile的:
INCLUDE = -I/usr/src/linux/include -I.. -I.
为:
INCLUDE = -I/usr/src/kernels/2.6.9-22.EL-i686/include -I..-I.
---------------------------------------------------------------------
configure: error: You need glib2-devel installed in order to build cluster-glue
# yum install -y glib2-devel
----------------------------------------------------------------------
checking for special libxml2 includes... configure: error: libxml2 config not found
# yum install -y libxml2 libxml2-devel
-----------------------------------------------------------------------
configure: error: BZ2 libraries not found
yum -y install bzip2-devel glib2-devel
------------------------------------------------------------------------
gmake[2]: *** [hb_report.8] Error 4
这个报错因为要访问http://docbook.sourceforge.net/release/xsl/current/ 目录下的文件造成的,第一次发现源码安装软件需要联网,并且还要翻墙(^_^),本人水平有限,没办法直接翻墙。网页翻墙后下载common html lib manpages四个目录下的文件和VERSION.xsl,然后简易搭建一个httpd服务器,在主目录下新建相同的目录结构,并将所有文件拷贝到相应目录;然后在/etc/hosts文件中将docbook.sourceforge.net指向httpd的IP。(你知道这在干什么吧,做个假的 docbook.sourceforge.net服务器)
# vi /etc/mime.types  加入  xml  xsl  保存。
这里要多编译几次,有时候会提示找不到网页的。下载网页 wget -r A http://docbook.sourceforge.net/release/xsl/current/
约1个小时左右就下完了。
-------------------------------------------------------------------------
../heartbeat/IPv6addr: error while loading shared libraries: libplumb.so.2: cannot open shared object file: No such file or directory
gmake[2]: *** [metadata-IPv6addr.xml] Error 127
解决办法:这个是由于缺乏libplumb.so.2引起的,到网上libplumb.so.2下载包含这个文件的rpm即可,在本次方案中用的是libheartbeat2-2.99.2-6.1.i386.rpm
--------------------------------------------------------------------------
aclocal-1.5
automake-1.5 --add-missing --include-deps --copy
configure.in: 472: `AC_DECL_YYTEXT' is covered by `AM_PROG_LEX'
contrib/Makefile.am:23: SUBDIRS was already defined in condition TRUE, which implies condition BUILD_DRBD_OUTDATE_PEER_TRUE
  SUBDIRS (User, where = 23) +=
  {
    TRUE => ipfail mlock
  }
replace/Makefile.am:29: required file `replace/[lt__dirent].c' not found
replace/Makefile.am:29: required file `replace/[lt__strl].c' not found
replace/Makefile.am:29: required file `replace/[argz].c' not found
./bootstrap exiting due to error (sorry!).
解决办法:
yum update -y 慎用
yum groupinstall -y "Development Tools"
yum install -y wget net-snmp-devel openhpi-devel net-snmp OpenIPMI glib2-devel libxml2-devel bzip2-devel libuuid-devel docbook-utils docbook-dtds libtool-ltdl libtool-ltdl-devel libxslt perl-TimeDate python-devel OpenIPMI-devel openssl-devel docbook-style-xsl help2man e2fsprogs-devel mailx
---------------------------------------------------------------------------------------
metadata-IPv6addr.xml:1: parser error : Document is empty
^
metadata-IPv6addr.xml:1: parser error : Start tag expected, '<' not found
^
unable to parse metadata-IPv6addr.xml
gmake[2]: *** [ocf_heartbeat_IPv6addr.xml] Error 6
gmake[2]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277/doc'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277'
make: *** [all] Error 2
解决办法:xml 没有下载成功,重头开始安装编译。
------------------------------------------------------------------------------------
../heartbeat/IPv6addr: error while loading shared libraries: libnet.so.1: cannot open shared object file: No such file or directory
gmake[2]: *** [metadata-IPv6addr.xml] Error 127
# yum install libnet*  不知道是不是这样解决的,反正重新编译可以了。

2012年12月14日 星期五

heartbeat集群心跳配置

集群心跳可在文件etc/ha.d/ha.cf中进行配置,如下所示:

node server-1 server-2

bcast eth0

ucast eth1 192.168.127.132

心跳有如下四种类型:串口、广播、多播、ucast,以下分别进行介绍:
#serial 串口名称
#serial /dev/ttyS0 # Linux
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cuad0 # FreeBSD 6.x
#serial /dev/cua/a # Solaris

#广播heartbeats的接口
#bcast eth0 # Linux
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris

# 设置一个多播心跳介质
# mcast [dev] [mcast group] [port] [ttl] [loop]
#[dev]发送/接收heartbeats的设备
#[mcast group]加入到的多播组(D类多播地址224.0.0.0 - 239.255.255.255)
#[port]端口用于发送/接收udp(设置这个值跟上面的udpport为相同值)
#[ttl]外流的heartbeats的ttl值。这个影响多播包能传播多远。(0-255)必须要大于0 。
#[loop]为多播heartbeat开关loopback。如果enabled,一个外流的包将被回环到原处并由发送它的接口接收。(0或者1)设置这个值为0。
#mcast eth0 225.0.0.1 694 1 0

#配置一个unicast / udp heartbeat 介质
#ucast [dev] [peer-ip-addr]
#[dev]用于发送/接收heartbeat的设备
#[peer-ip-addr]包被发送到的对等的IP地址
#ucast eth0 192.168.1.2

在heartbeat中,可以使用命令cl_status来查询集群心跳的相关信息。

显示节点server-1所使用的心跳:

[root@server-1 bin]# ./cl_status listhblinks server-1

eth1

eth0

显示节点server-1的eth0心跳状态:

[root@server-1 bin]# ./cl_status hblinkstatus server-1 eth0

up

csmail双机配置

邮件启动
/etc/init.d/mysql.server.front.csmail start
/etc/init.d/mysql.server.csmail start
/etc/init.d/csmail.rc start
邮件件关闭
/etc/init.d/csmail.rc stop
/etc/init.d/mysql.server.csmail stop
/etc/init.d/mysql.server.front.csmail stop

1.准备双机环境
    操作系统:    CentOS release 5.8 (Final)
    三台机器:    csmail_ha1    --ha1    --192.168.0.21    ->第一台csmail
            csmail_ha2    --ha2    --192.168.0.22    ->第二台csmail
            csmail_nfs    --nfs    --192.168.0.30    ->两台机器的共用存储,使用nfs
                    --vip    --192.168.0.20    ->虚拟IP
2.相关软件
    csmail邮件8.12版本
    heartbeat-2.1.4.tar.bz2
3.系统配置
    .
    .nfs配置
        在csmail_nfs主机建/csdata目录,并共享出去
        /csdata 192.168.0.0/24(rw,sync,no_root_squash)
   
    .以下操作要在ha1和ha2都做一次
    .安装依赖组件:
        yum groupinstall -y "Legacy Software Development" "Legacy Software Support" \
                    "Development Libraries" "Development Tools"
   
    .更新ha1和ha2对应的主机名

    .创建用户和用户组,要保证两台机器的uid和gid相同,组id为600,uid为601
        groupadd -g 600 haclient
        useradd -u 601 -g haclient hacluster
    .设置/etc/hosts文件
        csmail_ha1    192.168.0.21
        csmail_ha2    192.168.0.22
        同时指出自己是哪台机器
        127.0.0.1    csmail_ha? localhost.localdomain localhost
        ::1        csmail_ha? localhost6.localdomain6 localhost6
    .设置/etc/sysconfig/networks
        NETWORKING=yes
        NETWORKING_IPV6=yes
        #HOSTNAME=localhost.localdomain
        HOSTNAME=csmail_ha?
    .设置/etc/reslov.conf
        第一行:search localdomain  先查找本地hosts文件
       
       
4.安装过程
    a.安装邮件
        .在ha1安装邮件,执行setup.sh安装
        .ha1查看/etc/passwd,找到以下三个对应的行,并复制到ha2的passwd文件中
            csmail:x:500:501::/opt/foundir/csmail:/bin/bash
            postfix:x:501:503::/home/postfix:/bin/bash
            mysql:x:502:504::/home/mysql:/bin/bash
        .ha1查看/etc/group,找到以下个对应的行,并复制到ha2的group文件中
            postdrop:x:500:
            foundir:x:501:
            csmail:x:502:csmail
            postfix:x:503:
            mysql:x:504:
        .在ha2安装邮件,执行setup.sh安装
        .关闭开机自动启动,后面程序的启动会由heartbeat来控制
            chkconfig mysql.server.front.csmail off
            chkconfig mysql.server.csmail off
            chkconfig csmail.rc off
    b.安装heartbeat
        .上传软件包Heartbeat-2-1-STABLE-2.1.4.tar.bz2并解压
        .cd到解压出来的目录
        ./bootstrap --prefix=/opt/heartbeat && make && make install
        .cp /opt/heartbeat/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /opt/heartbeat/etc/ha.d/
        .mv /etc/init.d/*csmail* /opt/heartbeat/etc/ha.d/resource.d/
    c.三个文件配置
        .ha.cf文件
            use_logd yes
            debugfile /var/log/rhythmha-debug
            logfile /var/log/rhythmha-log
            logfacility    local0
            udpport 694
            keepalive 2
            deadtime 30
            warntime 10
            initdead 120
            hopfudge 1
            ucast eth0 192.168.0.21
            auto_failback off 
            node    csmail_ha1 csmail_ha2
        .haresources文件
            csmail_ha1 192.168.0.20 rhythmha_mount httpd mysql.server.csmail mysql.server.front.csmail csmail.rc rhythmha_report
        .authkeys文件
            auth 1
            1 crc
            2 sha1 HI!
            3 md5 Hello!
5,启动测试

2012年12月12日 星期三

apache优化

Apache Tuning
Apache 2.0 許多功能和改進,編譯時要開啟 worker mpm 模組,否則為了和 Apache 1.3 相容會自動選擇 prefork 模式。

steven $ ./configure --prefix=/usr/local/httpd --enable-isapi --enable-file-cache --enable-echo --disable-charset-lite --enable-charset-lite --enable-cache --enable-disk-cache --enable-mem-cache  --enable-example --enable-case-filter --enable-case-filter-in --enable-dumpio --enable-auth-ldap --enable-ext-filter --enable-deflate --enable-log-forensic --enable-logio --enable-mime-magic --enable-headers --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-ssl --enable-optional-hook-export --enable-optional-hook-import --enable-optional-fn-import --enable-http --enable-cgi --enable-cgid --enable-speling --enable-rewrite --enable-so --with-suexec-uidmin --with-suexec-gidmin --with-suexec-logfile --with-suexec-safepath --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --with-mpm=worker

在一個高等級的硬體設備下,以下的設定在同一時間可以處理 5000 個連線。

root # vi /usr/local/httpd/conf/extra/httpd-mpm.conf
-------------------------------------------------------
<IfModule mpm_worker_module>
    # Apache 啟動時先開啟 3 個 Threads
    StartServers              3
    MaxClients             5000
    # 最大的連線數
    ServerLimit              50
    MinSpareThreads          50
    MaxSpareThreads         200
    ThreadLimit             200
    ThreadsPerChild         100
    MaxRequestsPerChild     200
</IfModule>
-------------------------------------------------------

當然,為了效能,我建議關閉 DNS 的查尋和提高 MaxKeepAliveRequests 的選項並且把 Timeout 值調低。

root # vi /usr/local/httpd/conf/extra/httpd-default.conf
-------------------------------------------------------
# 連線超過 60 秒失敗就重試
Timeout 60
# 開啟 KeepAlive
KeepAlive On
# 設定同一時間可容許的 KeppAlive 量
MaxKeepAliveRequests 5000
# KeepAlive 多久要自動 Timeout 掉
KeepAliveTimeout 3
# 關掉那費時的 DNS 查尋
HostnameLookups Off
-------------------------------------------------------
note: 為什麼 Timeout 值要縮短,在一個大流量的網路服務(良好的硬體設備,高頻寬的網路速度)在同一時間是需要能夠服務更多的使用者,如果 Timeout 太高,那麼在連線佔滿時下一個連線請求就要等到有連線結束掉才能夠被服務;相反的若設定太低那麼就要常常重新連線。不過重新連線一般的使用者並不會有太大的感覺(TCP/IP 的三向交握很快),所以不要讓伺服器一直在等待沒有請求的連線。

在一台設備良好的伺服器上,上面如果只有一項服務的話,那麼就應該把大部份的資源都留給它,比方說 Web 服務。
在 Linux 上,根據啟動時加以調整 nice 值也可以讓 Apache 的處理速度快一點。
nice 的調整範圍是在 -20 ~ +19 之間,如果不設定的設所有服務都是在 0。nice 的關念,就是它的值越低,就離 CPU 越近,那麼就跟容易取得 CPU 的資源,相反的在正數越高(+1 ~ +19)越不容易得到回應。

啟動 apache 時就把 nice 值調到 -10
root # nice -10 /usr/local/httpd/bin/apachectl start &

如果系統已經在啟動的話,可以使用 renice 來重新設定其 nice 值。
找出 apache 的 PID,並重新設定
root # netstat -ntulp | grep httpd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19249/httpd
root # renice -10 19249
當你調整完畢之後,可以使用 top 指令查看 NI 欄位的變化。

把不要必要的服務全部都關掉以便適出更多的可用資源讓 Apache 使用,當系統安裝時,大部份的系統建置者通常會把所有的套件都裝上去,以免未來要使用的功能不齊全,當然這是我們無法阻止的,但是我們卻可以控制系統的服務。
如果你使用 Redhat/Fedora 系統 Linux OS 的話,可以使用 chkconfig 來看看系統啟動時到底有那些服務被開啟。
root $ chkconfig --list
~ 以上略 ~
rawdevices      0:off   1:off   2:off   3:off   4:on    5:on    6:off
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
ipchains        0:off   1:off   2:on    3:off   4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:off   4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:off   4:off   5:off   6:off
lpd             0:off   1:off   2:on    3:off   4:on    5:off   6:off
xfs             0:off   1:off   2:on    3:off   4:on    5:on    6:off
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:off   4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:off   4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:off   4:on    5:off   6:off
identd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
~ 以下略 ~
root #
使用 chkconfig 可以看到各服務在系統那個 system level 時會被關閉或開啟。
如果你的機器只有單純的服務網頁服務,那麼就不應該要有 NFS、telnet、ldap、samba、lpd、cups、mysql 或會佔用大量記憶體及 CPU 資源的程式。尤其是像資料庫服務。
以下示範如何把 MySQL 在開機時不啟動。

root # chkconfig mysqld off

如果 MySQL 正在執行,要把它關閉的話。

root # service mysqld stop

root # /etc/init.d/mysqld stop

重新編譯 Apache!
如果你對於系統廠商所附的套件不滿意,或是想要轉到新版本的 Apache 時,那麼就要編譯一下 Apache,在編譯時可能需要注意一些事項:
不要把所有的模組都編上去
確認你的 GCC 版本

不要把所有的模組都編上去
如果一開始就決定要使用 JSP 開發程式,那麼就不需要把 PHP 模組都套進來;若不需要使用到 LDAP 認證,那也不需要把 LDAP 的模組也一起編進來,總之,在編譯你的 Apache 之前,那麼就應該要先確認環境狀況而不是一頭腦的全都加進去。
確認你的 GCC 版本
說真的,小弟對於程式並不是很熟,所以無法明確的指出 GCC 版本對於編譯出來的程式有什麼樣的結果。不過可以證實的是,有些新版本的 GCC 在編譯時,可以讓程式更小執行更快。

Heartbeat常见问题-centos6.2

[日期:2012-11-06]
来源:Linux社区  作者:crazylinux
[字体: ]

研究一下Heartbeat,其官方下载网站:http://www.linux-ha.org/wiki/Downloads

目前版本:
ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
Heartbeat-3-0-7e3a82377fa8.tar.bz2
Pacemaker-1-2-cc0e4d295e29.tar.bz2
Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

在安装过程中遇到各种错误,方便网上童靴会遇到和我一样的问题,我把解决办法整理如下,也同时希望大家补充:

我用的系统是:
[root@host2 ~]# cat /etc/RedHat-release
CentOS release 6.2 (Final)
[root@host2 ~]# uname -a
Linux host2.linuxbrother.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

1、libtoolize: `COPYING.LIB' not found in `/usr/share/libtool/libltdl'
解决办法:
yum -y install libtool-ltdl-devel
2、checking for special libxml2 includes... configure: error: libxml2 config not found
解决办法:
yum -y install libxml2
3、configure: error: BZ2 libraries not found
解决办法:
yum -y install bzip2-devel glib2-devel
前三种感觉是常识性问题,各位如果经常安装源码包的话这种错误解决起来应该很easy的。
4、安装Reusable-Cluster-Components-glue--glue-1.0.9
./.libs/libplumb.so: undefined reference to `uuid_parse’
./.libs/libplumb.so: undefined reference to `uuid_generate’
./.libs/libplumb.so: undefined reference to `uuid_copy’
./.libs/libplumb.so: undefined reference to `uuid_is_null’
./.libs/libplumb.so: undefined reference to `uuid_unparse’
./.libs/libplumb.so: undefined reference to `uuid_clear’
./.libs/libplumb.so: undefined reference to `uuid_compare’
collect2: ld returned 1 exit status
gmake[2]: *** [ipctest] Error 1
gmake[2]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib/clplumbing’
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib’
make: *** [all-recursive] Error 1
解决办法:
  ./configure --prefix=$PREFIX  --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
各位在./configure的时候指定一下LIBS,如果是32位系统的话改成LIBS='/lib/libuuid.so.1'。下面ClusterLabs-resource Heartbeat在./configure的时候都指定一下,要不然继续报错。
5、安装Heartbeat-3-0-7
uuid_parse.c:250: error: expected ‘;’, ‘,’ or ‘)’ before ‘uu’
uuid_parse.c:469: error: expected ‘)’ before ‘out’
uuid_parse.c:484: error: expected ‘)’ before ‘out’
uuid_parse.c:512: error: expected ‘)’ before ‘out’
gmake[1]: *** [uuid_parse.lo] Error 1
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/replace'
make: *** [all-recursive] Error 1
解决办法:
# ./configure --prefix=$PREFIX --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
gmake[1]: --xinclude: Command not found
gmake[1]: *** [heartbeat.8] Error 127
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/doc'
make: *** [all-recursive] Error 1
解决办法:
# yum -y install libxslt-devel

2012年11月2日 星期五

Vdspam反垃圾邮件问题收集(转)

以下没有标记 ID 的是翻译Dspam官方的FAQ,因为本人的英文水平有限,不对之处还请指出
1、
Q: 什么是DSPAM?为什么我要使用它?
A: DSPAM是一个智能的自适应学习什么是垃圾邮件垃的过滤器,而不是根据每个用户的个人电子邮件的行为。它的目的是为全系统的过滤和第三方一体化如果您正在寻找一个可扩展、快速、准确的垃圾邮件过滤器,并且能够自适应学习,您应该使用DSPAM。虽然这是一个垃圾邮件过滤器的设计,DSPAM表现出极大的能力。
2、
Q: 什么样的MTA可以和DSPAM工作?
A: DSPAM可以与任何的MTA (Mail Transfer Agent)Sendmail, Postfix, Exim, Courier, Communigate Pro, and QMail 工作
3、
Q: 需要多长时间开始过滤垃圾邮件?
A: 从一个完全空白库开始,DSPAM的头几天到一个星期左右,普遍攀升至约95-98 %的准确度,取决于您收到多少邮件。
4、
Q: DSPAM和SpamAssassin不同之处 ?
A: 双方的共同目标是消灭垃圾邮件。

SpamAssassin 确实使用匹配规则来标识可能是垃圾邮件的邮件,但它采用了一种概率统计的、基于分数的方法来对消息分类,而没有采用二进制方法。它没有寻求创建那些将消息标识为“一定是垃圾邮件”或“一定不是垃圾邮件”的规则,而是使用利用概率来推断给定的消息是垃圾邮件的可能性的规则。

DSPAM的基础是相信机器学习(基本人工智能)可以本身解决垃圾邮件问题,而不需要人为维持的规则,不准确的黑名单或任何hodge-podge 的解决方案。DSPAM的一个中央垃圾邮件检测功能集成了先进的的统计分析。这导致了各级的准确性高达10倍,除了极少数误报。DSPAM细分每封电子邮件的部分,分析了历史数据的每个组件,并确定了特征来判断一封电子邮件通过。虽然DSPAM支持许多pre-filters, post-filters和其他层面的分析,其核心功能完全在于在自适应学习和语言分析。仅此一点就已经产生了各级精度最高达到99.991 % 。
5、
Q: 收到的垃圾邮件该怎么办?
A: DSPAM的目的是'学习'您会收到的垃圾邮件的基础上(和或不是),所以当您收到垃圾邮件,您可以在extmail的web界面提交,DSPAM将自动进行分析和学习。另外,用户可以通过DSPAM的WEB界面提交,这是一个极好的途径 ,为确保DSPAM不会过时,需继续学习新技巧的垃圾邮件。
6、
Q: 什么是DSPAM隔离区?
A: 每个用户都有一个隔离区,拥有DSPAM认为是垃圾邮件的信息,而不是简单地删除这些邮件,隔离区使用户能够识别false positive和不定期重新学习是误判的电子邮件 。 这是一个非常重要的步骤在学习过程中 ,据了解 , 没有垃圾邮件过滤器100 %的准确,因此,重要的是能够了解自己的错误。 DSPAM的隔离使它比其他一些解决办法更容易管理的垃圾邮件。
7、
Q: DSPAM支持白名单吗?
A: DSPAM支持白名单功能 ,DSPAM的白名单是一个自动功能的贝叶斯过滤机制。 是训练DSPAM建立一个内部的白名单。可自动识别谁最绝对不会发送垃圾邮件。
8、
Q: DSPAM支持病毒过滤吗?
A: DSPAM本身不过滤病毒,需要调用Clamav来进行病毒过滤。
以下是收集社区一些兄弟的解决方法
1、
Q:mini_httpd 在这当中起何作用,是替代 apache 吗?
A: ID:liushaobo   是的,这样比较方便,省去大家配置时在权限方面的不少麻烦;当然你要是一定要用apache也可以;
2、
Q:DSPAM有没有类似spamlocker的那样的开关?也就是说假如我使用有什么问题的话,通过修改哪几个配置就可以停用DSPAM
A: ID:liushaobo   把在main.cf 和master.cf 里做的配置 注释就可以了,再把相关的 DSPAM 服务停止,你做之前可以先把要改的文件备份一下,
3、
Q:Trust 的这几个账户是什么意思 是连接数据库的账户还是什么?
A: ID:hondasky   如果没有上面的账户,其它用户将没有权限操作 邮件存储目录的话就会报这个错误
Apr 24 11:02:19 mail dspam[8365]: Option --user requires special privileges when user does not match current user, e.g.. root or Trusted User
4、
Q: 怎么判断DSPAM 就在工作了呢?
A: ID:liushaobo  如果dspam工作正常,邮件的信头会出现以下标识,
X-DSPAM-Result: Spam
X-DSPAM-Processed: Fri Apr 3 10:40:02 2009
X-DSPAM-Confidence: 0.8222
X-DSPAM-Probability: 1.0000
X-DSPAM-Signature: 49d57702286051336712104
X-DSPAM-Factors: 15,
5、
Q:dspam-web里有如下错误提示:
An Error Has Occured
The following error occured while trying to process your request:
No historical data is available.
A: ID:liushaobo   用户的对dspam 的 data目录的访问权限不够或邮件收发没有经过dspam
6、
Q:举报功能 好像不起作用哦 我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事?
A: ID:liushaobo   Dspam默认要学习五次,才会把邮件识别为垃圾邮件
7、
Q:Preference "spamAction=tag" //曾经在其他文档中看到过此参数注释掉,否则不能更改message handling,不太理解其含义,个人认为应该是设置Preference "spamSubject=**SPAM**"信件标题无法正常加载**SPAM**;
A: ID:liushaobo   "spamAction= " 有三种动作,一个隔离、二是加标记tag、三是投递 deliver
8、
Q: 若训练垃圾邮件的时候,出现以下错误:
Signature retrieval for '49f1790399401343511188' failed
Unable to find a valid signature. Aborting.
process_message returned error -5. dropping message.
A: ID:wendyzh    MySQLUIDInSignature on //此项一定要打开

9、
Q: DSPAM举报功能 好像不起作用哦  我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事? MAILDROP 我已经配置好了
A: ID:liushaobo   DSPAM默认要学习五次,才会识别,这是为了防止误判,可以通过修改 Feature tb=x   参数来改变次数,x 表示数字;

10、
Q:我要自己再训练如何操作呢?
A: ID:hzqbbc   在webmail点“这是垃圾邮件”、“这不是垃圾邮件”。(前提是spam_report.pl里指定的dspamc路径正确)或在dspam-web 都可以直接训练dspam的。
11、
Q: dspam-webui 中出现很多类型为resend的,这算什么呢?
A: ID:xueron   resend的出现是因为同一封邮件有多个收件人,但是dspam会分别为两个人扫描,因为可能启动用户级过滤的话,两个收件人的判断结果可能不一样。这个时候,就会出现resend的标记,因为邮件的msgid是一样的。
12、
Q:  内网邮件别名无法发送,全部收到退信说user unkown,bcc 时不会监控发出的邮件
A: ID:liushaobo   修改 main.cf 文件的 #receive_override_options = no_address_mappings
修改master.cf 文件中的 -o receive_override_options=no_address_mappings,no_unknown_recipient_checks,no_header_body_checks
13、
Q:  每封邮件,不管正常或者是垃圾邮件用都有!DSPAM:1,49179586289971925617086!  的标识,现在想去掉。在mysql做了把用户的signature 置空也不行,在dspam.conf设置把相关项关掉也没有成功。
A: ID:zhanghuiwo   Preference "signatureLocation=message"  改为headers
14、
Q: dspam-web 不能生成图形
A: ID:liushaobo  请安装dspam-web 需要用到的Perl图形模块: perl-GD、perl-GDGraph、perl-GDTextUtil、perl-GD-Graph3d
15、
Q: Dspam出现以下日志 :
Jun 23 16:19:28 localhost dspam[4642]: Unable to determine the destination user
A: ID:hzqbbc  dspam没有设定 --user  参数
16、
Q: 请问Dspam的数据库是否一定要安装?hashdb是数据库吗?
A: ID:xueron   hashdb是内建默认的数据库,用户量小的话,用它很好,速度快。用户量多的话,建议使用mysql
17、
Q: 能不能让dspam只学习一次,就能作用于服务器上面的全部用户呢?
A: ID:xueron   当作全局过滤使用,--user 这个地方可以指定为一个固定的虚拟帐号,并且学习的时候都用这个虚拟帐号学习。
18、
Q: 如何导出我用dspam训练好的数据库?
A: ID:liushaobo   导出mysqldspam库就可以了,如果还要history的话,把 dspam  的data目录也备份
19、
Q: Dspam工作正常的情况下,Internet 邮件头没有发现类似X-DSPAM-*的标记
A: ID:liushaobo   如果按照《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》的设置,因为Dspam对本地网络不过滤,最好从Internet发一封信测试;
20、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章的10024、10025、10028这三个端口的作用是什么?
A: ID:hzqbbc     ctfilter(10028) dspam ==> 10024 amavisd ==> 10025 (smtpd)
21、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章,复制 dspam.pm 模块,提示找不到/usr/lib/perl5/vendor_perl/5.8.5/Mail/SpamAssassin/Plugin路径。
A: ID:liushaobo   EMOS里SA的Plugin路径和你自己的SA的Plugin路径不一样;要自己找一下路径了;或者用EMOS里面的rpm包;
22、
Q: 一个用户发同一封信到a<at>domain和b<at>domain,dspam 给出2种不同的判断结果,<at>domain把信当成是(X-DSPAM-Result: spam)垃圾邮件,b<at>domain把信当成(X-DSPAM-Result: Innocent)正常邮件。
A: ID:xueron   在dspam.conf中新增IgnoreHeader To参数,忽略邮件的一些标题。
23、
Q: Dspam 源代码编译后,无法生成 libmysql_drv.so 文件
A: ID:liushaobo   dspam的drv分两种,一是静态库,二是动态库,官方的dspam的drv是动态加载的,编译时指定两个mysql_drv 。用逗号隔开。动态库可以在dspam.conf中指定  mysql_drv,pgsql_drv,sqlite_drv,sqlite3_drv,hash_drv,
24、
Q: Dspam的history里面还能保留更多的记录吗?
A: ID:zhaodongxi   修改configure.pl文件的$CONFIG{'HISTORY_SIZE'} = number