高可用集群(High Availability Cluster),简称HACluster,简单的说集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(Cluster)
。高可用集群解决的是保障用户的应用程序持续对外提供服务的能力(保护的是用户的业务程序对外不间断提供服务,把因人为/软件/硬件造成法故障对业务的影响将到最低)。



准备工作:
三台纯净的虚拟机:
(节点主机::172.25.85.6~ server1.example.com  
 节点主机: 172.25.85.7 ~ server2.example.com  
 M端: 172.25.85.8 ~ server3.example.com )



1.三台虚拟机做同样的操作:
    配置yum源:
   cd /etc/yum.repos.d/
   vim dvd.repo       ##(让yum 源指向自己的真机,删除多于的仓库)

   yum repolist
   
   vim /etc/hosts   ##(将打开的三台主机进行地址解析,在自己的真机上也进行地址解析)
   
   chkconfig iptables off
   /etc/init.d/iptables stop

   两台节点主机的时间要同步。
   



2.在节点主机172.25.85.6/7上安装ricci:            

##ricci属于集群组件的节点组件之一,作用是与集群管理套件luci进行通讯,可称之为主控端或者M端
   yum install ricci -y
   echo westos | passwd --stdin ricci         ##给两个节点主机的ricci用户设置密码westos
   chkconfig ricci  on                                  ## 设置开机自启动
   /etc/init.d/ricci  start
                                 


  M端172.25.85.8上安装luci:                      ##luci是集群的控制软件
  yum install luci -y
  rpm -q luci                                ##(luci-0.26.0-48.el6.x86_64)
  /etc/init.d/luci start
 企业之HA~cluster_cluster


   在浏览器中输入:https://172.25.85.8:8084      

                                                            ##(登陆的是M端:172.25.85.8的root和密码redhat)
  create new cluster
企业之HA~cluster_HA_02

##密码是创建ricci用户的密码westos


Download Packages               

##自动从yum源中下载集群套件,这两个节点会安装cman,rgmanager,modclusterd,clvmd服务,并且安装完成后还会重启
Use Locally Installed Packages    ##检查是否已经安装,有新的话不更新

   
     之后可以在节点主机172.25.85.6/7查看:
     clustat                         ##(查看集群状态)

 

3.真机172.25.254.85上,配置fence:              

              ##当一台机器出现故障时处于正常状态的机器会通过fence将其重启,关机或者释放ip等资源
     
   配置好真机的yum源
 
  yum search fence
  yum install fence-virtd-multicast-0.3.2-2.el7.x86_64 

                    fence-virtd-0.3.2-2.el7.x86_64  

                    fence-virtd-libvirt-0.3.2-2.el7.x86_64  

                    fence-virtd-serial.x86_64 0:0.3.2-2.el7
  rpm -aq | grep fence                          #
 
  ll   /etc/fence_virt.conf
  cat  /etc/fence_virt.conf
  fence_virtd  -c                        

                                     ##在设置时侯用的网络接口卡选择你安装fence主机的桥接口,其余选择默认
  mkdir /etc/cluster                                    #原来没有这个目录的需要手动创建
  systemctl restart fence_virtd
  netstat -anulp | grep :1229
  cat /etc/fence_virt.conf
  cd /etc/cluster
  dd if=/dev/urandom  of=fence_xvm.key  bs=128  count=1 

   ## (dd 用于复制文件并对原文件的内容进行转换和格式化处理  if~代表输入文件
        of~代表输出文件  bs~代表以字节为单位的块大小   count~代表被复制的块数)


  systemctl restart fence_virtd
  cd /etc/cluster                            ## (该目录下有fence_xvm.key)
  scp fence_xvm.key   root@172.25.85.6:/etc/cluster
  scp fence_xvm.key   root@172.25.85.7:/etc/cluster
  virsh list                                                ##(正在运行的虚拟机列表)



   在浏览器中输入:https://172.25.85.8:8084
   Fence Devices ->add
企业之HA~cluster_HA_03
   server6.example.com -> Add Fence Method to Node

企业之HA~cluster_cluster_04
-> Add Fence Device (Instance)
企业之HA~cluster_cluster_05



同样的:server7.example.com  -> Add Fence Method to Node
企业之HA~cluster_cluster_06

-> Add Fence Device (Instance)
企业之HA~cluster_cluster_07

         ##ricci1和ricci2 分别是server6和server7的虚拟机名字;这里也可以用虚拟机的UUID。

  检测:

        在节点server7上:fence_node server6.example.com   

             ##(server6.example.com 强制关机)

 


4.在浏览器中输入:https://172.25.85.8:8084


Failover Domains -> Add
企业之HA~cluster_集群_08

