• RHCS概述


    RHCS概述

    1. 创建RHCS集群环境
    2. 创建高可用Apache服务

    1 创建RHCS集群环境

    1.1 问题

    准备四台KVM虚拟机,其三台作为集群节点,一台安装luci并配置iSCSI存储服务,实现如下功能:

    • 使用RHCS创建一个名为tarena的集群
    • 集群中所有节点均需要挂载iSCSI共享存储
    • 使用集群中任意节点对iSCSI设置进行分区格式化
    • 安装luci的虚拟主机要求额外添加一块20G硬盘
    • 物理主机IP地址为192.168.4.1,主机名称为desktop1.example.com

    1.2 方案

    使用4台虚拟机,1台作为luci和iSCSI服务器、3台作为节点服务器,拓扑结构如图-1所示。

     

    -1

    所有主机的主机名及对应的IP地址如表-1所示。

    表-1 主机名称及对应IP地址表

     

    1.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:安装前准备

    1)为所有节点配置yum源,注意所有的虚拟主机均需要挂载安装光盘。

    1. [root@node1 ~]# mount /dev/cdrom /media
    2. [root@node1 ~]# rm -rf /etc/yum.repos.d/*
    3. [root@node1 ~]# vim /etc/yum.repos.d/dvd.repo
    4. [dvd]
    5. name=red hat
    6. baseurl=file:///media/
    7. enabled=1
    8. gpgcheck=0
    9. [HighAvailability]
    10. name=HighAvailability
    11. baseurl=file:///media/HighAvailability
    12. enabled=1
    13. gpgcheck=0
    14. [LoadBalancer]
    15. name=LoadBalancer
    16. baseurl=file:///media/LoadBalancer
    17. enabled=1
    18. gpgcheck=0
    19. [ResilientStorage]
    20. name=ResilientStorage
    21. baseurl=file:///media/ResilientStorage
    22. enabled=1
    23. gpgcheck=0
    24. [ScalableFileSystem]
    25. name=ScalableFileSystem
    26. baseurl=file:///media/ScalableFileSystem
    27. enabled=1
    28. gpgcheck=0
    29. [root@node1 ~]# yum clean all
    30. [root@node2 ~]# mount /dev/cdrom /media
    31. [root@node2 ~]# rm –rf /etc/yum.repos.d/*
    32. [root@node2 ~]# vim /etc/yum.repos.d/dvd.repo
    33. [dvd]
    34. name=red hat
    35. baseurl=file:///media/
    36. enabled=1
    37. gpgcheck=0
    38. [HighAvailability]
    39. name=HighAvailability
    40. baseurl=file:///media/HighAvailability
    41. enabled=1
    42. gpgcheck=0
    43. [LoadBalancer]
    44. name=LoadBalancer
    45. baseurl=file:///media/LoadBalancer
    46. enabled=1
    47. gpgcheck=0
    48. [ResilientStorage]
    49. name=ResilientStorage
    50. baseurl=file:///media/ResilientStorage
    51. enabled=1
    52. gpgcheck=0
    53. [ScalableFileSystem]
    54. name=ScalableFileSystem
    55. baseurl=file:///media/ScalableFileSystem
    56. enabled=1
    57. gpgcheck=0
    58. [root@node2 ~]# yum clean all
    59. [root@node3 ~]# mount /dev/cdrom /media
    60. [root@node3 ~]# rm -rf /etc/yum.repos.d/*
    61. [root@node3 ~]# vim /etc/yum.repos.d/dvd.repo
    62. [dvd]
    63. name=red hat
    64. baseurl=file:///media/
    65. enabled=1
    66. gpgcheck=0
    67. [HighAvailability]
    68. name=HighAvailability
    69. baseurl=file:///media/HighAvailability
    70. enabled=1
    71. gpgcheck=0
    72. [LoadBalancer]
    73. name=LoadBalancer
    74. baseurl=file:///media/LoadBalancer
    75. enabled=1
    76. gpgcheck=0
    77. [ResilientStorage]
    78. name=ResilientStorage
    79. baseurl=file:///media/ResilientStorage
    80. enabled=1
    81. gpgcheck=0
    82. [ScalableFileSystem]
    83. name=ScalableFileSystem
    84. baseurl=file:///media/ScalableFileSystem
    85. enabled=1
    86. gpgcheck=0
    87. [root@node3 ~]# yum clean all
    88. [root@luci ~]# mount /dev/cdrom /media
    89. [root@luci ~]# rm -rf /etc/yum.repos.d/*
    90. [root@luci ~]# vim /etc/yum.repos.d/dvd.repo
    91. [dvd]
    92. name=red hat
    93. baseurl=file:///media/
    94. enabled=1
    95. gpgcheck=0
    96. [HighAvailability]
    97. name=HighAvailability
    98. baseurl=file:///media/HighAvailability
    99. enabled=1
    100. gpgcheck=0
    101. [LoadBalancer]
    102. name=LoadBalancer
    103. baseurl=file:///media/LoadBalancer
    104. enabled=1
    105. gpgcheck=0
    106. [ResilientStorage]
    107. name=ResilientStorage
    108. baseurl=file:///media/ResilientStorage
    109. enabled=1
    110. gpgcheck=0
    111. [ScalableFileSystem]
    112. name=ScalableFileSystem
    113. baseurl=file:///media/ScalableFileSystem
    114. enabled=1
    115. gpgcheck=0
    116. [root@luci ~]# yum clean all

    2)修改/etc/hosts并同步到所有主机。

    1. [root@luci ~]# vim /etc/hosts
    2. 192.168.4.1        node1.example.com
    3. 192.168.4.2        node2.example.com
    4. 192.168.4.3        node3.example.com
    5. 192.168.4.4        luci.example.com
    6. [root@luci ~]# for i in {1..3};do scp /etc/hosts 192.168.4.$i:/etc/;done

    3)所有节点关闭NetworkManager、SELinux服务。

    1. [root@luci ~]# service NetworkManager stop
    2. [root@luci ~]# chkconfig NetworkManager off
    3. [root@luci ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
    4. [root@luci ~]# setenforce 0
    5. [root@luci ~]# iptables -F; service iptables save
    6. [root@node1 ~]# service NetworkManager stop
    7. [root@node1 ~]# chkconfig NetworkManager off
    8. [root@node1 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
    9. [root@node1 ~]# setenforce 0
    10. [root@node1 ~]# iptables -F; service iptables save
    11. [root@node2 ~]# service NetworkManager stop
    12. [root@node2 ~]# chkconfig NetworkManager off
    13. [root@node2 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
    14. [root@node2 ~]# setenforce 0
    15. [root@node2 ~]# iptables -F; service iptables save
    16. [root@node3 ~]# service NetworkManager stop
    17. [root@node3 ~]# chkconfig NetworkManager off
    18. [root@node3 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
    19. [root@node3 ~]# setenforce 0
    20. [root@node3 ~]# iptables -F; service iptables save

    步骤二:部署iSCSI服务

    1)在luci主机上部署iSCSI服务器,将/dev/sdb使用iSCSI服务共享。

    提示:服务器IQN名称为: iqn.2015-06.com.example.luci:cluster。

    1. [root@luci ~]# yum  -y  install  scsi-target-utils        //安装软件
    2. .. ..
    3. [root@luci ~]# rpm  -q  scsi-target-utils
    4. scsi-target-utils-1.0.24-10.el6.x86_64
    5. [root@luci ~]# vim /etc/tgt/targets.conf
    6. <target iqn.2015-06.com.example.luci:cluster>
    7. # List of files to export as LUNs
    8. backing-store /dev/sdb                            //定义存储设备
    9. initiator-address 192.168.4.0/24                    //定义ACL
    10. </target>
    11. [root@luci ~]# service  tgtd  start                     //启动服务
    12. Starting SCSI target daemon:                               [  OK  ]
    13. [root@luci ~]# chkconfig  tgtd  on

    2)所有节点服务器挂载该iSCSI共享。

    1. [root@node1 ~]# yum -y install iscsi-initiator-utils    //安装软件
    2. [root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
    3. [root@node1 ~]# iscsiadm -m node -T  
    4. >iqn.2015-06.com.example.luci:cluster
    5. >-p 192.168.4.4:3260 -l                                //挂载iSCSI共享
    6. [root@node1 ~]# iscsiadm -m node -T  
    7. >iqn.2015-06.com.example.luci:cluster
    8. >-p 192.168.4.4:3260 -l
    9. [root@node2 ~]# yum -y install iscsi-initiator-utils    //安装软件
    10. [root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
    11. [root@node2 ~]# iscsiadm -m node -T  
    12. >iqn.2015-06.com.example.luci:cluster
    13. >-p 192.168.4.4:3260 –l                                //挂载iSCSI共享
    14. [root@node2 ~]# iscsiadm -m node -T  
    15. >iqn.2015-06.com.example.luci:cluster
    16. >-p 192.168.4.4:3260 -l
    17. [root@node3 ~]# yum -y install iscsi-initiator-utils    //安装软件
    18. [root@node3 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
    19. [root@node3 ~]# iscsiadm -m node -T  
    20. >iqn.2015-06.com.example.luci:cluster
    21. >-p 192.168.4.4:3260 -l                                //挂载iSCSI共享
    22. [root@node3 ~]# iscsiadm -m node -T  
    23. >iqn.2015-06.com.example.luci:cluster
    24. >-p 192.168.4.4:3260 –l

    步骤三:安装集群软件

    1)在luci.example.com主机上安装luci,并启动服务。

    1. [root@luci ~]# yum –y install luci
    2. [root@luci ~]# service luci start;chkconfig luci on

    2)在所有的集群节点中安装ricci,并启动服务。

    1. [root@node1 ~]# yum -y install ricci
    2. [root@node1 ~]# echo "11111" |passwd --stdin ricci
    3. [root@node1 ~]# service ricci start;chkconfig ricci on
    4. [root@node2 ~]# yum -y install ricci
    5. [root@node2 ~]# echo "11111" |passwd --stdin ricci
    6. [root@node2 ~]# service ricci start;chkconfig ricci on
    7. [root@node3 ~]# yum -y install ricci
    8. [root@node3 ~]# echo "11111" |passwd --stdin ricci
    9. [root@node3 ~]# service ricci start;chkconfig ricci on

    步骤四:配置集群

    1)浏览器访问luci,任意主机使用浏览器访问即可。

    1. [root@luci ~]# firefox https://luci.example.com:8084

    2)创建集群。

    使用浏览器访问luici页面后,点击“Manage Clusters“页面,点击”Create“按钮创建一个新的集群,如图-2所示。

    -2

    接下来,在弹出的回话框中,输入集群的名称“tarena“,勾选”Download Packages“、“Reboot Nodes Befor Joining Cluster”、“Enable Shared Storage Support”,效果如图-3所示。

    -3

    等待所有的节点重启之后,在luci页面将显示如图-4所示的页面,代表所有节点以及加入到了tarena集群中。

    -4

    提示:如果节点重启后,有部分节点无法自动加入集群中,可以将正常的节点系统中/etc/cluster/cluster.conf文件同步到其他失败的节点中,并确保失败节点的cman和rgmanager服务为启动状态即可。


     

     创建高可用Apache服务

    2.1 问题

    沿用练习一,使用集群中的节点创建高可用Apache服务,实现以下目标:

    • 在任意节点将练习一挂载的iSCSI磁盘分区并格式化
    • 为集群添加有效的Fence设备
    • 创建名为prefer_node1的故障转移域
    • Apache服务优先运行于node1节点
    • Apache服务提供的VIP地址为192.168.4.100
    • 客户端通过访问VIP地址访问Web页面

    2.2 方案

    沿用练习一的拓扑架构,依次完成如下操作:

    1. 部署httpd服务
    2. 创建Fence设备
    3. 创建故障转移域
    4. 创建VIP资源
    5. 创建存储资源
    6. 创建Apache服务资源
    7. 创建服务组

    2.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:准备存储资源,并在所有节点安装httpd软件

    1)在任一集群节点将iSCSI磁盘分区并格式化。

    1. [root@node1 ~]# parted /dev/sdb mklabel msdos
    2. [root@node1 ~]# parted /dev/sdb mkpart primary 1 1000
    3. [root@node1 ~]# partprobe
    4. [root@node1 ~]# mkfs.ext4  /dev/sdb1

    2)安装httpd软件

    1. [root@node1 ~]# yum –y install httpd
    2. [root@node2 ~]# yum –y install httpd
    3. [root@node2 ~]# yum –y install httpd

    3)挂载共享存储并生成测试web页面

    1. [root@node1 ~]# mount /dev/sdb1  /var/www/html
    2. [root@node1 ~]# echo “test page for rhcs”  > /var/www/html/index.html

    步骤二:创建Fence设备

    1)安装软件包,生成共享秘钥。

    1. [root@desktop1 ~]# yum -y install
    2. >fence-virtd fence-virtd-libvirt fence-virtd-multicast
    3. [root@desktop1 ~]# mkdir /etc/cluster
    4. [root@desktop1 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1
    5. [root@desktop1 ~]# systemctl enable fence_virtd

    2)拷贝秘钥

    1. [root@desktop1 ~]# for i in {1..3};do scp /etc/cluster/fence_xvm.key
    2. > 192.168.4.$i:/etc/cluster/; done

    3)配置Fence

    注意:Interface项填写网络接口,Backend module项填写libvirt。

    1. [root@desktop1 ~]# fence_virtd –c
    2. [root@desktop1 ~]# systemctl start fence_virtd

    4)登录luci为集群节点添加Fence

    在任一使用浏览器访问https://luci.example.com:8084,配置Fence。首先选择“Fence Devices”菜单后,选择Add添加按钮,效果如图-5所示。

    -5

    在弹出的回话框中选择Fence设备的类型为Fence virt(Multicast Mode),并给fence设备设置名称,效果如图-6所示。

     

    -6

    创建完Fence设备后,接下来还需要给每个节点添加该Fence设备,首先在集群中点击“Nodes”菜单,依次选择所有节点,给每个节点添加Fence 设备。如图-7所示,选择node1准备给该节点添加Fence设备。

     

    -7

    在节点列表中选择了某个节点后,通过点击“Add Fence Method”添加Fence设备,效果如图-8所示。

                 

    -8

    选择“Add Fence Method”后在弹出的回话框中输入名称,如图-9所示。

     

    -9

    接下来,执行最后的操作,为Fence设备添加实例,选择“Add Fence Instance”,效果如图-10所示。

     

    -10

    在弹出的回话框中,选择之前创建的Fence实例“fence_xvm”,并为每个节点填写对应的虚拟机域名称,注意名称必须与虚拟机名称一致,如图-11所说。

    -11

    步骤三:创建高可用Apache服务

    1)创建故障转移域

    在任一节点使用浏览器访问https://luci.example.com:8084,点击“Failover Domains”菜单,通过下面的Add按钮创建故障转移域,如图-12所示。

     

    -12

    在弹出的回话框中为故障转移域填写名称:prefer_node1,依次勾选“Prioritized”、“Restricted”、“No Failback”,并为每个节点设置优先级,为了确保服务优先运行在node1上,我们将node1的优先级设置为1,如图-13所示。

    -13

    2)创建资源(VIP、共享存储、Apache服务)

    创建资源,可以通过点击“Resources”菜单,使用“Add”按钮创建,如图-14所示。

     

    -14

    在弹出的回话框中,我们选择IP Address这个资源,并为该资源设置具体的参数,VIP地址为192.168.4.100,效果如图-15所示。

     

    -15

    使用相同的方法,创建共享存储,在资源列表中选择Filesystem,并设置具体的参数将共享iSCSI磁盘挂载到/var/www/html中,为了确保挂载点的唯一性,这里我们使用的是设备的UUID(请各位同学根据自己的实际情况填写具体的值),查看UUID的方法是blkid /dev/sdb1,最终的设置效果如图-16所示。

     

    -16

    最后创建Apache服务资源,在资源列表中选择Apache,设置名称为web_service,如图-17所示。

     

    -17

    3)创建服务组

    在任意节点使用浏览器访问https://luci.example.com:8084,点击“Service Groups”菜单,通过下面的Add按钮创建服务组,如图-18所示。

     

    -18

    在弹出的回话框中,输入具体的参数,设置服务名称为web_clu,选择故障域为prefre_node1,恢复策略为Relocate,并通过Add Resource给该服务组添加服务资源,将上一步中创建的3个资源添加到该服务组中,效果如图-19所示。

     

    -19

    步骤四:验证测试

    在任意集群节点中,输入clustat查看集群及高可用服务运行状态,如图-20所示。

     

    -20

     

  • 相关阅读:
    TS之类的继承
    TS之函数及函数传参
    TS之数据类型
    Linux 协程
    设计模式 装饰器模式和代理模式
    C/C++ C和C++的区别
    C/C++ 内存分配方式
    Linux 进程间通信
    C/C++ RTTI
    Reactor设计模式
  • 原文地址:https://www.cnblogs.com/qingbai/p/11951067.html
Copyright © 2020-2023  润新知