企业级Linux讲座之在SAN上建立高可靠性SAMBA集群

http://bbs.365master.com/thread-55343-1-1.html

 

 

 

由于SAN 的当红,而且愈来愈多厂商对于Linux HA 解决方案感兴趣,本期文章笔者将介绍如何在FC SAN 环境下实作RedHat High Availability SAMBA Cluster。
  
  简介
  
  储存局域网络(Storage Area Network)简称SAN,是一种连结储存设备的专属网络,其目的是用来取代服务器和储存设备之间的SCSI I/O。提到SAN,绝大多数人会将它和光纤信道(Fibre Channel)联想在一起,事实上根据SNIA(Storage Networking Industry Association,SNIA)的定义,SAN 是指专为储存设计的网络架构,并不限定使用何种网络技术,光纤信道技术只是储存网络技术的其中一项。
  
  虽然目前绝大多数的SAN 都采用光纤信道技术建构储存网络,但除了光纤信道技术外,SAN 也可以采用以太网络技术建构。SNIA 建议,以光纤信道技术建构的储存网络称为Fibre Channel SAN(FC SAN),以以太网络技术(如iSCSI)建构的储存网络则称为IP SAN。
  
  SAN 的数据传输走的是专用网络,而FC SAN 所采用的光纤信道传输协议的频宽高达2Gbit/s),和SCSI 总线的传输速率差不多,除了适合存放需要运算的资料(如数据库),尤其适合应用在资料的备份与还原,而且不仅不会增加区碱网络的流量负担,亦不占用服务器的运算资源。
  
 
  图1: 企业SAN 架构示意图

  
  前期文章,笔者利用Proware Rackmount 3000I3 磁盘阵列当HA Cluster 所需的Share Disk。在SCSI 的架构下,Linux Cluster 会有诸多的限制,例如node数的扩充,会受到SCSI 磁盘阵列所能串接的主机数限制(通常为两台)及SCSI排线长度限制。反观若采用SAN 的架构就不会如此绑手绑脚。
  
  SAMBA 是让Linux 与MS Windows 共享资源的服务。让Windows 计算机可以透过『网上邻居』来存取Linux 主机上面的文件。通常扮演企业中FileServer 的角色。此篇文章最主要便是带领各位读者如何在SAN 架构下建置RedHat High Availability SAMBA Cluster。
  
  测试环境
  
  软件
  RedHat Enterprise Linux AS 版Update 1
  RedHat Cluster Suite Update 2
  
  硬件
  x 86 服务器两台
  IBM FAStT 500/EXP 500
  SAN Switch
  IBM FAStT FC-2 Host Bus Adapter(QLA2300)两张
  两张网络卡
  
 
  图2:IBM FAStT 500 背面架构图
   
  图3:IBM EXP500 Storage Expansion Unit 正面图
   
  图4:IBM 3534-F08 Fibre Channel Switch
   
  图5:IBM FAStT FC-2 Host Bus Adapter(QLA2300)HBA 卡

  
  High Availability SAMBA Cluster on SAN 架构
  
  笔者测试架构的简图如图6。主要服务器rhel3-1 的ip 为192.168.33.1,后备服务器rhel3-2 的ip 为192.168.33. 2,整个HA Cluster 对外的service ip 为192.168.33.3。
  
 
  图6:High Availability SAMBA Cluster on SAN 架构图

  
  Linux SAMBA HA Cluster on SAN的建置分为三个部份
  
  1. Setup fibre channel storage

  
  设置Qlogic HBA卡
  Update Qlogic driver
  Create New Logical Drive
  设置Mappings
  
  2. Install and setup Red Hat Cluster Manager
  
  安装Red Hat集群管理员套件
  编写/etc/hosts
  设置集群共享分区
  设置集群名称
  设置Share Raw Device
  新增Cluster Member
  设置Failover Domain
  SAMBA Druid
  复制相关配置文件至另一台node
  设置Cluster Log
  查看Cluster状态
  
  3. 测试
  
  1、 Setup fibre channel storage

  
  1) 设置Qlogic HBA卡
  
  当系统开机时,出现Qlogic BIOS 提示符号时,按下「Ctrl+Q」除了修改下列设置值外,其余皆保留默认值(图7):
  
  - Host Adapter settings
  Loop reset delay - 8.
  - Advanced Adapter Settings
  LUNs per target - 0
  Enable Target Reset - Yes
  Port down retry count - 12
  
 
  图7:Fast!UTIL 设置画面

  
  2) Update Qlogic driver
  
  虽说笔者测试过RedHat Enterprise U2 内附的Qlogic Driver 是可以正确侦测到FAStT 分配的磁盘空间。不过笔者还是建议使用IBM 所提供的Qlogic Driver,毕竟这是IBM Lab 测试过且认为没有问题的版本。笔者使用的是IBM FAStTHost Adapter Driver 7.00.61 版,此版本的driver 可从下列网址download。
  
  http://www-1.ibm.com/support/docview.wss?rs=501&uid=psg1MIGR-54952&loc=en_US
  
  它所支持的Linux O.S 如表一所示。就笔者的经验,如果在Linux 上安装HBA卡,一定要注意kernel 版本和Driver 版本搭配兼容问题,根据表一,7.00.61 版支持RHEL3 的kernel 版本为2.4.21.9.0.1.EL,所以笔者的实作环境便采用2.4.21.9.0.1.EL 的kernel。
  
  
