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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
12月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
588 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
12月前
|
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开发知识可参考相关书籍。
382 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
409 2
linux笔记 diff及patch的制作与使用
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
1216 0
|
缓存 负载均衡 监控
在Linux中,HAProxy、Keepalived或Heartbeat在高可用性解决方案中有何作用?
在Linux中,HAProxy、Keepalived或Heartbeat在高可用性解决方案中有何作用?