设为首页 收藏本站
查看: 3321|回复: 0

[经验分享] iscsi和gfs2群集文件系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-16 10:19:41 | 显示全部楼层 |阅读模式

一、RHCS集群的组成与结构

RHCS集群组成:

    RHCS是一个集群工具的集合,主要有下面几大部分组成:

    1. 集群架构管理器

       这是RHCS集群的一个基础套件,提供一个集群的基本功能,使各个节点组成集群一起工作,具体包括分布式集群管理器(CMAN)、成员关系管理、锁管理(DLM)、配置文件管理和栅设备(Fence)。

    2. 高可用服务管理器

       提供节点服务监控和服务故障转移功能。当一个节点服务出现故障时,将服务转移到另一个健康节点。

    3. 集群配置管理工具

       RHCS可以通过Luci来配置和管理RHCS集群。Luci是一个基于Web的集群配置方式,通过Luci可以轻松的搭建一个功能强大的集群系统。

    4. LVS

       LVS是一个开源的负载均衡软件,利用LVS可以将客户端的请求根据指定的负载均衡策略和算法合理的分配到各个服务节点,实时地、动态地、智能地分担负载。

    5. GFS (Gllobal FileSystem)

       GFS是Red Hat开发的一套集群文件系统,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和复制的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组件支持。

    6. CLVM (ClusterLogical Volume Manager)

       集群逻辑卷管理,是LVM的扩展,这种扩展允许集群中的机器使用LVM来管理共享存储。

    7. iSCSI

       即Internet SCSI,是IETF制定的一项标准,用于将SCSI数据块映射为以太网数据包。它是一种基于IP Storage理论的存储技术。RHCS可以通过iSCSI技术来导出和分配共享存储的使用。

    8. GNBD (Global NetworkBlock Device)

       全局网络模块,是GFS的一个补充组件,用于RHCS分配和管理共享存储,现在GNBD已经停止了开发,使用GNBD的人越来越少了。

RHCS集群结构:

    RHCS集群整体上分为3大部分:高可用性、负载均衡和存储集群。

  典型集群框图:

Cluster node、Failover Domain、Service

  整个结构分为三层,最上层为高可用的LVS负载均衡层;中间一层是Real Server层,也就是集群服务节点部分;最下边为共享存储层,主要用于为GFS文件系统提供共享存储空间,可以通过GNBD实现,也可以通过iSCSI技术实现。

QQ截图20160516101746.png

高可用性附加组建硬件

QQ截图20160516101801.png
网页服务器集群
QQ截图20160516101816.png

二、使用环境的初始化

各个node要有 IP、 Hostname(主机名)、 /etc/hosts(添加解析,集群中每个节点都得有)
需要关闭 NetworkManager、Iptables、Selinux

配置yum源

实验配置cam,rgmanger.ricci.lucci.gfs2-utils
实验环境redhat6.6系统
1)需要安装的软件
在配置中ricci在所有的节点安装
lucci只在一个节点安装,通过web界面配置,只要安装了ricci的为其在添加节点的时候初始化和安装启动群架的软件
HA:
Node1 Node1.contoso.com 10.35.46.195
Node1 Node2.contoso.com 10.35.46.185
Node1 Node3.contoso.com 10.35.46.175
node4.contoso.com 10.35.46.165 管理主机和iscsi的服务端

RHCS:
Cman.rgmanager,luci .ricci
这4个软件只需要安装2个其他的通过luci通过web添加节点时初始化ricc自己安装
     luci 在一个节点上安装就可以了,可以用通过其他节点安装ricci进行相同的配置
     ricci所有的节点都必须安装

三、开始安装配置

node4:管理主机

node1.node2.node3:集群节点

配置每一个群集节点主机名


