部分版本信息:
Operating system is Ubuntu 11.10, on EC2, kernel is 3.0.0-16-virtual and the application info is:
Version: 8.3.11 (api:88)
GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by buildd@allspice, 2011-07-05 19:51:07
Run Code Online (Sandbox Code Playgroud)
在 dmesg 中也出现一些奇怪的错误(见下文),没有发生复制。我已经使我的第一个节点成为主要节点并显示:
drbd driver loaded OK; device status:
version: 8.3.11 (api:88/proto:86-96)
srcversion: DA5A13F16DE6553FC7CE9B2
m:res cs ro ds p mounted fstype
0:r0 StandAlone Primary/Unknown UpToDate/DUnknown r----s ext3
Run Code Online (Sandbox Code Playgroud)
我的辅助节点显示:
drbd driver loaded OK; device status:
version: 8.3.11 (api:88/proto:86-96)
srcversion: DA5A13F16DE6553FC7CE9B2
m:res cs ro ds p mounted fstype
0:r0 StandAlone Secondary/Unknown Inconsistent/DUnknown r----s
Run Code Online (Sandbox Code Playgroud)
在 master 上显示 …
我必须为 Magento 进行设置。我的限制主要是易于设置和容错/故障转移。此外,成本也是一个问题。我有三个相同的物理服务器来完成工作。每个服务器节点在软件 RAID 1 配置中都有一个 i7 四核、16GB RAM 和 2x3TB HD。每个节点都运行 Ubuntu 12.04。马上。我有一个额外的 IP 地址,可以路由到这些节点中的任何一个。
Magento 商店有最大。1000个产品,其中50%是捆绑产品。我估计最大。10 个用户同时处于活动状态。这使我得出结论,性能不是这里的重中之重。
一个节点 (lb) 将 nginx 作为负载均衡器运行。附加 IP 与域名一起使用并默认路由到此节点。Nginx 将负载平均分配给其他两个节点(shop1、shop2)。Shop1 和 shop2 配置相同:每个服务器运行 Apache2 和 MySQL。Mysqls 配置了主/从复制。
我的故障转移策略:
这是一个明智的策略吗?有没有人用 Magento 做过类似的设置?
另一种方法是使用 drbd 将 MySQL 数据文件存储在 shop1 和 shop2 上。我知道在这种情况下,只有一个节点/MySQL 实例可以处于活动状态,另一个用作热备用。因此,如果 shop1 失败,我会在 shop2 …
我正在两个节点上配置 DRBD。DRBD 已经配置,但我想启用双主模式功能。
在 drbd 站点上,我看到它需要使用共享集群文件系统,该系统利用分布式锁管理器,如 GFS 和 OCFS2。
ext3文件系统可以吗?
提前致谢。
我已经在 2 个节点上设置了 DRBD,并于昨天开始使用它。大约一个小时后,它重新同步了 50% 的分区。又过了 12 个小时,达到了 79%,而且移动速度非常慢。
这是 cat /proc/drbd 显示的内容:
1: cs:SyncTarget ro:Primary/Secondary ds:Inconsistent/UpToDate C r-----
ns:464931976 nr:191087032 dw:656013660 dr:214780588 al:100703 bm:21100 lo:7 pe:0 ua:0 ap:7 ep:1 wo:f oos:92241852
[==============>.....] sync'ed: 79.2% (90076/431396)M
finish: 76:13:38 speed: 332 (8,680) want: 19,480 K/sec
Run Code Online (Sandbox Code Playgroud)
我查看了网络流量,我在 1G 接口上使用了 1M 到 20M 之间的流量。在这一切进行时尝试运行 iperf,我得到了 930M 的读数。尝试将同步器速率调整为 10M、50M、500M 无济于事。没有运气也调整了数据包大小。
现在,正如您从状态中看到的那样,需要注意的是,我的主节点不一致。所以我假设在重新同步进行时,操作系统本质上是在使用辅助节点。但鉴于吞吐量如此之低,我不明白为什么同步速度不快。
关于我接下来可以尝试什么的任何想法?预计 76 小时的完成时间并不是我所期待的 :( 特别是不知道原因,所以出现各种中断,我不知道如何快速使数组保持一致性。
谢谢!
编辑:我在网络部分尝试了以下设置无济于事:
sndbuf-size 512k;
max-buffers 20480;
max-epoch-size 16384;
unplug-watermark 20480;
Run Code Online (Sandbox Code Playgroud)
编辑 2:在我停止调整所有配置后,无缘无故地,速度跃升至 10~30M。同步率高达 98.8%,然后回落到 ~300K。两台服务器上的日志中都没有消息。巧合的是,我看到运行在该分区之外的 MySQL …
背景:我们在小型办公环境中需要一个 HA 服务器,并且正在寻找 DRBD 来提供它。我们只有大约 100GB 需要在 HA 服务器上,服务器负载将非常低。如果我们存档旧的办公室数据,数据可能每年增加约 10%-25%,如果我们不存档,则每年增加 50%-75%。
重点是我们混合使用消费级和企业级硬件,如果我们不提前计划,这将是一个问题;并且预先构建的优质服务器确实会失败,因此冗余服务器似乎是要走的路。
计划:我们认为最好找到 (2) 台最物有所值的二手服务器并同步它们。我们只需要具备 SATA/SAS 功能的服务器和足够多的驱动器空间。如果您达成交易,这些服务器似乎可以以 100-200 美元(+一些零件和额外驱动器)的价格购买。
从理论上讲,这意味着服务器可能会出现故障,如果我们花几天的时间来解决它,只要我们没有另一个巧合的故障,事情就会一直持续下去,直到我们的 IT 部门(我)能够解决它。我们将使用 Debian 作为操作系统。
一些问题
(A) DRBD 如何处理驱动器或控制器故障?也就是说This在存储驱动程序之前显示DRBD,那么当控制器发生故障并写入脏数据或驱动器发生故障但没有立即崩溃时会发生什么?数据是否镜像到另一台服务器,在这种情况下是否存在跨服务器数据损坏的风险?
(B) DRBD 的失败点是什么;理论上,只要一台服务器启动并运行,就没有问题。但是我们知道存在一些问题,那么使用 DRBD 的失败模式是什么,因为它们中的大多数理论上应该是软件?
如果我们要为此使用两台服务器,那么在每个服务器上运行 VM 并使用 MYSQL 和 Apache 进行数据库和 Web 服务器复制是否合理?(我假设是这样)
DRBD 是否足够可靠?如果不是,则不可靠性是与某些任务隔离的,还是更随机的。搜索发现了有各种问题的人,但这是互联网,似乎坏信息多于好信息。
如果数据通过 LAN 同步,DRBD 是否使用双倍带宽?也就是说,我们是否应该在 NICS 上加倍并进行一些链路聚合和中继?然后也许将它们放在单独电路上的单独路由器和单独房间中的 UPS 上,现在您真的有一些冗余!
就服务器管理而言,这对于办公室来说是否太疯狂了?是否有更简单的 REALTIME 替代方案(理论上 DRBD 似乎很简单)。
我们已经有服务器了。所以在我看来,第二台带有 DRBD 专用驱动器的二手服务器可以很容易地以 150-250 美元左右的价格购买。添加第二个路由器、更多驱动器、更多 NIC(已使用)和 (2) 个 UPS,并且正在谈论 1,000 美元 +/-。那是比较便宜的!我希望这主要是在服务器故障期间为我们争取时间。如今,使用 RAID 似乎更容易处理驱动器故障。其他硬件故障,如控制器、内存或电源,可能需要停机来诊断和修复这些问题。
对我们来说,冗余服务器意味着使用过的硬件变得更加可行,有更多的正常运行时间和更多的灵活性,让我可以在我的日程安排允许时修复问题,而不是不得不停止一切来修复服务器。
希望我没有错过这些问题有易于搜索的答案。我进行了快速搜索,但没有找到我要找的东西。
我需要构建一个解决方案来托管内部 git 存储库。它需要支持数十万(或更多)存储库。
我计划将多个“哑”服务器与共享存储一起使用,因此基本上当客户端尝试访问存储库时 - 负载平衡器会将其重定向到任何可用服务器。对存储库的任何更改 - 将在所有节点上复制。
我的第一个想法是为此使用 GlusterFS,但我读过它不能很好地处理小文件。我也在考虑使用 DRBD 自己复制所有内容,但这需要更多设置,并且与 GlusterFS 相比似乎更复杂。
两者中哪一个提供更好的性能?基本上,我试图解决的问题是,当任何服务器出现故障时 - 我希望其他人仍然能够提供数据。
首先,我不是 linux 专家,我一直在学习教程并在 google 的帮助下工作,直到现在这都很好,但目前我遇到了一个问题。
我使用的是 CentOS 6.5 和 DRBD 版本 8.4.4。
我有两个运行起搏器的节点,到目前为止一切正常,我设置了 DRBD,我可以手动将一个节点设置为主节点并挂载 DRBD 资源,这样也可以正常工作。
现在我创建了一个起搏器资源来控制 DRBD,但它无法将两个节点中的任何一个提升为 master,这也阻止了它被挂载。
pcs 状态如下所示:
Cluster name: hydroC
Last updated: Wed Jun 25 14:19:49 2014
Last change: Wed Jun 25 14:02:25 2014 via crm_resource on hynode1
Stack: cman
Current DC: hynode1 - partition with quorum
Version: 1.1.10-14.el6_5.3-368c726
2 Nodes configured
4 Resources configured
Online: [ hynode1 hynode2 ]
Full list of resources:
ClusterIP (ocf::heartbeat:IPaddr2): Started hynode1
Master/Slave Set: MSdrbdDATA [drbdDATA]
Slaves: [ hynode1 hynode2 …Run Code Online (Sandbox Code Playgroud) 我尝试在/dev/sdb没有分区表的原始磁盘设备上设置 DRBD ,也没有 LVM 堆栈 PV/VG/LV
由于这个磁盘是虚拟的,并且我使用的管理程序允许动态磁盘扩展,我不想在扩展我的 DRBD 文件系统时打扰 LVM 操作或重新分区
我的资源定义再简单不过了
resource data {
device /dev/drbd1;
meta-disk internal;
disk /dev/sdb;
on node1 {
address 10.10.10.16:7789;
}
on node2 {
address 10.10.10.17:7789;
}
}
Run Code Online (Sandbox Code Playgroud)
创建元数据作品
# drbdadm create-md data
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
Run Code Online (Sandbox Code Playgroud)
但是附加操作失败
# drbdadm attach data
1: Failure: (127) Device minor not allocated
additional info from kernel:
unknown minor
Command 'drbdsetup-84 attach 1 /dev/sdb …Run Code Online (Sandbox Code Playgroud) 我需要将属于 2 节点 DRBD 集群一部分的盒子脱机以进行硬件服务。
如何强制主(另一个?) DRBD 节点处于独立状态,以便我可以关闭另一个节点?
直接关掉就可以了吗?这样做安全吗?
我有一个包含两个节点的 HA 集群,节点 1 是主节点,节点 2 是镜像。我的 mysql 资源有问题,因为我的节点未同步
drbd 概述
节点主体:
0:home 连接的主/辅助 UpToDate/UpToDate C r-----
1:存储连接的辅助/主 UpToDate/UpToDate C r-----
2:mysql 独立辅助/未知 UpToDate/过时 r-- ---
辅助节点:
0:home 连接的辅助/主 UpToDate/UpToDate C r-----
1:存储连接的主/辅助 UpToDate/UpToDate C r-----
2:mysql StandAlone 主/未知 UpToDate/Outdated r-- ---
查看消息文件我发现以下内容
Apr-19 18:20:36 clsstd2 kernel: block drbd2:self C1480E287A8CAFAB:C7B94724E2658B94:5CAE57DEB3EDC4EE:F5887A918B55FB1A bits:114390101 flags:0
Apr-19 18:20:36 clsstd2 kernel: block drbd2:peer 719D326BDE8272E2:0000000000000000:C7BA4724E2658B94:C7B94724E2658B95 bits:0 flags:1
Apr-19 18:20:36 clsstd2 kernel: block drbd2:uuid_compare()=-1000 by rule 100
Apr-19 18:20:37 clsstd2 kernel: block drbd2:Unrelated data, aborting!
Apr-19 18:20:37 …Run Code Online (Sandbox Code Playgroud)