linux下HA的安装配置示例


linux下HA的安装配置示例
 
首先分别在两台服务器上安装HA(yast -i heartbeat)
server1:192.168.1.100
server2:192.168.1.101
 
编辑/etc/ha.d/authkeys
Txt代码  
auth 3  
#1 crc  
#2 sha1 HI!  
3 md5 ciaoskey  
 
编辑/etc/ha.d/ha.cf
Txt代码  
logfile /var/log/ha-log  
logfacility     local0  
keepalive 2  
deadtime 30  
warntime 10  
udpport 19871  
ucast eth0 192.168.1.101  
#for server 2 configure   
#ucast eth0 192.168.1.100  
auto_failback on  
node    server1 server2  
ping 102.168.1.1  
 
编辑/etc/ha.d/haresources
Txt代码  
server1  IPaddr::192.168.1.110/32 nginxd  
 两台服务器均监听110这个虚拟IP,前端浏览器访问192.168.1.110即可。
 
ha服务就可以通过/etc/init.d/heartbeat start|stop|reload等管理了
 
下面做一个简单的测试
A,分别启动两台机器的heartbeat
 
Txt代码  
ciaos:~ # /etc/init.d/heartbeat start  
Starting High-Availability services2012/11/22_17:10:41 INFO:  Resource is stopped  
heartbeat: udpport setting must precede media statementsheartbeat: baudrate setting must precede media statementsheartbeat[10368]: 2012/11/22_17:10:41 info: Version 2 support: false  
heartbeat[10368]: 2012/11/22_17:10:41 WARN: Logging daemon is disabled --enabling logging daemon is recommended  
heartbeat[10368]: 2012/11/22_17:10:41 info: **************************  
heartbeat[10368]: 2012/11/22_17:10:41 info: Configuration validated. Starting heartbeat 2.1.3  
                                                                      done  
(用浏览器访问192.168.1.110显示first server)
B,关闭100上面的HA,如下:
 
Txt代码  
ciaos:~ # /etc/init.d/heartbeat stop  
Stopping High-Availability services                                   done  
logd[10282]: 2012/11/22_17:10:04 debug: Stopping ha_logd with pid 9650  
logd[10282]: 2012/11/22_17:10:04 info: Waiting for pid=9650 to exit  
logd[10282]: 2012/11/22_17:10:05 info: Pid 9650 exited  
(用浏览器访问192.168.1.110显示second server)
C,重启100的HA,用浏览器访问结果恢复为first server
 
这样,一个简单的主备WEB服务器就搭建完毕
 
附LSB格式脚本/etc/init.d/nginxd如下(需要拷贝到heartbeat的安装目录下)(网上那个版本找不到status命令,我这里写了个函数简单代替,程序还有点问题)
 
Shell代码  
#!/bin/sh  
  
. /usr/lib/ocf/resource.d//heartbeat/.ocf-shellfuncs  
  
RETVAL=0  
prog="nginx"  
  
nginxDir=/usr/local/nginx  
nginxd=$nginxDir/sbin/nginx  
nginxConf=$nginxDir/conf/nginx.conf  
nginxPid=$nginxDir/logs/nginx.pid  
  
nginx_check()  
{  
    if [[ -e $nginxPid ]]; then  
        ps aux |grep -v grep |grep -q nginx  
        if (( $? == 0 )); then  
            echo "$prog already running..."  
            exit 1  
        else  
            rm -rf $nginxPid &> /dev/null  
        fi  
    fi  
}  
  
start()  
{  
    nginx_check  
    if (( $? != 0 )); then  
        true  
    else  
        echo -n $"Starting $prog:"  
        `$nginxd -c $nginxConf`  
        RETVAL=$?  
        echo  
        [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
        return $RETVAL  
    fi  
}  
  
stop()  
{  
    echo -n $"Stopping $prog:"  
    killproc $nginxd  
    RETVAL=$?  
    echo  
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx $nginxPid  
}  
  
reload()  
{  
    echo -n $"Reloading $prog:"  
    killproc $nginxd -HUP  
    RETVAL=$?  
    echo  
}  
  
status()  
{  
    nginx_check  
    if (( $? != 0 )); then  
        return 0  
    else  
        return 1  
    fi  
}  
  
monitor()  
{  
    status $prog &> /dev/null  
    if (( $? == 0  )); then  
        RETVAL=0  
    else  
        RETVAL=7  
    fi  
}  
  
case "$1" in  
        start)  
                start  
                ;;  
        stop)  
                stop  
                ;;  
        restart)  
                stop  
                start  
                ;;  
        reload)  
                reload  
                ;;  
        status)  
                status $prog  
                RETVAL=$?  
                ;;  
        monitor)  
                monitor  
                ;;  
        *)  
                echo $"Usage: $0 {start|stop|restart|reload|status|monitor}"  
                RETVAL=1  
esac  
exit $RETVAL  

相关内容

    暂无相关文章