Openfiler 2.3使用非现场复制节点的主动/被动群集(Heartbeat,DRBD)
介绍
Openfiler是基于Linux的NAS / SAN应用程序,可以通过nfs / smb / iscsi和ftp提供存储。 它有一个Web界面,您可以控制这些服务。 Howto是基于来自Kyle Gililland的Howto 。 非常感谢他这样做。
我们构建的集群将由两个节点互相复制,并在紧急情况下接管服务和存储。 此外,我们还有一个非现场复制服务器,它理想地处于物理上不同的位置,并复制了任何节点处于活动状态的配置/存储。 在紧急情况下,此异地复制服务器可用于恢复集群并提供服务。
我使用Openfiler的VMware图像2.3 x86和Openfiler 2.3 x86安装媒体来测试这个howto。 希望您能够重复我的步骤,并有一个安全和便宜的存储解决方案。
概述
- 安装
- 2.准备DRBD的分区
- 3.创建基本的心跳配置
- DRBD配置
- 5.准备配置分区
- 6.启动数据/存储分区
- 7.创建最终的心跳配置
- 8.启用/禁用系统服务
- 9.在node1和node2上测试故障切换
- 10.检查filer01和filer02的恢复
- 10.1 DRBD配置
- 10.2 filer01和filer02重做配置
- 10.3重新获取资源,再次运行集群
- 11.使用复制节点作为主节点
- 11.1完成复制,如何将复制节点再次置于待机状态
- 12.添加另一个存储分区
要求
硬件
- 3x盒符合openfiler的最低硬件要求
- 每个盒子上有两个以太网接口
安装
在openfiler的安装过程中,您将要使用的部分磁盘用于未使用的Storage Services。 在这种情况下,它是每个系统中的第二个硬盘。 我们在安装后创建存储复制的分区。
网络配置
- 在
filer01上
:- eth0:
10.10.11.101
- eth1:
10.10.50.101
- eth0:
- on
filer02
:- eth0:
10.10.11.102
- eth1:
10.10.50.102
- eth0:
- 在
filer03上
:- eth0:
10.10.11.103
- eth1:
10.10.50.103
- eth0:
- 虚拟设备:(这将由心跳创建,不要将这些ip添加到任何界面)
- eth0:0
10.10.11.100
(iscsi目标服务器ip) - eth1:0
10.10.50.100
(复制接口)
- eth0:0
完成安装后,在更新openfiler系统时,自己建立一个不错的工作环境。 现在更新系统很重要,因为openfiler 2.3标准安装介质不会带来三节点复制所需的DRBD 8.3.x。
conary update conary
conary updateall --replace-files --no-conflict-check
当系统更新时,将其他文件夹添加到/ etc / hosts
文件中,并生成一些ssh密钥并进行交换。
root@filer01 ~# nano /etc/hosts
#Installed by rBuilder 127.0.0.1 filer01 localhost.localdomain localhost 10.10.50.102 filer02 10.10.50.103 filer03
root@filer02 ~# nano /etc/hosts
#Installed by rBuilder 127.0.0.1 filer02 localhost.localdomain localhost 10.10.50.101 filer01 10.10.50.103 filer03
root@filer03 ~# nano /etc/hosts
#Installed by rBuilder 127.0.0.1 filer03 localhost.localdomain localhost 10.10.50.101 filer01 10.10.50.102 filer02
然后我们创建没有密码的ssh密钥,我们用于更容易的文件交换。
root@filer01 ~# ssh-keygen -t dsa
生成公共/私有dsa密钥对。
输入要保存密钥的文件(/root/.ssh/id_dsa):
创建目录“/root/.ssh”。
输入密码(空密码为无密码):
再次输入相同的密码:
您的身份已保存在/root/.ssh/id_dsa中。
您的公钥已保存在/root/.ssh/id_dsa.pub中。
关键指纹是:
4c:76:ec:61:10:2a:07:9f:35:8d:9b:16:89:5c:bc:b9 root @ filer01
在其他2个节点上执行相同操作:
root@filer02 ~# ssh-keygen -t dsa
root@filer03 ~# ssh-keygen -t dsa
交换节点之间的公钥:
root@filer01 ~# scp .ssh/id_dsa.pub root@filer02:~/.ssh/authorized_keys2
root@filer01 ~# scp .ssh/id_dsa.pub root@filer03:~/.ssh/authorized_keys2
root@filer02 ~# scp .ssh/id_dsa.pub root@filer01:~/.ssh/authorized_keys2
root@filer02 ~# scp .ssh/id_dsa.pub root@filer03:~/.ssh/authorized_keys
root@filer03 ~# scp .ssh/id_dsa.pub root@filer01:~/.ssh/authorized_keys
root@filer03 ~# scp .ssh/id_dsa.pub root@filer02:~/.ssh/authorized_keys
root@filer01 ~# cat .ssh/authorized_keys >> .ssh/authorized_keys2
root@filer02 ~# cat .ssh/authorized_keys >> .ssh/authorized_keys2
root@filer03 ~# cat .ssh/authorized_keys >> .ssh/authorized_keys2
2.准备DRBD的分区
为DRBD设置分区,该分区将包含openfiler及其存储服务的配置文件。 不要将这些添加到/ etc / fstab中。 如果在安装过程中创建了分区,请在/ etc / fstab
文件中删除它们的条目。
您必须在所有3台机器上执行此步骤。
fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1566, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1566, default 1566): 67
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (68-1566, default 68):
Using default value 68
Last cylinder, +cylinders or +size{K,M,G} (68-1566, default 1566):
Using default value 1566
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
你必须存在fdisk与w写入更改到磁盘。
之后可以检查分区:
fdisk -l
磁盘/ dev / sda:2355 MB,2355978240字节
16个头,63个扇区/轨道,4565个气缸
单位=圆柱体1008 * 512 = 516096字节
磁盘标识符:0x00000000
设备启动开始结束块Id系统
/ dev / sda1 * 1 4565 2300696 83 Linux
磁盘/ dev / sdb:12.9 GB,12884901888字节
255个头,63个扇区/轨道,1566个气缸
单位=气缸数16065 * 512 = 8225280字节
磁盘标识符:0xff9e0345
设备启动开始结束块Id系统
/ dev / sdb1 1 67 538146 83 Linux
/ dev / sdb2 68 1566 12040717+ 8e Linux LVM
注意:在继续之前,系统应该已经完成更新。
3.创建基本的心跳配置
创建DRBD将用于异地复制的虚拟IP需要此步骤。
创建/etc/ha.d/authkeys(filer01
和filer02
):
auth 2 2 crc
将访问权限更改为/etc/ha.d/authkeys
文件:
chmod 600 /etc/ha.d/authkeys
创建etc /
ha.d
/ ha.cf
( filer01
和filer02
):
debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 bcast eth1 keepalive 5 warntime 10 deadtime 120 initdead 120 udpport 694 auto_failback off node filer01 node filer02
编辑/opt/openfiler/etc/cluster.xml(filer01
):
<?xml version="1.0" ?> <cluster> <clustering state="on" /> <nodename value="filer01" /> <resource value="MailTo::it@company.com::ClusterFailover"/> <resource value="IPaddr::10.10.50.100/24/eth1" /> </cluster>
转到https://10.10.11.101:446
并启动iscsi目标服务(这将在filer01
上创建/etc/ha.d/haresources
)。
将haresource
文件复制到filer02
并启动心跳IP:
root@filer01 ~# scp /etc/ha.d/haresources root@filer02:/etc/ha.d/haresources
root@filer01 ~# service heartbeat start
root@filer02 ~# service heartbeat start
等到心跳在两个节点上,然后在filer02上停止心跳
:
root@filer02 ~# service heartbeat stop
这应该创建一个故障转移,其中filer01
获取IP地址10.11.50.100
,检查这个与filer01
上的ifconfig
,输出应该是这样的。
root@filer01 ~# ifconfig
eth0链路封装:以太网HWaddr 00:0C:29:D9:66:27
inet addr:10.10.11.101播放:10.10.11.255掩码:255.255.255.0
eth1链路封装:以太网HWaddr 00:0C:29:D9:66:31
inet地址:10.10.50.101播放:10.10.50.255掩码:255.255.255.0
eth1:0链路封装:以太网HWaddr 00:0C:29:D9:66:31
inet地址:10.10.50.100播放:10.10.50.255掩码:255.255.255.0
如果这样设置,您现在可以继续开始创建drbd设备。 如果不检查/ var / log / ha-log
的输出,并尝试弄清楚是什么问题。
DRBD配置
本手册意味着您过去曾与drbd合作,并且知道如何调整drbd公用部分的硬件。 使用协议C节省堆叠资源,但不是最好的网络性能。
删除旧的drbd.conf
并创建一个新的:
root@filer01 ~# rm /etc/drbd.conf
root@filer01 ~# nano /etc/drbd.conf
global { usage-count yes; } common { protocol C; disk { on-io-error detach; } net { after-sb-0pri disconnect; after-sb-1pri disconnect; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { al-extents 257; rate 100M; } handlers { pri-on-incon-degr "echo O > /proc/sysrq-trigger ; halt -f"; pri-lost-after-sb "echo O > /proc/sysrq-trigger ; halt -f"; local-io-error "echo O > /proc/sysrq-trigger ; halt -f"; } startup { degr-wfc-timeout 120; # 2 minutes. } } resource meta { on filer01 { device /dev/drbd0; disk /dev/sdb1; address 10.10.50.101:7788; meta-disk internal; } on filer02 { device /dev/drbd0; disk /dev/sdb1; address 10.10.50.102:7788; meta-disk internal; } } resource data { on filer01 { device /dev/drbd1; disk /dev/sdb2; address 10.10.50.101:7789; meta-disk internal; } on filer02 { device /dev/drbd1; disk /dev/sdb2; address 10.10.50.102:7789; meta-disk internal; } } resource meta-U { stacked-on-top-of meta { device /dev/drbd10; address 10.10.50.100:7788; } on filer03 { device /dev/drbd10; disk /dev/sdb1; address 10.10.50.103:7788; meta-disk internal; } } resource data-U { stacked-on-top-of data { device /dev/drbd11; address 10.10.50.100:7789; } on filer03 { device /dev/drbd11; disk /dev/sdb2; address 10.10.50.103:7789; meta-disk internal; } }
将此文件复制到其他节点:
root@filer01 ~# scp /etc/drbd.conf root@filer02:/etc/drbd.conf
root@filer01 ~# scp /etc/drbd.conf root@filer03:/etc/drbd.conf
启动较低的资源:
root@filer01 ~# drbdadm create-md meta
root@filer01 ~# drbdadm create-md data
root@filer02 ~# drbdadm create-md meta
root@filer02 ~# drbdadm create-md data
在filer01
和filer02
上启动DRBD:
root@filer01 ~# service drbd start
root@filer02 ~# service drbd start
在filer01上设置较低的drbd资源:
root@filer01 ~# drbdsetup /dev/drbd0 primary -o
root@filer01 ~# drbdsetup /dev/drbd1 primary -o
在资源上创建DRBD元数据:
root@filer01 ~# drbdadm --stacked create-md meta-U
root@filer01 ~# drbdadm --stacked create-md data-U
启用堆叠资源并将其设置为主要:
root@filer01 ~# drbdadm --stacked up meta-U
root@filer01 ~# drbdadm --stacked up data-U
root@filer01 ~# drbdsetup /dev/drbd10 primary -o
root@filer01 ~# drbdsetup /dev/drbd11 primary -o
在filer03
上创建DRBD元数据并启动资源:
root@filer03 ~# drbdadm create-md meta-U
root@filer03 ~# drbdadm create-md data-U
root@filer03 ~# service drbd start
控制节点上的同步过程:
root@filer01 ~# service drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by phil@fat-tyre, 2010- 01-13 17:17:27
m:res cs ro ds p mounted fstyp e
0:meta Connected Primary/Secondary UpToDate/UpToDate C
1:data Connected Primary/Secondary UpToDate/UpToDate C
10:meta-U^^0 Connected Primary/Secondary UpToDate/UpToDate C
11:data-U^^1 Connected Primary/Secondary UpToDate/UpToDate C
这样,当所有节点同步并且filer01
是主要节点时,它应该看起来。
5.准备配置分区
Filer01
启动元分区:
注意:这里我们将使用堆叠资源而不是较低级的资源!
root@filer01 ~# mkfs.ext3 /dev/drbd10
Openfiler到Meta-Partition:
root@filer01 ~# mkdir /meta
root@filer01 ~# mount /dev/drbd10 /meta
root@filer01 ~# mv /opt/openfiler/ /opt/openfiler.local
root@filer01 ~# mkdir /meta/opt
root@filer01 ~# cp -a /opt/openfiler.local /meta/opt/openfiler
root@filer01 ~# ln -s /meta/opt/openfiler /opt/openfiler
root@filer01 ~# rm /meta/opt/openfiler/sbin/openfiler
root@filer01 ~# ln -s /usr/sbin/httpd /meta/opt/openfiler/sbin/openfiler
root@filer01 ~# rm /meta/opt/openfiler/etc/rsync.xml
root@filer01 ~# ln -s /opt/openfiler.local/etc/rsync.xml /meta/opt/openfiler/etc/
root@filer01 ~# mkdir -p /meta/etc/httpd/conf.d
Samba / NFS / ISCSI / PROFTPD配置文件到元分区:
root@filer01 ~# service nfslock stop
root@filer01 ~# service nfs stop
root@filer01 ~# service rpcidmapd stop
root@filer01 ~# umount -a -t rpc-pipefs
root@filer01 ~# mkdir /meta/etc
root@filer01 ~# mv /etc/samba/ /meta/etc/
root@filer01 ~# ln -s /meta/etc/samba/ /etc/samba
root@filer01 ~# mkdir -p /meta/var/spool
root@filer01 ~# mv /var/spool/samba/ /meta/var/spool/
root@filer01 ~# ln -s /meta/var/spool/samba/ /var/spool/samba
root@filer01 ~# mkdir -p /meta/var/lib
root@filer01 ~# mv /var/lib/nfs/ /meta/var/lib/
root@filer01 ~# ln -s /meta/var/lib/nfs/ /var/lib/nfs
root@filer01 ~# mv /etc/exports /meta/etc/
root@filer01 ~# ln -s /meta/etc/exports /etc/exports
root@filer01 ~# mv /etc/ietd.conf /meta/etc/
root@filer01 ~# ln -s /meta/etc/ietd.conf /etc/ietd.conf
root@filer01 ~# mv /etc/initiators.allow /meta/etc/
root@filer01 ~# ln -s /meta/etc/initiators.allow /etc/initiators.allow
root@filer01 ~# mv /etc/initiators.deny /meta/etc/
root@filer01 ~# ln -s /meta/etc/initiators.deny /etc/initiators.deny
root@filer01 ~# mv /etc/proftpd /meta/etc/
root@filer01 ~# ln -s /meta/etc/proftpd/ /etc/proftpd
用于Openfiler的httpd模块(使用64位openfiler的lib64
):
root@filer01 ~# rm /opt/openfiler/etc/httpd/modules
root@filer01 ~# ln -s /usr/lib/httpd/modules /opt/openfiler/etc/httpd/modules
重新启动Openfiler以查看是否一切正常:
root@filer01 ~# service openfiler restart
注意:如果没有重新启动,请检查是否已连接httpd模块,可能您使用lib64而不是lib!
Filer02和Filer03
Openfiler配置:
mkdir /meta
mv /opt/openfiler/ /opt/openfiler.local
ln -s /meta/opt/openfiler /opt/openfiler
Samba / NFS / ISCSI / PROFTPD配置文件到元分区:
service nfslock stop
service nfs stop
service rpcidmapd stop
umount -a -t rpc-pipefs
rm -rf /etc/samba/
ln -s /meta/etc/samba/ /etc/samba
rm -rf /var/spool/samba/
ln -s /meta/var/spool/samba/ /var/spool/samba
rm -rf /var/lib/nfs/
ln -s /meta/var/lib/nfs/ /var/lib/nfs
rm -rf /etc/exports
ln -s /meta/etc/exports /etc/exports
rm /etc/ietd.conf
ln -s /meta/etc/ietd.conf /etc/ietd.conf
rm /etc/initiators.allow
ln -s /meta/etc/initiators.allow /etc/initiators.allow
rm /etc/initiators.deny
ln -s /meta/etc/initiators.deny /etc/initiators.deny
rm -rf /etc/proftpd
ln -s /meta/etc/proftpd/ /etc/proftpd