DTe*_*est 3 synchronization rsync load-balancing
我最近为我们的网站设置了负载平衡解决方案。我们托管了大约 200 个站点,大多数运行我们的自定义应用程序,但有些运行 wordpress 博客(可以上传/删除其中的文件)。设置是基本的:
|-------------------> Apache1
|
HAProxy -|
|
|-------------------> Apache2
Run Code Online (Sandbox Code Playgroud)
我已设置Apache1
为“主”,因此Apache2
使用以下命令对它所做的大部分更改都会每分钟同步一次:
rsync -av --delete apache1:/var/www/html/ /var/www/html/
Run Code Online (Sandbox Code Playgroud)
问题是,如前所述,在某些情况下,文件是在Apache2
. 到目前为止,我想出的唯一解决方案是将Apache1
某些目录(例如 wp-content)中的所有文件同步到自身(而不是删除),然后将所有内容推回Apache2
.
这有它的缺陷,主要是:
Apache2
考虑到两台服务器都可以添加、更新和删除文件,是否有任何方法可以保持 2 个以上的 Web 服务器同步?
qua*_*nta 11
DRBD 资源/etc/drbd.d/r0.res
:
resource r0 {
syncer { rate 1000M; }
net {
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
startup { become-primary-on both; }
on s1 {
device /dev/drbd1;
disk /dev/sdc;
address ip1:7789;
meta-disk internal;
}
on s2 {
device /dev/drbd1;
disk /dev/xvdb2;
address ip2:7789;
meta-disk internal;
}
}
Run Code Online (Sandbox Code Playgroud)
/dev/drbd1
被格式化为 ocfs2 文件系统:
/dev/drbd1 ocfs2 100660180 7427076 93233104 8% /data/webroot
Run Code Online (Sandbox Code Playgroud)
无 Pacemaker 的 OCFS2 配置/etc/ocfs2/cluster.conf
:
node:
ip_port = 7777
ip_address = ip1
number = 0
name = s1
cluster = ocfs2
node:
ip_port = 7777
ip_address = ip2
number = 1
name = s2
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
Run Code Online (Sandbox Code Playgroud)
可以使用drbd-overview
实用程序查看 DRBD 状态:
# drbd-overview
1:r0 Connected Primary/Primary UpToDate/UpToDate C r---- /data/webroot ocfs2 96G 9.8G 87G 11%
Run Code Online (Sandbox Code Playgroud)
或来自/proc/drbd
:
cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
ns:953133955 nr:42207234 dw:1185526354 dr:62396241 al:230084 bm:5853 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Run Code Online (Sandbox Code Playgroud)