CloudStack搭建指南(二)
GlusterFS介绍
什么是GlusterFS?
GlusterFS是定义在用户空间中使用的分布式文件系统,在用户空间即文件系统(FUSE)。 它是一个基于软件的文件系统,它考虑到自己的灵活性功能。
看看下图,它示意性地表示了分层模型中GlusterFS的位置。 默认情况下,GlusterFS将使用TCP协议。
GlusterFS的优点
(1)创新 -它消除了元数据,并能dramtically提高性能,这将有助于我们统一的数据和对象。
(2) 弹性 -适应于经济增长和减少数据的大小。
(3) 线性扩展 -它具有可用性高数量和超越。
(4) 简单 -在用户空间运行时,它易于管理和独立于内核。
什么使Gluster在其他分布式文件系统中脱颖而出?
(1) 出售 -缺乏一个元数据服务器提供了一个更快的文件系统。
(2) 实惠的 -它可以部署在商品硬件。
(3) 灵活的 -正如我刚才所说,GlusterFS是一个纯软件的文件系统。 这里的数据存储在本地文件系统,如ext4,xfs等。
(4) 开源 -目前GlusterFS是由红帽公司是一家十亿美元的开源公司,作为维护红帽存储的一部分。
GlusterFS中的存储概念
(1)砖 -砖基本上是指的是值得信赖的存储池之间共享任何目录。
(2) 值得信赖的存储池 -为这些共享文件/目录,这是基于对设计方案的集合。
(3) 块存储 -它们是通过该数据跨系统中的块的形式被移动设备。
(4) 集群 -在红帽存储,两个群集和值得信赖的存储池传达的基础上定义的协议存储服务器协作的含义相同。
(5) 分布式文件系统 -的文件系统,其中数据被分布在,用户可以在不知道该文件的实际位置访问该文件不同的节点。 用户没有体验到远程访问的感觉。
(6) FUSE -这是一个可加载的内核模块,它允许用户在不涉及任何内核代码创建上面的内核文件系统。
(7)glusterd – glusterd是GlusterFS管理守护这是将在整个时间每当服务器处于活动状态运行文件系统的骨干。
(8)POSIX -便携式操作系统接口(POSIX)是由IEEE作为在应用程序可编程接口(API)的形式的解决方案,以Unix的变体之间的相容性定义的标准的家庭。
(9) RAID -独立磁盘(RAID)冗余阵列是给通过冗余提高存储可靠性的技术。
(10)亚体 -在同一译者由至少处理后砖。
(11)译者 -译者是一段代码,它执行从安装点的用户启动的基本动作。 它连接一个或多个子卷。
(12)音量 -一个体积是砖的逻辑集合。 所有操作都基于用户创建的不同类型的卷。
gluster的三种基本卷
分布式卷
分布式Glusterfs卷 - 这是默认的glusterfs卷,即,如果不指定卷的类型,则在创建卷时,默认选项是创建分布式卷。这里,文件分布在卷中的各种砖块上。所以file1可能仅存储在brick1或brick2中,而不能存储在两者中。因此,没有数据冗余。这样的存储容量的目的是容易且便宜地缩放卷大小。然而,这也意味着砖块故障将导致完全丢失数据,并且必须依靠底层硬件进行数据丢失保护
复制卷(raid1)
复制Glusterfs卷 - 在本卷中,我们克服了分布式卷中面临的数据丢失问题。这些数据的完整副本保留在所有砖上。卷中的副本数可以由客户端在创建卷时决定。所以我们需要至少有两个砖块来创建一个2个副本或至少三个砖块来创建一个3个副本的卷。这样一个卷的一个主要优点是,即使一个砖失败,仍然可以从其复制的砖块访问数据。这样的卷被用于更好的可靠性和数据冗余。
条带卷(raid0)
条纹Glusterfs卷 - 考虑一个大型文件存储在一个砖块,许多客户端同时经常访问。这将对单个砖造成太多负载,并降低性能。在条带卷中,将数据分割成不同的条纹后,将数据存储在砖块中。因此,大文件将被分成更小的块(等于块中的块数),每个块都存储在一个砖块中。现在分配了负载,并且可以更快地获取文件,但没有提供数据冗余。
GlusterFS搭建与使用
Glusterfs搭建
(1)先安装epel源
# yum -y install epel-release
(2)如果用yum直接安装会很慢,建议去glusterfs官网把rpm包下载下来然后把这些rpm包上传到linux服务器中。
然后执行如下命令:
# yum -y install glusterfs-*
(3)启动gluster :
# service glusterd start
(4)关闭防火墙以及selinux
# service iptables stop
# chkconfig iptables off
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
GlusterFS的使用
(1)建立信任关系:
# gluster peer probe 10.0.0.5
(2) 查看信任状态:
# gluster peer status
(3)创建分布式卷:
gfs1:
# mkdir -p /data/exp1
gfs2:
# mkdir -p /data/exp2
gfs1:
# gluster volume create test-volume 10.0.0.4:/data/exp1 10.0.0.5:/data/exp2 force
查看卷的详情:
# gluster volume info
(4)创建复制卷:
gfs1 :
# mkdir /data/exp3
gfs2 :
# mkdir /data/exp4
gfs1 :
# gluster volume create repo-volume replica 2 transport tcp 10.0.0.4:/data/exp3 10.0.0.5:/data/exp4 force
查看卷的详情:
# gluster volume info repo-volume
(5)创建条带卷:
gfs1:
# mkdir /data/exp5
gfs2:
# mkdir /data/exp6
gfs1 :
# gluster volume create raid0-volume stripe 2 transport tcp 10.0.0.4:/data/exp5 10.0.0.5:/data/exp6 force
(6)启动卷:
默认情况下创建的卷是没有启动的我们用命令gluster volume start volume-name 启动即可
(7)挂载卷:
创建挂载点
gfs1:
# mkdir /mnt/g1 /mnt/g2 /mnt/g3
挂载卷
gfs1:
# mount.glusterfs 10.0.0.4:/test-volume /mnt/g1
# mount.glusterfs 10.0.0.4:/repo-volume /mnt/g2
# mount.glusterfs 10.0.0.4:/raid0-volume /mnt/g3
查看挂载的卷:df -h
(8)创建分布式复制卷:
gfs1:
# mkdir /exp1 /exp2
gfs2:
# mkdir /exp1 /exp2
gfs1:
#gluster volume create xwq-volume replica 2 transport tcp 10.0.0.4:/exp1 10.0.0.4:/exp2 10.0.0.5:/exp1 10.0.0.5:/exp2 force
启动卷:
# gluster volume start xwq-volume
创建挂载点:
# mkdir /mnt/g5
挂载:
# mount.glusterfs 10.0.0.4:/xwq-volume /mnt/g5
数据写入测试:
# man tcp > /mnt/g5/tcp1.txt
# man tcp > /mnt/g5/tcp2.txt
# man tcp > /mnt/g5/tcp3.txt
# man tcp > /mnt/g5/tcp4.txt
查看数据情况:
# tree /exp*
数据分布和我们想象中的有点不一样,这与你添加卷的顺序有关
(9)扩展卷 为分布式添加扩展卷
gfs1:
# mkdir /data/exp9
gfs1:
# gluster volume add-brick test-volume 10.0.0.4:/data/exp9 force
均衡卷中的数据:
# gluster volume rebalance test-volume start
(10)删除卷:
gfs1:
# gluster volume remove-brick test-volume 10.0.0.4:/data/exp9 force
数据可能会丢失,数据并不会删除!
更多详细内容请参阅官方文档
GlusterFS在cloudstack中的应用
在master端删库重新配置cloudstack-management
(1)先停止管理服务器:
# /etc/init.d/cloudstack-management stop
(2)删库:
进入数据库:
# mysql -uroot -p123456
删库:
# drop database cloud;
# drop database cloud_usage;
在agent端配置
(1)在之前安装agent的时候会自动安装glusterfs但是某些依赖库并没有安装完全,要卸载重装;
卸载命令:
# yum remove glusterfs*
上传rpm到合适的目录执行
# yum -y install glusterfs-*
或:安装
# yum install -y centos-release-gluster37.noarch
然后再执行如下命令:
# yum --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
(2) 删除agent1节点 /export/primary目录下的镜像:
# rm -rf *
启动glusterfs服务:
# service glusterd start
# chkconfig glusterd on
(3)然后以agent1为模板克隆一台虚拟机,改名为agent2并对网卡和主机名进行更改
(4) 添加信任池
[1]先关闭agent1和agent2的防火墙:
# /etc/init.d/iptables stop
[2]在agent1节点添加信任:
# gluster peer probe 192.168.0.32
可用gluster peer status查看链接状态
(5)添加磁盘、格式化、挂载~此处略
(6)因为刚才安装glusterfs的时候把agent给卸载,现在重新安装回去
# yum -y install cloudstack-common-4.8.0-1.el6.x86_64.rpm cloudstack-agent-4.8.0-1.el6.x86_64.rpm
(7)创建分布式复制卷
创建:
# gluster volume create gv2 replica 2 agnet1:/export/primary agent2:/export/primary force
启动卷:
# gluster volume start gv2
查看卷:
# gluster volume info
在master端进行库的初始化
(1)初始化:
# cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456
(2)启动cloudstack:
# cloudstack-setup-management
(3)上传模板:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /opt/systemvm64template-4.6.0-kvm.qcow2.bz2 -h kvm –F
系统管理
登陆cloudstack后天web界面创建资源域,步骤和之前创建资源域大致相同;
配置步骤如下:
启动资源域后报错,可以通过查看日志来排错,这里我们直接进入“基础架构”进行添加主机
添加主存储
添加二级存储
添加好后我们到“全局设置”修改一下配置,设置内存超峰
然后启用资源域,如果系统vm顺利启动则说明你的cloudstack平台搭建成功!
完成效果图:
在线迁移主机
当运行着虚拟机的主机资源报警或者发生故障时,如何确保运行在该主机上的虚拟机可以正常提供服务呢?这个时候glusterfs分布式文件系统就发挥了它的用处,由于glusterfs是共享式存储,可以实现在网络不中断的情况下对主机进行迁移。
(1)用命令virsh list 查看运行在主机上的虚拟机
虚拟机运行在agent1节点上
(2)迁移s-1-VM为例
查看其公网ip,s-1-VM在agent1上,我们在agent2上ping s-1-VM,要确保可以ping通才能进行迁移。
进行系统迁移:
在agent2上查看,迁移成功!
在迁移过程中不会对用户的使用产生任何影响,用户是无法察觉迁移过程的。
作者:废权
链接:https://blog.yjscloud.com/archives/30
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。


共有 0 条评论