一 集群环境介绍

一 Linux 集群发展史

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

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

2 管理工具

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
集群文件系统使用集群中的所有节点并发的通过标准文件系统接口来访问存储设备

pacemaker配置mysql_嵌入式

二 Linux HA 体系结构

pacemaker 体系结构

pacemaker配置mysql_pacemaker配置mysql_02

群集的组成:
1 基本的消息层
2 资源管理层
3 为群集提供一些功能,节点的并发读写和锁的管理

pacemaker 内部组件

pacemaker配置mysql_shell_03

四个关键组件
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

pacemaker配置mysql_服务器_04


只有当主节点故障时,备用节点才会启用

2 shared failover

pacemaker配置mysql_运维_05


最后一个设备作为前面几台服务器的备用服务器节点

3 N to N redundancy

pacemaker配置mysql_shell_06


需要有群集文件系统,能够实现对同一资源的并发访问

群集的规划和设计

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

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

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

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

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

一 环境准备

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

pacemaker配置mysql_服务器_07

2 网络yum

pacemaker配置mysql_嵌入式_08

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

pacemaker配置mysql_shell_09

3 安装软件包

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

pacemaker配置mysql_pacemaker配置mysql_10


pacemaker配置mysql_运维_11

二 群集节点的准备

1 配置主机名及解析

pacemaker配置mysql_运维_12


pacemaker配置mysql_嵌入式_13


pacemaker配置mysql_嵌入式_14


pacemaker配置mysql_pacemaker配置mysql_15


pacemaker配置mysql_嵌入式_16


pacemaker配置mysql_shell_17

2 配置SSH key 互信

pacemaker配置mysql_pacemaker配置mysql_18


pacemaker配置mysql_服务器_19

3 配置时钟

pacemaker配置mysql_运维_20


pacemaker配置mysql_pacemaker配置mysql_21


pacemaker配置mysql_服务器_22

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

三 群集创建

1 配置pcs 守护程序

pacemaker配置mysql_pacemaker配置mysql_23


pacemaker配置mysql_shell_24

pacemaker配置mysql_嵌入式_25

2 设置hacluster 账户密码

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

pacemaker配置mysql_shell_26

pacemaker配置mysql_运维_27

pacemaker配置mysql_shell_28

pacemaker配置mysql_shell_29

3 集群配置文件

群集及pacemaker配置文件

配置文件为corosync.conf 和 cib.xml,默认不存在

pacemaker配置mysql_服务器_30

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

4 认证组成群集的节点

pacemaker配置mysql_服务器_31

5 配置和同步群集节点

pacemaker配置mysql_pacemaker配置mysql_32

pacemaker配置mysql_pacemaker配置mysql_33

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

pacemaker配置mysql_pacemaker配置mysql_34

pacemaker配置mysql_shell_35


图形化界面:用户名为hacluster 密码为前面设置认证时使用的密码

pacemaker配置mysql_嵌入式_36

四 共享存储配置和挂载

1 NFS相关配置

pacemaker配置mysql_运维_37

pacemaker配置mysql_运维_38

pacemaker配置mysql_pacemaker配置mysql_39

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

pacemaker配置mysql_运维_40


pacemaker配置mysql_嵌入式_41


pacemaker配置mysql_运维_42


pacemaker配置mysql_pacemaker配置mysql_43


pacemaker配置mysql_pacemaker配置mysql_44

3 手动迁移测试

pacemaker配置mysql_pacemaker配置mysql_45


pacemaker配置mysql_服务器_46


pacemaker配置mysql_嵌入式_47


pacemaker配置mysql_运维_48


pacemaker配置mysql_shell_49

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

pacemaker配置mysql_服务器_50

5配置并迁移资源

pacemaker配置mysql_pacemaker配置mysql_51


将虚拟的有KVM 放权

virsh undefine rhel7.3

pacemaker配置mysql_pacemaker配置mysql_52


pacemaker配置mysql_pacemaker配置mysql_52

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关闭脑裂

并查看状态

pacemaker配置mysql_运维_54

pacemaker配置mysql_pacemaker配置mysql_55

五 迁移测试

pcs resource move X

pacemaker配置mysql_服务器_56

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

pacemaker配置mysql_嵌入式_57


配置节点standby/unstandby

pacemaker配置mysql_shell_58


pacemaker配置mysql_shell_59


stop 节点进行测试,资源自动迁移

pacemaker配置mysql_嵌入式_60


服务运行的情况下进行的

pacemaker配置mysql_shell_61

pacemaker配置mysql_嵌入式_62

pacemaker配置mysql_运维_63

pacemaker配置mysql_嵌入式_64

六其他相关资源及配置

