Pacemaker+Corosync+Drbd快速配置指南

1. 分布式块设备DRBD部署

1.1 基础环境初始化

1.2 部署DRBD环境

主备服务器都需要执行

# 更新系统内核,并重启服务器
[[email protected] ~]# yum install kernel-devel kernel -y
[[email protected] ~]# reboot

# 开始安装DRBD
[[email protected] software]# tar zxf drbd-9.0.18-1.tar.gz
[[email protected] drbd-9.0.18-1]# make KDIR=/usr/src/kernels/3.10.0-957.21.3.el7.x86_64/
[[email protected] drbd-9.0.18-1]# make install
[[email protected] software]# yum install drbd90-utils-9.6.0-1.el7.elrepo.x86_64.rpm -y
[[email protected] software]# yum install drbd90-utils-sysvinit-9.6.0-1.el7.elrepo.x86_64.rpm -y

1.3 创建drbd资源文件

[[email protected] software]# vim /etc/drbd.d/data.res
resource data {
  on node1 {                                  # on 主机名
    device    /dev/drbd0;                     # 映射的drbd磁盘,可默认,本教程默认/dev/sdb1
    disk      /dev/sdb1;          # 设置后面存放数据的drbd磁盘
    address   192.168.10.30:7789;
    meta-disk internal;
  }
  on node2 {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.10.40:7789;
    meta-disk internal;
  }
}

1.4 修改drbd全局和通用配置文件

[[email protected] ~]# vim /etc/drbd.d/global_common.conf
global {
    usage-count yes;
}
common {
    handlers {
    }
    startup {
    }
    options {
        # 当块设备被挂在时自动提升为primary,被卸载时候自动降级为secondary
        auto-promote yes;
    }

    disk {
    }

    net {
        # 使用协议C,保证实时同步
        protocol C;
    }
}

1.5 启动drbd服务

[[email protected] ~]# systemctl start drbd

1.6 创建drbd磁盘分区

