使用100Bit上行链路的DRBD

我们打算使用drbd来同步两个服务器(不同的硬件),以便在主服务器死亡的情况下获得一种HA。 这些服务器实际上托pipe在同一个数据中心(德国Hetzner),并且正在运行openSUSE。

服务器的主要目的是托pipe按需印刷的东西,并呈现或生成pdf。

我们希望同步“/ var / www”文件夹以及此刻存储在默认文件夹中的数据库。

我的计划是将这些文件夹移到drbd同步分区,并通过“ln”将它们链接回原来的位置。 还是相反呢? 或通过复制同步数据库?

主要的问题是,我们在每台服务器上只有100mbit的上行链路,我不知道是否足以在drbd-mode C中同步服务器。

也许你们中的一些人有任何build议或经验,你想与我分享。

PS:我还没有服务器,我只是刨了一切,如果一切正常。

编辑:我现在正在运行drbd同步过程,将/ dev / drbd0同步到主节点上的/ srv / drbd。 我已经将(ln)包含我的网站的文件夹/ srv / drbd / vhosts链接回/ srv / www /,但在我的浏览器中始终得到错误404错误。 这只是一个chown问题?

目前我正在尝试通过crm来configurationcorosync / pacemaker,但是我无法获得所有的基元运行。 这是我的configuration,也许你可以找出为什么它不会启动。

============ Last updated: Mon Aug 5 16:37:54 2013 Last change: Mon Aug 5 16:37:32 2013 by root via cibadmin on alice Stack: openais Current DC: alice - partition with quorum Version: 1.1.7-61a079313275f3e9d0e85671f62c721d32ce3563 2 Nodes configured, 2 expected votes 5 Resources configured. ============ Online: [ bob alice ] Master/Slave Set: DRBD_MS [DRBD] Masters: [ alice ] Slaves: [ bob ] Resource Group: APACHE_IP APACHE (ocf::heartbeat:apache): Started bob failover-ip (ocf::heartbeat:IPaddr2): Stopped Failed actions: failover-ip_start_0 (node=alice, call=57, rc=1, status=complete): unknown error DRBD_FS_monitor_0 (node=alice, call=60, rc=5, status=complete): not installed APACHE_monitor_15000 (node=bob, call=49, rc=7, status=complete): not running failover-ip_start_0 (node=bob, call=57, rc=1, status=complete): unknown error DRBD_FS_monitor_0 (node=bob, call=59, rc=5, status=complete): not installed 

我的cib.xml如下所示:

 node alice node bob primitive APACHE ocf:heartbeat:apache \ params configfile="/etc/apache2/httpd.conf" \ op monitor interval="15s" primitive DRBD ocf:linbit:drbd \ params drbd_resource="r0" \ op monitor interval="120s" primitive DRBD_FS ocf:heartbeat:Filesystem \ params device="/dev/drbd0" directory="/srv/drbd" fstype="ext4" \ meta target-role="Started" primitive failover-ip ocf:heartbeat:IPaddr2 \ params ip="123.456.789.101" nic="net0:0" \ op monitor interval="10s" \ meta is-managed="true" target-role="Started" group APACHE_IP APACHE failover-ip \ meta target-role="Started" ms DRBD_MS DRBD \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" target-role="Started" colocation FS_ON_DRBD inf: DRBD_FS DRBD_MS:Master order FS_AFTER_DRBD inf: DRBD_MS:promote DRBD_FS:start property $id="cib-bootstrap-options" \ dc-version="1.1.7-61a079313275f3e9d0e85671f62c721d32ce3563" \ cluster-infrastructure="openais" \ expected-quorum-votes="2" \ stonith-enabled="false" \ no-quorum-policy="ignore" \ last-lrm-refresh="1375713403" rsc_defaults $id="rsc-options" \ resource-stickiness="100" 

你可以使用DRBD与MySQL的唯一方法是如果你的数据是INNODB的! 为什么?

InnoDB架构

InnoDB架构

InnoDB旨在处理崩溃恢复,并caching系统表空间的双写缓冲区中的所有16KB块更改,前提是您将innodb_flush_methodconfiguration为O_DIRECT 。 如果将其挂载在DRBD上,则任何自动故障转移都不会丢失双写缓冲区中logging的数据。 当您将故障转移到DRBD辅助服务器并将其作为新的DRBD辅助服务器提升时,它将需要mysql的崩溃恢复时间。

另一方面,由于崩溃,MyISAM表不能处理自动故障转移。 为什么? MyISAM表被标记为崩溃,只是因为其头中的文件句柄计数。 MyISAM表格应该为零。 服务器或mysql崩溃可能会使任何打开的MyISAM表需要修复表操作。 虽然在my.cnf中可以configuration一个自动表修复,但是这样的string似乎会在修复后造成数据丢失(以及可能的数据不一致)。 这是非事务性存储引擎的性质。

我支持我的雇主的MySQL / DRBD设置,我总是build议使用全InnoDB数据库进行DRBD设置。

就DRBD对之间的连通性而言,您不应该让DRBDstream量通过交换机或防火墙。 在每台服务器上使用专用网卡(使用192.168.1.xnetworking块)和交叉网线来缩短DRBD通信。 警告 :丢失电缆可能会丢失数据包。

警告

如果你有一个InnoDB表和任何只读的MyISAM表的混合,这在DRBD设置中是可以接受的。 在这种情况下,如果您喜欢增加mysql启动时间,MyISAM表上的表修复不会有什么问题。

同步/ var / www与DRBD应该没问题。 这些文件可能不会改变太多。

不过,我不build议使用DRBD来同步数据库文件。 我会改用MySQL的内置复制function。