corosync和pacemaker高可用mariadb和haproxy

高可用的解决方案keepalived只是提供了最简单的高可用功能,真正高级的功能keepalived很难完成。openAIS规范提供完善的解决方案,但是很重量级很多功能考虑的很全面、很细致,了解这些我们才可以更加深入的理解高可用的完整的体系,当遇到特殊的高可用场景我们必须使用这些方案才可以解决。

OpenAIS规范的解决方案

这个规范一直迭代到今天,形成的完整的体系如图1.1

图1.1

既然多个主机要组成一个集群,那么就要有一个软件帮助多个主机间实现心跳信息通告,这个实现通告的在OpenAIS规范中被定义为message layer。

整个集群的服务管理需要一个软件,被规范定义为cluster resource manager集群资源管理。这只是集群资源管理,但是真正到执行操作的时候需要一个可以管理主机服务的接口,这个接口软件被规范定义为location resource manager本地资源管理。这一层才是真正执行操作的,产生这一层的原因基本上所有的服务设计时都没考虑被高可用,但是我们有需要操控这些服务只好制造一个可以调用其他服务器的管理层。

message layer常用组件有:heartbeatv1,2,3,corosync(suse研发),cman(redhat)

cluster resource manager常用组件有:pacemaker(Redhat),heartbeatv1,2

管理接口常用组件:crmsh(suse),pcs(Redhat)

网页管理接口:hawk, LCMC, pacemaker-mgmt

centos6还有RHCS

高级功能

之所以说keepalived的功能简单是因为以下这些

quorum投票功能

法定票数(大于总票数的一半也可以设定不用大于一半) ,用来判定集群分裂的场景中,某些节点是否可以继续以集群方式运行;

当偶数个机器组成的机器分裂,投票可以借助仲裁设备:

ping node

ping node group

quorum disk: qdisk

without quorum之时,如何采取对资源管控的策略:

stopped

ignore

freeze

suicide

资源隔离机制

当计算机故障,防止服务抖动和或者防止同时向共享存储写数据导致存储破坏

节点级别:STONITH

电源交换机

服务硬件管理模块

虚拟化软件关闭虚拟机

资源级别:

共享存储器禁止写数据

资源粘性

资源倾向于留在当前的分数(-oo, +oo)

资源约束

位置约束:资源对某节点运行的倾向性(-oo, +oo)

inf: 正无穷

-inf: 负无穷

n:

-n:

排列约束:定义资源彼此间的倾向性(是否在一起)

inf:

-inf:

n, -n

顺序约束:属于同一服务的多个资源运行在同一节点时,其启动及关闭的次序约束;

A --> B --> C

C --> B --> A

资源组组:组内资源将会组内顺序启动和关闭

RA

resource Agent真正管理service的工具

大致有一下分类lsb,ocf,service,stonith,systemd

由于资源可以这样灵活的组合配置,那么我们可以打造一个极端的应用场景,五台计算机提供四种不同的服务,我们把五台计算机直接组成一个集群,根据资源粘性把四个服务分布运行在不同的计算机上,然后留一台计算机做给其他四个计算机做backup。不仅如此,当五台计算机中两台计算机宕机,我们可以让四种服务运行在三台计算机之上。

corosync和pacemaker

实践

目前有两个比较常用的配置接口一个是crmsh一个pcs,这里我首先使用crmsh构建一个mariadb高可用集群,然后使用pcs构建一个haproxy集群,这里都使用双节点。如图1.2

图1.2

如图vip172.16.29.11在两个node间流转

准备配置

node1的配置

