您的位置:首页 > 运维架构 > 网站架构

高可用集群HA之双机集群

2016-06-15 20:43 531 查看
高可用集群HA之双机集群 HA:High Availability 高可用性:主要目的就是让运行在服务器上的服务尽可能减少的中断的技术,保证服务运行的连续性;原理如上图所示,本文实现双机集群系统,首先通关管理虚拟机LUCI服务对ClusterVM1、ClusterVM2进行管理,维护等工作,而他们之间沟通的桥梁是RICCI服务,所以ClusterVM1、ClusterVM2均安装RICCI服务。主要工作原理是ClusterVM1、ClusterVM2构成集群的双机,将其中一台作为活动机,也就是运行服务的主机(ClusterVM1),另外一台作为备份机(ClusterVM2),两台服务器主机共用一个网络存储服务器。当ClusterVM1出于某种原因突然坏掉了,无法运行服务,则备份机ClusterVM2立即接管ClusterVM1上面运行的服务,从而保证服务运行的连续性,且不影响用户对数据的读取和存储。从而达到高可靠性的目的。


原理图

准备工作:启动三台虚拟机:vm1 vm2 vm3使用vm1作为管理机,vm2 vm3做双机集群,vim /etc/hosts vm1 vm2 vm3 需要相互解析,然后需要配置yum源文件,此时源文件与以往的不同,需要指定特定的包目录。步骤:vm2 vm3:#yum install -y ricci #安装ricci软件#echo westos | passwd --stdin ricci #给ricci设定密码#chkconfig ricci on #开机自启#/etc/init.d/ricci start #启动服务 步骤:vm2 vm3:#yum install -y ricci #安装ricci软件#echo westos | passwd --stdin ricci #给ricci设定密码#chkconfig ricci on #开机自启#/etc/init.d/ricci start #启动服务 注:ricci服务是manager机vm3对两个集群机(vm1、vm2)进行管理和维护的服务,而在manager机上安装luri软件通过web界面对集群的两台虚拟机进行配置; Vm1:管理机#yum install -y luci# /etc/init.d/luci start#会出现一个网址,在浏览器中输入该网址,进行访问;先加入两个虚拟机作为集群。点击:Nodes-->create-->添加两个节点 注意:因为之前没有过节点,所以此处用create进行添加,若是之前有过节点,则此处用add进行添加;

两台虚拟机中输入:# clustat 可以查看这两个节点连机状态;添加fence机制,本身fence分为内部fence和外部fence,他是一个物理硬件设备,能够对一台虚拟机进行跳电,这是集群的一个机制,外部fence作为仲裁,若高可靠集群中的一台主机出现问题,还没有完全坏透,外部fence会让他彻底坏掉。此处没有真的外部fence,因此只有进行模拟,而对虚拟机能管理的只有virt-manager了,所以在web界面添加fence。首先在真机安装fence-virtd等相关软件服务:Root#yum install -y fence-virt.x86_64 fence-virtd.x86_64fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 #fence_virtd -c 创建并配置fence使用的backend后台,multicast多波,端口,ip,接口interface,以及key文件fence_xvm.key,不过这文件需要自己创建。#mkdir /etc/cluster#dd if=/dev/urandom of=fence_xvm.key bs=128 count=1#systemctl restart fence_virtd #netstat -anulpe| grep 1229 检测该服务端口有没有开启,#scp fence_xvm.key root@172.25.10.31:/etc/cluster/#scp fence_xvm.key root@172.25.10.32:/etc/cluster/ 然后在web界面进行操作模拟fence添加;点击:Fence Devices -->add

在点击Nodes中的两个主机,分别添加fence的设置;

添加一个fence实例:

Server32.example.com虚拟机也是如此操作; 在两个节点进行fence测试:vm1 #fence_node server32.example.com #连接另一台虚拟机succes.然后另一台虚拟机就会关机重起,这也是fence的工作机制。vm2# fence_node server31.example.com 同上; 在web界面添加双机集群策略以及相应的运行服务;添加集群策略prioritized 设置优先级,restricted仅限制在下面列出的主机;no Failback 表示当优先级高server31.examle.com的主机坏了,server32.example.com主机直接接管,然后当server31.examle.com好了不再回切回去;

添加resource资源,也就是需要在主机上运行的服务;首先添加虚拟ip,此ip是对外公布的,客户使用此ip就可以访问服务,而看不到双机的切换;对客户来说是透明的;

添加apache服务;

此时需要在两个虚拟机上安装apache,但是不用启动服务,创建index.html放在/var/www/html; 内容分别写上主机名,以示区别; 添加服务组;把前面加的服务直接加入;





