集群存储Pacemaker + DRBD(双主)+ samba

在上一篇文章“ Pacemaker群集存储+ DRBD(双主数据库)+ ctdb”的续篇中, 介绍了针对centos 6和centos 7的2-4个节点的HA群集文件球的完整版本和工作版本。他们没有做出任何选择,因此有必要以某种方式实施。

我将简单描述我们将收集的泡芙蛋糕:

在块设备上,创建表gpt =>为lvm =>整个可用空间的lvm卷组下的整个空间创建一个分区=>为整个可用空间的lvm卷=> drbd设备=> dlm =>将其标记为整个可用空间的lvm物理卷=>在其上是lvm卷的群集组=>所有可用空间上的lvm卷=>标记fs gfs2 =>连接到安装点。
而这一切将由带有虚拟IP地址的起搏器驱动。


如果您仍要继续,请继续阅读。

从源头上,我们需要以下内容:
CPU 1核心
最少1 GB的随机存取存储器
15 GB磁盘+存储数据的位置
磁盘可以是任何数量,甚至可以是一个。

如果您有一个驱动器,则最好按以下方式对其进行分区:
分区表gpt => efi的200 MB分区(可选)=> / boot的1 GB分区=> lvm下的其他所有分区。

在lvm卷上,您需要创建2个卷组。 操作系统下的第一组卷为10 GB + RAM大小的两倍,但不超过4 GB。

不管怎么说,但是交换有时会很有帮助,因此在lvm组上,我们创建了一个lvm分区来进行交换,该分区等于RAM大小的两倍,但不超过4 GB,剩余空间分配给了操作系统根目录。

第二组lvm用于数据存储。 为剩余空间创建一个lvm节。

根据条款,我们获得了2台虚拟机,仅此而已。 最好将Ceph至少在4个节点上进行正确的操作,再加上至少4个节点,这会很不错,否则它将像cloudmouse一样工作。 Gluster对于成千上万个小文件的性能而言是行不通的,它使哈布雷的浩瀚无数次。 ipfs,光泽等具有与ceph相同的要求,甚至更高。

让我们开始战斗吧! 我在CentOS 7上有两个带2个磁盘的虚拟机。


1)Pacemaker 1.1版无法正确使用ip,因此出于可靠性考虑,我们向/ etc / hosts添加条目:

192.168.0.1 node1 192.168.0.2 node2 

2)标准存储库中没有DRBD,因此您需要连接第三方存储库。

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum localinstall -y http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/$(curl -s http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/ | grep -oP ">elrepo-release.*rpm" | cut -c 2-) 

3)安装drbd版本8.4

 yum install -y kmod-drbd84 drbd84-utils 

4)在启动时激活并启用drbd内核模块

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5)创建磁盘分区并配置lvm

 echo -e "g\nn\n\n\n\nt\n8e\nw\n" | fdisk /dev/sdb vgcreate drbd_vg /dev/sdb1 lvcreate -l +100%FREE --name r0 drbd_vg 

6)为资源drbd /etc/drbd.d/r0.res创建配置文件

 resource r0 { protocol C; device /dev/drbd1; meta-disk internal; disk /dev/mapper/drbd_vg-r0; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } startup { become-primary-on both; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

7)我们从自动加载中删除了drbd服务(稍后将由起搏器负责),为drbd磁盘创建元数据,增加资源

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

8)在第一个节点上,将资源设为主资源

 drbdadm primary --force r0 

9)放置起搏器

 yum install -y pacemaker corosync pcs resource-agents fence-agents-all 

10)为用户组设置密码以在节点上进行授权

 echo CHANGEME | passwd --stdin hacluster 

11)在两个节点上运行pcsd

 systemctl enable pcsd systemctl start pcsd 

12)登录到集群。 从这一阶段开始,我们在一个节点上进行所有操作

 pcs cluster auth node1 node2 -u hacluster -p CHANGEME --force 