[iyunv@node1 ~]# cat /etc/hosts   
10.35.46.195 node1.contoso.com node1
10.35.46.185 node2.contoso.com node2
10.35.46.175 node3.contoso.com node3
集群每一个节点上:
#yum install ricci -y
#passwd ricci    #设置ricci密码 添加节点使用的密码就是这个密码
#/etc/init.d/ricci start          #启动ricci端口为11111
#chkconfig ricci on
管理主机上:
[iyunv@ty1 cluster]#yum install luci -y          #安装luci,使用web方式配置集群
[iyunv@ty1 cluster]# /etc/init.d/luci start

Start luci...                                              [  OK  ]
Point your web browser to https://node1.contoso.com:8084 (or equivalent) to access luci


https://node1.contoso.com :8084  登录密码使用系统管理root用户与其密码

QQ截图20160516101824.png

QQ截图20160516101831.png 创建群集名称,加入3个节点

QQ截图20160516101836.png QQ截图20160516101845.png

[iyunv@node1 ~]# clustat   查看群集节点是否运行正常
Cluster Status for webtest@ Sat May 14 21:23:57 2016  群集名称
Member Status: Quorate

Member Name                                                ID   Status
------ ----                                                ---- ------
node1.contoso.com                                               1 Online, Local,
node2.contoso.com                                              2 Online,
node3.contoso.com                                              3 Online,

四、添加fence设备


“Fence技术”核心在于解决高可用集群在出现极端问题情况下的运行保障问题,在高可用集群的运行过程中,有时候会检测到某个节点功能不正常,比如在两台高可用服务器间的心跳线突然出现故障,这时一般高可用集群技术将由于链接故障而导致系统错判服务器宕机从而导致资源的抢夺,为解决这一问题就必须通过集群主动判断及检测发现问题并将其从集群中删除以保证集群的稳定运行,Fence技术的应用可以有效的实现这一功能


添加一个fence,这儿的fence可能我添加的跟大家实际中演示的可能不太一样所有,这儿就不做演示
QQ截图20160516101852.png
群集配置完成了
五、在node4上配置iscsi服务
下面的配置都是在node4上使用的
配置iscsi服务端
实现准备好一块磁盘 添加了一块20G /dev/sdb
[iyunv@node4 ~]# yum install scsi-target-utils –y
[iyunv@node1 ~]# /etc/init.d/tgtd start
[iyunv@node1 ~]# cat /etc/tgt/targets.conf
<target iqn.2016-05.com.contoso:disk1>
    backing-store /dev/sdb
    initiator-address 10.35.46.0/24        绑定可以挂在的ip地址
</target>

