高可用与存储的结合
之前我们做好了fence,今天将高可用和存储结合起来。
试验主机:172.25.0.2 172.25.0.3 172.25.0.251(做数据输出端)
第一部分:
##在做实验之前,需要将luci打开,并且查看集群状态:
##将集群的apach关闭:
##查看ip发现没有vip:
##检测server2的apache(也就是看他开启再关闭是否正常):
##确定集群的apache是关闭的:
##以上做法也不知道意义何在,且往下看
##增加存储,存贮在哪都可以,这里是将instructor这台主机的/dev/vol0/demo逻辑卷作为存贮空间,因为之前做实验这里边有数据,所以我们将它清空:
##这里是用scsi做为存贮类型用到iscsi协议,所以先查询需要的软件,可以用rpm -qa |grep ##也可以用yum list ##
##在数据输出端(也就是做存储的机子)安装scsi,对应服务为tgtd,在集群节点中安装iscsi协议,服务名称是iscsi:
##编辑配置文件:
##开启服务:
##查看进程,只能有两个tgtd,这是正确的,这就需要每次在编辑配置文件时需要将tgtd关闭,这也是经常出的问题。
##查看配置信息:
##在两个节点上安装iscsi:
##默认iscsi是开机自启的:
##发现目标(target),后面的ip就是做存储的主机ip。
##登入节点:
#这个时候用fdisk -l查看会发现多了一块磁盘:
##从节点上卸载iscsi:
#再用fdisk -l就找不到那块共享的磁盘
#卸载后就可以将这个节点上的缓存删除,否则每次开启iscsi都会自动登陆这个磁盘:
#再次发现和登陆:
#创建分区,类型为8e逻辑卷:
#查询,sda1的类型是8e:
#查看clvmd服务,这是对集群中逻辑卷管理的服务,确定开启:
##在节点2创建逻辑卷,
##会发现现在节点3同步过来了,说明clvmd起作用了,他就是来管理逻辑卷的:
##当然了,节点2也会同步过来的:
##查看怎么创建集群vg:
##将刚刚创建的pv用作集群vg:
##查看我们刚刚创建的vg:
##用clustervg创建lv,名字叫demo:
##当然所做的一切都会在节点3中有相应体现。
##然后就是将集群逻辑卷格式化:
##然后就是在节点3中进行挂载到/mnt,在/mnt中写下首页,内容为www.westos.org。再卸载,当然首页将保存到磁盘中,如果换到http发布目录中将可以通过web访问。
##然后将逻辑卷(存储)添加到资源中:
##有时会因为超时的原因在你保存之后会退出lusi,这时只需要重新登录,再次填写相关内容就好。
##有了资源我们需要将它和http联系起来,这就要在服务选项中的http下面增加资源,选择webdata:
##这时候会多一个文件系统:
##我们这里是将http服务于存储整合,所以需要http服务,如果没有的话,当然需要自己先增加一个资源,然后再添加到papache中。
##查看现在的集群状态,并将集群的apache打开:
##当然也可以在图形中打开:
##现在是apache打开了,Apache下面包括资源vip,存储,http服务,当然这三者的打开顺序也应该是这样,显示vip,然后指存储,最后才是http服务,这也是为啥在我们往Apache中添加资源时先将之前的http服务停掉,在添加完存储之后再将http服务加上:
##查看集群是否管理了资源:
#vip添加上了。
##http也打开了,磁盘也实现了挂载:
##网页也能够访问了:
##现在将Apache手动交给连一个节点,当参数忘了,可以用clusvcadm --help查看相关参数:
##使用-r -m 可以实现节点的转换:
##转换完成后节点二就会将vip添加,实现自动挂载,并且开启http服务,相反的节点3上会将相同的服务关闭,也就是说高可用集群同时只有一个在工作,解决的是单点故障。
第二部分:
##displayvg clustervg:
##给集群逻辑卷扩展分区这里加的511就相当于加入2G这样更精确,现在逻辑卷就会有4G大小:
##扩展完成后,发现挂载的磁盘实际并没有刷新,这就需要刷新一下:
##df 默认显示的是块的大小,df -h显示的是真实大小:
##从集群中删除Apache:
##将节点2逻辑卷挂载在/mnt,并复制passwd目录进去:
##在节点3上挂载,并且追加westos进去,但是,在节点3中只能看到自己的追加,并不能看到之前的文件:
##然后将两边都卸载。再挂载,在节点2中却只能看到在节点3中追加的westos,并不能看到之前的文件:
##这说明集群同一时间只能有一个节点接管存储,这是文件呢系统的原因,所以我们就用到了gfs2文件系统,也叫做可扩展的分布式文件系统(也叫做全局文件系统),可以实现多个节点同时挂载在同一文件系统,保证数据的同步性,说到同步我们需要知道,在RHCS套件中是css在处理文件系统的同步:
##检查逻辑卷的文件系统的正确性。
fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
##将逻辑卷缩小,当然也可以不做这一步:
resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize。,linux kernel 2.6支持在mount状态下扩容但仅限于ext3文件系统。
##在查看大小,确实缩小了:
##当然这样并没有缩小逻辑卷还是用另一种方法来缩小吧:
##再删除逻辑卷,再创建逻辑卷:
##当然这些都是说明集群中逻辑卷的扩展,缩小,新建,这一步可以不做的。
##现在我们就拥有了一个2G的新的逻辑卷:
##补充一下裸设备与文件系统的区别:
裸设备到文件系统,格式化的才叫文件系统。
自己对裸设备的理解,。没有经过格式化的磁盘分区,操作系统不对其进行管理,而是应用程序直接管理,所以I/O效率更高,正因为这样对于读写频繁的数据库等应用程序可以用裸设备,这样可以极大的提高性能。
文件系统是对一个存储设备上的数据和元数据进行组织的机制。文件系统的工作就是维护文件在磁盘上的存放,记录文件占用了哪几个扇区。另外扇区的使用情况也要记录在磁盘上。文件系统在读写文件时,首先找到文件使用的扇区号,然后从中读出文件内容。如果要写文件,文件系统首先找到可用扇区,进行数据追加。同时更新文件扇区使用信息。在挂载后就可以将挂载点当做一个新的文件系统。
fsck是如何工作的:通常情况下,当 Linux 系统启动时,首先运行fsck,由它扫描/etc/fstab 文件中列出的所有本地文件系统。fsck 的工作就是确保要装载的文件系统的元数据是处于可使用的状态。当系统关闭时,fsck又把所有的缓冲区数据转送到磁盘,并确保文件系统被彻底卸载,以保证系统下次启动时能够正常使用。
##得到最恰当的块大小:
##查看帮助:
##然后就是对逻辑卷的再次格式化:
##然后就是两个节点都挂载:
##然后在节点2的中写一个首页:
##这会同步到节点三中:
##当然在节点3的首页中增加一行,也会在节点2中同步:
##要想实现文件系统的永久挂载,查看UUID,然后将挂载信息添加到/etc/fstable:
##当然在节点3中也要做相同的挂载
##把service group中之前的那个ext3文件系统删除,再在资源中增加一个新的文件系统:
##上面这一步是不是可以改为只是把service group中的文件系统删除,而不增加另一个文件系统,这样在重新开启Apache是否会自动添加???
##查看iscsi状态,是开启的.
##查看系统中的可挂载设备和pv:
##当然,做完,最好能先卸载掉,查看是否 能够自动挂载:
##现在开启Apache:
##就可以访问了:
第三部分 将Apache换成数据库:
##首先将apache删除:
##当然也可以用命令删除,然后安装MySQL:
##进入MySQl目录,将MySQL打开:
##当然节点3上也要安装:
##检查存储,因为我们要将资源交给集群管理,所以我们要将存储资源关闭:
##并且将逻辑卷挂载到MySQL的发布目录中:
##然后将逻辑卷挂载到/mnt上,并且将MySQL发布目录中的所有数据移动到/mnt下,然后从/mnt下面卸载:
##这样MySQL中就没有文件,文件被保存到逻辑卷中,然后再用mount -a,就实现逻辑卷到数据库默认目录的挂载:
##这样数据库的配置文件就有回来了。
##将数据库的apache的首页文件删除,并打开数据库:
##当然最后还是要关闭的将它交给集群,我们在这里的一番折腾只是检测存储与MySQL都没有错误,可以正常使用:
##节点3中也要做相同的工作:
##为数据库增加资源,还是添加一个脚本,这里脚本是只需要输入名字,和启动的路径这样就可以让集群来管理开关了:
##查看集群,发现并没有将数据库加进来:
##这就需要将资源加进服务:
##Run exclusive:意思是这个服务独占集群,当然不能这样了。然后就是将我们的资源vip和数据库加进来:
##在查看集群,发现就将数据库服务加进来了:
##现在就可以登录数据库了:
##将数据库服务转交给节点3:
##现在逻辑卷挂载到了节点3,vip也转移到了节点3:
##在节点三登录数据库:
##删除集群数据库:
##在两个节点中都将存储卸载:
##之前所做没有将存储加进去:
逻辑卷的挂载是我们手动挂载的,现在将gfs资源加进MySQL服务就可以实现自动挂载了:
##然后在DB服务中将之前增加的数据库先删了,再添加存储和数据库,因为集群在启动服务中的资源时,是按照资源的顺序的,而在数据库之前必须要有存储。
##现在DB服务是关闭的,我们将只需将DB服务打开,就可以自动调配其他的资源,包括资源的开启,当一个存储有问题会自动跳到另一台机子上等:
##已经实现了存储的自动挂载:
##将DB服务转交给节点2:
##存储和vip都转移到了节点2:
##至此,我们就完成了数据库的服务的高可用,就解决了数据库的单点故障。
第四部分:图形修改对应进程:
##将DB服务关闭并且删除,将gfs2资源删除:
第五部分:不用图形的高可用集群(不用luci的高可用集群)pacemake。
##在rhcl7之后就没有了luci,就不能借助图形来管理集群了,下面就来介绍费图形界面的高可用集群管理。
##首先将之前在rhcl6中做的都给删除,包括将节点从集群中脱离并删除:
##还有cman,rgmanager
##还有modclusterd
##还有iscsi,关闭,启动项也关闭:
##在安装scsi的机子上,检查iscsi的情况:
##将scsi关闭:
##两个节点安装pacemake:
##若用新的虚拟机,需要安装heartbeat、drbd、mysql-server、httpd
##安装完pacemake后将会有一个控制心跳的配置文件目录:
##编辑配置文件:
#原始的例子内容:
##修改后的配置文件其实就修改了两处,一个是将绑定的网络地址改为集群的网络地址,在最后一行增加服务:
............................................
##上述修改的目的:
#当最后的ver设置为1的时候,插件打不开pacemake的守护进程,这里我们还是设置为0,表示可以打开pacemaker的守护进程,通过组件调动而不是脚本。
Plugin:插件
Daemons:是守护进程的意思,代表在后台运行而没有终端或者运行的shell与其结合的进程。
##可以到官网下载关于pacmake的官方文档:
##将修改后的配置文件复制到节点3.
##开启心跳服务:
##这里的报错是因为stonish的原因,默认stonish是开启的这样verify时会报错,并且也不能commit,所以在配置之前需要将stonish关闭:
##然后需要安装连个包,最好先安装pssh在安装crm,,因为第二个是第一个的依赖性,当然也可以一起安装,但是需要安装两遍:
##然后将两个包拷贝给节点3,安装:
##然后就可以用crm服务了:
因为之前coroysnc的原因这里节点指直接加进去的,如果没有加进去可以用edit加进去,也可以重启coroysnc,这样就加进去了。
##然后切换到资源管理模块:
##将stonish关闭:
##这样检测语法就不会有错了:
##不管在哪边增加策略,两边都会同步的:
##定义资源:
例子:
crm(live)configure# primitive webvip ocf:heartbeat:IPaddr params ip=172.16.12.100 op monitor interval=30s timeout=20s on-fail=restart
//定义一个主资源名称为webvip,资源代理类别为ocf:heartbeat,资源代理为IPaddr。params:指定定义的参数 ,op代表动作,monitor设置一个监控,每30s检测一次,超时时间为20s,一旦故障就重启
#增加一个vip资源:
##也可以用edit编辑配置文件:
##在0.251这台机子上是可以ping通增加的资源的:
##对参数的解释:
crm_verify -LV 检测配置信息
crm_mon 监控主机状态