#下载crmsh的yum源的配置文件,以为crmsh没有被被收录到源中
wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/network:ha-clustering:Stable.repo -P /etc/yum.repos.d/
yum install pacemaker crmsh mariadb-server haproxy pcs -y
vim /etc/corosync/corosync.conf
#配置文件事例
totem {
    version: 2
    crypto_cipher: aes256
    crypto_hash: sha1
    interface {
        ringnumber: 0
#集群主机所在的网段
        bindnetaddr: 172.16.0.0
#多播地址
        mcastaddr: 239.255.101.99
        mcastport: 5405
        ttl: 1
    }
}
logging {
    fileline: off
    to_stderr: no
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: no
    debug: off
    timestamp: on
    logger_subsys {
        subsys: QUORUM
        debug: off
    }
}
quorum {
    provider: corosync_votequorum
}
#配置组成集群的两个主机
nodelist {
    node {
        ring0_addr: 172.16.29.10
        nodeid: 1
    }
    node {
        ring0_addr: 172.16.29.20
        nodeid: 2
    }
}
#使用这个命令生成corosync通信的秘钥
corosync-keygen
vim /etc/hosts
#添加域名解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.29.10 node1.org node1
172.16.29.20 node2.org node2
#主机间使用秘钥通信
ssh-keygen -t rsa #这个命令一路按回车就可以了
ssh-copy-id -i .ssh/id_rsa.pub node2
#复制配置文件到node2,这一步需要在node2安装pacemaker后执行
scp -p authkey corosync.conf node2:/etc/corosync/
scp /etc/hosts node2:/etc/
#开启服务,并授权用户登录,创建数据库jim
systemctl start mariadb.service
mysql <<eof
grant all on *.* to ‘tom‘@‘172.16.%.%‘ identified by ‘12345‘;
create database jim;
eof
#设置mariadb开机启动,这一项是pacemaker控制systemd管理的服务根本
systemctl enable mariadb.service
#启动服务
systemctl start pacemaker.service corosync.service

node2的配置

#下载crmsh的yum源的配置文件,以为crmsh没有被被收录到源中
wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/network:ha-clustering:Stable.repo -P /etc/yum.repos.d/
yum install pacemaker crmsh mariadb-server pcs -y
#开启服务,并授权用户登录,创建数据库tom,两个主机的数据库故意创建不一样方便查看服务器迁移
systemctl start mariadb.service
mysql <<eof
grant all on *.* to ‘tom‘@‘172.16.%.%‘ identified by ‘12345‘;
create database tom;
eof
#设置mariadb开机启动,这一项是pacemaker控制systemd管理的服务根本
systemctl enable mariadb.service
#启动服务
systemctl start pacemaker.service corosync.service

mariadb集群服务配置

mariadb集群服务的配置使用crmsh配置,crmsh配置的集群服务会自动同步到集群的每一个节点,同步的机制是配置信息是首先传送到DC节点,然后通告给其他节点。

crmsh的使用方法是输入crm进入交互接口然后输入配置,这个配置接口和交换机的配置接口使用类似,并且拥有强大的补全功能。具体怎么使用我不介绍了,可以使用help [command]查看帮助信息,帮助信息最底下还有事例。

crm configure #进入crm配置接口
property stonith-enabled=false #关闭stonith,因为我们没有具体的设备
property no-quorum-policy=ignore #不使用法定票数,因为我们配置的是双节点的集群,一个节点故障另一个节点拥有的票数就不会大于半数
primitive vip ocf:heartbeat:IPaddr params ip="172.16.29.11" #定义vip集群资源
primitive mariadb systemd:mariadb #定义mariadb集群资源
group dbservice vip mariadb #把vip和mariadb资源定义为组,一群两个资源运行在同一台主机之上
monitor vip 20s:20s #定义vip的监控,每20s监控一次,延迟20s
monitor mariadb 20s:20s
commit #保存配置,并使其生效

haproxy集群服务配置

haproxy集群配置使用pcs,pcs不是交互式管理接口,我们可以直接输入管理命令管理

node1的配置

systemctl start pcsd.service #开启pcsd进程
systemctl enable haproxy.service #设置haproxy开机启动,这一项是pacemaker控制systemd管理的服务根本
vim /etc/haproxy/haproxy.cfg #在default中添加如下内容
    stats enable
    stats hide-version
    stats uri     /ha10

node2的配置

systemctl start pcsd.service #开启pcsd进程
systemctl enable haproxy.service #设置haproxy开机启动,这一项是pacemaker控制systemd管理的服务根本
vim /etc/haproxy/haproxy.cfg #在default中添加如下内容
    stats enable
    stats hide-version
    stats uri     /ha20

集群的配置的配置

pcs resource create vip2 ocf:heartbeat:IPaddr params ip="172.16.29.12" op monitor interval=20s timeout=20 #定义vip2资源,并定义监控
pcs resource create haproxy systemd:haproxy op monitor interval=20s timeout=20 #定义haproxy资源,并定义监控
pcs constraint order set vip haproxy #使用顺序约束把vip2和haproxy绑定在一起

测试

然后我们就可以根据两台主机的ip地址情况,测试高可用情况了

时间: 2024-10-22 15:22:32

