我已经设置了一对具有 RAID 阵列(8 核、16GB RAM、12x2 TB RAID6)、3 个 10GigE 接口的相同服务器,以托管一些高可用性服务。
这些系统目前运行的是 Debian 7.9 Wheezy oldstable(因为 corosync/pacemaker 在 8.x stable 和 testing 上均不可用)。
但是,无论我如何配置 DRBD,吞吐量都限制在 100MB/s。它看起来真的像一些硬编码限制。我可以通过调整设置来可靠地降低性能,但它永远不会超过 1Gbit(一次达到 122MB/s 几秒钟)。我真的很喜欢这个。
配置分为两个文件global-common.conf::
global {
usage-count no;
}
common {
handlers {
}
startup {
}
disk {
on-io-error detach;
# no-disk-flushes ;
}
net {
max-epoch-size 8192;
max-buffers 8192;
sndbuf-size 2097152;
}
syncer …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 corosync 和起搏器设置一个主动/被动(2 个节点)Linux-HA 集群来启动和运行 PostgreSQL 数据库。它通过 DRBD 和 service-ip 工作。如果节点 1 失败,节点 2 应该接管。如果 PG 在 node2 上运行并且失败,则相同。除了 STONITH 之外,一切正常。
节点之间是专用的 HA 连接(10.10.10.X),所以我有以下接口配置:
eth0 eth1 host
10.10.10.251 172.10.10.1 node1
10.10.10.252 172.10.10.2 node2
Run Code Online (Sandbox Code Playgroud)
Stonith 已启用,我正在使用 ssh-agent 进行测试以杀死节点。
crm configure property stonith-enabled=true
crm configure property stonith-action=poweroff
crm configure rsc_defaults resource-stickiness=100
crm configure property no-quorum-policy=ignore
crm configure primitive stonith_postgres stonith:external/ssh \
params hostlist="node1 node2"
crm configure clone fencing_postgres stonith_postgres
Run Code Online (Sandbox Code Playgroud)
crm_mon -1 显示:
============
Last updated: Mon Mar 19 15:21:11 2012
Stack: openais …Run Code Online (Sandbox Code Playgroud) 我正在drbd83用ocfs2在centos 5和打算使用packemaker它们。一段时间后,我面临着drbd脑裂问题。
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
1: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:0 dw:112281991 dr:797551 al:99 bm:6401 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:60
Run Code Online (Sandbox Code Playgroud)
我无法将我的 drbd 切换到次要。
drbdadm secondary r0
1: State change failed: (-12) Device is held open by someone
Command 'drbdsetup 1 secondary' terminated with exit code 11
Run Code Online (Sandbox Code Playgroud)
我的drbd资源配置:
resource r0 {
syncer {
rate 1000M;
verify-alg sha1;
}
disk …Run Code Online (Sandbox Code Playgroud) 我想考虑使用 DRBD 在主要和次要位置之间进行数据复制。初步计划是在两者之间建立VPN隧道;主要端使用双 T1 链路的切片和电缆/dsl 线路上的次要位置设置。
辅助节点仅用于 DR - 它“永远不会”复制回主节点。
有没有人做过/厌倦/使用这样的东西,你有什么经验。
Linbit 还有一个(付费)DRBD 代理产品,该产品设计用于跨 WAN 类型链接(压缩、多个对等点)运行。有人试过这个吗?
这是我的 drbd 配置
resource mysql {
protocol C;
floating 10.100.101.1:7788 {
device /dev/drbd0;
disk /dev/VolGroup00/LogVol02;
meta-disk internal;
}
floating 10.100.101.2:7788 {
device /dev/drbd0;
disk /dev/VolGroup01/LogVol02;
meta-disk internal;
}
}
Run Code Online (Sandbox Code Playgroud)
两个节点上 LVM 上的磁盘设置为 50G,我在两个节点上使用 LVM 增加了 +4G(现在总共 54G)
但是当我尝试跑步时
[root@db1 ~]# resize2fs /dev/VolGroup00/LogVol02
resize2fs 1.39 (29-May-2006)
resize2fs: Device or resource busy while trying to open /dev/VolGroup00/LogVol02
Couldn't find valid filesystem superblock.
[root@db1 ~]#
Run Code Online (Sandbox Code Playgroud)
它说我不能。我该怎么办?我应该停止DRBD吗?如果是这样 - 我应该在调整大小和启动 DRBD 后执行其他步骤吗?
谢谢,德米特里
这个问题与以前的更通用的问题有关,但这次我想更具体地询问 ZFS 是否可以在像我这样的用例中替换 DRBD。即两台服务器,都托管自己的 VM 或其他服务,同时将 VM 或其他一些数据相互复制,以缩短硬件故障或维护时的停机时间。此设置符合预期,我想要首选的本地读/写,并且可以在任意时间范围内承受潜在的数据丢失。
DRBD 支持这种具有不同镜像协议的场景,其中复制协议 A是异步的,因为我需要它。DRBD 在我的设置中的主要好处是切换到更同步的协议很容易,只需配置和重新启动即可。此外,可以将 dm-crypt 放在 DRBD 块设备的顶部,并将文件系统放入 dm-crypt 中,以便对每个数据进行加密。
另一方面,DRBD 的问题是它需要块设备,并且必须使用其他技术(如 RAID 和 LVM 等)关心它们的可用性和大小。尤其是调整大小的事情似乎很有趣,因为我的服务器有空闲插槽可以在将来连接更多磁盘。为了支持调整大小,我需要在 DRBD 下使用 LVM,首先使用 LVM 添加存储,然后调整 DRBD 的大小以考虑新的存储。比我还需要处理 dm-crypt,文件系统本身等。这读起来非常复杂,而且我容易出错。
另一方面,像 ZFS 这样的文件系统已经提供了自己的 LVM,并且能够发送/接收增量快照。所以理论上 ZFS 应该能够实现相同的协议 像 DRBD 这样的方法不需要使用 RAID、LVM 等。只需将存储添加到服务器,将其放入 ZFS 池中,它就可以立即用于托管更多/更大的虚拟机或其他。发送/接收快照听起来与 DRBD 所做的任何事情一样有效,因为它只是增量二进制数据,需要任何开销来描述要在接收 ZFS 中理解的更改。我读过人们使用无睡眠时间的无限循环发送/接收 ZFS 快照,然后再次直接在源中删除它们,因为它们只用于短期复制。
不过,加密对 ZFS 来说似乎是一个问题。dm-crypt 可能适用于 zvols 之类的东西,将来它可能会直接支持加密,但目前不支持。此外,发送/接收快照似乎总是异步的,如果需要,没有办法实现像 DRBD 提供的更多同步协议。不过,这可能是可以接受的,因为不需要使用 LVM 并使整体设置更容易。
或者我错了,除了发送/接收快照之外,还有其他方法 ZFS 如何将数据转发到开箱即用的其他主机和仅 ZFS?
与 DRBD 镜像协议相比,您是否看到在短时间内使用 ZFS 频繁发送/接收快照的一些基本性能差异或限制?后者可能会更有效一点,因为我猜只有块级别。 …
我有一个安装了 DRBD 的分区的 Debian Xen DomU。我需要将此分区的大小从 46G 调整为 50G。我做了以下事情:
/etc/init.d/drbd stop lvresize -L 50G /lvm/device/etc/init.d/drbd start/etc/init.d/drbd stoplvresize -L 50G /lvm/device /etc/init.d/drbd
startdrbdadm resize drbd-device resize2fs /dev/drbd0我得到这个回应:
$ resize2fs 1.40-WIP (14-Nov-2006)
The filesystem is already 12058624 blocks long. Nothing to do!
Run Code Online (Sandbox Code Playgroud)
使用 fdisk,drbd0 和 sda 设备 drbd 都使用报告设备的大小为 49392123904。这与 resize2fs 所说的一致。(12058624x4096 [块大小])。
我的问题是df没有报告磁盘大小的变化。
$ df -B …Run Code Online (Sandbox Code Playgroud) 我部分继承了一个 Linux HA 集群,该集群的中心目前在两个 Debian 主机之间通过 IPoIB(IP over InfiniBand)提供与 DRBD 8 的连接。它没有坏,所以我不会修理它。
我还注意到 DRBD 9 支持 RDMA,因此问题可能会出现在将来是否通过 RDMA(即“本机”InfiniBand)替换与 DRBD 9 的连接。
由于我不想在生产系统上运行性能测试,我想知道:是否有已发布的 IPoIB 与 RDMA/InfiniBand 的性能比较。例如,我是否可以预期从 IPoIB 切换到 10%、50% 或 100% 的数量级的带宽/延迟增益?可以期待什么?
DRBD 文档(在将 DRBD 与 Pacemaker 集群集成部分)建议在 Pacemaker 集群中禁用 DRBD:
如果您正在使用 DRBD OCF 资源代理,建议您将 DRBD 启动、关闭、升级和降级专门推迟到 OCF 资源代理。这意味着你应该禁用DRBD初始化脚本:
chkconfig drbd off。
在 systemd 下,这相当于systemctl disable drbd.service.
尽管有此建议,但启用 DRBD 是否有任何危害?这个想法是启用 DRBD,但禁用 Corosync 和 Pacemaker,以便在集群节点出现故障并重新启动后,它将继续接收 DRBD 同步的数据,但将保持“被动”状态。这应该允许在故障节点重新进入集群之前对其进行分析,但同时仍将实时数据保存在两个集群节点上。该建议背后的理由是什么?
我需要构建一个解决方案来托管内部 git 存储库。它需要支持数十万(或更多)存储库。
我计划将多个“哑”服务器与共享存储一起使用,因此基本上当客户端尝试访问存储库时 - 负载平衡器会将其重定向到任何可用服务器。对存储库的任何更改 - 将在所有节点上复制。
我的第一个想法是为此使用 GlusterFS,但我读过它不能很好地处理小文件。我也在考虑使用 DRBD 自己复制所有内容,但这需要更多设置,并且与 GlusterFS 相比似乎更复杂。
两者中哪一个提供更好的性能?基本上,我试图解决的问题是,当任何服务器出现故障时 - 我希望其他人仍然能够提供数据。
drbd ×10
debian ×3
pacemaker ×2
performance ×2
centos ×1
centos5 ×1
cluster ×1
corosync ×1
git ×1
glusterfs ×1
infiniband ×1
ip ×1
linux ×1
lvm ×1
nfs ×1
ocfs2 ×1
replication ×1
xen ×1
zfs ×1
zfsonlinux ×1