管理两节点集群

RH436 学习笔记(五)_仲裁设备

RH436 学习笔记(五)_多路径_02

重新搭建一个两节点集群。

RH436 学习笔记(五)_两节点集群_03

这个参数是默认开启的。

RH436 学习笔记(五)_两节点集群_04

因为是两节点集群,不是用50%+1 的方式仲裁的,1 票就能存活,waitforall 参数默认开启。

为避免fence loop 现象,可以设置延迟fence,时间应略大于节点启动时间。

RH436 学习笔记(五)_仲裁设备_05

RHEL8.3 及之后的版本:

RH436 学习笔记(五)_两节点集群_06

RH436 学习笔记(五)_多路径_07

配置和管理仲裁设备

RH436 学习笔记(五)_仲裁设备_08

这是写磁盘的方式,在共享存储上划分一片空间,自定义一个试探程序,把节点的状态写入到磁盘,先写入的节点为优胜的一方,节点本身一票,仲裁节点也算作一票,共两票,另外一台节点则被fence。

还有一种方式是,不需要仲裁节点,NodeID 较低的优先存活。

RH436 学习笔记(五)_仲裁设备_09

RH436 学习笔记(五)_锁机制_10

RH436 学习笔记(五)_锁机制_11

RH436 学习笔记(五)_iscsi_12

RH436 学习笔记(五)_两节点集群_13

RH436 学习笔记(五)_iscsi_14

RH436 学习笔记(五)_仲裁设备_15

RH436 学习笔记(五)_多路径_16

RH436 学习笔记(五)_iscsi_17

RH436 学习笔记(五)_iscsi_18

RH436 学习笔记(五)_iscsi_19

RH436 学习笔记(五)_仲裁设备_20

RH436 学习笔记(五)_iscsi_21

RH436 学习笔记(五)_锁机制_22

两节点同时down 集群网络,彼此认为对方故障:

RH436 学习笔记(五)_锁机制_23

RH436 学习笔记(五)_iscsi_24

RH436 学习笔记(五)_iscsi_25

RH436 学习笔记(五)_多路径_26

现在nodea 工作,nodeb 被隔离,因为nodea 的NodeID 更小,得到了仲裁节点的一票。

锁机制

RH436 学习笔记(五)_iscsi_27

RH436 学习笔记(五)_两节点集群_28

RH436 学习笔记(五)_锁机制_29

RH436 学习笔记(五)_两节点集群_30

RH436 学习笔记(五)_仲裁设备_31

RH436 学习笔记(五)_仲裁设备_32

RH436 学习笔记(五)_多路径_33

RH436 学习笔记(五)_多路径_34

RH436 学习笔记(五)_两节点集群_35

RH436 学习笔记(五)_仲裁设备_36

RH436 学习笔记(五)_多路径_37

RH436 学习笔记(五)_锁机制_38

RH436 学习笔记(五)_iscsi_39

RH436 学习笔记(五)_iscsi_40

RH436 学习笔记(五)_两节点集群_41

RH436 学习笔记(五)_锁机制_42

RH436 学习笔记(五)_锁机制_43

nfs 是共享型文件系统,自带锁机制,如果是ext4、xfs 这种本地型文件系统,你在一台节点上进行写操作,另外一台节点是没有感知的。

RHEL 6 上,在启动nfs 服务的时候,一同将nfslock 服务启动了:

RH436 学习笔记(五)_锁机制_44

RH436 学习笔记(五)_两节点集群_45

现在把nodea 连接到nfs 存储的网络down 掉,df 已经查询不到这个挂载点了,但是集群没有感知,业务仍然运行在nodea 上。

RH436 学习笔记(五)_iscsi_46

RH436 学习笔记(五)_仲裁设备_47

集群不会检测节点到存储的网络,只会检测节点之间的网络,如果要实现节点到存储的高可用,就需要用到多路径技术。

RH436 学习笔记(五)_两节点集群_48

RH436 学习笔记(五)_锁机制_49

iscsi

RH436 学习笔记(五)_iscsi_50

RH436 学习笔记(五)_仲裁设备_51

RH436 学习笔记(五)_iscsi_52

RH436 学习笔记(五)_多路径_53

RH436 学习笔记(五)_仲裁设备_54

RH436 学习笔记(五)_两节点集群_55

RH436 学习笔记(五)_锁机制_56

RH436 学习笔记(五)_iscsi_57

RH436 学习笔记(五)_两节点集群_58

RH436 学习笔记(五)_锁机制_59

RH436 学习笔记(五)_iscsi_60

