菜鸟学Linux 第088篇笔记 配置heartbeat基于crm管理

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

菜鸟学Linux 第088篇笔记 配置heartbeat基于crm管理





内容总览

上节回顾

CIB Cluster Information Base

/usr/lib/hearbeat下的文件解析

组播地址

配置heartbeat 基于crm来进行资源管理

基于gui的方式来实现集群的配置

基于hb v2, crm来实现MySQL高可用集群






上节回顾

web

vip,http,filesystem



HA services




Resource Type

primitive (native)

group

clone

STONITH (Shot The Other Node In The Head)

Cluster Filesystem

dlm: Distributed Lock Manager

master/slave

drbd: distribution replicated block device 



资源粘性

资源是否倾向于留在当前节点

正数:乐意

负数:离开


资源约束

location

colocation

order



heartbeat

authkeys

ha.cf

node

keepalive

bcast,mcast,ucast(先其一)

haresource


HA:

时间同步

ssh互信

主机名称要与uname -n保持一致,并通过/etc/hosts解析




CIB Cluster Information Base 集群信息库

同haresources配置文件




/usr/lib/hearbeat下的文件解析

ha_propagate 当某台节点上的资源信息配置文件更改,用来将其同步其它节点使用的

haresources2cib.by 用来将/etc/ha.d/haresources所配置的资源转换为xml格式 并存放

   至/var/lib/heartbeat/crm目录下

send_arp 当节点间资源切换时用来发广播自问自答,自己的节点再回复广播(mac变更)

pengine (policy engine) 计算

tengine (transaction engine) 协调

quorumd 法定票数

lrmd (local resource manager)

ccm (cluster configuration manager) 管理cib提供的专用管理工具




CRM (Cluster Resource Manager)

为那些非ha-aware的应用程序提供调用的基础平台

提供命令行式的交互来管理资源、配置等


crmd 进程  提供一个管理的API

提供GUI接口

提供CLI接口


crm --> pacemaker 管理功能变得非常强大



组播


原理简介


  组播报文的目的地址使用D类IP地址, 范围是从224.0.0.0到239.255.255.255。D类

址不能出现在IP报文的源IP地址字段。单播数据传输过程中,一个数据包传输的路径

是从地址路由到目的地址,利用“逐跳”(hop-by-hop)的原理在IP网络中传输。然而在

ip组播环中,数据包的目的地址不是一个,而是一组,形成组地址。所有的信息接收者都

加入 到一个组内,并且一旦加入之后,流向组地址的数据立即开始向接收者传输,组

中的所有成员都能接收到数据包。组播组中的成员是动态的,主机可以在任何时刻加入和

离开组播组。



组播组分类

  组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为

永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久

组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使

用的ip组播地址,可以被临时组播组利用。

  224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不

做分配,其它地址供路由协议使用;

  224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;

  224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内

有效;

  239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。



常用预留组播地址

  列表如下:

  224.0.0.0 基准地址(保留)

  224.0.0.1 所有主机的地址 (包括所有路由器地址)

  224.0.0.2 所有组播路由器的地址

  224.0.0.3 不分配

  224.0.0.4 dvmrp 路由器

  224.0.0.5 ospf 路由器

  224.0.0.6 ospf dr

  224.0.0.7 st 路由器

  224.0.0.8 st 主机

  224.0.0.9 rip-2 路由器

  224.0.0.10 Eigrp 路由器

  224.0.0.11 活动代理

  224.0.0.12 dhcp 服务器/中继代理

  224.0.0.13 所有pim 路由器

  224.0.0.14 rsvp 封装

  224.0.0.15 所有cbt 路由器

  224.0.0.16 指定sbm

  224.0.0.17 所有sbms

  224.0.0.18 vrrp

  以太网传输单播ip报文的时候,目的mac地址使用的是接收者的mac地址。但是在传

输组播报文时,传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使

用的是组播mac地址。组播mac地址是和组播ip地址对应的。

iana(internet assigned number authority)规定,组播mac地址的高24bit为0x01005e

,mac 地址的低23bit为组播ip地址的低23bit。

  由于ip组播地址的后28位中只有23位被映射到mac地址,这样就会有32个ip组播地址

映射到同一mac地址上。




