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


准备工作:

三台纯净的虚拟机:

(节点主机::172.25.31.1 -server1.example.com  

节点主机: 172.25.31.2 - server2.example.com  

M端: 172.25.31.3 - 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.31.1/2上安装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.31.3上安装luci:              ##luci是集群的控制软件

    yum install luci -y

    rpm -q luci                  ##(luci-0.26.0-48.el6.x86_64)

   /etc/init.d/luci start


高可用集群~上_计算机_02   



  在浏览器中输入:https://server3.example.com:8084     ##(登陆的是M端:172.25.31.3的root                               和密码redhat,普通用户需要经过root授权才能登陆)

  create new cluster 

 高可用集群~上_系统_03


 Download Packages         ##自动从yum源中下载集群套件,这两个节点会安装                             cman,rgmanager,modclusterd,clvmd服务,并且安装完成后还会重启

 Use Locally Installed Packages    ##检查是否已经安装,有新的话不更新


 之后可以在节点主机172.25.31.1/2查看:

 clustat                         ##(查看集群状态)


  


3.在集群外,物理机172.25.254.31上,配置fence:    ##当一台机器出现故障时处于正常状态的机器                                  会通过fence将其重启,关机或者释放ip等资源

  配置物理机的yum源

 

 

  yum install fence-virtd.x86_64   fence-virtd-libvirt.x86_64 

          fence-virtd-multicast.x86_64      

  ll /etc/fence_virt.conf

  fence_virtd  -c                    ##配置fence高可用集群~上_虚拟机_04

高可用集群~上_系统_05

高可用集群~上_计算机_06

 ## module设置为多播,多播ip为225.0.0.12,创建fence的key文件

  cat /etc/fence_virt.conf                 ##fence的配置信息写入这个文件中

  mkdir /etc/cluster                       #原来没有这个目录的需要手动创建

  systemctl restart fence_virtd

  netstat -anulp | grep :1229

  cd /etc/cluster

  dd if=/dev/urandom  of=fence_xvm.key  bs=128  count=1   

   ##生成电源key(dd 用于复制文件并对原文件的内容进行转换和格式化处理  if-代表输入文件 

   of-代表输出文件  bs-代表以字节为单位的块大小   count-代表被复制的块数)

  systemctl restart fence_virtd

  cd /etc/cluster                    ## (该目录下有fence_xvm.key)

  scp fence_xvm.key   root@172.25.31.1:/etc/cluster

  scp fence_xvm.key   root@172.25.31.2:/etc/cluster

 

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

  Fence Devices ->add           

高可用集群~上_虚拟机_07


 server1.example.com -> Add Fence Method to Node    ##集群给节点添加fence


高可用集群~上_计算机_08

-> Add Fence Device (Instance)           ##Domain添加的是节点主机的uuid或者主机名称

高可用集群~上_系统_09


同样的节点主机server2.example.com也进行同样的操作。 

高可用集群~上_虚拟机_10

高可用集群~上_虚拟机_11


检测:

在server1.example.com:

fence_node server2.example.com     ##(server2.example.com 强制关机后重新启动)


 

配置failover:

Failover Domains -> Add


高可用集群~上_虚拟机_12 

 ##prioritized为故障切换域成员的每个节点设置优先值

 ##restricted分配给这个故障切换域的服务只能切换到这个故障切换域中的节点

 ##no failback,如果从首选节点中恢复某个服务,则该服务不会切换到恢复它的节点中。


Add Service Group to Cluster ->                   ##添加故障域

高可用集群~上_计算机_13


高可用集群~上_计算机_14


 Add Service Group to Cluster->Add


高可用集群~上_系统_15


  ##run exclusive  当运行apache时不再运行其他服务

  ##Add Resource增加的是IP address和scripts


  检测: 

  在节点主机172.25.31.1/2上进行:

  yum install httpd -y           ##(安装之后开启httpd)

  echo server1.example.com > /var/www/html/index.html     ##172.25.31.1

  echo server2.example.com > /var/www/html/index.html     ##172.25.31.2


  在浏览器中输入:172.25.31.131可以出现:server1.example.com

 

  在172.25.31.1上进行:

  clusvcadm -r apache -m server2.example.com    ##server3接管服务


  echo c > /proc/sysrq-trigger    ##故意让server2的系统崩溃,之后server1重启

  在浏览器中刷新:出现server2.example.com



4.给M端172.25.21.3分一块硬盘:       ##8G左右 

  fdisk -l                 ##查看是否有新的硬盘/dev/vdb

  vim /etc/tgt/targets.conf


<target iqn.2016-06.com.example:server.disk>

    backing-store /dev/vdb                    ##/dev/vdb就是刚刚分出来的新硬盘

    initiator-address 172.25.31.1

    initiator-address 172.25.31.2

</target>  

  

  tgt-admin  -s 



  在两个节点主机安装:

  yum install iscsi-initiator-utils.x86_64  -y 


  在M端安装:

  yum install  scsi-target-utils-1.0.24-10.el6.x86_64  -y

  /etc/init.d/tgtd start 

     


  在172.25.31.1/2上进行:

  iscsiadm  -t st -m discobery  -p 172.25.31.3    

  iscsiadm  -m node -l 

  在172.25.31.1上进行:

  fdisk -cu /dev/sda               ##对磁盘分区,lvm

  pvcreate /dev/sda1

  vgcreate clustervg  /dev/sda1          ##clustervg是逻辑卷组的名称

  lvcreate  -L 2G  -n  lv1  clustervg

  ##磁盘分区,创建逻辑卷组等操作,会共享给节点主机172.25.31.2

   

  将172.25.31.1上磁盘格式化为ext4:

  mkfs.exte  /dev/clustervg/lv1

  在浏览器中:https://server3.example.com

  Resource -> Add


高可用集群~上_计算机_16


 在Add Service Group to Cluster中添加资源顺序是:IP address ,File System,Script 


 在172.25.31.1上进行:

 echo www.westos.org > /var/www/html/index.html

 

 

 在浏览器中输入:172.25.31.131,出现:www.westos.org


  

 格式化为gfs2:   ##集群式文件系统

 先删除之前创建的lv1:

 lvextend -L 2G /deb/clustervg/lv1

 resize2fs /dev/clustervg/lv1

 lvremove  /dev/clustervg/lv1



 lvcreate -L 2G  -n demo  clustervg

 mkfs.gfs2  -p lock_dlm  -t memory:mygfs2s -j  3  /dev/clustervg/demo

 gfs2_tool sb /dev/clustervg/demo all