设为首页 收藏本站
查看: 516|回复: 0

[经验分享] 集群管理之Heartbeat与DRBD

[复制链接]

尚未签到

发表于 2019-1-7 08:24:15 | 显示全部楼层 |阅读模式
  环境需求: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。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660155-1-1.html 上篇帖子: heartbeat安装配置 下篇帖子: 高可用集群HA(heartbeat)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表