一 集群环境介绍

一 Linux 集群发展史

高可用集群的层次结构
1 消息/基础架构 corosync
2 成员关系 :监听心跳信息,并进行处理成员关系和计算成员关系的票数等信息
3 资源管理 VIP 磁盘 文件系统 CRM (群集资源管理器)等,有些策略引擎(有些资源是放置在同一个节点和其依赖关系) 和资源的分配调度有关

4 资源 : 对特定资源的操作,通过一定的脚本实现
pacemaker 群集资源管理器
corosync 消息/基础架构

管理工具
crmsh : crm (cluster resource manager )shell (centos 7 已经废弃)
pcs : pacemaker corosync server

CLVM
集群化的LVM(clustered LVM)
LVM 的一个集群方面的扩展,允许集群中的计算机通过LVM 管理共享存储

DRBD
distributed replicated block device (DRBD)
软件实现的、无共享的、服务器之间的镜像块设备内容的复制解决方案

GFS2/OCFS
global file system 2 / oracle Cluster file system
集群文件系统使用集群中的所有节点并发的通过标准文件系统接口来访问存储设备

Linux rhel7.0  pacemaker集群搭建和配置

二 Linux HA 体系结构

pacemaker 体系结构
Linux rhel7.0  pacemaker集群搭建和配置
群集的组成:
1 基本的消息层
2 资源管理层
3 为群集提供一些功能,节点的并发读写和锁的管理
pacemaker 内部组件
Linux rhel7.0  pacemaker集群搭建和配置
四个关键组件
1 CIB(群集信息基础)xml 文件,信息在群集之间同步
2 CRMd(群集资源管理守护进程)通过选举一个DC,是一个指定的协调者
3 PEngine(PE or 策略引擎)
4 STONITHd
shoot-the-other-node-in-the-head
爆其他节点的头

corosync
corosync 位于高可用集群结构中的底层,为各个节点(node)之间提供心跳信息传递这样一个角色

心跳: 就是讲多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息使用很简短很小的通告给同一网络中的其他主机,告诉他们自己依然在线,其他服务器收到这个心跳信息就认为它是在线的,尤其是主服务器

fencing agent
隔离引擎

集群通常需要使用fencing agent
fencing 是在一个节点不稳定或者无答复时将其关闭,使得他不会损坏集群的其他资源,其主要用途是消除脑裂

常见的fencing agent 类型
power 类型的agent
会将节点的电源断电,他通常链接到物理设备比如UPS
storage类型的agent
会确保某个时刻只有一个节点会读写共享的存储
resource agent
RA 是管理一个集群资源的可执行程序,没有固定其实现的编程语言,但大部分RA 都是使用shell 脚本实现的
pacemaker 使用RA来和收管理资源进行交互,它即支持它自身实现的70多个RA,也支持第三方RA
要实现一个RA, 需要遵循OCF 规范
pacemaker 支持三种类型的RA:
LSB resource agents
OCF resource agents
legacy heartbeat resource agents
RA 支持的主要操作包括:
start 、 stop 、monitor、validate-all、meta-data...
pcs resource agnet 查看相关的agent

STONITH
stonith 是“shoot the other node in the head ” 的首字母简写
他是heartbeat 软件包的一个组件
它允许使用一个远程或“智能的”链接到健康服务器的电源设备自动重启失效负无穷的电源

stonith 设备可以关闭电源并相应软件命令,运行heartbeat的服务器可以通过串口线或网线向stonith设备发送命令,他控制高可用服务器对其他服务器的电力供应

主服务器可以复位备用服务器的电源
备用服务器也可以复位主服务的电源

三 高可用解决方案概述

1 active/passive
Linux rhel7.0  pacemaker集群搭建和配置
只有当主节点故障时,备用节点才会启用
2 shared failover
Linux rhel7.0  pacemaker集群搭建和配置
最后一个设备作为前面几台服务器的备用服务器节点
3 N to N redundancy
Linux rhel7.0  pacemaker集群搭建和配置
需要有群集文件系统,能够实现对同一资源的并发访问

群集的规划和设计

软件
群集类型:A/P,A/A....
操作系统吗:redhat/centos,suse
群集软件:pacemaker+corosync...
群集配置: 群集名称,资源依赖,次序等约束

硬件
服务器:
HCL,带外管理,冗余电源

网络:
将业务、心跳、存储、带外管理网络分开
网卡的捆绑、冗余

存储:
控制器,接口,raid 级别
空间规划

二 基于NFS共享存储的集群搭建

一 环境准备

1 本地yum源,通过本地挂载配置进行配置

Linux rhel7.0  pacemaker集群搭建和配置

2 网络yum

Linux rhel7.0  pacemaker集群搭建和配置

[pacemkaker]
name=pacemaker
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0

Linux rhel7.0  pacemaker集群搭建和配置

3 安装软件包

yum -y install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

二 群集节点的准备

1 配置主机名及解析

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

2 配置SSH key 互信

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

3 配置时钟

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

4 配置防火墙相关(本实验关闭防火墙和SELinux,生产环境不建议关闭)

三 群集创建

1 配置pcs 守护程序

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

2 设置hacluster 账户密码

安装群集软件包时,会创建一个账户hacluster,它的密码是禁用的
此账户用于群集间通信时的身份验证
必须在每个节点设置其密码后并启用此账户
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

3 集群配置文件

群集及pacemaker配置文件
配置文件为corosync.conf 和 cib.xml,默认不存在
Linux rhel7.0  pacemaker集群搭建和配置

corosync.conf 文件提供corosync 使用的集群参数
cib.xml 是 XML 文件,存储集群配置及所有资源的信息,pcsd 守护程序负责整个节点上同步CIB的内容
最佳策略
虽然可以手工创建、修改、但建议通过pcs 工具进行管理和维护

