集群管理之Heartbeat与DRBD

环境需求:rhel6以上,iptablss与selinx disabled,

新虚拟机(未进行其他集群操作的)server1与server2为两节点

Instructor为服务机(M端)。

集群管理之Heartbeat

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。

两节点上安装hearbeat-3.0.4-2.e16.x86_64 heartbeat-llibs-3.0.4-2.e16.x86_64 heartbeat-devel-3.0.4-e16.x86_64 ldirectord-3.9.5-3.1.x86_64、mysql-server。

在srever1上,

#vim /etc/ha.d/ha.cf

logfile /var/log/ha-log #日志文件

keepalive 2             #心跳时间

deadtime 30             #无响应时间

warntime 10       #警告时间

initdead 60             #守护进程启动后主机启动资源需要等待的时间

udpport 694             #端口

cast   eth0             #使用物理网卡eth0传输心跳消息

auto_failback on        #设置当主机修复后服务是否回返到主机

node    server2.example.com node    server3.example.com #设置节点,主机在上副机在下

ping 172.25.254.55      #判断主副机的网络状况

respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=haclient uid=hacluster #指定用户和用户组

添加2个node,后面接节点的hostname

#vim /etc/ha.d/haresource

在最后添加server1.example.com IPaddr::172.25.0.100/24/eth0 Filesystem::/dev/sda1::/var/lib/mysql::ext4 mysqld

Server1.example.com: 主节点

IPaddr::172.25.254.100/24/eth0: 虚拟IP

Filesystem::/dev/sda1::/var/lib/mysql::ext4 : 文件系统

Mysql: 服务

#vim authkeys ,取消auth 1 、1 crc的注释  //crc为明文(不加密)。

#chmod 600 authkeys.

将server的远端存储分区并格式化为ext4,分区由heartbeat同步到server2中。

将这三个文件复制给server2。两节点都启动heartbeat服务。

#mount /dev/sda1/ /mnt

#cp -rp /var/lib/mysql/* /mnt

#chown mysql.mysql /mnt

#umount /mnt

若server1的mysqld或者heartbeat停止,则server2mysql启动,vip加在server2上,这就是集群的高可用性。

集群管理之DRBD

DRBD(Distributed Replicated Block Device分布式复制块设备),DRBD 号称是 “网络 RAID”,开源软件,由

LINBIT 公司开发。DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之

中。他有内核模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络

RAID-1的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络

中的另外一台主机之上,并以完全相同的形式记录在文件系统中。本地节点与远程节点的数据可以保证

实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一

份完全相同的数据,可以继续使用,以达到高可用的目的

安装

首先关闭两节点的iscsi,并本地添加4g的存储。

在节点1上,解压drbd-8.4.3

#./configure --enable-spec  --with-km

#yum install flex rpm-build  kernel-devel//解决依赖性

#cp drbd-8.4.3.tar.gz rpmbuild/SOURCES

#rpmbuild -bb drbd.spec drbd-km.spec //创建rpm包

#rpm -ivh /root/rpmbuild/RPMS/x86_64/*

复制这些rpm到server2上安装。

在server1上,/etc/drbd.d/drbd.conf, 可以看到drbd包含drbd.d/下所有以.res结尾的文件。因此可以在/etc/drbd.d下创建example.res文件,对当前集群进行配置

resource sqldata {    //源为sqldata

meta-disk internal;    //磁盘为内部的

device /dev/drbd1;     //设备为/dev/drbd1

syncer {

verify-alg sha1;         //同步方式

}

on server1.example.com {     //节点1的设置

disk /dev/vdb;

address 172.25.0.1:7789;

}

on server2.example.com {    //节点2的设置

disk /dev/vdb;

address 172.25.0.2:7789;

}

}

将该文件复制到节点2.两节点都对drbd进行初始化:

#drbdadm create-md sqldata

两节点都启动drbd服务。

在节点1上