corosync和pacemaker高可用mariadb和haproxy的相关文章

corosync v2 + pacemaker 高可用mariadb服务

高可用集群有多种解决方案,例如keepalived程序可实现,还有就是ais家族中实现高可用集群多多种方式:较早出现的heartbeat,OpenAIS仅作为参考性模型,后来红帽在OpenAIS基础上研发的CMAN, 还有OpenAIS参考性中,实现独立出来成为的项目corosync都可用于高可用集群:但是,这些应用程序都是源于最早的heartbeat程序开发出来的. OpenAIS家族中对于高可用集群在实现时的方式,都遵循一样的工作模式:都是通过集群方式来提高系统可用性,那么就是通过提供冗余主

Corosync Pacemaker 高可用 Mariadb

1.安装前准备  高可用集群一般需要配置时间同步.基于主机名互相通信.ssh的互信通信,Corosync Pacemaker 仅需要配置时间同步.基于主机名互相通信即可: yum install chrony          #安装chrony vim /etc/chrony.conf      server172.16.0.1 iburst  #设置为可用的ntp服务器 systemctl restart chronyd     #启动服务 vim /etc/hosts           

drbd与corosync/pacemaker 结合构建高可用mariadb服务

drbd与corosync/pacemaker 结合构建高可用mariadb drbd介绍: 高可用节点之间为了使切换节点时数据一致,不得不使用共享存储,共享存储一般只有两种选择:NAS 和 SAN.NAS是文件系统级别的共享,性能低下,访问也受限制,使用时有诸多不变:SAN块级别共享存储,但又太贵.当资金不足时,就可以考虑drbd. drbd是跨主机的块设备镜像系统,一主一从(两个主机只能有一个能进行写操作,slave主机只能接受master主机传过来的数据).drbd是工作于内核中的,工作时

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

一.Haproxy简介 Haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 二.HAProxy的特点1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚

pacemaker+corosync实现zabbix高可用集群

一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.centos6.x+pacemaker+corosync实现zabbix高可用 1.环境说明 五.安装pacemaker和corosync(各个节点均要运行) 1.前提条件各个节点完成主机解析工作. 2.各个节点的时间同步 3.各个节点完成互信工作 4.关闭防火墙与SELinux 5.安装pacema

HA专题: 使用pacemaker+corosync实现MySQL高可用

HA专题: 使用pacemaker+corosync实现MySQL高可用 前言 上篇文章我们介绍了使用pacemkaer+corosync实现简单的nginx高可用, 这篇文章我们介绍如何使用pacemaker+corosync实现MySQL高可用, 并且此次我们手动编辑配置文件来实现corosync的配置 实验拓扑 实验环境 主机 IP 功用 node1.anyisalin.com 172.16.1.2 MySQL服务, HA节点 node2.anyisalin.com 172.16.1.3

Ansible自动化部署corosync+pacemaker高可用实现httpd

一.ansible简介 ansible是2012年出现的自动运维工具,基于python开发,集合了众多工具的优点,可以实现批量系统配置.批量程序部署.批量运行命令.批量配置文件修改等功能.最主要的是ansible是基于多模块工作的,而且ansible是无需客户端安装就可以基于ssh实现管理节点的,是轻量级的自动化运维工具,ansible是个框架,主要包括以下几个组件: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:设置管理的

基于corosync+pacmaker实现高可用集群

目前,corosync功能和特性已经非常完善了,所以pacmaker独立出来之后通常都将pacmaker和corosync结合来使用,corosync并没有通用的资源管理器,因此要借助pacmaker来实现 常用的资源管理器: ·cman:rgmanager ·crm: crm的资源约束有: ·location :资源对节点的偏好 ·colocation:排序约束:资源运行在同一节点上的可能性,需要一定评估的 ·order: 资源采取动作的次序 资源有很多属性,以下为最常见的几类 ·集群属性 ·

Keepalived高可用服务器以及haproxy的负载均衡

Keepalived高可用服务器以及haproxy的负载均衡 Keepalive运行原理 Keepalived检测每个服务节点状态 当服务器节点异常或工作出现故障,keepalived将故障节点从集群从集群系统中踢除 故障节点恢复后,自动将其加入 使用keepalived软件配置HA集群 使用keepalived软件配置HA集群 1.提供服务的主机需要装keepalived和web服务 yum -y install httpd keepalived 2.修改提供服务的主机的keepalived的