13)创建一个名为samba_cluster的集群

 pcs cluster setup --force --name samba_cluster node1 node2 

14)激活节点并添加服务以启动并启动它们

 pcs cluster enable --all pcs cluster start --all systemctl start corosync pcsd pacemaker systemctl enable corosync pcsd pacemaker 

15)由于我们将虚拟机作为服务器,因此我们没有STONITH机制,因为我们没有任何管理它们的机制。 我们也只有2辆车,因此我们也禁用了仲裁,它仅适用于3台或更多台机器。

 pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 

16)创建VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=32 nic=eth0 clusterip_hash=sourceip-sourceport op monitor interval=1s 

17)创建一个drbd资源

 pcs resource create DRBD1 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s master master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true op start interval=0s timeout=240 promote interval=0s timeout=130 monitor interval=150s role=Master monitor interval=155s role=Slave 

18)为clvm安装必要的软件包并准备clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

19)将dlm和clvd资源添加到起搏器

 pcs resource create dlm ocf:pacemaker:controld allow_stonith_disabled=true clone meta interleave=true pcs resource create clvmd ocf:heartbeat:clvm clone meta interleave=true 

20)我们禁止LVM写入缓存并清除它。 在两个节点上

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 


21)创建一个CLVM分区。 我们只做一个音符
 vgcreate -A y -cy cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22)我们在gfs2中标记了该部分,在这里重要的是锁表必须与我们在Peacemaker中的集群名称相同。 我们只做一个音符

 mkfs.gfs2 -j 2 -p lock_dlm -t samba_cluster:r0 /dev/cl_vg/r0 

23)接下来,在起搏器中添加此部分的安装,并告诉它在clvmd之后启动

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt" fstype="gfs2" clone interleave=true 

24)现在轮到ctdb了,它将运行samba

 yum install -y samba ctdb cifs-utils 

25)编辑配置/etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

26)创建一个包含节点/ etc / ctdb / nodes列表的文件
注意! 列表中的每个地址之后应有换行符。 否则,该节点将不会在初始化期间打开。

 192.168.0.1 192.168.0.2 

27)最后,创建ctdb资源

 pcs resource create samba systemd:ctdb clone meta interleave=true 

28)我们设置加载队列和资源依赖关系来运行

 pcs constraint colocation add dlm-clone with DRBD1-master pcs constraint colocation add clvmd-clone with dlm-clone pcs constraint colocation add fs-clone with clvmd-clone pcs constraint colocation add samba-clone with fs-clone pcs constraint colocation add virtual_ip with samba-clone pcs constraint order promote DRBD1-master then dlm-clone pcs constraint order start dlm-clone then clvmd-clone pcs constraint order start clvmd-clone then fs-clone pcs constraint order start fs-clone then samba-clone 

29)我们设置了停止资源的队列,否则,您的计算机可能会在关闭时冻结

 pcs constraint order stop fs-clone then stop clvmd-clone pcs constraint order stop clvmd-clone then stop dlm-clone pcs constraint order stop dlm-clone then stop DRBD1-master pcs constraint order stop samba-clone then stop fs-clone 

聚苯乙烯


球本身可以位于nfs和samba上,但是尽管HA存储本身也可以通过IP对它们进行故障转移。 如果要使用完整的HA,则需要安装iSCSI并通过多路径连接,而不是samba和nfs。 此外,如果其中一个节点死亡,则可以裂脑,而当主节点上升时,它就不会裂脑。 我检查了操作系统是否正确关闭,然后在没有主节点的情况下提升节点后,它进入了过时的模式并且没有成为主节点,以免造成大脑分裂。 仲裁变体(DRBD和/或起搏器)以及配置后由于级联DRBD构造而引起的任何变形由于其高度复杂性而难以忍受,另一位管理员将需要很长时间才能弄清楚。 尽管我写的东西没有更好,但是不要这样做。

参考文献:

对于起搏器1.0,也有类似的语法指令。

Source: https://habr.com/ru/post/zh-CN441210/


All Articles