4 认证组成群集的节点

Linux rhel7.0  pacemaker集群搭建和配置

5 配置和同步群集节点

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

6 在群集节点中启动群集资源并查看图形化界面相关

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置
图形化界面:用户名为hacluster 密码为前面设置认证时使用的密码
Linux rhel7.0  pacemaker集群搭建和配置

四 共享存储配置和挂载

1 NFS相关配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

2置将虚拟机迁移到共享存储中

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

3 手动迁移测试

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

4此处需要将磁盘的高级选项改为none

Linux rhel7.0  pacemaker集群搭建和配置

5配置并迁移资源

Linux rhel7.0  pacemaker集群搭建和配置
将虚拟的有KVM 放权
virsh undefine rhel7.3
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

pcs resource create rh7.3 ocf:heartbeat:VirtualDomain \
hypervisor="qemu:///system" \
config="/vm/qemu_config/rhel7.3.xml" \
migration_transport=ssh \
meta allow-migrate="true" priority="100" \
migration_transport=ssh \
op start timeout="120s" \
op stop timeout="120s" \
op monitor timeout="30" interval="10" \
op migrate_from interval="0" timeout="120s" \
op migrate_to interval="0" timeout="120"

6关闭脑裂

并查看状态
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

五 迁移测试

pcs resource move X
Linux rhel7.0  pacemaker集群搭建和配置

pcs resource move X Y
其中如果选择第一个,如果有多个节点,则其会根据集群内部算法进行计算决定迁移的目标节点,如果选择第二个,则Y表示目标节点,X表示资源名称

Linux rhel7.0  pacemaker集群搭建和配置
配置节点standby/unstandby
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
stop 节点进行测试,资源自动迁移
Linux rhel7.0  pacemaker集群搭建和配置
服务运行的情况下进行的
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

六其他相关资源及配置

1 配置群集的stonith

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

二 配置基于iscsi 存储的服务和配置stonith (disk)

1 基本概述

在SAN中,主机一般都是initiator, 存储设备则是target

initator
scsi 会话的发起方
向target 请求LUN,并将数据的读写指令发送给target

target
接受scsi 会话的一方
他接收来自initiator 的指令,为initiator 提供LUN,并实现对LUN的读写

Linux上主要的开源target 项目
Linux scsi target - STGT /tgt (之前的版本)
Linux-IO target-LIO Linux 2.6.38开始纳入内核 ,内核模式的模拟,对用户提供友好的管理工具
SCST-Generic SCSI subsystem for linux

Linux-IO target 概述
Linux-IO target 在Linux内核中,用软件实现各种SCSI target
前端
FC FCOE ISCSI 1394 infiniband USB vhost

架构
支持SSE4.2高性能,多线程
支持x86,ia64,alpha,cell PPC,ARM, MIPS 等多种CPU
支持高可用,负载平衡集群

2 环境准备:

同上

3 安装Linux 的存储服务器

1 安装targetcli 软件包

Linux rhel7.0  pacemaker集群搭建和配置

2 配置target

1 创建存储对象
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

2 创建ISCSI target

Linux rhel7.0  pacemaker集群搭建和配置
3 配置target portal group(TPG)

1 配置portals
2 配置LUN: 添加块设备,ramdisk,fileio三个LUN
Linux rhel7.0  pacemaker集群搭建和配置

3 配置ACL
查看ISCSI initator 查看其IQN
为每个initiator创建ACL
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置
4 保存配置
Linux rhel7.0  pacemaker集群搭建和配置
5 设置target 服务自启动
Linux rhel7.0  pacemaker集群搭建和配置
6 检查配置
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置
Linux-IO target

Linux上主要的开源target
Linux-IO

7 使用存储上40GB的磁盘
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

pcs stonith create scsi-shooter fence_scsi pcmk_host_list="node1 node2"\
devices="/dev/disk/by-id/wwn-0x6001405876a238fd00745d198419fc60" \
meta provides=unfencing \

4安装群集文件系统软件

OCFS2和GFS2是群集文件系统

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

5 配置DLM

需要进行克隆和两个节点上都存在
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

pcs resource create dlm ocf:pacemaker:controld \
op monitor interval=30s \
on-fail=fence clone interleave=true ordered=true

6 LVM-cluster 安装和配置

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

其运行必须是两个节点都能运行

pcs resource create clvmd ocf:heartbeat:clvm \
op monitor interval=30s \

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置

配置约束:
次序约束和位置约束:
Linux rhel7.0  pacemaker集群搭建和配置
查看约束:
Linux rhel7.0  pacemaker集群搭建和配置

创建LV
在集群中创建LV与在单节点上创建LV 是一样的
其必须保证群集基础架构运行正常,并有quorate 法定人数

1 创建一个分区,设置为8e 及 LVM

Linux rhel7.0  pacemaker集群搭建和配置
刷新磁盘:
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

7 创建GFS2 文件系统

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

相关参数讲解:
-p 使用的协议
-j 保存的日志的份数
-t 指定的锁定的表,其方式是群集的名称和其他
最后指定块设备

向集群中添加GFS2 文件系统
添加克隆的资源,即在每个节点上均挂载文件系统
Linux rhel7.0  pacemaker集群搭建和配置

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

pcs resource create VMFS ocf:heartbeat:Filesystem
device="/dev/vg0/lv0" directory="/vm" fstype="gfs2" clone

配置约束
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

8 添加虚拟机资源并配置约束

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
配置和处理相关约束
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置

9迁移虚拟机测试

Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置
Linux rhel7.0  pacemaker集群搭建和配置