封装虚拟机BASE(母机):
 1. 删除自启动项 /etc/udev/rules.d/70-persistent-net.rules  这样网络设备就为eth0,而不是eth1
 2. 更改网络配置文件  vi /etc/sysconfig/selinux   设置为不启用
 3. 禁止网络功能    chkconfig iptables off
    3.1 网络启动方式:/etc/init.d/iptavlesstop|start|restart
                      service iptablesstop|start|*
 4.配置 yum源并下载ssh
 5.更改名称 hostnameXXX.example.com   文件更改 vi /etc/sysconfig/network
 6.删除ssh公钥          rm -fr/ssh_host_*
 7.删除缓存         rm -fr /tmp/*   rm -fr /var/cache/*
 8.切记 关闭后不再启动

     ***********************************************
一. ****************   HA(高可用架构)  *************
   ************** RHCS + IB  高可用+负载均衡 ************
 *******************************************************

   简介:该高可用构架使用的RHCS套件,其中服务设定为httpd。启用了fence,并使用ISCSI存储。文件共享机制使用的是ext4 或 gfs2,两种方式有操作和演示。在文档中即有原理解释,而且还有细节操作。


(一)

1.          M
          /   \
         /     \
        /       \
 HA1  <--------->  HA2

1.配置好yum,通过iso(rhel6.5)将yum中的组件,Server,HighAvailability,LoadBalancer,ResilientStorage,ScalableFileSystem,写入yum源。 【每个集群机器都要 配置好,包括管理机】

      [Server]
    name=Red Hat Enterprise LinuxServer
    baseurl=http://172.25.254.251/pub/rhel6.5
    enabled=1
    gpgcheck=0

      [HighAvailability]
    name=Red Hat Enterprise LinuxHighAvailability
    baseurl=http://172.25.254.251/pub/rhel6.5/HighAvailability
    enabled=1
    gpgcheck=0


      [LoadBalancer]
    name=Red Hat Enterprise LinuxLoadBalancer
    baseurl=http://172.25.254.251/pub/rhel6.5/LoadBalancer
    enabled=1
    gpgcheck=0
    
     [ScalableFileSystem]
    name=Red Hat Enterprise LinuxScalableFileSystem
    baseurl=http://172.25.254.251/pub/rhel6.5/ScalableFileSystem
    enabled=1
    gpgcheck=0
   
     [ResilientStorage]
    name=Red Hat Enterprise LinuxResilientStorage
    baseurl=http://172.25.254.251/pub/rhel6.5/ResilientStorage
    enabled=1
    gpgcheck=0

2. 集群机 HA1,HA2
   (1)下载 yuminstall -y ricci
   (2)设置 ricci 密码,ricci端口(11111)
   (3)启动服务/etc/init.d/ricci  start;    chkconfig ricci on
   (4)clustat 命令可以查看 集群上的运行点

3. 管理机
   (1)下载 yuminstall -y luci(8084)
   (2)启动luci
        使用Conga 管理
4. 域名对应 写在/etc/hosts中  (把所用的HA1,HA2,管理机的ip和hostname相对性)
   172.25.254.161  server1.example.com
   172.25.254.162  server2.example.com
   172.25.254.163  server3.example.com
   172.25.254.60   foundation60.ilt.example.com
5. 用浏览器访问管理机的8084端口
   https://server3.example.com:8084
     (1)用root用户登录
         (2)create集群,把HA1,HA2添加进去  (在创建HA1,HA2用的是相应 ricci 的密码)
6.所有的操作都在文件记录下
    /etc/cluster/cluster.conf

(二)配置Fence守护进程属性
    Fence守护程序,防止Storage(存储)损坏,由于机群中某节点异常,处于不能完全断开网络转入其它节点的状态。至此,添加Fance,防止节点异常影响Storage发生错误崩溃。
1.在Fance Devices中添加 Fencevirt(Multicast Mode)(虚拟Fence多波设备),并且添加相应的名称。
   设置的信息会自动载入/etc/cluster

2.在主机上下载fence软件,即用来控制虚拟机的状态
   基本软件: fence-virtd-multicast-0.3.2-2.el7.x86_64
           fence-virtd-libvirt-0.3.2-2.el7.x86_64
           fence-virtd-0.3.2-2.el7.x86_64

3.初始化 fence_virtd -c      【其它的默认,但在网络设备设置时使用主机的话就要设置 br0】

4.开启服务 libvirtd 和 fence_virtd

5.在主机中创建 /etc/cluster  目录。
  制作一个 key 发送给自己的 HA1 和 HA2,以保护 HAcluster
   dd if=/dev/urandomof=/etc/cluster/fence_xvm.key bs=128 count=1

6.着手在 HA1 和 HA2 中添加 fence设备,分别命名为 fence-1,fence-2。

7.查看虚拟机的 uuid 并且写入Add FenceDevice 信息中。
    查看uuid的方法,(1)打开虚拟管理软件 查看虚拟机信息
                  (2)virsh list --uuid   (应该是按照启动的机器顺序所显示的)
  【切记添加完成之后 重启fence_virtd 服务】

8.关闭节点机器方式 fence_node + 主机名称
  fence_node server1.example.com

 (三)Add FailoverDomain to Cluster  添加机群机组
   Prioritized     优先级
  
   Restricted      只在指定节点切换
  
   NO Failback     (恢复回切)[节点fence启动后,是否将服务换回来]
  
   Run Exclusive   独占(上面只能运行一个服务)
  
   启动:先启动IP 再启动服务,若是启动服务里有存储,先启动存储再启动服务。

 (1) 填写名称,
      勾选,Prioritized(数字越小越高,正整数),Restricted,NO Failback。
      却认选择节点,并且设置优先级。

(四)Add Resource to Cluster,向集群添加资源
    (1)添加 IP Address和掩码,  添加同网段IP。选择sleep重启时间(小点也可以)。
    (2)添加服务,(测试选择 Script),在节点上下载(httpd服务),
         Name:httpd
         Full Path to ScriptFile:/etc/init.d/httpd
  (5)Add Service Group to Cluster,添加服务
              Name : web
     ~Service(自启): 勾选
   ~Exclusive(独占): 勾选
           ~Domain:webfail
      ~Policy(策略):Relocate 

     【在下面的添加里 再添加自己设定的 *IP 和 *服务】
    *用命令在有服务的节点中启动  clusvcadm -e web  [关闭命令是 -d]
 
 (6)测试,在节点中写 .html 文件,看浏览器访问到的内容;人为停止服务,测试fence是否其效果,切换时长等。
     方法: echo c> /proc/sysq-trigger   用夯主服务器的方式使得fence起效果,并查看集群是否成功切换节点服务。
 

(五)增加 ISCSI存储
   (1)在管理机上添加一个虚拟存储设备
   (2)在管理机上:yum install -y scsi-target-utils.~
         节点机上:yuminstall -y iscis-initiator-utils.~
   (3)在管理机/etc/tgt/targets.conf 配置文件,并开启/etc/init.d/tgtd 服务。
             38 <target iqn.2017-02.com.example:server.target1>
             39     backing-store /dev/vdb
         40    initiator-address 172.25.254.161
             41     initiator-address 172.25.254.162
             42 </target>   
      测试:tgt-admin-s    [查看,载入配置文件信息]   
   (4)在节点机上,iscsiadm -m discovery -t st -p172.25.254.163,同步163机上分享的设备块。
        iscsiadm -m node -l   连接到分享的设备节点上,供其使用
   (5)创建存储(LVM)分区在一个节点机上  fdisk -cu /dev/sda,在分区类型选择时,选择8e(LVM类型)。
   (6)需要在两台节点机都同步分区表(partprobe),并且可以 cat /proc/partitions 可以查看设备是否同步。
(六)在ISCSI上面附加Apache服务,存储方式位ext4,使用clvmd,自动挂载
     (1)/etc/init.d/clvmd status    (这个应该在上述操作中默认开启)
     (2)/etc/lvm/lvm.conf    (其中类型变成3)
     (3)制作lvm(一个节点机就可):
             pvcreate /dev/sda1 (pvs查看)
             vgcreate clustervg /dev/sda1(vgs查看)
             lvcreate -L 4G -n demo clustervg (lvs查看)
             mkfs.ext4/dev/clustervg/demo
     (4)Add Resource to Cluster
                  添加: Filesystem
                  Name: webdate
                ~ Type:ext4
           MountPoint:/var/www/html
              ~or UUID:/dev/clustervg/demo
             ..
~ Unmount(允许强制卸载):勾选
             ..
              ~ Checks:勾选
              ~ Fails :勾选          
      (5)关闭服务,并把Filesystem加入策略中,先加入这个存储(webdate),再加入服务(Script)
          clusvcadm -d web   关闭服务
          clusvcadm -e web   开启服务
      (6)做切换节点机测试(查看服务是否可以在两个节点机同时进行)
         1.在此之前你可以在挂载点 写一个index.html文件
     2.切换命令    clusvcadm -r web -mserver2.example.com
      (7)LVM扩容文件系统
          lvextend -L +4G/dev/clustervg/demo
          resize2fs /dev/clustervg/demo

 (七)在机群上使用gfs2(共享文件系统)做存储
      (1)首先关闭服务
      (2)在Service Groups中 移除Filesystem,并且在 Resources 中 删除webdate
      (3)卸载并移除lvremove /dev/clustervg/demo,将其制作为gfs2文件系统(所用协议为:lock_dlm;日志为3个,日志个数=集群节点+1,名称=集群名称+文件系统名)
             mkfs.gfs2 -p lock_dlm -j 3-t hxl_HA:mygfs2 /dev/clustervg/demo
       (4)两台机器都挂载: mount /dev/clustervg/demo /mnt/
          确保开启clvmd服务。
          开机自动挂载(/etc/fstab)【网络文件类型:_netdev】
              /dev/clustervg/demo     /var/www/html   gfs2   _netdev 0 0
       (5)测试,在此挂载点/mnt/写的文件 两个节点机 是相同的。
          关闭web。
          gfs2_tool sb/dev/clustervg/demo all  [查看信息]
          gfs2_tool journals/dev/clustervg/demo [查看日志信息]
          gfs2_jad -j 3/dev/clustervg/demo [再添加3个日志文件]
          mount -a [重新加在]
          df -h [查看,近尺寸单位有问题]
         这个文件系统也支持 lvextend扩充,用gfs_grow扩充 




【常见问题归纳】
1.tgt首先启动在管理机上 , 这样集群的 iscsi(iscsid是它的后台系统)才能起来。
2.cman即是“心跳传递(corosync)”  
    corosync -> heartbeat v1 v2 v3keepalived(vrrp协议) [“心跳版本”]

【总结】
1.cman(corosync)    (ccsd保证配置文件一至)/etc/cluster/cluster.conf
2.存储iscsi,文件系统 afs2,ext4
3.fence
4.faildomain(故障切换域)

CCS命令 也可以命令操作配置文件的更改(详情请看RedHat6.5 Cluster官方文档)。