RH436 学习笔记(五)_仲裁设备_61

RH436 学习笔记(五)_仲裁设备_62

RH436 学习笔记(五)_两节点集群_63

RH436 学习笔记(五)_iscsi_64

RH436 学习笔记(五)_多路径_65

RH436 学习笔记(五)_多路径_66

RH436 学习笔记(五)_仲裁设备_67

RH436 学习笔记(五)_多路径_68

RH436 学习笔记(五)_两节点集群_69

RH436 学习笔记(五)_iscsi_70

RH436 学习笔记(五)_多路径_71

RH436 学习笔记(五)_锁机制_72

RH436 学习笔记(五)_多路径_73

RH436 学习笔记(五)_仲裁设备_74

RH436 学习笔记(五)_iscsi_75

RH436 学习笔记(五)_两节点集群_76

RH436 学习笔记(五)_两节点集群_77

RH436 学习笔记(五)_锁机制_78

RH436 学习笔记(五)_锁机制_79

RH436 学习笔记(五)_两节点集群_80

RH436 学习笔记(五)_两节点集群_81

RH436 学习笔记(五)_锁机制_82

RH436 学习笔记(五)_仲裁设备_83

但是这个文件系统是ext4,属于单机型文件系统,不带锁机制,虽然可以读取到文件名,但是多个节点同时读写一个文件时数据状态不同步。

RH436 学习笔记(五)_多路径_84

RH436 学习笔记(五)_iscsi_85

RH436 学习笔记(五)_多路径_86

RH436 学习笔记(五)_锁机制_87

RH436 学习笔记(五)_iscsi_88

RH436 学习笔记(五)_仲裁设备_89

这是通过集群控制文件系统的挂载,集群正常的时候可以保证文件系统只在其中一个节点上挂载,如果集群脑裂,文件系统又不带锁机制,轻则文件损坏,重则文件系统故障,数据的完整性得不到保障。

iscsi 客户端如果设置了服务自启动,只要连接过一次,重启以后会自动连接。

RH436 学习笔记(五)_两节点集群_90

RH436 学习笔记(五)_两节点集群_91

target 端的信息保存在这个文件夹。

有些时候我们不希望它自动连接,比如存储端发生故障的时候:

RH436 学习笔记(五)_两节点集群_92

这样可以logout,但是这是临时的。

RH436 学习笔记(五)_两节点集群_93

RH436 学习笔记(五)_锁机制_94

RH436 学习笔记(五)_仲裁设备_95

RH436 学习笔记(五)_仲裁设备_96

只要服务一重启,它甚至自动把多路径自动连接了。

RH436 学习笔记(五)_锁机制_97

这样就是永久删除。

RH436 学习笔记(五)_iscsi_98

RH436 学习笔记(五)_锁机制_99

RH436 学习笔记(五)_两节点集群_100

RH436 学习笔记(五)_iscsi_101

RH436 学习笔记(五)_iscsi_102

RH436 学习笔记(五)_多路径_103

RH436 学习笔记(五)_两节点集群_104

RH436 学习笔记(五)_两节点集群_105

RH436 学习笔记(五)_两节点集群_106

RH436 学习笔记(五)_iscsi_107

RH436 学习笔记(五)_两节点集群_108

客户端这个配置文件的这些参数需要注意一下。

RH436 学习笔记(五)_仲裁设备_109

连接了第二条链路。

RH436 学习笔记(五)_iscsi_110

这两块磁盘是一样的。

RH436 学习笔记(五)_锁机制_111

这条命令可以查看磁盘的序列号。

RH436 学习笔记(五)_两节点集群_112

那么这样集群就存在问题,创建文件系统资源的时候该指定哪一块磁盘呢?如果指定其中一块磁盘,在读写数据的时候,只走其中一条路径吗?那另外一条链路的带宽岂不是浪费掉了!

要解决上面的问题,需要安装多路径软件。

RH436 学习笔记(五)_锁机制_113

RH436 学习笔记(五)_仲裁设备_114

RH436 学习笔记(五)_两节点集群_115

有些厂商的多路径软件要付费使用,而且是对节点授权。

能用厂商的多路径尽量用厂商提供的,它更了解自家的存储产品。

如果无法使用厂商的,就用开源版本的通用型多路径软件。

RH436 学习笔记(五)_两节点集群_116

RH436 学习笔记(五)_仲裁设备_117

RH436 学习笔记(五)_多路径_118

RH436 学习笔记(五)_仲裁设备_119

RH436 学习笔记(五)_iscsi_120

默认用的是第二种算法——最少服务时间,走延迟最低的链路;