表1:IBM FAStT Host Adapter Driver 7.00.61 版支持 操作系统列表
   

  安装2.4.21-9.0.1 EL kernel 及source
  
  若是读者安装的是RHEL 3.0,默认的kernel 为2.4.21-4,则必须跟RedHat 申请Update 1 CD,在此光盘中RedHat/Updates 目录中包含2.4.21-9.0.1.EL 的kernel 及kernel source。请利用rpm 指令安装,并重新开机,选择从2.4.21-9.0.1.EL kernel 开机。如果读者安装的是RHEL 3.0 Update 1 则其默认的kernel 便是2.4.21-9.0.1.EL,所以只要再安装kernel source 的rpm 即可。
  
  #rpm -ivh kernel-2.4.21-9.EL.i686.rpm
  #rpm -ivh kernel-source-2.4.21-9.EL.i386.rpm
  
  解压缩Qlogic Driver Source code
  
  #tar -xvzf 26r0536.tgz –C /tmp
  #cd /tmp/i2x00-v7.00.61
  #./drvrinstall
  
  Build Qlogic device driver
  
  #cd /usr/src/linux-2.4
  #vi Makefile 将EXTRAVERSION 中的custom 删除
  VERSION = 2
  PATCHLEVEL = 4
  SUBLEVEL = 21
  EXTRAVERSION = -9.0.1.Elcustom
  #make mrproper
  #cp configs/kernel-2.4.21-i686.config .config
  
  注:若读者的机器为多处理器(smp)架构,则需要使用kernel-2.4.21-i686-smp.config
  
  #make oldconfig
  #make dep
  切换到Qlogic Source Code 的目录
  #cd /tmp/i2x00-v7.00.61
  
  利用make all 产生Qlogic Driver,若是smp 架构,则用make all smp=1,执行此道指令后,在此目录下会产生Qlogic 2200 及Qlogic 2300 HBA 卡的Driver。
  
  #make all
  #cp *.o /lib/modules/2.4.21-9.EL/kernel/drivers/addon/qla2200/
  #vi /etc/modules.conf
  在文件最后加上一行
  options scsi_mod max_scsi_luns=32
  #reboot
  重新开机
  
  3) Create New Logical Drive
  
  笔者欲从FAStT 500 上切出一块1GB 的空间分配给Linux HA Cluster,首先必须安装FAStT Storage 管理工具IBM FAStT Storage Manager v8.4,下载网址如下:
  
  http://www-1.ibm.com/support/docview.wss?rs=501&uid=psg1MIGR-52951&loc=en_US
  
  笔者可以将其安装在Windows 或Linux 上,激活Storage Manager 所看到的画面如图8。
  
 
  图8:IBM FAStT Storage Manager v8.4 画面

  
  点选「Unconfigured Capacity」,然后按「右键」选择「Create New Logical Drive」
  
  「Current default host type」展开下拉式选单,选择「linux」
  
  时会出现「Create Logical Drive Wizard」画面,请选择「UnconfiguredCapacity (create new array)」然后按下「Next」。(图9)
  
 
  图9:Create Logical Drive Wizard

  
  选择适当的RAID level,笔者设置为「RAID 5」
  
  读者可以利用自动(Automatic)或手动(Manual)的方式选择欲利用那些硬盘组成RAID 5 的Disk Array。(图10)
  
 
  图10:指定Disk Array 相关参数

  
  设置New logical drive 的大小(图11)
  
 
  图11:设置New logical drive 的大小

  
  4) 设置Mappings
  
  选择FAStT Storage Manager 8主画面「Mappings View」,点选「Default Group」按右键,选择「Define Host」新增两个Host。(图12)
  
 
  图12:「Mappings View」定义Host 画面

  
  点选右边窗口中的「Logical Drive Name」,按右键选择「Change Mapping」。(图13)
  
  在Define Host Port 画面中填入rhel3-1 主机上HBA 卡的Host port identifier(图14);重复此步骤定义另一台主机rhel3-2。最后会看到如图15 的画面。
  
 
  图13:Defined Mappings 画面
   
  图14:Defined Host Port 画面
  
  图15:Mappings View 设置完成画面
