用户名:wangxing0122 文章数:17 评论数:1
访问量:6014:251:266:2 注册日期:2012-02-24
Ha1: ha2
Hostname=ha1.example.com hostname=ha2.example.com
Eth1:10.0.0.1/8 eth1:10.0.0.2/8
Eth2:20.0.0.1/24 eth2:20.0.0.2/24
Eth1 代表业务,eth2 为心跳
修改两个节点hosts 文件Cat /etc/hosts
20.0.0.1 ha1.example.com
20.0.0.2 ha2.example.com
Yum groupinstall Clustering -y
Yum install lvm2-cluster* -y 集群逻辑群管理
Vim /etc/lvm/lvm.conf 支持集群模式的lvm (两个节点上都需要修改)
将原来普通模式的locking_type =1 改为3 启用集群模式的lvm
Syetem-config-cluster 配置集群
添加节点,添加虚拟fence ,创建故障域。同步cluster.conf 文件到另外一个节点
一下过程在可在一个节点上操作:
/etc/init.d/cman start
/etc/init.d/clvmd start
创建集群lcuster lvm
使用iscsi 存储发起并挂载到本地
Pv /dev/sd(c,e,f,g……)
Vg vg_01 /dev/sd(c,e,f,g……) 创建好vg之后,在另外一个节点启动clvmd。同步vg)
Lv -L +10G -n lvm_01 vg_01
先添加虚拟vip
添加lvm
这里的lvm添加的时候name 是你自己给lvm的命名(这个命令可以自命),vg name需要填写创建vg的时候名字。Lvm name填写 创建lv的时候给lv的命名
例:
添加文件系统
填写lvm的挂载点
添加lvm
添加文件系统
添加脚本服务
添加集群服务
同步cluster.conf 文件
/etc/init.d/clvmd stop
/etc/init.d/cman stop
两个节点都需要关闭clvmd cman 服务。然后scp /etc/cluster/cluster.conf root@ha2.example.com:/etc/cluster/
启动集群
/etc/init.d/cman start
/etc/init.d/clvmd start
/etc/init.d/rgmanager start
基于DRBD+corosync对MariaDB做高可用集群(1) 阅读原文»
一、DRBD简介
DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RAID。它允许用户在远程机器上建立一个本地块设备的实时镜像。
二、DRBD是如何工作的呢
(DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary)。另一个主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,但这对于通常的故障切换高可用集群来说已经足够用了。有可能以后的版本支持两个节点进行读写存取。
三、DRBD与HA的关系
一个DRBD系统由两个节点构成,与HA集群类似,也有主节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问DRBD设备(/dev/drbd*)。在主节点写入的数据通过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,在备用节点上,DRBD只是将数据从DRBD设备写入到备用节点的磁盘中。现在大部分的高可用性集群都会使用共享存储,而DRBD也可以作为一个共享存储设备,使用DRBD不需要太多的硬件的投资。因为它在TCP/IP网络中运行,所以,利用DRBD作为共享存储设备,要节约很多成本,因为价格要比专用的存储网络便宜很多;其性能与稳定性方面也不错
四、DRBD复制模式
协议A:
异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点
协议B:
内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘
协议C:
同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽,一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议
五、 DRBD工作原理图
DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,如图所示:
六、安装配置
1.下载
drbd共有两部分组成:内核模块和用户空间的管理工具。其中drbd内核模块代码已经整合进Linux内核2.6.33以后的版本中,因此,如果您的内核版本高于此版本的话,你只需要安装管理工具即可;否则,您需要同时安装内核模块和管理工具两个软件包,并且此两者的版本号一定要保持对应。
目前适用CentOS 5的drbd版本主要有8.0、8.2、8.3三个版本,其对应的rpm包的名字分别为drbd, drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd, kmod-drbd82和kmod-drbd83。而适用于CentOS 6的版本为8.4,其对应的rpm包为drbd和drbd-kmdl,但在实际选用时,要切记两点:drbd和drbd-kmdl的版本要对应;另一个是drbd-kmdl的版本要与当前系统的内容版本相对应。各版本的功能和配置等略有差异;我们实验所用的平台为x86_64且系统为CentOS 6.4,因此需要同时安装内核模块和管理工具。我们这里选用最新的8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm),下载地址为http://pkgs.org/search/?query=drbd&type=smart,请按照需要下载。
2.准备工作
两个节点的节点的名称和对应的ip地址解析服务应该能正常工作,本处不在给出操作步骤,可以参考本人的相关博文http://wangfeng7399.blog.51cto.com/3518031/1397530
3.安装,由于drbd包没有依赖关系,可以直接使用rpm安装
[root@node1 ~]# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm [root@node2 ~]# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm
4.配置说明
drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。
在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。
resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。
5.配置文件/etc/drbd.d/global_common.conf 详解在i
global { usage-count no; //drbd官网用来统计drbd的使用数据的 # minor-count dialog-refresh disable-ip-verification } common { //提供共享配置 handlers { //处理器,在特定的环境下执行的命令 # These are EXAMPLE handlers only. # They may have severe implic
没有评论:
发表评论