刘启军
作者刘启军2016-11-15 10:21
技术经理, 某金融企业

SUSE Linux 高可用架构设计及实现

字数 4911阅读 5079评论 0赞 0

每个企业的IT系统建设都有一套标准的技术规范,企业在系统建设前期,可根据应用架构及业务连续性的要求制定采用适合的系统架构,常见架构有集群模式、负载均衡模式、高可用模式等。

集群模式多为应用集群、数据库集群。如常用的IBM IHS Plugin+WAS集群,Oracle RAC集群,DB2 PureScale集群等,集群中的节点可进行会话复制与保持。该模式更多用于关键业务系统,这类系统对业务连续性要求高,可达到无缝接管。

负载均衡模式更多的用于应用实现负载。常见的负载均衡器有F5等产品,负载分发器也可以使用产品软件实现,但性能不佳。此类模式同样多用于关键业务系统,对业务连续性要求较高。

高可用模式多用于应用、数据库环境,有主备模式、互备模式。系统发生灾难时,应用系统将发生主备切换,在业务方面有短暂中断影响。

上述的三种模式运行均可作到无人值守,但对业务的连续性有本质的区别。本文介绍如何使用SUSE LINUX实现高可用建设的方法,为阅读者提供一个思路。

文档以高可用配置为主体内容,对主机网卡绑定、以及存储卷管理等内容归纳到准备工作中。

1 高可用系统架构

1.1 系统架构

以主备模式运行的高可用环境,,当主节点发生灾难时,备节点会在短时间内接管全部应用,接管过程时间视应用程序大小、启动复杂度,一般在1-2分钟内完成切换。

以环境两台X86 PC服务器、SUSE LINUX 11企业版及High Availability(简称HA)高可用软件,外接SAN光纤存储为例。要求服务器采用4块网卡、2块HBA卡冗余配置,架构如下图所示:

1.2 节点信息

其中:子网掩码为:255.255.255.0

        网关为:192.168.1.254

2 准备工作

为了更清晰的体现高可用配置过程,这里把网络、存储方面的配置归纳入准备工作中。
2.1 高可用节点网卡的绑定

说明:该工作放置在高可用配置前进行,本文以生产网卡为例,心跳网卡绑定同样方法实现。

步骤1:# cd /etc/sysconfig/network

步骤2:配置绑定网卡bond0

      #vi ifcfg-bond0
      DEVICE=bond0  #绑定设备名称,其他绑定以此序号后推
      BOOTPROTO='static' #静态IP
      STARTMODE='onboot' #启动后网卡激活
      IPADDR='192.168.1.1[192.168.1.2]’#绑定后IP
      NETMASK='255.255.255.0’#子网掩码
      BONDING_MODULE_OPTS='mode=1 miimon=100' #模式为主备,100ms检查状态
      BONDING_SLAVE0='em1'#第一块网卡
      BONDING_SLAVE1='em2'#第二块网卡

步骤3:更改em1、em2实际网卡信息配置

      #vi  em1[em2]
      DEVICE=em1[em2]
      BOOTPROTO=none
      ONBOOT=yes
      TYPE=Ethernet
      MASTER=bond0
      SLAVE=yes

步骤4:重启主机或网卡服务

      #shutdown -r now

2.2 高可用节点网关设置

说明:该工作放在网卡绑定后进行配置,作为高可用监听地址。

步骤1:#yast->Network Devices->Network Settings->Routing

设置默认网关为:192.168.1.254

2.3 磁盘卷组与文件系统管理

以EMC存储多路径软件为例

1)查看磁盘信息

步骤:

#powermt display dev=all
Pseudo name=emcpowera
==============================================================================
---------------- Host ---------------   - Stor -   -- I/O Path -  -- Stats ---
###HW Path                 I/O Paths    Interf.   Mode    State  Q-IOs Errors
==============================================================================
   0 fscsi0                    hdisk4    SP A1     active  alive      0      0
   1 fscsi1                    hdisk7    SP B0     active  alive      0      0

2)创建物理卷

步骤:# pvcreate /dev/ecmpowera

3)创建卷组

步骤:#vgcreate datavg /dev/emcpowera

4)创建逻辑卷

步骤:

#lvcreate –L 50G –n dbdirlv datavg
#lvcreate –L 50G –n archloglv datavg
#lvcreate –L 50G –n smstmpdblv datavg

5)创建文件系统

步骤:

#mkdir /dbdir
#mkdir /archlog
#mkdir /smstmpdb

4.3.1在线扩充文件系统

说明:日常运维中经常需要对逻辑卷或文件系统进行在线扩充或缩减,其中缩减工作存在一定风险,注意数据备份,该工作在一台主机上操作即可。例为/dbdir增加50GB容量操作。

步骤:

#lvextend –L +50G /dev/datavg/dbdirlv
#resize2fs /dev/datavg/dbdirlv

3 安装SUSE LINUX HA软件
3.1 工具YaST安装HA软件

说明:在主机HOST1与HOST2同时执行。

步骤:yast->software reposity->install HA。

3.2 关闭防火墙

说明:在主机HOST1与HOST2同时执行。

步骤:yast->Secrity and Users-Firewall->start-up ->选择Disable Firewall Automatic starting。

4 SUSE LINUX高可用的实现
4.1 产生集群密钥authkey

说明:生产密钥为集群中节点的公司密钥,只需在一台服务器上执行。

步骤:corosync-keygen

4.2 配置心跳IP

通过vi直接编辑corosync.conf配置文件,修改其中如下部份:

totem {

    rrp_mode:       active
    join:           60
    max_messages:   20
    vsftype:        none
    token:          5000
    consensus:      6000
    token_retransmits_before_loss_const:    10
    version:        2
    transport:      udpu
    interface {
            bindnetaddr:    10.1.1.0
            mcastport:      7329
            ringnumber:     0
            member {
                    memberaddr:     10.1.1.1
            }
            member {
                    memberaddr:     10.1.1.2
            }
    }

}
4.3 两台机器同步corosync配置及集群密钥文件

说明:同步配置文件可以采用拷贝方式进行。

3.3.1同步corosync配置

步骤:HOST1#scp /etc/corosync/corosync.conf HOST2:/etc/corosync/corosync.conf

3.3.2同步集群密钥文件

步骤:HOST1#scp /etc/corosync/authkey

HOST2:/etc/corosync/authkey

3.3.3重新启用xinetd

说明:csync2服务依赖xinetd daemon进行

步骤:restart xinetd
4.4 启动openais

步骤:/etc/init.d/openais start
4.5 配置集群

启动crm配置行,#crm configure

步骤1:增加服务IP地址

#primitive SVC-IP ocf:heartbeat:IPaddr params ip=192.168.1.3

步骤2:增加卷组

#primitive RS_VG ocf:heartbeat:LVM params volgrpname="datavg"

步骤3:增加文件系统

#primitive RS_FS_DBDIR ocf:heartbeat:Filesystem params device=/dev/datavg/dbdirlv directory=/dbdir fstype=ext3
#primitive RS_FS_ARCH ocf:heartbeat:Filesystem params device=/dev/datavg/archloglv directory=/archlog fstype=ext3
#primitive RS_FS_SMS ocf:heartbeat:Filesystem params device=/dev/datavg/smstmpdblv directory=/smstmpdb fstype=ext3

步骤4:增加创建组

#group DB_GRP SVC-IP  RS_VG RS_FS_DBDIR RS_FS_ARCH RS_FS_SMS 
property no-quorum-policy=ignore property stonith-enabled="false" rsc_defaults $id="rsc_defaults-options" resource-stickiness="100" op_defaults $id="op_defaults-options" timeout="300"

步骤5:增加网关监听

#primitive pingd ocf:pacemaker:ping params host_list="192.168.1.254" multiplier="100" debug="true" op monitor interval="20s" timeout="60s" op start interval="0" timeout="90s" op stop interval="0" timeout="100s" clone cl_pingd pingd meta globally-unique="false" location LO1 DB_GRP  rule 100: 

步骤6:储存配置

#verify
#commit

5 结束语

系统架构的选择应注重业务需求,充分考虑业务连续性的必要性。无论选择哪种架构模式,运维的应急响应以及应急处理能力更为至关重要,要经过不断的业务连续性切换演练、不断的深入挖掘才能积累更多经验。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

相关文章

相关问题

相关资料

X社区推广