轮循算法的优势在于不怎么消耗cpu 资源;

最少队列数算法是比较折中的方案。

RH436 学习笔记(五)_仲裁设备_121

RH436 学习笔记(五)_仲裁设备_122

RH436 学习笔记(五)_iscsi_123

RH436 学习笔记(五)_两节点集群_124

RH436 学习笔记(五)_iscsi_125

RH436 学习笔记(五)_iscsi_126

RH436 学习笔记(五)_两节点集群_127

RH436 学习笔记(五)_多路径_128

RH436 学习笔记(五)_iscsi_129

RH436 学习笔记(五)_iscsi_130

multipath 默认是没有配置文件的,当你执行enable 以后,它自动生成了一个配置文件:

RH436 学习笔记(五)_锁机制_131

RH436 学习笔记(五)_仲裁设备_132

具体怎么写这个配置文件,查看帮助:

RH436 学习笔记(五)_仲裁设备_133

使用下面这条命令查看默认配置:

multipath -t

你会发现这条命令的执行结果比配置文件多得多,很多默认的配置没有写进配置文件而已。

RH436 学习笔记(五)_仲裁设备_134

你可以这样来修改。

RH436 学习笔记(五)_iscsi_135

这一段是黑名单列表,多路径软件不会合并这些设备。

RH436 学习笔记(五)_iscsi_136

这一段空白,是黑名单列表中的例外。

RH436 学习笔记(五)_锁机制_137

针对不同的设备,给它不同的算法。

RH436 学习笔记(五)_多路径_138

RH436 学习笔记(五)_仲裁设备_139

RH436 学习笔记(五)_两节点集群_140

这些段落有优先级,multipaths 优先级最高。

RH436 学习笔记(五)_iscsi_141

RH436 学习笔记(五)_两节点集群_142

RH436 学习笔记(五)_iscsi_143

RH436 学习笔记(五)_锁机制_144

RH436 学习笔记(五)_两节点集群_145

RH436 学习笔记(五)_两节点集群_146

RH436 学习笔记(五)_多路径_147

RH436 学习笔记(五)_锁机制_148

RH436 学习笔记(五)_两节点集群_149

RH436 学习笔记(五)_仲裁设备_150

RH436 学习笔记(五)_多路径_151

RH436 学习笔记(五)_两节点集群_152

RH436 学习笔记(五)_多路径_153

man multipath.conf

RH436 学习笔记(五)_两节点集群_154

RH436 学习笔记(五)_锁机制_155

RH436 学习笔记(五)_锁机制_156

这个参数的意思是,路径检测的方式是从这个路径读一个io,如果读取不到,就判断这个路径出现了故障。

RH436 学习笔记(五)_锁机制_157

当路径出现故障时,切换到另外的路径上。

RH436 学习笔记(五)_多路径_158

RH436 学习笔记(五)_iscsi_159

RH436 学习笔记(五)_iscsi_160

RH436 学习笔记(五)_两节点集群_161

RH436 学习笔记(五)_多路径_162

RH436 学习笔记(五)_锁机制_163

RH436 学习笔记(五)_两节点集群_164

RH436 学习笔记(五)_锁机制_165

RH436 学习笔记(五)_锁机制_166

RH436 学习笔记(五)_iscsi_167

RH436 学习笔记(五)_iscsi_168

RH436 学习笔记(五)_iscsi_169

RH436 学习笔记(五)_锁机制_170

RH436 学习笔记(五)_iscsi_171

RH436 学习笔记(五)_多路径_172

我们经常看到设备名是/dev/mapper/xxx

其实是用到的device mapper 的技术,这个设备并不真实存在,是通过某种规则把它合成的,常见的典型的例子就是逻辑卷。

RH436 学习笔记(五)_两节点集群_173

RH436 学习笔记(五)_iscsi_174

RH436 学习笔记(五)_仲裁设备_175

下面来演示一下安装厂商的多路径软件:

RH436 学习笔记(五)_锁机制_176

RH436 学习笔记(五)_锁机制_177

RH436 学习笔记(五)_两节点集群_178

RH436 学习笔记(五)_多路径_179

RH436 学习笔记(五)_两节点集群_180

RH436 学习笔记(五)_多路径_181

RH436 学习笔记(五)_锁机制_182

RH436 学习笔记(五)_锁机制_183

RH436 学习笔记(五)_两节点集群_184

RH436 学习笔记(五)_锁机制_185

RH436 学习笔记(五)_两节点集群_186

RH436 学习笔记(五)_多路径_187

RH436 学习笔记(五)_锁机制_188