Corosync/Openais+Pacemaker+ISCSI+OCFS构建高可用Web群集
corosync/openais安装
安装前准备
一.Node1安装前准备
1)更改本地主机名称
[root@localhost ~]# hostname node1.a.com
[root@node1 ~]# vim /etc/sysconfig/network
2)调整系统时间于硬件时间一致
[root@node1 ~]# hwclock -s
3)编辑hosts使得两个节点服务器能够相互解析
[root@node1 ~]# vim /etc/hosts
3)编辑yum文件
[root@node1 ~]# mkdir /mnt/cdrom
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/
[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
4)node1和node2节点需要无障碍通信,产生公钥对。这时候会提示用户秘钥对存放的路径及密码,这里密码我们设置为空
5)将公钥传递给给node2节点
二.安装和配置corosync/openais
软件环境:
cluster-glue-1.0.6-1.6.el5.i386.rpm
cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
corosync-1.2.7-1.1.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm
heartbeat-3.0.3-2.3.el5.i386.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
pacemaker-1.1.5-1.1.el5.i386.rpm
pacemaker-cts-1.1.5-1.1.el5.i386.rpm
pacemaker-libs-1.1.5-1.1.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
1)yum安装
[root@node1 1]#mkdir 1
[root@node1 1]# yum localinstall * --nogpgcheck
2)进入corosync配置目录下,产生corosync配置文件
[root@node1 1]# cd /etc/corosync/
[root@node1 corosync]# cp corosync.conf.example corosync.conf
3)编辑corosy配置文件
[root@node1 corosync]# vim corosync.conf
在corosync增加群集资源管理pacemaker
4)建立群集的日志文件目录
[root@node1 corosync]# mkdir /var/log/cluster
5)产生corosync身份验证文件
Node1和node2节点上需要同时有这两个文件方可验证成功
6)启动该服务
[root@node1 corosync]# service corosync start
三.Node2节点上的配置
Node2于node1上面的配置安装方法是一样,都需要对本地环境进行设置,唯注意是都需要建立系统日志存放目录文件
[root@node1 corosync]# service corosync start
四.对两个节点进行排除错误,否则两个节点无法把所配置好的文件进行提交上去
1)验证corosync引擎是否正常启动了
[root@node1 corosync]# grep -i -e "corosync cluster engine" -e "configuration file" /var/log/messages
2)查看初始化成员节点通知是否发出
[root@node1 corosync]# grep -i totem /var/log/messages
3)检查过程中是否有错误产生
grep -i error: /var/log/messages |grep -v unpack_resources
stonith机制排错方法:
[root@node1 ~]# crm
crm(live)# configure
4)检查pacemaker时候已经启动了
[root@node1 corosync]# grep -i pcmk_startup /var/log/messages
5)测试是否已经连接成功
五.crm(pacemaker提供的一种shell)
方法:
[root@node1 corosync]# crm //进入crm的shell模式下
crm(live)# configure //进入全局配置模式
crm(live)configure# property stonith-enabled=false //关闭stonith机制
crm(live)configure# commit //提交保存配置信息
crm(live)configure# show //显示当前配置
crm(live)configure# exit
再次进行语法检测:crm_verify -L 就不会报错了.
群集资源类型4种
[root@node1 corosync]# crm
crm(live)# configure
crm(live)# help
primitive 本地主资源 (只能运行在一个节点上)
group 把多个资源轨道一个组里面,便于管理
clone 需要在多个节点上同时启用的 (如ocfs2 ,stonith ,没有主次之分)
master 有主次之分,如drbd
1)查看资源代理的类型
2)定义一个webip地址为192.168.2.100
可以通过ifconfig查看是否ip地址是否分配上
3)node1,node2需要都安装apache服务
yum install httpd
[root@node1 ~]# chkconfig httpd off
4)添加httpd服务,httpd的资源是在lsb下面
5)为了避免群集分裂,需要把这两个文件同时添加到组里面
6)因为这里只有两个节点,需要对这两个节点的票数进行更改
六.ISCSI(IP-SAN)存储配置详情
1)target(后方的存储介质)
新添加一块磁盘(或分区)
fdisk -l
分区:fdisk /dev/sda(n--p--4--+200M-w)---添加一块磁盘sda4
更新分区表:(cat /proc/partitions)
partprobe /dev/sda(不重启,更新分区表)
node1和node2节点上分别增加一块网卡,使得target于这两块网卡在同一个区域,编辑vim /etc/hosts使得3个节点都可以相互解析到
2)更改后方存储的本地主机名称为target.a.com
3)安装target需要的软件包,启动服务.
mkdir /mnt/cdrom/
mount /dev/cdrom /mnt/cdrom/
cd /mnt/cdrom/ClusterStorage
rpm -ivh perl-Config-General-2.40-1.e15.noarchrpm
rpm -ivh scsi-target-utils-0.0-5.20080917snap.e15.i386.rpm
service tgtd start
4)添加新的iscsi的target.
增加target
[root@target ~] tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.2013-10.com.a.target:disk
显示
[root@target ~]# tgtadm --lld iscsi --op show --mode target
5)增加后方的存储
增加存储
[root@target ~]# tgtadm --lld iscsi --op new --mode=logicalunit --tid=1 --lun=1 --backing-store /dev/sda4
访问控制
[root@target ~]# tgtadm --lld iscsi --op bind --mode=target --tid=1 --initiator-address=192.168.0.0/16
6)将这些文件写入到target配置文件里
[root@target ~]# vim /etc/tgt/targets.conf
[root@target ~]# service tgtd restart
7)initiator(node1和node2)安装于配置
这里只把node1的安装步骤列出,node2安装于node1安装方法是一样的
cd /mnt/cdrom/Server
rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm
service iscsi start
登录
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2013-10.com.a target:disk --portal 192.168.3.30:3260 –login
登出
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2013-10.com.a target:disk --portal 192.168.3.30:3260 –logout
重启启动
[root@node1 ~]# service iscsi restart
8)node1的iqn名称,为能让后方存储服务器方便的查看是那个用户登陆
[root@node1 ~]# vim /etc/iscsi/initiatorname.iscsi
通过后方的target可以看到node1和node2已经登陆
[root@target ~]# tgtadm --lld iscsi --op show --mode target
七.将新的磁盘sdb格式为OCFS2群集文件系统.
1)在两个节点上安装需要的软件包
软件:http://oss.oracle.com/projects/ocfs2-tools/files/
http://oss.oracle.com/projects/ocfs2/files/
yum localinstall ocfs2-2.6.18-164.el5-1.4.7-1.el5.i686.rpm \\
ocfs2-tools-1.4.4-1.el5.i386.rpm \\
ocfs2console-1.4.4-1.el5.i386.rpm
注:ocfs2版本必须与本主机内核版本一致(uname -r),禁用 SELinux(Security Level Configuration)
在集群中的两个节点上进行此更改后,将需要重新引导每个节点以实施更改:在继续配置 OCFS2 之前,必须禁用 SELinux!
# init 6
2)对主配置文件进行配置.
集群中的两个节点上生成和配置/etc/ocfs2/cluster.conf 文件。完成此操作最简单的方法是运行 GUI 工具 ocfs2console。
使用 ocfs2console GUI 工具执行以下步骤:
选择 [Cluster] -> [Configure Nodes...]。这将启动 OCFS2 集群堆栈并显示“Node Configuration”对话框。
在“Node Configuration”对话框上,单击[Add] 按钮。
这将显示“Add Node”对话框。
在“Add Node”对话框中,输入集群中第一个节点的 Host name 和 IP address。将 IP Port 设置为默认值 7777。在我的示例中,我添加 了两个节点,即使用 linux1 / 192.168.1.100 表示第一个节点,并使用 linux2 / 192.168.1.101 表示第二个节点。
单击“Node Configuration”对话框上的 [Apply] —所有节点现在将处于“Active”状态.
单击“Node Configuration”对话框上的 [Close]。
确认所有值均正确后,使用 [File] -> [Quit] 退出应用程序。需要在集群的两个节点上执行该操作。
退出 ocfs2console 后,将获得一个类似如下所示的 /etc/ocfs2/cluster.conf。需要在集群中的两个节点上完成该过程,并且所有节点的OCFS2 配置文件必须完全相同:
vim cluster.conf
node:
ip_port = 7777
ip_address = 192.168.2.10
number = 0
name = node1.a.com
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.2.20
number = 1
name = node2.a.com
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
3)O2CB 集群服务
在使用 OCFS2 执行任何操作(如格式化或挂载文件系统)之前,我们需要先运行 OCFS2 的集群堆栈 O2CB(它将是以上执行的配置过程的结果)。此堆栈包含以下服务:
NM:用于跟踪 cluster.conf 中的所有节点的节点管理器
HB:当节点加入或离开集群时向上/向下发出通知的心跳服务
TCP:处理节点之间的通信
DLM:用于跟踪所有锁、这些锁的所有者和状态的分布式锁管理器
CONFIGFS:在 /config 中挂载的用户空间驱动的配置文件系统
DLMFS:用户空间与内核空间 DLM 的接口
已将以上所有集群服务打包到 o2cb 系统服务 (/etc/init.d/o2cb) 中。以下是 o2cb 系统服务的某些更有用的命令和选项的简要列表。
注意:以下命令仅用于演示目的,不应在安装和配置 OCFS2 时运行!
/etc/init.d/o2cb status
Module "configfs": Not loaded
Filesystem "configfs": Not mounted
Module "ocfs2_nodemanager": Not loaded
Module "ocfs2_dlm": Not loaded
Module "ocfs2_dlmfs": Not loaded
Filesystem "ocfs2_dlmfs": Not mounted
注意,本示例未加载所有服务。我在执行“status”选项之前执行了“unload”。如果要在使用 ocfs2console 实用程序配置 OCFS2 后立即检查 o2cb 服务的状态,则将加载所有这些服务。
/etc/init.d/o2cb load
Loading module "configfs": OK
Mounting configfs filesystem at /config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
加载所有 OCFS2 模块
/etc/init.d/o2cb online ocfs2
Starting cluster ocfs2: OK
以上命令将使我们创建的集群 ocfs2 处于联机状态。
/etc/init.d/o2cb offline ocfs2
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK
以上命令将使我们创建的集群 ocfs2 处于脱机状态。
/etc/init.d/o2cb unload
Cleaning heartbeat on ocfs2: OK
Stopping cluster ocfs2: OK
以上命令将卸载所有 OCFS2 模块。
4)将 O2CB 配置为在引导时启动
您现在需要配置 OC2B 驱动程序的引导属性,以便在每次引导时将启动集群堆栈服务。需要在集群的所有节点上执行本节中的所有任务。
注意:OCFS2 1.2.1之前的版本中包含一个错误,即不会在每次引导时加载驱动程序,即使将引导属性配置为执行此操作后也是如此。OCFS2 1.2.1 版中已经修复了该错误,本文不再赘述。
按如下所示设置引导属性:
# /etc/init.d/o2cb offline ocfs2
# /etc/init.d/o2cb unload
# /etc/init.d/o2cb configure
Configuring the O2CB driver.This will configure the on-boot properties of the O2CB driver.The following questions will determine whether the driver is loaded onboot. The current values will be shown in brackets ('[]'). Hitting<ENTER> without typing an answer will keep that current value. Ctrl-Cwill abort.Load O2CB driver on boot (y/n) [n]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]: ocfs2
Writing O2CB configuration: OK
Loading module "configfs": OK
Mounting configfs filesystem at /config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting cluster ocfs2: OK
5)格式化 OCFS2 文件系统
mkfs -t ocfs2 /dev/sdb
6)两个节点上分别挂载
mount -t ocfs2 /dev/sdb /var/www/html
mount
/dev/sdb on /var/www/html type ocfs2 (rw,_netdev,heartbeat=local)
cd /var/www/html
echo "Welcome" >index.html
7)两个节点上进行开机自动挂载
vim /etc/fstab
/dev/sdb /var/www/html ocfs2 defaults 0 0