美文网首页
1.Heartbeat v1实现HA

1.Heartbeat v1实现HA

作者: 像飞翔一样去飞翔 | 来源:发表于2017-02-06 16:39 被阅读0次

    实验简介

    本实验采用centos6为基础操作系统,通过heartbeat v1 版本来实现httpd服务的高可用。

    实验架构

    • active:192.168.99.41 node3.magedu.com
    • passive:192.168.99.24 node4.magedu.com
    • Floting IP:192.168.99.200

    配置HA集群的前提

    • 节点间时间必须同步ntpdate
    [root@node3 ~]# ntpdate   0.centos.pool.ntp.org
    
    [root@node4 ~]# ntpdate   0.centos.pool.ntp.org
    
    • 节点间需要通过主机名互信,必须解析IP地址
      • 建议通过hosts文件来实现
      • 通信中使用的名字与节点的名字必须保持一致:uname -n命令或hoatname
    # hostname 
    node3.magedu.com
    # cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.1.0.1  server.magelinux.com server
    192.168.99.41 node3.magedu.com node3
    192.168.99.42 node4.magedu.com node4
    
    • 考虑仲裁设备是否会被用到
      因为我们采用两节点必须使用仲裁设备,此处我们采用ping node来实现仲裁

    • 建立各节点之间的root用户能够基于密钥认证

    [root@node3 ~]# ssh-keygen -t rsa -P ''
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    9a:52:eb:68:6a:a1:80:fa:c6:ec:db:4a:48:e7:0e:f4 root@node3.magedu.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    | |
    | |
    | |
    | |
    |.o .  . S|
    |=.=  . + |
    |+=.E. +  |
    |o.B..+   |
    | =**o .  |
    +-----------------+
    [root@node3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node4.magedu.com
    [root@node3 ~]# date ;ssh node4.magedu.com 'date'
    Mon Feb  6 10:21:35 CST 2017
    Mon Feb  6 10:21:35 CST 2017
    

    至此准备工作完成我们应该开始正式的安装部署了

    解决依赖关系与安装heartbeat程序包

    #注意需要配置好yum仓库和epel仓库
    [root@node3 ~]# yum install -y net-snmp-libs libnet PyXML
    [root@node3 ~]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm  heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm 
    Preparing...                ########################################### [100%]
       1:heartbeat-pils         ########################################### [ 33%]
       2:heartbeat-stonith      ########################################### [ 67%]
       3:heartbeat              ########################################### [100%]
    #这里的rpm包使我们自己配置安装的
    

    复制配置文件并修改相应的权限

    [root@node3 ~]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /etc/ha.d/
    [root@node3 ~]# chmod  600 /etc/ha.d/authkeys   #必须修改为600,否则服务有可能无法启动
    [root@node3 ~]# ll /etc/ha.d/
    total 48
    -rw------- 1 root root   645 Feb  6 10:43 authkeys
    -rw-r--r-- 1 root root 10539 Feb  6 10:43 ha.cf
    -rwxr-xr-x 1 root root   745 Sep 10  2013 harc
    -rw-r--r-- 1 root root  5905 Feb  6 10:43 haresources
    drwxr-xr-x 2 root root  4096 Feb  6 10:36 rc.d
    -rw-r--r-- 1 root root   692 Sep 10  2013 README.config
    drwxr-xr-x 2 root root  4096 Feb  6 10:36 resource.d
    -rw-r--r-- 1 root root  7864 Sep 10  2013 shellfuncs
    
    • 主配置配置vim /etc/ha.d/ha.cf
      定义heartbeat守护进程的工作方式和属性
    logfile /var/log/ha-log
    keepalive 2
    deadtime 30
    warntime 10
    initdead 120
    udpport 694
    mcast eth0 225.12.0.1 694 1 0
    auto_failback on
    node    node3.magedu.com
    node    node4.magedu.com
    ping 192.168.99.1
    
    
    
    compression bz2
    compression_threshold 2
    
    • 集群资源配置resources
      通过此配置文件来配置资源
    [root@node3 ~]# vim /etc/ha.d/haresources 
    node3.magedu.com        192.168.99.200/24/eth0/192.168.99.255 httpd
    
    • 密钥认证文件配置authkeys
      通过此来设置集群内多个节点的认证
    [root@node3 ~]# openssl rand -base64 16
    duPgfWr4O5SgHlUbNgCNtA==
    [root@node3 ~]# vim /etc/ha.d/authkeys 
    auth 2
    #1 crc
    2 sha1 duPgfWr4O5SgHlUbNgCNtA
    

    以上配置完成后我们将其复制到另外一台节点上,快速数显heatbeat的安装配置

    [root@node3 ~]# scp -r heartbeat2/  node4.magedu.com:/root
    [root@node4 ~]# rpm -ivh heartbeat2/heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat2/heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat2/heartbeat-stonith-2.1.4-12.el6.x86_64.rpm 
    [root@node3 ~]# scp -p /etc/ha.d/{ha.cf,haresources,authkeys} node4.magedu.com:/etc/ha.d/
    

    安装httpd服务,并禁止开机自启

    # yum install -y httpd
    提供不同的页面
    [root@node3 ~]# echo "<h1>node3.magedu.com</h1>" > /var/www/html/index.html
    [root@node4 ~]#  echo "<h1>node4.magedu.com</h1>" > /var/www/html/index.html
    

    启动服务

    [root@node3 ~]# service httpd start
    Starting httpd:                                            [  OK  ]
    [root@node3 ~]# curl  192.168.99.41
    <h1>node3.magedu.com</h1>
    [root@node3 ~]# service httpd stop
    Stopping httpd:                                            [  OK  ]
    [root@node3 ~]# chkconfig httpd off
    [root@node3 ~]# service heartbeat start
    logd is already running
    Starting High-Availability services: 
    2017/02/06_13:46:17 INFO:  Resource is stopped
    Done.
    
    [root@node3 ~]# service httpd start
    Starting httpd:                                            [  OK  ]
    [root@node3 ~]# curl  192.168.99.41
    <h1>node3.magedu.com</h1>
    [root@node3 ~]# service httpd stop
    Stopping httpd:                                            [  OK  ]
    [root@node3 ~]# chkconfig httpd off
    [root@node4 ~]# service heartbeat start
    logd is already running
    Starting High-Availability services: 
    2017/02/06_13:46:17 INFO:  Resource is stopped
    Done.
    

    注意:需要两台机器同时启动heartbeat才能看到效果

    效果检验

    1.两台主机的heartbeat服务都启动,我们用curl请求会产生以下效果:

    [root@client ~]# curl 192.168.99.200
    <h1>node3.magedu.com</h1>
    

    此时因为主节点的为node3.magedu.com,所以我们访问到的是node3.magedu.com主机提供的页面

    2.关闭主节点上的heartbeat服务,我们会发现haresources配置的文件全都跑到备用节点上了

    [root@node3 ~]# service heartbeat stop
    Stopping High-Availability services: 
    Done.
    
    [root@node3 ~]# 
    [root@client ~]# curl 192.168.99.200
    <h1>node4.magedu.com</h1>
    [root@client ~]# 
    

    通过上述示例我们达到了双机主/备用,资源快速切换的效果

    3.我们重新让主节点上线,它会将资源抢回来,这是我们在ha.cf文件中配置的

    [root@node3 ~]# service heartbeat start
    [root@client ~]# curl 192.168.99.200
    <h1>node3.magedu.com</h1>
    
      • tip:温馨小提示

    /usr/lib64/heartbeat/目录下有一些小程序,我们可以用来对heartbeat高可用集群进行手动实现hb_standby ,hb_takeover,ha_propagate...

    借用共享存储来实现资源转移

    准备第三个节点用来充当NFS共享服务器,此处作者用centos7主机来充当nfs服务。

    [root@nfs ~]# mkdir /web/htdocs -pv
    mkdir: created directory ‘/web’
    mkdir: created directory ‘/web/htdocs’
    [root@nfs ~]# echo "<h1>Page from NFS</h1>" > /web/htdocs/index.html
    [root@nfs ~]# vim /etc/exports
    [root@nfs ~]# systemctl start nfs
    

    分别挂载测试是否成功

    #节点1:node3.magedu.com
    [root@node3 ~]# mount -t nfs 192.168.99.241:/web/htdocs /var/www/html/
    [root@node3 ~]# service httpd start
    Starting httpd:                                            [  OK  ]
    [root@node3 ~]# curl node3.magedu.com
    <h1>Page from NFS</h1>
    [root@node3 ~]# service httpd stop
    [root@node3 ~]# umount /var/www/html/
    # 节点2:node4.magedu.com
    [root@node4 ~]# mount -t nfs 192.168.99.241:/web/htdocs /var/www/html/
    [root@node4 ~]# service httpd start
    [root@node4 ~]# curl 192.168.99.42
    <h1>Page from NFS</h1>
    [root@node4 ~]# service httpd stop
    [root@node4 ~]# umount /var/www/html/
    

    至此,nfs服务已经准备ok。我们可以配置1heartbeat来进行挂载使用测试了

    • 1.编辑harources添加nfs资源
    [root@node3 ~]# vim /etc/ha.d/haresources 
    node3.magedu.com        192.168.99.200/24/eth0/192.168.99.255 Filesystem::192.168.99.241:/web/htdocs::/var/www/html::nfs  httpd
    [root@node4 ~]# vim /etc/ha.d/haresources 
    node4.magedu.com        192.168.99.200/24/eth0/192.168.99.255 Filesystem::192.168.99.241:/web/htdocs::/var/www/html::nfs  httpd
    
    • 2.启动服务
    [root@node3 ~]# service heartbeat start;ssh node4.magedu.com 'service heartbeat start'
    
    • 3.验证结果:
    # 文件已经挂载到node3.magedu.com这个节点上去了
    [root@node3 ~]# mount
    /dev/mapper/vg0-root on / type ext4 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    tmpfs on /dev/shm type tmpfs (rw)
    /dev/sda1 on /boot type ext4 (rw)
    /dev/mapper/vg0-usr on /usr type ext4 (rw)
    /dev/mapper/vg0-var on /var type ext4 (rw)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
    192.168.99.241:/web/htdocs on /var/www/html type nfs (rw,vers=4,addr=192.168.99.241,clientaddr=192.168.99.41)
    #请求weeb服务正常是nfs提供的页面
    [root@client ~]# curl 192.168.99.200
    <h1>Page from NFS</h1>
    # 停止node3.magedu.com节点,资源将转移到node4.magedu.com上,且用户不会犹豫任何察觉
    [root@node3 ~]# /usr/lib64/heartbeat/hb_standby 
    #nfs挂载到了node4节点上
    [root@node4 ~]# mount
    /dev/mapper/vg0-root on / type ext4 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    tmpfs on /dev/shm type tmpfs (rw)
    /dev/sda1 on /boot type ext4 (rw)
    /dev/mapper/vg0-usr on /usr type ext4 (rw)
    /dev/mapper/vg0-var on /var type ext4 (rw)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
    192.168.99.241:/web/htdocs on /var/www/html type nfs (rw,vers=4,addr=192.168.99.241,clientaddr=192.168.99.42)
    #web服务仍然能访问
    [root@client ~]# curl 192.168.99.200
    <h1>Page from NFS</h1>
    

    相关文章

      网友评论

          本文标题:1.Heartbeat v1实现HA

          本文链接:https://www.haomeiwen.com/subject/xiyyittx.html