#cat /proc/drbd 可以看到drbd块信息。显示 secondary/secondary表示server1(第一个secondary)为从设备,server2(第二个secondary)为从设备。

#drbdadm primary sqldata --force  //强制将server1设为主设备,集群服务只会在主设备上运行

在节点2上,

#cat /proc/drbd  显示secondary/primary表示本机为从设备,server1为主设备。

#mkfs.ext4 /dev/drbd1

#mount /dev/drbd1 /mnt

#cp -rp /var/lib/mysql/* /mnt

#chown mysql.mysql /mnt

#umount /mnt

数据会同步写入到节点2的/dev/drbd1上。

#drbdadm secondary sqldata  // 将节点1设为从设备

在节点2上

#mount /dev/drbd1 /mnt

#drbdadm primary sqldata  //将本节点设为主设备

#ls /mnt  会看到mysql文件

注意:两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary 时,才能被挂载使

用,而此时另一方的状态为 secondary。

Heartbeat集成drbd

在节点1的/etc/ha.d/haresource,修改最后一行为

server1.example.com IPaddr::172.25.0.100/24/eth0 drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld

并将该文件复制到节点2中。

两节点都启动heartbeat

节点1上,由于drbd为primary,可以看到drbd1以被挂载到/var/lib/mysql上,eth0添加了vip。这些都是heartbeat自动完成的

节点2上,则没挂载没加vip。

附注:接着上篇博客利用远端存储通过HA使用mysql服务

M端启用luci、tgtd

两节点启用ricci、iscsi并安装mysql-server,停用mysql服务

在web上禁用apache服务组并不勾选独立运行。

添加回错域(failover domain)name为sqldb,其他与webfail相同。

添加resource->ip address 设置虚拟ip为172.25.0.101;

-> script     name=mysqld   path为/etc/init.d/mysqld

Server1上

卸载之前的添加的逻辑卷、卷组、物理卷

#service clvmd restart //重启clvmd服务

#cat /proc/partitions  //查看块设备信息

重新远端存储重新分为2个区

在server2 上, 运行partprobe然后查看/proc/partitions能看到sda1和sda2两个分区。。

挂载sda1到mnt。 在mnt下创建index.html,内容为www.redhat.org.然后卸载,数据写入sda1中。再挂载sda2,将/var/lib/mysql下的所有复制到mnt。

#chown mysql.mysql /mnt

卸载mnt,mysql写入sda2中。

在web上

修改resource中的webdata的device为/dev/sda1

添加resource,name=dbdata  文件系统名为ext4,挂载点为/var/www/html,设备为/dev/sda2,勾选force unmount,use quick status checks ,reboot host node if unmount fails.

添加服务组。Name为mysql,勾选自动启动,回错域为sqldb,然后点添加resource to service

依次添加新的vip等服务,虚拟ip(172.25.0.101)就和mysql绑定。启用apache服务组。

这时若server2apache服务被破坏,如network disabled,集群会自动从server1上启动apache。

哪个节点上开启了mysql,那么它会ip会增加vip。

时间: 2024-08-07 21:17:54

集群管理之Heartbeat与DRBD的相关文章

CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用

CentOS6.4 高可用集群之基于heartbeat和nfs的高可用mysql CentOS版本: CentOS release 6.4(Final) 2.6.32-358.el6.i686 效果演示: 使用ssh连接(nod-1.magedu.com)192.168.3.7 并执行以下命令: [[email protected] ha.d]# hb_gui & 说明:hb_gui是heartbeat为了方便管理集群资源而提供的一个图形用户接口 安装heartbeat默认会在系统中创建一个名为

RHCS的CMAN分布式集群管理

------------------------------------------------------------这里可以忽略:(突然想到的小命令)小知识点:# cat /etc/sysconfig/i18n LANG="zh_CN.UTF-8"# LANG=zh_CN.UTF-8# yum grouplist# yum list # LANG=en# yum grouplist # yum provides */pxelinux.0 #yum -y install cmatri

