天天看点

heartbeat+nginx双机热备

1 、软件包下载

下载地址:http://www.linux-ha.org/wiki/Downloads

wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2

wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2

wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

2、安装Cluster Glue : 0a7add1d9996.tar.bz2

安装依赖:

yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc

添加用户和组:

groupadd haclient

useradd -g haclient hacluster -s /sbin/nologin

解压软件包:我的软件包全放在/opt 目录下,需要把这三个包全部安装到同一目录下:/usr/local/heartbeat/

tar -jxvf  0a7add1d9996.tar.bz2

cd Reusable-Cluster-Components-glue--0a7add1d9996/

./autogen.sh

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

heartbeat+nginx双机热备

make && make install

        没有error就完成这个软件的编译安装了

3、安装resource-agents: v3.9.6.tar.gz

        解压:tar -jxvf v3.9.6.tar.gz

        cd resource-agents-3.9.6

        ./autogen.sh

        export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"

        ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

heartbeat+nginx双机热备

        ln -s  /usr/local/heartbeat/lib/* /lib/

        ln -s  /usr/local/heartbeat/lib/* /lib64/

        make

        make install

4、安装heartbeat:958e11be8686.tar.bz2

        tar -jxvf 958e11be8686.tar.bz2 

        cd Heartbeat-3-0-958e11be8686/

        ./bootstrap 

heartbeat+nginx双机热备

        把heartbeat的三个配置文件ha.cf、haresources、authkeys拷贝到安装目录

        cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

5、安装nginx服务

        yum install epel*

        yum install -y nginx

        systemctl start nginx

        关闭防火墙和selinux:

        systemctl stop firewalld

        setenforce 0

        通过浏览器访问IP地址,能正常显示nginx测试页面

5、两台服务器都编译安装完成,开始配置

        authkeys文件用于heartbeat的鉴权设置,共有三种可用的方式crc、md5和sha1。两台服务器设置一样即可。

        vim /usr/local/heartbeat/etc/ha.d/authkeys

heartbeat+nginx双机热备

        修改权限:chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

        *这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常

        mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat

        cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

        ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/

        ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

         haresources主要是创建VIP和配置接管的资源

        vi /usr/local/heartbeat/etc/ha.d/haresources

        在结尾增加:xuexi1 IPaddr::192.168.15.77/24/ens33 nginx

        格式:本机主机名  虚拟VIP地址  网卡名  资源脚本

            资源脚本:在目录:/usr/local/heartbeat/etc/ha.d/resource.d/

            vim nginx    增加如下一条语句:

            systemctl start nginx

            保存并修改权限:chmod 755 nginx

        ha.cf 文件是heartbeat的主要配置文件, 可以对heartbeat的多数性能与状态进行配置, 多数选项可以采用默认值

        [root@xuexi1 ha.d]# grep -v '^#' ha.cf 

        debugfile /var/log/ha-debug    ##设置日志

        logfile /var/log/ha-log

        keepalive 2        ##设置心跳时间,单位秒

        deadtime 30    ##超过该时间间隔没有收到心跳,认为对方已经死了

        warntime 10    ##超过该时间间隔没有收到心跳,则发出警告并记录到日志中

        initdead 120        ##在部分系统上,系统启动或重启时要经过一段时间,网络才能正常工作,该选项用于解决此情况的时间间隔

        udpport 694        ##广播通信的端口,默认

        ucast ens33 192.168.15.176    ##ha所用的网络接口卡,从点的地地址和网卡

        auto_failback off        ##主节点恢复故障后是否接管从节点的资源

        node xuexi1 xuexi2 ##指定两个节点

        ping 192.168.15.1    ##指定ping节点,主要用于网络测试

        respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail        ##表示ping不通时,自动调用ipfail这个脚本

6、从节点配置三个配置文件基本一样,只需要修改ha.cf 的心跳:ucast ens33 192.168.15.126 为主节点的ip

7、测试:把nginx关闭

     启动主节点的heartbeat:service heartbeat start        ,等一会儿,看一下网卡信息,VIP出来了启动完成

heartbeat+nginx双机热备

    在浏览器中访问VIP:能访问到nginx的默认页面,启动完成 

    启动从节点的heartbeat:service ehartbeat start

    模拟:主节点宕机:关闭主节点服务器或关闭heartbeat服务和关闭nginx服务

    查看从节点的网卡信息:是否出现VIP

    继续通过浏览器访问VIP,还能继续访问,说明VIP自动转移到从节点了。