Openfiler 2.3主动/被动群集(心跳,DRBD)与异地复制节点

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
  • on filer02
    • eth0: 10.10.11.102
    • eth1: 10.10.50.102
  • filer03上
    • eth0: 10.10.11.103
    • eth1: 10.10.50.103
  • 虚拟设备:(这将由心跳创建,不要将这些ip添加到任何界面)
    • eth0:0 10.10.11.100 (iscsi目标服务器ip)
    • eth1:0 10.10.50.100 (复制接口)

完成安装后,在更新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(filer01filer02 ):

auth 2
2 crc

将访问权限更改为/etc/ha.d/authkeys文件:

chmod 600 /etc/ha.d/authkeys

创建etc / ha.d / ha.cffiler01filer02 ):

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

filer01filer02上启动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
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