西风古道

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

只是写了安装流程,具体信息查看互联网;

环境:

CentOS6.8 x86_64 min

Heartbeat 3.0.6    http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
Cluster Glue 1.0.12 http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2    
Resource Agents 3.9.6 https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

安装:

/********安装开始*************/

安装所需依赖:
yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-develbzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl bzip2-devel asciidoc libuuid-devel

新建用户与组
groupadd haclient
useradd -g haclient hacluster -M -s /sbin/nologin


下载上述三个组件解压并进入相应目录进行安装

安装cluster-glue
./autogen.sh
./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64
make
make install

安装Resource Agents
./autogen.sh
./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64
ln -s /usr/local/heartbeat/lib64/* /lib64/
make
make install

安装Heartbeat
./bootstrap
./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat CFLAGS=-I/usr/local/heartbeat/include  LDFLAGS=-L/usr/local/heartbeat/lib64
vi /usr/local/heartbeat/include/heartbeat/glue_config.h  /* 错误:“HA_HBCONF_DIR”重定义,删除最后一行,make clean */
make
make install

cp doc/ha.cf doc/authkeys doc/haresources /etc/heartbeat/ha.d/
chmod 600 /etc/heartbeat/ha.d/authkeys
chkconfig --add heartbeat
chkconfig heartbeat on
chkconfig --list heartbeat

/********安装结束*************/

 模拟测试环境:

/********设置使用开始*************/


模拟环境:
    四部CentOS主机,当前使用版本6.8 min
    命名:
        Heartbeat-DS1
        Heartbeat-DS2
        Heartbeat-RS1
        Heartbeat-RS2


设置IP及修改主机名:
    VIP: 192.168.1.200
    Heartbeat-DS1 IP:192.168.1.181 修改主机名ds1.example.com
    Heartbeat-DS2 IP:192.168.1.182 修改主机名ds2.example.com
    Heartbeat-RS1 IP:192.168.1.183
    Heartbeat-RS2 IP:192.168.1.183


四台主机安装httpd服务,并防火墙开启80/tcp端口:
    yum install httpd -y

    时间同步:
        ntpdate -u time.windows.com

    Heartbeat-DS1与Heartbeat-DS2中,httpd不需要设置开机启动,而是由heartbeat来启用服务。

    修改相应主页文件:
        vi /var/www/html/index.html
        <h1>
            写入相应IP,用于区分主机
        </h1>


Heartbeat-DS1与Heartbeat-DS2:

    防火墙开启694/udp端口,修改iptables配置文件。

    修改hosts文件,添加如下内容:

        192.168.1.181    ds1.example.com
        192.168.1.182    ds2.example.com

    实现基于ssh无密钥通信,设置如下: 

        #ssh-keygen -t rsa -P ‘’   //这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
        #ssh-copy-id -i .ssh/id_rsa.pub root@ds2.example.com  //两台主机都得互相生成密钥和复制公钥
        #ssh ds2.example.com  //测试如果不需要密码登陆就成功



heartbeat主要有三个配置文件:ha.cf,authkeys,haresources

authkeys主从认证文件,主要内容如下:

    这儿使用sha1认证,

    auth 2 //此处编号对应下面启的用编号
    #1 crc
    2 sha1 字符串  //可使用 openssl rand -hex 8 生成一随机字符串
    #3 md5 Hello!

    crc是无安全的,具体查看配置文件。



haresources资源文件,添加如下内容:

    ds1.helilv.cn  IPaddr::192.168.1.200/24/eth0  httpd


ha.cf是主要配置文件:

    debugfile /var/log/ha-debug    //调试日志
    logfile /var/log/ha-log        //日志文件
    logfacility     local0        //syslog,记录至/var/log/message

    keepalive 2            //每隔多长时间发送一次心跳包,默认秒,毫秒用ms
    deadtime 30            //死亡超时时间
    warntime 10            //告警时间
    initdead 120            //网络初始化最长时间
    udpport 694            //心跳包通讯端口
    bcast   eth0            //心跳包通讯使用网卡
    auto_failback on        //如果主节点重新恢复,主节点将抢占资源恢复服务; off为不抢占

    node    ds1.example.com        //节点名,使用hosts保证主从节点能正常通讯
    node    ds2.example.com        //节点名,使用hosts保证主从节点能正常通讯

    ping 192.168.1.1        //一般ping网关,判断节点网络是否正常
    respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail        //断网切换功能,这个功能需要主从单独线路连接,如果ping不通,则会通知从机我有问题,且从机抢占ip。
    apiauth ipfail gid=haclient uid=hacluster