高可用集群技术之heartbeat+NFS实现web服务高可用(文本方式配置接口--gui图形配置)

一.高可用集群基本概念   什么是高可用技术呢?在生产环境中我既要保证服务不间断的服务又要保证服务器稳定不down机,但是异常还是会发生,比如说:服务器硬件损坏...导致服务器down机,我该如何保证服务器down机后继续提供服务呢?这时我就应该请出高可用技术来帮忙了,当我们的服务器发生故障后不能继续时,高可用集群技术解决将业务及服务自动转移至其他主机服务器上继续服务,保证服务架构不间断运行. 高可用集群的架构层次: 后端主机层: 这一层主要是正在运行在物理主机上的服务. 2.Message l

利用ansible modules模块来自定义集群管理

前沿: 在一些个特定环境下,用ansible做集群管理还是很棒的,这两天看了他的模块,官方提供了很多,就算不够,你也可以自定义定制. 话说我挺喜欢他的modules模块的,够直接 !!! 我这里就说些常见的ansible的modules吧. 下面的ansible service一看大家就懂了,就是服务状态的管理模块 [[email protected] ~ ]$ ansible web -m service -a "name=nginx state=started" 10.150.14

Redis集群管理

原文链接:http://blog.csdn.net/xyang81/article/details/51895011 在上一篇<Redis3.2集群担建与验证>文章中分享了集群的详细担建过程,本篇主要分享集群管理的常见操作,如:添加节点.删除节点.slot分配.如果你还没有担建集群环境,建议先看上篇<Redis3.2集群担建与验证>过程,再来阅读本文比较好理解. 1.集群管理常用命令 // 集群(cluster) CLUSTER INFO 打印集群的状态信息 CLUSTER NOD

Ignite集群管理——基于静态IP的节点发现

Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. TcpDiscoverySpi 用于设置集群维持与节点发现的tcp通信ip,port. 2. TcpCommunicationSpi 用于设置业务数据(缓存数据)tcp通信的ip,port. 3. 两者的区别与联系 TcpDiscoverySpi用于维持管理集群,交换的是用户不感知的ignite内

redis主从切换的集群管理

网 站的访问量慢慢上来了.为了网站的性能方面,开始用了redis做缓存策略.刚开始的时候,redis是一个单点,当一台机器岩机的时候,redis的 服务完全停止,这时就会影响其他服务的正常运行.费话不多说了,下面利用redis sentinel做一个主从切换的集群管理.做这个集群管理的时候,查过很多资料才完全了解,他是怎么做的. java 客户端请看: http://blog.mkfree.com/posts/52b146e6479e5a64742fddd0 参考资料:http://redis.

分布式集群管理

转载请说明出处:http://blog.csdn.net/cywosp/article/details/21259391 现在很多互联网科技公司,还有一些传统的it公司都在根据自身的业务发展来设计符合实情的分布式系统.虽然,已有很多优秀的开源分布式系统,但是由于需求不同,业务不同,这些只能在设计符合自身需求的分布式系统时用于参考.个人认为,设计一个分布式存储系统并不是太难,主要困难在于如何设计并实现一个可以自动化处理各个节点状态的分布式集群管理系统.分布式系统到现在已经发展了很多年了,有些公司已

vCenter Server6.5 & SQL Server2014单机部署 - vShpere ESXI6.0-6.5集群管理

vCenter Server6.5 & SQL Server2014单机部署 VMware官方网站提供免费下载vCenter Server6.5试用版: http://www.vmware.com/ 系统版本:Windows Server2012 R2 部署vCenter Server6.5 步骤: 1.安装SQL Server2014 SP2(或者SQL Server2008R2 SP1以上) 2.配置ODBC 64位数据源 3.安装vCenter Server6.5 (VMware-VIM-