在FIREFOX里面进行输入虚拟ip:172.25.10.100可以查看网页的内容;在vm1 vm2输入命令:clustat查看apache服务哪个主机上,比如运行在server1.example.com上,测试:用命令:clusvcadm -r apache server2.example.com主机接管服务过来;通过查看网页可以看见不同的内容输出; 接下来实现双机集群与存储结合起来;存储使用iscsi网络存储块;用vm3作为存储服务器,对外提供网络存储;vm3先添加一块虚拟硬盘;大概给8G#yum install -y scsi-target-utils.x86_64 存储服务器端# rpm -qa |grep scsi 查询是否安装且查看版本号;#vim /etc/tgt/targets.conf 编辑配置文件; 38<target iqn.2016-06.com.example:server.disk> ##设置唯一标志符 39 backing-store /dev/vdc1 ##对外共享的设备 40 initiator-address 172.25.10.31 41 initiator-address 172.25.10.32 #只允许这两个ip地址的主机能进行访问挂载; 42</target> #/etc/init.d/tgtd restart 使ISCSI存储服务重起;#tgt-admin -s 查看配置产生的效果,查看共享路径及允许哪些ip主机可以进行访问; 在集群的双机上面安装iscsi的客户端服务;vm1 vm2#yum install -y iscsi-initiator-utils.x86_64 注:这个服务有一个特点,不需要手工启动,只要发现可用网络存储块就会自己启动;#iscsiadm -t st -m discovery -p 172.25.10.30 发现网络存储设备 (发现和连接设备两台主机均要进行操作)#iscsiadm -m node -l ##对发现的设备进行连接;(iscsiadm -m node -u :断开连接的设备iscsiadm -m node -o delete :将断开的设备删除;)发现了设备进行LVM,方便以后在线扩容;fdisk -l --> fdisk /dev/vdc --> 新建一个lvm格式的主分区/dev/sda1;#pvcreate /dev/sda1 -->pvs #vgcreate vgcluster1 /dev/sda1 -->vgs#lvcreate -L +2G -n lv0/dev/vgcluster1 --- lvs#mkfs.ext4 /dev/vgcluster/lv0 #制作为ext4文件格式 注:上面的步骤只能在集群中一个虚拟机进行操作;并且每操作一步结束,另外一台主机均能同步过来,均可以查看,如果无法查看,则说明有问题,我今天就碰到了这个问题,解决这个问题的方法是:在web界面上选中server31.example.com和 server32.example.com 进行重新启动(reboot),然后再进行lvm制作,就好了;{# /etc/init.d/clvmd status ##查看集群文件系统服务的状态} 此时可以将文件系统进行挂载使用,有一个问题,就是ext4文件系统不支持同时读写,比如说vm1挂载了并且新建了文件,vm2也挂载了,但是无法看到vm1新建的文件; 此时可以将存储与集群结合起来使用:注意点:集群的两台虚拟机不能挂载此网络存储设备,且要将运行的服务apache停止;没有存储的服务怎么用,对把!!然后在web界面添加resource资源:

然后在服务组里面按顺序添加虚拟ip --> 文件系统webdata --> 添加服务apache;最后启动apache服务(或者在集群机里面使用命令使得apache服务启动: clusvcadm -e apache ) 注:clusvcadm -d apache 停住apache服务; #clustat ##查看apache服务运行在哪台虚拟主机上;此时网络设备自动挂载在前面web设置的路径上面/var/www/html/,因此echo www.westos >/var/www/html/index.html 网页上就可以进行访问,可以查看到内容;输入如下命令可以测试HA的高可靠性;就是让vm1内核崩溃,集群将使得vm2自动接管服务;使得服务不会中断;高可靠性就是这么体现出来的;此时要是存储容量不够还可继续进行扩容,支持在线扩容;#lvextend -L +2G -n /dev/vgcluster/lv1 #resize2fs /dev/vgcluster/lv0 文件系统同时扩容; 换另外一种文件系统:及GFS2文件系统,支持同时读取存储文件,比ext4文件系统要高级不少;首先把apache服务停止(clusvcadm -d apache),然后在web 界面service group中删除文件系统webdata(ext4格式).# lvremove /dev/vgcluster/lv0 --> pvs # lvcreate -L 2G -n demo /dev/vgcluster#mkfs.gfs2 -p lock_dlm -tliumin_HA:mygfs2 -j 3 /dev/vgcluster/lv0注:-p :表示加入集群锁机制, -t集群所表名格式为:clustername:fsname. -j : 表示集群锁日志,每一个日志占据128M大小的空间,数目一般为集群机的数目加一;#gfs2_tool sb /dev/vgcluster/demo all :查看所有信息#mount /dev/vgcluster/demo /mnt#gfs2_tool journals /dev/vgcluster/demo :查看日志占据的大小. 现在使集群与存储结合起来;此时网络存储的文件格式为gfs2有两种方法实现:1,在web界面进行添加;2.直接在集群的两台虚拟机上进行操作.此刻选择第二种方式实现: vm1 vm2#gfs2_tool sb /dev/vgcluster/demo all 获取UUID号,#vim /etc/fstab UUID=cec275d7-af42-d574-281c-525f5bd0289e /var/www/html/ gfs2 _netdev 0 0 注:因为是网络存储共享,所以选择_netdev模式,#mount -a###两台主机进行一样的操作;此时需要注意一点,就是操作之前,必须先要使apache服务停止,然后确保web界面中的ServiceGroup中ext4文件系统资源移除.最后到挂载的/var/www/html新建index.html就可以访问.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux ISCSI HA 高可用性