以上三个配置文件主从保持一致。


如下测试Heartbeat-DS1与Heartbeat-DS2:

    启动Heartbeat-DS1:
        service heartbeat status    //查看是否已启动
        service httpd status        //应该由heartbeat调用启动
        ip a                //等待一会后查看ip信息,eth0是否已绑定192.168.1.200

    如果上述都正常启动,则开启Heartbeat-DS2主机:
        service heartbeat status    //查看是否已启动
        service httpd status        //如果Heartbeat-DS1已启动,则此处为关闭状态
        ip a                //如果Heartbeat-DS1已启动,则此处为关闭状态,eth0不会绑定192.168.1.200

    现在使用浏览器访问192.168.1.200,则会出现Heartbeat-DS1的ip主页,现在测试将Heartbeat-DS1的heartbeat关闭后,刷新后应该出现Heartbeat-DS2的ip主页,
    如果测试正常进行负载均衡设置。

 负载均衡:

Heartbeat负载均衡使用插件ldirectord,源码编译安装默认已生成。
    
    
Heartbeat-DS1与Heartbeat-DS2中使用ldirectord需要安装依赖:
yum install ipvsadm perl-Socket6 perl-libwww-perl perl-IO-Socket-INET6 perl-MailTools

修改Heartbeat-DS1与Heartbeat-DS2的配置文件:
    ldirectord主要配置文件:
        vi /etc/heartbeat/ha.d/ldirectord.cf

        //修改以下参数
        virtual=192.168.1.200:80
            real=192.168.1.183:80 gate
            real=192.168.1.184:80 gate
            fallback=127.0.0.1:80 gate
            service=http
            scheduler=rr
            protocol=tcp
            checktype=negotiate
            checkport=80

    配置文件haresources,添加启动应用ldirectord:

        ds1.helilv.cn  IPaddr::192.168.1.200/24/eth0 ldirectord  httpd




配置Heartbeat-RS1与Heartbeat-RS2:
参考: https://www.suse.com/communities/blog/load-balancing-howto-lvs-ldirectord-heartbeat-2/

    一、实际web服务器,需要在回环上绑定192.168.1.200:

        vi /etc/sysconfig/network-scripts/ifcfg-lo
            //添加如下内容
            IPADDR0=192.168.1.200
            NETMASK0=255.255.255.255
            NETWORK0=192.168.0.0
            BROADCAST0=192.168.1.255
            LABEL0='0'

        重启网卡 service network restart
        使用ip addr 查看lo信息,是否已绑定192.168.1.200
    
    二、修改/etc/sysctl.conf
        
        //文件未尾添加如下内容后,使用sysctl -p使用其生效
        net.ipv4.conf.all.arp_ignore = 1
        net.ipv4.conf.eth0.arp_ignore = 1
        net.ipv4.conf.all.arp_announce = 2
        net.ipv4.conf.eth0.arp_announce = 2

    三、设置默认网关,使用route -n查看,如已设置可省略。

        echo "default 192.168.1.1" > /etc/sysconfig/network/routes;




重启Heartbeat-DS1与Heartbeat-DS2:
ps aux  //可看到ldirectord运行信息

现在使用浏览器访问192.168.1.200,应该会轮流出现Heartbeat-RS1与Heartbeat-RS2的ip主页。


/********设置使用结束*************/

 杂记使用串口:

/********以下是使用vmware模拟串口*************/


主从添加串口设备:

主从都使用管道命名
主节点: 设置为该端是服务器,另一端是虚拟机,勾选轮询
从节点: 设置为该端是客户端,另一端是虚拟机,不勾选轮询


我测试时,添加的设备名为:/dev/ttyS1
测试串口通讯:
主:cat < /dev/ttyS1

从:echo 'hello' > /dev/ttyS1

如果主节点接收到hello,那么通讯正常。否则再测试其它接口。

修改主从节点配置文件ha.cf:

注释
    上面测试使用的广播通讯模式bcast.
    udp端口也不需要了
开启
    baud    19200
    serial  /dev/ttyS1      # Linux

 

posted on 2017-01-12 11:15  西风古道  阅读(951)  评论(3编辑  收藏  举报