1 配置群集的stonith

pacemaker配置mysql_运维_65

pacemaker配置mysql_pacemaker配置mysql_66

pacemaker配置mysql_嵌入式_67

pacemaker配置mysql_服务器_68

pacemaker配置mysql_shell_69

pacemaker配置mysql_运维_70

pacemaker配置mysql_服务器_71

pacemaker配置mysql_pacemaker配置mysql_72

二 配置基于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 软件包

pacemaker配置mysql_shell_73

2 配置target

1 创建存储对象

pacemaker配置mysql_嵌入式_74


pacemaker配置mysql_shell_75


pacemaker配置mysql_嵌入式_76


pacemaker配置mysql_嵌入式_77


pacemaker配置mysql_嵌入式_78

pacemaker配置mysql_嵌入式_79

2 创建ISCSI target

pacemaker配置mysql_运维_80


3 配置target portal group(TPG)1 配置portals

2 配置LUN: 添加块设备,ramdisk,fileio三个LUN

pacemaker配置mysql_服务器_81

3 配置ACL

查看ISCSI initator 查看其IQN

为每个initiator创建ACL

pacemaker配置mysql_运维_82


pacemaker配置mysql_shell_83

pacemaker配置mysql_shell_84


4 保存配置

pacemaker配置mysql_pacemaker配置mysql_85


5 设置target 服务自启动

pacemaker配置mysql_运维_86


6 检查配置

pacemaker配置mysql_嵌入式_87

pacemaker配置mysql_shell_88


pacemaker配置mysql_服务器_89

pacemaker配置mysql_pacemaker配置mysql_90

pacemaker配置mysql_shell_91


Linux-IO target

Linux上主要的开源target
Linux-IO

7 使用存储上40GB的磁盘

pacemaker配置mysql_服务器_92

pacemaker配置mysql_shell_93

pacemaker配置mysql_服务器_94

pacemaker配置mysql_服务器_95

pacemaker配置mysql_嵌入式_96

pacemaker配置mysql_运维_97

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是群集文件系统

pacemaker配置mysql_pacemaker配置mysql_98

pacemaker配置mysql_服务器_99

5 配置DLM

需要进行克隆和两个节点上都存在

pacemaker配置mysql_pacemaker配置mysql_100

pacemaker配置mysql_嵌入式_101

pacemaker配置mysql_服务器_102

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

6 LVM-cluster 安装和配置

pacemaker配置mysql_服务器_103


pacemaker配置mysql_shell_104


pacemaker配置mysql_嵌入式_105


pacemaker配置mysql_嵌入式_106


pacemaker配置mysql_shell_107


pacemaker配置mysql_pacemaker配置mysql_108


pacemaker配置mysql_运维_109


pacemaker配置mysql_服务器_110

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

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

pacemaker配置mysql_shell_111

pacemaker配置mysql_运维_112

pacemaker配置mysql_shell_113

pacemaker配置mysql_shell_114

配置约束:

次序约束和位置约束:

pacemaker配置mysql_服务器_115


查看约束:

pacemaker配置mysql_shell_116

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

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

pacemaker配置mysql_运维_117


刷新磁盘:

pacemaker配置mysql_pacemaker配置mysql_118


pacemaker配置mysql_pacemaker配置mysql_119


pacemaker配置mysql_嵌入式_120


pacemaker配置mysql_pacemaker配置mysql_121


pacemaker配置mysql_pacemaker配置mysql_122


pacemaker配置mysql_服务器_123

7 创建GFS2 文件系统

pacemaker配置mysql_服务器_124


pacemaker配置mysql_pacemaker配置mysql_125

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

向集群中添加GFS2 文件系统

添加克隆的资源,即在每个节点上均挂载文件系统

pacemaker配置mysql_服务器_126

pacemaker配置mysql_运维_127


pacemaker配置mysql_pacemaker配置mysql_128


pacemaker配置mysql_服务器_129


pacemaker配置mysql_运维_130

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

配置约束

pacemaker配置mysql_嵌入式_131


pacemaker配置mysql_嵌入式_132


pacemaker配置mysql_pacemaker配置mysql_133

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

pacemaker配置mysql_shell_134


pacemaker配置mysql_shell_135


pacemaker配置mysql_服务器_136


pacemaker配置mysql_嵌入式_137


配置和处理相关约束

pacemaker配置mysql_pacemaker配置mysql_138


pacemaker配置mysql_pacemaker配置mysql_139

9迁移虚拟机测试

pacemaker配置mysql_shell_140


pacemaker配置mysql_运维_141


pacemaker配置mysql_shell_142


pacemaker配置mysql_shell_143


转载于:https://blog.51cto.com/11233559/2339601