配置heartbeat 基于crm来进行资源管理

crm respawn 在ha.cf添加此条则表示要基于crm来管理资源


配置后将其配置文件同步到其它节点

# /usr/lib/heartbeat/ha_propagate



配置heartbeat 使用组播发送 心跳信息 (在生产环境中建议使用此种方式)



基于gui的方式来实现集群的配置 (注意一定要连接到DC的节点上)

heartbeat-gui 需要安装此rpm包

调用heartbeat-gui需要使用账号密码,安装heartbeat会自动创建该账号,

只需要修改其密码即可  hacluster账号

# passwd hacluster


运行图形窗口的heartbeat-gui(前提你的远程访问接口得支持,xmanager支持)

# hb_gui &

参数解析

linux-ha

with quorum 具有法定票数

No Quorum Policy 无法定票数所采取的动作 stop(默认) igonre freeze

Symmetric Cluster 对称自动流转 非对称需要指定流转

Stonith Action

Default Resource Stickiness

Default Resource Failure Stickiness

Is Managed Default 是否可管理

Cluster Delay


Advanced


Resources

add

native

IPaddr::192.168.11.100/16/eth0

gruop

location

order

colocation





定义组可以将资源都限定放到同一个节点中(资源的顺序即为启动资源的顺序)


定义资源的约束也可以做限定,限定其运行的节点,启动顺序等

先添加单个资源








基于hb v2, crm来实现MySQL高可用集群


nfs, samba, iscsi


NFS: MySQL app, data


/etc/my.cnf --> /etc/mysql/mysql.cnf

$MYSQL_BASE

--default-extra-file=


node1 uid gid mysql, mysql


3台电脑 两台ha  一台nfs


nfs ip 192.168.11.105

ha1 ip 192.168.11.101

ha2 ip 192.168.11.102



        1. 在nfs系统里创建lvm (logical volume manager)分区

         pvcreate

         vgcreate

         lvcreate -L #G -n name vg-name

        

         将lvm添加到开机挂载 /etc/fstab

         /dev/myvg/mydata /mydata ext3 defaults 0 0

        

         # mkdir /mydata

         # mount -a

        

        

        2. 创建mysql用户mysql组 id 3306 (注意ha也要创建相同ID的mysql)

         groupadd -g gid g-name

         useradd -u uid -g g-name -s /sbin/nologin -M mysql

        

         mkdir /mydata/data

         chown -R mysql.mysql /mydata/data

        

        

        3. 建立nfs共享目录

         vim /etc/exports

         /mydata/data 192.168.11.101/32(no_root_squash,rw),192.168.11.102(rw)

         (切记要配置no_root_squash要不然mysql初始化无法进行)

         exportfs -arv

        

         ha手动先测试是否可以挂载,并可以进行读写

         先创建相同的mysql组id和mysq用户id 

         然后再进行挂载测试 可以先给mysql一个家目录 测试可以写操作后 再改为不可登录 

         测试成功后umount

        

        4. ha1配置二进制mysql安装初始化

         安装和初始化这里不细说前边章节有详细安装过程

        

         注意先将nfs目录挂载至本地再执行如下选项 测试成功后将挂载再次umount

        

         配置/etc/my.cnf

         datadir = /mydata/data

         innodb_file_per_table = 1

        

         添加mysql服务脚本时,,切记不要让其开机自动启动

         chkconfig --add mysql

         chkconfig mysql off

        

         ha2只需要安装二进制mysql软件和将nfs目录挂载即可

         复制ha1上的配置文件my.cnf mysql服务脚本

         如果测试完成没有问题后将mysql服务关闭,并umount

        

        

        5.基于hb_gui来配置mysql的高可用

        ha mysql

         vip, mysql, filesystem

        

         vip --> filesystem --> mysqld

        

         # ha_gui &

         个人使用的xmanager必须是可以远程启动图形客户端的远程访问软件

        

         将其配置为同一个组 注意启动的前后顺序

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1893786如需转载请自行联系原作者


Winthcloud

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
38 21
|
26天前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
49 5
|
27天前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
53 13
|
3月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
343 7
|
4月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
4月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
121 9
|
4月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
131 5
|
5月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
154 2
|
5月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
163 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
289 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码