在3个节点上安装iscsi的client
[iyunv@node1 ~]# yum install iscsi-initiator-utils -y ; ssh  node2 'yum install iscsi-initiator-utils -y'; ssh  node3 'yum install iscsi-initiator-utils -y'  安装iscsiclient
发现iscsi
[iyunv@node1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 10.35.46.165 --discover ; ssh node2 'iscsiadm --mode discoverydb --type sendtargets --portal 10.35.46.165 --discover'; ssh node3 'iscsiadm --mode discoverydb --type sendtargets --portal 10.35.46.165 --discover'
10.35.46.195:3260,1 iqn.2016-05.com.contoso:disk1
10.35.46.195:3260,1 iqn.2016-05.com.contoso:disk1
10.35.46.195:3260,1 iqn.2016-05.com.contoso:disk1
登录iscsi
[iyunv@node1 ~]# iscsiadm --mode node --targetname iqn.2016-05.com.contoso:disk1 --portal 10.35.46.165:3260 --login ; ssh node2 'iscsiadm --mode node --targetname iqn.2016-05.com.contoso:disk1 --portal 10.35.46.165:3260 --login'; ssh node3 'iscsiadm --mode node --targetname iqn.2016-05.com.contoso:disk1 --portal 10.35.46.165:3260 --login'
格式化磁盘一个分区使1个分区10G,
[iyunv@node3 ~]# fdisk /dev/sdb
QQ截图20160516101900.png
[iyunv@node1 ~]# fdisk -l /dev/sdb      
Disk /dev/sdb: 21.5 GB, 21467948544 bytes
64 heads, 32 sectors/track, 20473 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x27cd42a2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10241    10486768   83  Linux
[iyunv@node1 ~]# partx /dev/sdb            格式化完了记得 重读一下分区信息

三块磁盘盘都都能看到
[iyunv@node4 ~]#  fdisk -l | grep /dev/sdb ; ssh node2 'fdisk -l | grep /dev/sdb '; ssh node3 'fdisk -l | grep /dev/sdb'  
Disk /dev/sdb: 21.5 GB, 21467948544 bytes
/dev/sdb1               1       10241    10486768   83  Linux
Disk /dev/sdb: 21.5 GB, 21467948544 bytes
/dev/sdb1               1       10241    10486768   83  Linux
Disk /dev/sdb: 21.5 GB, 21467948544 bytes
/dev/sdb1               1       10241    10486768   83  Linux

六、配置gfs2
所有节点都要安装gfs2
[iyunv@node1 ~]# yum install gfs2-utils -y; ssh node2 'yum install gfs2-utils -y '; ssh node3 'yum install gfs2-utils -y '
将刚刚上面格式化iscsi一块磁盘,格式化为gfs2的格式
[iyunv@node2 ~]# mkfs.gfs2 –h   获取帮助
[iyunv@node2 ~]#  rpm -ql gfs2-utils 查看生成了那些命令
mkfs.gfs2
-b 指定块大小
-j:  指定日志区域的个数,有几个就能够被几个几点挂载
-J:  指定日志区域的大小默认为128MB   
-p:{lock_dlm|lock_nolock}:  锁,不锁
-t <name>:锁表的名称,格式为clustername:locktablename clustername为当前所在的集群的名称,locktablename要在当前集群唯一
-D显示详细信息
[iyunv@node1 ~]# mkfs.gfs2 -j 3 -p lock_dlm –twebtest:webtest /dev/sdb1
This will destroy any data on /dev/sdb1.
It appears to contain: ACB archive data

Are you sure you want to proceed? [y/n] y

Device:                    /dev/sdb1
Blocksize:                 4096
Device Size                10.00 GB (2621692 blocks)
Filesystem Size:           10.00 GB (2621689 blocks)
Journals:                  3
Resource Groups:           41
Locking Protocol:          "lock_dlm"
Lock Table:                "RHCS:RHCS"
UUID:                      fb629cb6-bb19-47af-ff90-b45bcc604a5a
[iyunv@node1 ~]# mount /dev/sdc1 /mnt       挂在不用指定文件系统默认会指定
[iyunv@node1 ~]# mont
-bash: mont: command not found
[iyunv@node1 ~]# mount
/dev/mapper/vg_node1-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/sdc1 on /mnt type gfs2 (rw,seclabel,relatime,hostdata=jid=0)
[iyunv@node1 ~]# cd /mnt
[iyunv@node1 mnt]# touch 1        创建了一个文件
[iyunv@node1 mnt]# ls
1
[iyunv@node2 ~]# mount -t gfs2 /dev/sdc1 /mnt  让node2也挂在
[iyunv@node2 ~]# cd /mnt/
[iyunv@node2 mnt]# ls           文件同步了
1  
[iyunv@node2 mnt]# touch 2                 在node2上创建一个文件
[iyunv@node2 mnt]# ls
1  2
[iyunv@node1 mnt]# ls   在                在node1上查看数据也同步了
12

群集文件的好处,一旦发现数据立即同步,而且一旦一个节点在写的时候会发出锁通知其他节点并锁定文件,等这个节点完成数据后,其他节点才能后写入数据
/usr/sbin/gfs2_tool –h
[iyunv@node1 mnt]# gfs2_tool journals /mnt查看信息
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
[iyunv@node3 cluster]# rpm -ql gfs2-utils
gfs2_jadd 日志区域不过在增加几个,就是可以在同时挂在的节点有几个
[iyunv@node3 cluster]# gfs2_jadd -j 1 /dev/sdb2



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-217633-1-1.html 上篇帖子: rsync +crontab实现 定时备份文件 下篇帖子: Linux驱动之Input子系统要点分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表