# 如果用于drbd存储分区的磁盘之前已经存在文件系统例如执行过mkfs.xfs /dev/sdb1操作的话,在创建drbd metadata时候会报错此时需要破坏原先的文件系统,执行如下命令
[[email protected] ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=100

# 创建metadata
[[email protected] ~]# drbdadm create-md data
  --==  Thank you for participating in the global usage survey  ==--
The server‘s response is:
initializing activity log
initializing bitmap (320 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

# 查看此时drbd运行状态,node1和node2均为secondary,且Inconsistent数据处于未同步状态
[[email protected] ~]# drbdadm status data
data role:Secondary
  disk:Inconsistent
  node2 role:Secondary
    peer-disk:Inconsistent

1.7 设置drbd主节点并格式化文件系统

# 第一次需要时手动设置一个主节点,后续可以通过mount自动切换主备节点
[[email protected] ~]# drbdadm primary --force data

# 创建文件系统
[[email protected] ~]# mkfs.xfs /dev/drbd1
meta-data=/dev/drbd1             isize=512    agcount=4, agsize=655210 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2620839, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none

# 挂载到本地目录
[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount /dev/drbd1 /mydata/
[[email protected] ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.5G  6.6G  18% /
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.6M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/sda1               1014M  156M  859M  16% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/drbd1                10G   33M   10G   1% /mydata
[[email protected] ~]# drbdadm status data
data role:Primary
  disk:UpToDate
  node2 role:Secondary
    peer-disk:UpToDate

1.8 主备切换测试

# /mydata/下写入文件后,主机卸载磁盘,备机挂载磁盘,备机上观察文件是否同步过来
[[email protected] ~]# umount /mydata/
[[email protected] ~]# drbdadm secondary data
[[email protected] ~]# drbdadm status data
data role:Secondary
  disk:UpToDate
  node2 role:Secondary
    peer-disk:UpToDate

[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount /dev/drbd1 /mydata/
[[email protected] ~]# drbdadm status data
data role:Primary
  disk:UpToDate
  node1 role:Secondary
    peer-disk:UpToDate

[[email protected] ~]# ls /mydata/
a  b  c

2. 高可用组件pacemaker+corosync部署

2.1 安装相关组件

# 主备机添加crm管理工具yum源
[[email protected] ~]# vim /etc/yum.repos.d/crmsh.repo
[network_ha-clustering_Stable]
name=Stable High Availability/Clustering packages (CentOS_CentOS-7)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/repodata/repomd.xml.key
enabled=1

# 安装crmsh管理工具
[[email protected] ~]# yum install crmsh pacemaker corosync

2.2 配置corosync

[[email protected] ~]# cd /etc/corosync/
[[email protected] corosync]# cp corosync.conf.example corosync.conf
[[email protected] corosync]# vim corosync.conf
totem {
    version: 2

    crypto_cipher: aes256
    crypto_hash: sha1

    interface {
        ringnumber: 0
        bindnetaddr: 192.168.10.30
        mcastaddr: 239.255.1.1
        mcastport: 5405
        ttl: 1
    }
}

logging {
    fileline: off
    to_stderr: no
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    debug: off
    timestamp: on
    logger_subsys {
        subsys: QUORUM
        debug: off
    }
}

quorum {
    provider: corosync_votequorum
}

nodelist {
        node {
        ring0_addr: node1
        nodeid: 1
        }
        node {
        ring0_addr: node2
        nodeid: 2
        }
}

# 生成corosync密钥
[[email protected] corosync]# corosync-keygen
[[email protected] corosync]# scp authkey [email protected]:/etc/corosync/
[[email protected] corosync]# scp corosync.conf [email protected]:/etc/corosync/

# 启动corosync和pacemaker
[[email protected] ~]# systemctl start corosync
[[email protected] ~]# systemctl start pacemaker

# 查看集群状态
[[email protected] corosync]# crm_mon
Stack: corosync
Current DC: node1 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Fri Jul  5 21:48:22 2019
Last change: Fri Jul  5 21:45:52 2019 by hacluster via crmd on node1

2 nodes configured
0 resources configured

Online: [ node1 node2 ]

No active resources

2.3 关闭stonish设备

[[email protected] ~]# crm
crm(live)# configure
crm(live)configure# show
node 1: node1
node 2: node2
property cib-bootstrap-options:     have-watchdog=false     dc-version=1.1.19-8.el7_6.4-c3c624ea3d     cluster-infrastructure=corosync
crm(live)configure# property stonith-enabled=false
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# property start-failure-is-fatal=false
crm(live)configure# property default-action-timeout=180s
crm(live)configure# rsc_defaults resource-stickiness=100
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# show
node 1: node1
node 2: node2
property cib-bootstrap-options:     have-watchdog=false     dc-version=1.1.19-8.el7_6.4-c3c624ea3d     cluster-infrastructure=corosync     stonith-enabled=false     no-quorum-policy=ignore     start-failure-is-fatal=false     default-action-timeout=180s
rsc_defaults rsc-options:     resource-stickiness=100

2.4 添加Virtual IP资源

crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=192.168.10.50 op monitor 30s
crm(live)configure# commit

2.4 添加DRBD磁盘资源

添加drbd磁盘开机自启动,因为集群只是接管drbd的挂载,而不是启动drbd,所有drbd状态必须都是secondary

crm(live)configure# primitive drbd ocf:heartbeat:Filesystem params device=/dev/drbd1 directory=/mydata fstype=xfs
crm(live)configure# commit

2.5 绑定VIP和DRBD资源,并设置先启动VIP后启动DRBD

利用group命令进行分组和排序启动

crm(live)configure# group vip_drbd vip drbd
crm(live)configure# commit

原文地址:https://blog.51cto.com/11267188/2417624

时间: 2024-11-06 09:39:04

Pacemaker+Corosync+Drbd快速配置指南的相关文章

pacemaker+corosync+drbd实现自动故障转移集群

1,两台cenots7.0服务器,我是用KVM虚拟机搭建的. 2,互相解析hosts文件 3,关闭iptables和selinux,ssh开启 4,配置yum源,安装pacemaker,corosync,drbd 5,配置drbd,选择procoto C ,复制模式,验证结果 6,配置corosync,基于crm管理VIP,FSsystem,DRBD块设备 7,验证结果,能否发生故障自动切换. 1,drbdAA  eth0 9.111.222.59  eth1 192.168.100.59 dr

Oracle 11g Data Guard 物理备库快速配置指南(上)

缘起 最近做了10g和11g的物理备库配置实验,发现 Data Guard 其实很容易,但是缺少好文档.我是参考官方文档做的实验,觉得它写的不是很清楚的. Google 出来两个pdf文档,读了觉得比官方文档强很多.翻译下,也许会对某些朋友有用.翻译的同时我也好更熟悉下这两个文档.好久没翻译过英文了,可以顺便练练手. 原文档下载地址(墙外): Configure Dataguard 11gR2 Physical Standby Part 1 Configure Dataguard 11gR2 P

Docker快速配置指南

下面是一个跟 Docker 网络相关的命令列表. 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效. -b BRIDGE or --bridge=BRIDGE --指定容器挂载的网桥 --bip=CIDR --定制 docker0 的掩码 -H SOCKET... or --host=SOCKET... --Docker 服务端接收命令的通道 --icc=true|false --是否支持容器之间进行通信 --ip-forward=true|false --请看下文

高级配置指南

快速配置指南 下面是一个跟 Docker 网络相关的命令列表. 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效. -b BRIDGE 或 --bridge=BRIDGE 指定容器挂载的网桥 --bip=CIDR 定制 docker0 的掩码 -H SOCKET... 或 --host=SOCKET... Docker 服务端接收命令的通道 --icc=true|false 是否支持容器之间进行通信 --ip-forward=true|false 请看下文容器之间的

Corosync+Pacemaker+MySQL+DRBD(二)

上接Corosync+Pacemaker+MySQL+DRBD(一)http://9124573.blog.51cto.com/9114573/1768076 ⑶布署corosync+pacemaker ◆安装软件包 pacemaker依赖corosync,安装pacemaker包会连带安装corosync包 yum -y install pacemaker [[email protected] ~]# yum -y install pacemaker;ssh [email protected]

corosync+pacemaker+crmsh+DRBD实现数据库服务器高可用集群构建

  DRBD (DistributedReplicated Block Device) 是 Linux 平台上的分散式储存系统.其中包含了核心模组,数个使用者空间管理程式及 shell scripts,通常用于高可用性(high availability, HA)丛集.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 是在同一台电脑内,而 DRBD 是透过网络. DRBD 是以 GPL2 授权散布的自由软件. 实验架构图: 一.高可用集群构建的前提条件 1.主机名互相解析,实现

how-to create a high-availability mysql setup with corosync pacemaker and drbd on ubuntu

前言 坑无处不有.对各个组件大家都是仁者见仁智者见智. 各个组件的工作原理适用场景就不在一 一阐述.--待续--环境准备Corosync 安装与配置Pacemaker 安装与配置DRBD 安装与配置MySQL 安装与配置Crm 资源管理 系统结构 环境准备 $cat /etc/issue Ubuntu 14.04.4 LTS \n \l $uname  -r 4.2.0-27-generic [Both] $grep '10\|20' /etc/hosts 172.16.9.10 eva.suz

corosync+pacemaker+mysql+drbd

一.什么是DRBD DRBD(Distributed Replicated Block Device)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 二.集群中常见的存储类型 DAS:Direct Attached Storage:drbd属于此类 NAS:Network Attached Storage:如nfs SAN:Storage Area Network:如iSCSI DAS和SAN输出的是设备接口,前端各节点的内核分别维护文件锁,若前端节点之间要求同时读写

CentOS 6.5环境实现corosync+pacemaker实现DRBD高可用

DRBD (Distributed Replicated Block Device)分布式复制块设备,它是 Linux 平台上的分散式储存系统,通常用于高可用性(high availability, HA)集群中.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 一般配置在一台服务器内,而 DRBD 是通过网络. DRBD Resource:DRBD所具有的几种属性: resource name:可以使用除空白字符外的任意ACSII表中的字符: drbd设备:drbd的设备的访