设为首页 收藏本站
查看: 832|回复: 0

[经验分享] linux集群学习实验:使用heartbeat实现对httpd的高可用

[复制链接]

尚未签到

发表于 2019-1-7 08:32:45 | 显示全部楼层 |阅读模式
  一、  实验环境:
如下图所示:两台服务器节点,一台客户端通过交换机互连,相关数据规划如下:
设备名称    IP地址    主机名
客户端 192.168.110.2   Client(win7)
服务器1    192.168.110.128 node1.yang.com
服务器2    192.168.110.129 node2.yang.com

  二、  配置步骤及说明

  •   准备工作
    a.  主机名解析
    在heartbeat中,节点之间的通信使用的节点主机名称,因此必须确保每台主机的名称惟一,并且通过主机名能够访问到对应的IP地址。建议修改每个节点的/etc/hosts文件,使各节点保持一致:
    [root@node1 ha.d]# cat /etc/hosts
    192.168.110.128 node1 node1.yang.com
    192.168.110.129 node2 node2.yang.com
    b.  主机互信
    在集群中,建议使用集群主来管理整个集群,需要频繁的从主远程登录其他的成员,因此建议配置主机互信避免每次都输入密码进行操作。
    [root@node1 .ssh]# ssh-keygen -t rsa  //全部回车,使用空密码即可,此时会在/root/.ssh目录中产生id_rsa.pub的文件
    [root@node1 .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2
    //在节点1上将id_rsa.pub拷贝到node2即可。
    Node2上的配置与此类似。
  • 安装heartbeat软件
    由于在CENTOS6的YUM源中没有配置有heartbeat,因此需要安装额外的YUM源:
    a.  获取YUM源:
    wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
    rpm -ivh epel-release-6-6.noarch.rpm
    b.  Yum安装heartbeat
    Yum install –y heartbeat即可,安装完成后可以使用rpm –ql heartbeat |less查看一下安装产生的相关文件。
  • Heartbeat安装完成后,其工作目录为/etc/ha.d目录,工作依赖于ha.cf,haresources以及authkeys三个文件,这三文件需要手工从安装的帮助路径拷贝到/etc/ha.d目录。
    #cp-p /usr/share/doc/heartbeat-3.0.4/{ha.cf,authkeys,haresources} /etc/ha.d/
  • 配置ha.cf文件
    该文件为主配置文件,其中定义了相关日志文件位置、成员节点的信息、消息事件层通信的机制(单播、组播还是广播)等,在我们的场景中需要修改如下的事项,去掉相应行前面的注释标志#:
    [root@node1 ha.d]# cat /etc/ha.d/ha.cf
    debugfile /var/log/ha-debug     //用于观察heartbeat事务行为
    logfile /var/log/ha-log         //记录相关的日志
    udpport 694                 //通信端口694
    mcast eth0 225.0.0.1 694 1 0        //采用组播通信机制
    auto_failback on                //当主节点恢复时,资源回切
    node    node1.yang.com      //定义两个node,分别使用其主机名
    node    node2.yang.com
    ping 192.168.110.2          //由于集群只有2个节点,需要借助ping进行检测
  • 配置authkeys文件
    authkeys为成员节点通信的时候采用的加密机制确保通信安全,有三种加密机制,分别为CRC,MD5以及SHA。写法较简单,如下:
    auth 3      //定义认证采用的id
    3 md5 Hello!    //定义该id所对应的认证算法以及密钥
    该文件是为了确保节点间通信的安全性,建议配置权限为600.
  • 配置haresources文件
    haresouces文件为状态为主的节点需要启用的资源,以及状态为备的节点需要关闭的资源。资源以行为单位,格式如下:
    nodename    resources1 resource2 …
    其中nodename必须为ha.cf文件中配置的其中一个节点名称,用于表示资源希望运行在的那个服务器,称为集群主服务器。Resources之间使用空格隔开,这些resources实际上是heartbeat可以调用的脚本,其中IPaddr为软件提供的脚本,其他的脚本位于/etc/ha.d/rc.d/目录中;除了这些脚本外,/etc/init.d/中的脚本,只有符合LSB风格的也可以被调用。因此安装httpd后的httpd脚本是可以直接调用的。
    如果resources有参数传递,需要使用::进行分隔,多个参数之间也使用::进行分隔。
    本实验为httpd提供高可用服务,因此需要用到的资源如下:
    a.  对外提供服务的虚拟IP
    b.  提供WEB服务的httpd脚本,(安装apache后就有此脚本)
    haresource文件配置:
    node1.yang.com  192.168.110.100/24/eth0 httpd
    到此三个关键的文件就配置完成了,现在将三个文件拷贝至备机:
    scp -p authkeys haresources ha.cf node2:/etc/ha.d/
    特别注意:备机与主机的文件保持一致即可,注意haresources文件中的node1.yang.com不能修改为node2.yang.com,原因前面已经解释过。
  • 其他设置
    a.  由于集群所需要使用的服务都交由heartbeat软件进行整体控制,因此在两台设备需要确保的是heartbeat在运行,而诸如vip,httpd等资源由heartbeat控制即可。因此可以设置heartbeat开机即启动,将httpd开机关闭。
    [root@node1 ha.d]# chkconfig --list heartbeat
    heartbeat       0:off   1:off   2:on    3:on    4:on    5:on    6:off
    [root@node1 ha.d]# chkconfig --list httpd
    httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
    b.  为了方便后续测试,将两个节点的httpd的网页文件中写入不同的内容以示区分:
    [root@node1 ha.d]# cat /var/www/html/index.html
    Comes from node1.yang.com
    [root@node2 ha.d]# cat /var/www/html/index.html
    Comes from node2.yang.com
  • 开启heartbeat服务
    a.  启动主节点服务:
    Service heartbeat start
    b.  在主节点上启动备节点上面的服务:
    ssh root@node2 “service heartbeat start”
  • 测试
    a.  在node1上面ip addr查看VIP地址:
    [root@node1 ha.d]# ip addr
    2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:70:82:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.128/24 brd 192.168.110.255 scope global eth0
    inet 192.168.110.100/24 brd 192.168.110.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe70:8269/64 scope link
    valid_lft forever preferred_lft forever
    b.  从客户端访问http://192.168.110.100

    c.  在集群主上面将eth0 down掉,再刷新页面:

    d.   在集群备上机查看VIP:
    [root@node2 ha.d]# ip addr
    2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:46:09:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.129/24 brd 192.168.110.255 scope global eth0
    inet 192.168.110.100/24 brd 192.168.110.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe46:9ee/64 scope link
    valid_lft forever preferred_lft forever
    分析:
    此时主节点ping192.168.110.2不通,同时与不能与备节点通信,因此主节点认为自己故障,将资源放弃;而备节点可以ping通192.168.110.2,而不能与主节点通信,因此认为自己正常,启用相应的资源。可以分析/var/log/ha-debug以及/var/log/ha-log日志中的详细过程。同时可以通过抓包看到节点间的通信以及各节点ping 192.168.110.2地址。
  • 总结:
    本实验简要的说明了heartbeat如何为集群提供httpd的高可用,在真实的环境中应当是heartbeat为各种服务代理服务提供高可用,通过将反向代理将服务转发到后端服务的集群进行处理。而heartbeat为反向代理本身提供集群服务。可以看到所有用于提供服务的资源被heartbeat统一管理,在主节点上开启,当主节点出现故障经过集群判断新的主后,在新的主上面重新启用这些资源。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660158-1-1.html 上篇帖子: 高可用集群HA(heartbeat) 下篇帖子: heartbeat多播(记录改变过程)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表