集群高可用之heartbeat

简介: 版权声明:版权归属于eryajf.net,如欲有更多交流,可以访问个站:http://eryajf.net。未经授权,禁止转载。 https://blog.csdn.
版权声明:版权归属于eryajf.net,如欲有更多交流,可以访问个站:http://eryajf.net。未经授权,禁止转载。 https://blog.csdn.net/eryajf/article/details/77488558

集群高可用之heartbeat

 

本人已建立个人博客站点,所以文章也都在那边发表了,想了解一下的,可以点这里:点击打开链接

本文是个人整理,不禁人之转载,转载时请注明出处!!

1) 基础准备,主备节点都需安装

         tar  -zxvf hearbeat.tar.gz

         cd  hearbeat

          yum-y install *

         cd  /usr/share/doc/heartbeat-3.0.4/

         cpha.cf authkeys  haresources  /etc/ha.d/               配置文件需拷贝到默认目录下

 

2) 认证服务,节点之间的认证配置,修改/etc/ha.d/authkeys ,在主上修改

         ddif=/dev/random bs=512 count=1 | openssl md5 #生成密钥随机数

         vimauthkeys

                  auth1

                  1md5 a4d20b0dd3d5e35e0f87ce4266d1dd64

    

                  chmod600  authkeys

 

3) heartbeat 主配置文件,修改 /etc/ha.d/ha.cf ,在主上修改

         bcast   eth0         (91行附近,第一个)

         node    www.centos1.com                 一主一备节点,需注意能后被两台主机之间解析

         node    www.centos2.com

         node    localhost.localdomain   (如果没有这一行,会报错)


          解析暂时就写入hosts文件


4) 配置 haresources 文件,在主上修改(底部添加)

         www.lql-1.com  IPaddr::192.168.66.100/24/eth0:0

         www.lql-1.com代表的是主服务器ipaddr是其自带的一个脚本(在/etc/ha.d/resource.d下),是一个网卡启动脚本,后边所跟的,就是定义的虚拟网卡的IP以及子网以及设备

 

5) 将主三个配置文件拷贝到从上

         cd  /etc/ha.d/

         scp ha.cf authkeys  haresources  root@www.centos1.com:/etc/ha.d/        

 

6)两台主机都安装nginx

          略……(nginx的安装在这里就不再详述)

7) 启动服务进行验证

         主:service  httpd start

         主:service  heartbeat start

从:service  httpd start

从:service  httpd start


插曲!!!

这个地方,启动的时候出了一个错误,很蛋疼的啊,卡了我一个多小时,各种搜索,最后还真是在google里边查到的,先来看报错信息


         看到这个我先去谷歌翻译了一下,大概知道了,应该是跟node,或者uname -n这两个有关系,再去看日志文件


         这个时候,我想,应该就是这个地方的问题了,又uname -n查看了一下,是localhost.localdomain,知道了问题,但是不知道解决的办法,还是非常急人的

         最后看到了一个解决策略


         看完感觉表达的并不是很清楚,于是自己尝试。

         打开了主配置文件

         vim  /etc/ha.d/ha.cf

         在刚才定义的两个主机名下边,添加node    localhost.localdomain      指明了主机名,这样应该就不会打架了吧。

   

         果然,再启动,报错问题就不存在了!!!

 

         同样,对另外一台主机,也进行相同的配置,然后启动。当两台机器都开启之后,虚拟IP就会自动启动了!!(如果只开一个,则eth0:0是不会自动起来的)这是当天搞到夜里两点多才弄清楚的一个问题!!!

 

         更奇妙的则在第二天,同桌小伙伴问我要文档,我说里边有个坑,直接给你,那这个坑就没有意义了(毕竟我踩的那么辛苦,你不也踩踩,让我心里如何平衡,哈哈),也知道他对于技术喜欢钻研,有问题别告诉我答案的人,果然,他说你把那段删了,其他的给我。事情如我所愿,也出我意料,如我所愿的是他也到这个地方之后卡了大半天,出我意料的是,他在问题出现的基础上,给出了第二种的解决办法。我同样记录在下边:

         其实报出来的问题,总结就是一句话,主配置文件中定义的node两个域名与本机hostname不一致,所以会报出这个错误。上边我找到的解决办法,是在主配置文件当中,定义出node uname -n 为一致,问题得以解决,那么现在通过修改主机名与其一致,也是一个可行的办法。

         修改主机名的方式很多种,这里通过与刚才定义的node,然后写入/etc/hosts之后,重启虚拟机,然后看到主机名变成了www,再启动,就能够启动了。

         根据我与同桌讨论,结合报错,得出一个结论。

         主配置文件当中node至少有一条定义与uname  -n 保持一致,这个报错才会消失无踪!

两个方案都是可以的。这种学习的快乐,以及解决问题,最后发现了问题出现的原因,以及解决问题的思路以及各种办法,真是什么也换不来的。


上接!!

然后查看网卡已经启动了

   

现在就可以在浏览器当中,通过虚拟IP192.168.66.100来进行访问了

        假如说其中一台主机挂掉了(关闭A的网卡)

此时查看一下B主机的网卡,会发现多了个虚拟IP

         再到浏览器当中通过虚拟IP访问,仍然没有问题

然后再把A主机的网卡启动链接,回来,能够看到两台主机都有了虚拟IP

 

现在可以通过脚本对本机的访问检测,如果nginx服务挂了(通过访问网站的返回值判断),那么heartbeat也关闭,另外一台的整个服务就能够正常运转了

#!/bin/bash
 
function check_code {
   url=$1
   curl -o /dev/null  -s -w%{http_code} $url
}
 
web_code=$( check_code 10.10.10.100 )
 
if [ "$web_code" !="200" ]
   then
       service heartbeat stop
fi

记得脚本规范化,放到/usr/local/script下

将脚本添加进定时任务

cronta -e (添加)

*/1 * * * *  bash  /usr/local/script/nginx_check.sh

保存退出(默认每分钟检测一次)

回头给脚本添加执行权限,如果没有,写在定时任务里有时候不会执行!

chmod +x  /usr/local/script/nginx_check.sh

          service  crond restart

         chkconfig  crond on

         到这里,基本上就全部配置妥当了!!!

目录
相关文章
|
1天前
|
人工智能 运维 安全
|
4天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
374 124
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
|
6天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
601 107
|
3天前
|
Java 数据库 数据安全/隐私保护
Spring 微服务和多租户:处理多个客户端
本文介绍了如何在 Spring Boot 微服务架构中实现多租户。多租户允许单个应用实例为多个客户提供独立服务,尤其适用于 SaaS 应用。文章探讨了多租户的类型、优势与挑战,并详细说明了如何通过 Spring Boot 的灵活配置实现租户隔离、动态租户管理及数据源路由,同时确保数据安全与系统可扩展性。结合微服务的优势,开发者可以构建高效、可维护的多租户系统。
197 127
|
3天前
|
Web App开发 前端开发 API
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
224 124
|
3天前
|
人工智能 数据可视化 测试技术
Coze平台指南(3):核心功能-创建智能体与设计角色
Coze 智能体是由大语言模型驱动,通过提示词设定角色,并借助知识库、插件和工作流扩展能力,以执行特定任务的AI助手。对测试工程师而言,精心设计的智能体可显著提升测试效率与质量,关键是要准确理解测试需求,并将其转化为智能体的角色设定和功能配置。建议进一步学习知识库与工作流,以深化应用。
|
7天前
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;

热门文章

最新文章