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

[经验分享] heartbeat+mysql+drbd+实现高可用性

[复制链接]

尚未签到

发表于 2019-1-7 11:02:04 | 显示全部楼层 |阅读模式
1,什么是DRBD  DRBD(Distributed Replicated Block Device),DRBD 号称是 "网络 RAID",开源软件,由 LINBIT 公司开发。
  2,DRBD的主要功能
  DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点 (主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的 数据,可以继续使用,以达到高可用的目的。
  3,DRBD的主要应用
  如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案 中,heartbeat 为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat + drbd在Linux下创建一个高可用(HA)的集群服务器,在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为数 据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务了。
  4,DRBD于mysql的关系
  MySQL 与 LINBIT 达成了合作关系,大张旗鼓的搞了这个 "12 天 Scale-Out" 活动,也是这个商业合作驱动的吧。DRBD 助力 MySQL, 号称可以得到四个 9 的可靠性,这不低于任何一款商业数据库 软件了。
  DRBD 的出现的确对 MySQL 集群的可用性 有很大提高。而且,有独到的特点,非常适合面向互联网的应用。因为是在存储层的数据块同步,很容易的做到应用层的 IO 负载均衡(备机承担一定的读压力),不但支持数据库失败接管,还能做到 IP 失败接管,接管时间小于 30 秒,真是穷人的绝佳集群解决方案。
  IP地址说明:
  master
  192.168.100.20
  slave
  192.168.100.21
  VIP 192.168.100.25
  1、管理节点mysql安装
  修改主机名为manager
  # tar -zxvf mysql-5.0.67.tar.gz
  # cd mysql-5.0.67
  # groupadd mysql
  # useradd -g mysql -s /sbin/nologin -M mysql
  # ./configure --prefix=/usr/local/mysql --with- --localstatedir=/var/data --with-extra-charset=all --enable-thread-safe-client
  # make && make install
  # cp support-files/my-large.cnf /etc/my.cnf
  # chown -R mysql.mysql /usr/local/mysql/
  # /usr/local/mysql/bin/mysql_install_db --user=mysql
  # chown -R root.root /usr/local/mysql/
  # chown -R mysql.mysql /var/data
  启动数据库服务,并添加到自启动
  # /usr/local/mysql/bin/mysqld_safe --user=mysql &
  # cp support-files/mysql.server   /etc/rc.d/init.d/mysqld
  # chm od 755 /etc/rc.d/init.d/mysqld
  加入服务队列:
  # chkconfig --add mysqld
  添加root密码
  # /usr/local/mysql/bin/mysqladmin -u root password "123456"
  配置 库文件搜索路径
  # echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
  # ldconfig
  # ldconfig -v
  添加/usr/local/mysql/bin到环境变量PATH中
  #echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
  #source /etc/profile
  2、从服务器mysql的安装同上
  3、DRBD的安装和设置
  (1)安装DRBD(主从服务器安装相同)
  # tar -zxvf drbd-8.3.0.tar.gz
  # cd drbd-8.3.0
  # make KDRI=/usr/src/redhat /
  # make install
  检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko
  加载安装drbd模块
  # modprobe drbd
  通过lsmod检查是否已经成功
  #lsmod |grep drbd
  如果有,则表示成功了
  (2)更改drbd配置文件(主从服务器相同)
  准备drbd要使用的分区 ,该分区最好是干净的分区,我在虚拟机中重新划分了一个分区/dev/sdb1作为drbd使用。
  # vi /etc/drbd.conf
  resource r0 {
  protocol C;
  startup {
  degr-wfc-timeout 120;
  }
  disk {
  on-io-error   detach;
  }
  net {
  }
  syncer {
  rate 10M;
  }
  on master{
  //master为主服务器的主机名
  device     /dev/drbd0;
  disk       /dev/sdb1;
  address    192.168.100.20:7788;
  meta-disk  internal;
  }
  on slave{
  //master为从服务器的主机名
  device    /dev/drbd0;
  disk      /dev/sdb1;
  address   192.168.100.21:7788;
  meta-disk internal;
  }
  }
  (3)主服务器的设置
  创建matadata:
  # drbdadm create-md all
  2次输入“yes”
  启动drbd:
  # /etc/init.d/drbd start
  在启动第一个节点上的DRBD服务的时候,他会等待第2个节点的DRBD服务的启动,此时启动第2个节点上的DRBD服务即可。
  查看drbd的运行状态
  # cat /proc/drbd
  此时可以看到,已经开始同步数据了。设置完之后的第一次同步耗时比较长,因为需要把整个分区的数据全部同步一遍。
  设置为主节点:
  # drbdadm  primary all
  如果不成功使用这个命令
  # drbdsetup /dev/drbd0 primary -o
  在新设备上面创建文件系统
  # mkfs.ext3 /dev/drbd0
  挂载文件系统
  # mkdir /var/data
  # mount /dev/drbd0 /var/data
  在主节点上写入数据
  然后,我们把primary降级成secondary,把secondary提升成primary:
  # umount /var/data
  # drbdadm secondary all
  从节点
  把primary降级前,一定要先umount设备才行。然后提升secondary:
  # drbdadm primary all
  # mount /dev/drbd0 /var/data/
  查看一下数据同步过来没
  4、安装配置heartbeat(主从服务器的安装和配置相同):
  (1)先安装libnet
  # tar -zxvf libnet.tar.gz
  # cd libnet
  # ./configure
  # make
  # make install
  (2)安装heartbeat
  # groupadd haclient
  # useradd -g haclient hacluster
  # tar -jxvf Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.bz2
  # cd Heartbeat-STABLE-2-1-STABLE-2.1.4
  # ./ConfigureMe configure --disable-swig --disable-snmp-subagent
  # make
  # make install
  # cp doc/ha.cf /etc/ha.d/
  # cp doc/haresources /etc/ha.d/
  # cp doc/authkeys /etc/ha.d/
  (3)Authkeys配置
  # chmod 600 authkeys  主节点和从节点间数据校验用的
  # vi /etc/ha.d/authkeys
  把 #auth 1
  #1 crc
  #2 sha1 HI!
  #3 md5 Hello!
  改成:
  auth 3
  #1 crc
  #2 sha1 HI!
  3 md5 Hello!
  (4)资源文件haresources配置
  # vi /etc/ha.d/haresources
  在配置文件中添加如下一行
  master drbddisk Filesystem::/dev/drbd0::/var/data::ext3  mysqld 192.168.100.25
  上面资源组中的各项含义如下:
  master            当前primary节点名(uname -n)
  drbddisk          告诉heartbeat要管理drbd的资源
  Filesystem        这里是告诉heartbeat需要管理文件系统资源,其实实际上就是执行mount/umount命令,后面的“::”符号之后是跟的 Filesystem的参数设备名和mount点)
  mysqld            告诉需要管理mysql
  192.168.100.25    这里是让heartbeat帮你管理一个service ip,会跟着主节点一起漂移
  (5)ha.cf配置
  # vi /etc/ha.d/ha.cf
  #debugfile /var/log/ha-debug的注释去掉
  #keepalive 2    去注释
  #deadtime 15    去注释
  #warntime 10    去注释把10改成5
  #initdead 120   去注释
  #udpport 694    去注释
  #bcast eth0    #Linux   去注释
  #watchdog /dev/watchdog  去注释也可以不打开
  #node den3    把den3改成master  这里要注要它是主节点名称下面的是副节点名称,一定要与uname -n一致.
  #node dathy   把dathy改成slave
  #ping_group group1 10.10.10.254 10.10.10.253 去注释改:ping_group group1 192.168.100.20  192.168.10.21
  #respawn hacluster /usr/lib/heartbeat/ipfail 去注释
  #apiauth ipfail gid=haclient uid=hacluster 去注释
  #hopfudge 1 去注释  它就是集群中活跃节点的数量
  (6)启动heartbeat
  # /etc/init.d/heartbeat start
  # echo "/etc/init.d/heartbeat start">>/etc/rc.local
  # ps -ef | grep heartbeat查看一下
  5、测试
  可以拔掉主节点服务器的网线,看看有什么情况发生,测试是否正常?
  然后再把网线插回去,MySQL服务能否自动切换回来? 


运维网声明 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-660284-1-1.html 上篇帖子: Drbd+nfs+heartbeat 简要总结 下篇帖子: linux高可用之heartbeat_v1安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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