欢迎大家到我的博客去踩一踩:
Linux RHCE考试辅导站:
http://blog.163.com/rhce_cn/

  2、Install and setup Red Hat Cluster Manager
  
  1) 安装Red Hat 集群管理员套件
  
  用root 登入rhel3-1 安装clumanager 与redhat-config-cluster 套件才能设置Red Hat 集群管理员,将光盘收入光驱中,便会自动执行安装程序。请选择「clumanager」及「redhat-config-cluster」套件进行安装;在rhel3-2 亦重复此步骤,或利用rpm 方式安装:
  
  # rpm -ivh clumanager-1.2.12-1.i386.rpm
  # rpm -ivh redhat-config-cluster-1.0.2-1.1.noarch.rpm
  
  2) 编写/etc/hosts
  
  [root@rhel3-1 root]# cat /etc/hosts
  # Do not remove the following line, or various programs
  # that require network functionality will fail.
  127.0.0.1 localhost.localdomain localhost
  192.168.33.1 rhel3-1.example.com rhel3-1
  192.168.33.2 rhel3-2.example.com rhel3-2
  192.168.33.3 ha.example.com ha
  [root@rhel3-1 root]# scp /etc/hosts rhel3-2:/etc 并将此档scp 至rhel3-2
  
  3) 设置集群共享分区(Configuring Shared Cluster Partitions)
  
  在rhel3-1 上利用fdisk 切出两个60MB 的分区sdb1、sdb2(须大于10MB)做Raw Device 用,再从其中切出500MB 分区,再利用「mke2fs –j /dev/sdb3」格式化此文件系统。(图16)
  
  编写/etc/sysconfig/rawdevices 文件,编辑完/etc/sysconfig/rawdevices 文件后,可以重新开机或者是执行下列指令「service rawdevices restart」来使其生效。
  
  读者可以用「raw –aq」查询所有的raw 设备
  [root@rhel3-1 root]# cat /etc/sysconfig/rawdevices
  # raw device bindings
  # format: <rawdev> <major> <minor>
  # <rawdev> <blockdev>
  # example: /dev/raw/raw1 /dev/sda1
  # /dev/raw/raw2 8 5
  /dev/raw/raw1 /dev/sdb1
  /dev/raw/raw2 /dev/sdb2
  
 
  图16:hwbrowser 显示share disk 分区状况

  
  4) 设置集群名称
  
  选择『主选单』/『系统设置』/「服务器设置』/『集群』。
  
  或在shell 提示符号下输入redhat-config-cluster 指令。
  
 
  图17:设置集群名称

  
  5) 设置Share Raw Device
  
  选择redhat-config-cluster 上的「Cluster」/「Shared State」便可看到图18的画面,填入正确的Raw Device。
  
 
  图18:Share Raw Device

  
  6) 新增Cluster Member
  
  选择「Member」,再点选「New」的按钮。便会出现要求输入Member 名称的窗口。请输入Cluster 中一部系统的主机名称或地址,请注意每一个Member 必须位于与执行redhat-config-cluster 的机器在同一子网络中,而且必须在DNS或每一部集群系统的/etc/hosts 文件中已经定义了。请新增两个Cluster Member「rhel3-1」及「rhel3-2」。
  
 
  图19:Linux HA cluster Members

  
  7) 设置Failover Domain
  
  选择「Failover Domain」的卷标页,再点选「New」的按钮。将会出现的「Failover Domain」对话窗口,设置Domain Name 及Add Members。
  
 
  图20:设置「Failover Domain」的属性

  
  8) 利用「SAMBA Druid」来快速设置一个客户端可存取的SAMBA 共享
  
  点选「Add Exports」/「SAMBA」,将会看到如图21 的画面,然后按下「Forward」。
  
 
  图21:SAMBA Druid 画面

  
  利用「SAMBA Druid」将/dev/sdb3 共享给Windows Client,首先设置「Service Name」及「Service IP」。(图22)
  
 
  图22:设置Service Name 及Service IP Address

  
  设置SAMBA service 所对应的Device Special File 及Device Mount Point 如图23 所示。按下「Forward」键后会出现设置share name 的窗口(图24)。
  
 
  图23:设置欲共享的Device 及对应的Mountpoint
   
  图24:设置Share Name

  
  设置Share Name 后,按下「Forward」键,出现设成画面。记得将/etc/samba/smb.conf.myshare 复制至其它的Cluster Memeber。
  
 
  图25:SAMBA Druid 设置完成画面

  
  最后点选「Apply」完成这个服务。并从「集群设置工具」中选择「File」/「Save」来储存设置。(图25)
  
  9) 复制相关配置文件至另一台node
  
  将相关配置文件cluster.xml、/etc/samba/smb.conf.myshare 复制至rhel3-2
  
  [root@rehl3-1 root]# scp /etc/cluster.xml rhel3-2:/etc/
  root@rhel3-2's password:
  cluster.xml                 100% 1405
  [root@rehl3-1 root]# scp /etc/samba/smb.conf.myshare rhel3-2:/etc/
  root@rhel3-2's password:
  smb.conf.myshare               100% 867
  在rhel3-1 及rhel3-2 上激活clumanager Daemon
  [root@ rehl3-1 root]# service clumanager start
  Starting Red Hat Cluster Manager...
  Loading Watchdog Timer (softdog):         [ OK ]
  Starting Quorum Daemon:
  [root@ rehl3-2 root]# service clumanager start
  Starting Red Hat Cluster Manager...
  Loading Watchdog Timer (softdog):         [ OK ]
  Starting Quorum Daemon:
  10) 设置Cluster log
  
  修改rhel3-1 及rhel302 上的/etc/syslog.conf 指定Cluster Log 存放位置,并重新激活syslog Daemon。
  
  [root@rhel3-1 root]# vi /etc/syslog.conf
  # Add for cluster
  local4.*     /var/log/cluster
  
  # service syslog restart
  
  [root@rhel3-2 root]# vi /etc/syslog.conf
  # Add for cluster
  local4.*     /var/log/cluster
  
  # service syslog restart
  
  11) 查看Cluster 状态
  
  在终端窗口中键入「redhat-config-cluster」激活Cluster 管理工具。点选窗口下方samba service,然后勾选激活samba 服务。如果一切设置无误,应会看到如图26 的画面。
  
 
  图26:RedHat SAMBA HA Cluster 状态

  
  3、 测试
  
  笔者利用另一台Windows 的机器联机到HA Cluster 的service ip(图26),此时可以对主要的服务器rhel3-1 做强迫关机的动作,或是kill clumembd 的process 亦可仿真rhel3-1 当机。此时rhel3-2 便会Take Over SAMBA 服务,达到High Availability 目的。
  
 
  图27:Windows Client 联机SAMBA HA Cluster 画面

  
  kill clumembd process
  [root@rhel3-1 root]# ps -ef | grep clumembd
  root 2597 1  0  11:46  ?   00:00:00  /usr/sbin/clumembd
  root 3219 3167 0  11:48  pts/2 00:00:00  grep clumembd
  [root@rhel3-1 root]# kill -9 2597
  
  此时rhel3-1 会重新开机,rhel3-2 会take over Samba Service。我们可用「clustat」指令检查Cluster 状态。
  
  检查Cluster 状态
  [root@rhel3-2 root]# clustat
  Cluster Status - IBM FAStT Cluster
  Cluster Quorum Incarnation #19
  Shared State: Shared Raw Device Driver v1.2
  Member     Status
  ------------  -------
  rhel3-1    Inactive
  rhel3-2    Active   <-- You are here
  Service     Status  Owner(Last)     Last Transition  Chk Restarts
  -------------- -------- ---------------- ---------------------- ---- ----
  samba      started rhel3-2        11:49:31 Aug 19 0  0
  
  后记
  
  笔者在SAN 架构建置High Availability SAMBA Cluster。很多大型企业均采用SAN 的架构储存企业的重要资料。而Linux 对SAN 相关的支持亦愈来愈完整,显示Linux 巳慢慢走入大型企业,扮演起企业的重要关键系统。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值