##数字大的优先级小    
##添加故障域
##选择「 优 先的」 选框后,您可以为选择作为故障切换域成员的每个节点设置优先值,「 优 先 权 」 。 ##选择「有限」 复选框后,分配给这个故障切换域的服务只能切换到这个故障切换域中的节点。
##选择「无故障恢复」 后,如果从首选节点中恢复某个服务,则该服务不会切换到恢复它的节点中。


Resources -> Add
企业之HA~cluster_集群_09

企业之HA~cluster_集群_10

企业之HA~cluster_cluster_11

将ip address 后人httpd两个资源加入到Cluster


Add Service Group to Cluster ->  

企业之HA~cluster_集群_12 

企业之HA~cluster_集群_13


Add resource to service:

 

(Ip address)172.25.85.100/24 ->(Add Resource) httpd                        ##添加资源顺序


  检测:


  在节点主机172.25.85.6/7上进行:
  yum install httpd -y           ##(安装之后开启httpd)

 
  echo server6.example.com > /var/www/html/index.html     ##172.25.85.6

  echo server7.example.com > /var/www/html/index.html     ##172.25.85.7

 
   server6:
   clusvcadm -r apache -m server6.example.com              

     
企业之HA~cluster_HA_14

   cluster
企业之HA~cluster_cluster_15

企业之HA~cluster_cluster_16
   
         echo c > /proc/sysrq-trigger               ##故意让系统崩溃






   在一个主机上运行两个资源:
5.先给M端172.25.85.8分一块硬盘:       ##8G左右
 


  在M端安装:
  yum install  scsi-target-utils-1.0.24-10.el6.x86_64  -y
 
  /etc/init.d/tgtd start
 
  fdisk -l
  vim /etc/tgt/targets.conf

<target iqn.2016-06.com.example:server.disk>
    backing-store /dev/vdb                                                ##/dev/vdb就是刚刚分出来的新硬盘
    initiator-address 172.25.85.6
    initiator-address 172.25.85.7
</target>    

  tgt-admin -s  
企业之HA~cluster_cluster_17
 


   在两个节点主机:
   yum install iscsi-initiator-utils.x86_64  -y

 
  iscsiadm  -t st -m discovery  -p 172.25.85.8
  iscsiadm  -m node -l                                     

                         ##共享分区就建立好了,在server6和server7上会出现两个新的磁盘/dev/sda
  cat /proc/partitions                                  ##查看分区是否共享
 

  给其中一台节点主机共享的新磁盘分区
  vgcreate clustervg  /dev/sda1
  lvcreate  -L 2G  -n  lv1  clustervg
  mkfs.ext4 /dev/clustervg/lv1



https://72.25.85.8:8084:

Resources -> Add
企业之HA~cluster_集群_18

Service Groups 使apache,disable
重新添加资源,顺序:

(Ip address) 172.25.85.100/24 > (File System) webdata >  (Script) httpd

 之后在server6:

  clusvcadm -e apache                                         ##打开apache



  检测:
  可以通过关闭server6上的httpd ,来观察server7上集群的变化
  df  
企业之HA~cluster_集群_19 



 删除建立的文件系统
 先在网页中删除webdata
 
 clusvcadm -d apache
 resize2fs /dev/clustervg/lv1
 lvremove /dev/clustervg/lv1




二:
1.在server6和热server7上:
 yum install mysql-server -y

Failover Domains -> add
企业之HA~cluster_HA_20 

Resource  -> add
企业之HA~cluster_集群_21

企业之HA~cluster_HA_22
打开之前建立的共享存储:
在server6上
删除之前在/dev/sda中建立的分区,然后重新建立2个linux格式的分区:
fdisk -cu /dev/sda
mkfs.ext4  /dev/sda1
mkfs.ext4  /dev/sda2

并将分区同步到server7上


在浏览器中打开:https://server8.example.com:8084

Resources -> Add
企业之HA~cluster_cluster_23

企业之HA~cluster_HA_24


Service Group -> Add


修改apache中的资源顺序为:(ip address)172.25.85.100/24 > webdata > httpd
再添加一个新的资源组mysql:添加资源顺序为 (ip address)172.25.85.101/24 > dbdata > mysqld
企业之HA~cluster_集群_25

在server6上查看挂载情况
 
发现:/dev/sda1自动挂载到了/var/www/html
    /dev/sda2自动挂载到了/var/lib/mysql

同时打开server6和server7上的mysql和httpd

clustat可以看见httpd运行在server6上,mysql运行在server7上











如果电脑关机,继续做集群需要开启的服务有:
/etc/init.d/iscsi  start
/etc/init.d/tgtd  start
 systemctl restart fence_virtd
/etc/init.d/luci  start
/etc/init.d/clvmd  start