接下来是存储的部署, GlusterFS
主机: 192.168.1.201 / 192.168.1.202 / 192.168.1.203
系统: CentOS 7.4
CPU: 2 vCPU
Memory: 4 G
1. 安装 yum repo
# lvm$ ansible glusterfs -m lvg -a "vg=gluster-vg pvs=/dev/sdb,/dev/sdc,/dev/sdd "# 查看 vg 大小, 这里是 120G, 所以分为三个 lv ,每个给 35GB$ vgs VG #PV #LV #SN Attr VSize VFree gluster-vg 3 0 0 wz--n- <119.99g <119.99g# 划分 lv$ ansible glusterfs -v -m lvol -a "lv=ovirt size=35G vg=gluster-vg"$ ansible glusterfs -v -m lvol -a "lv=openshift size=35G vg=gluster-vg"$ ansible glusterfs -v -m lvol -a "lv=openstack size=35G vg=gluster-vg"
2. 准备 bricks
# lvm$ ansible glusterfs -m lvg -a "vg=gluster-vg pvs=/dev/sdb,/dev/sdc,/dev/sdd "# 查看 vg 大小, 这里是 120G, 所以分为三个 lv ,每个给 35GB$ vgs VG #PV #LV #SN Attr VSize VFree gluster-vg 3 0 0 wz--n- <119.99g <119.99g# 划分 lv$ ansible glusterfs -v -m lvol -a "lv=ovirt size=35G vg=gluster-vg"$ ansible glusterfs -v -m lvol -a "lv=openshift size=35G vg=gluster-vg"$ ansible glusterfs -v -m lvol -a "lv=openstack size=35G vg=gluster-vg"# 查看一下结果$ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert openshift gluster-vg -wi-a----- 35.00g openstack gluster-vg -wi-a----- 35.00g ovirt gluster-vg -wi-a----- 35.00g# 分区$ ansible glusterfs -v -m filesystem -a "dev=/dev/gluster-vg/ovirt fstype=xfs opts='-i size=512'"$ ansible glusterfs -v -m filesystem -a "dev=/dev/gluster-vg/openshift fstype=xfs opts='-i size=512'"$ ansible glusterfs -v -m filesystem -a "dev=/dev/gluster-vg/openstack fstype=xfs opts='-i size=512'"# 创建挂载目录$ ansible glusterfs -v -m file -a "state=directory path=/bricks/ovirt"$ ansible glusterfs -v -m file -a "state=directory path=/bricks/openshift"$ ansible glusterfs -v -m file -a "state=directory path=/bricks/openstack"# 修改 fstab$ ansible glusterfs -v -m lineinfile -a "path=/etc/fstab line='/dev/gluster-vg/ovirt /bricks/ovirt xfs defaults 1 2'"$ ansible glusterfs -v -m lineinfile -a "path=/etc/fstab line='/dev/gluster-vg/openshift /bricks/openshift xfs defaults 1 2'"$ ansible glusterfs -v -m lineinfile -a "path=/etc/fstab line='/dev/gluster-vg/openstack /bricks/openstack xfs defaults 1 2'"# 挂载$ ansible glusterfs -v -m shell -a "mount -a"# 检查$ ansible glusterfs -v -m shell -a "df -hT"
3. 安装 GlusterFS 软件包
$ ansible glusterfs -m yum -a "name=glusterfs-server"# 防火墙, 一般情况下加 glusterfs 的服务, 但是根据官网描述, 关掉会比较方便, 毕竟分布式存储是一个"只对内部提供访问"的服务# "You can run gluster with iptables rules, but it's up to you to decide how you'll configure those rules. By default, glusterd will listen on tcp/24007 but opening that port isn't enough on the gluster nodes. Each time you add a brick, it will open a new port (that you'll be able to see with "gluster volume status")"# 2017-12-6 更新: 还是添加 glusterfs 的防火墙服务吧, 不然老是会连接不上, 要开启防火墙然后再关掉才能连接$ ansible glusterfs -m firewalld -a "service=glusterfs state=enabled permanent=true"$ ansible glusterfs -m service -a "name=firewalld state=restarted enabled=yes"# 启动 GlusterFS 服务吧$ ansible glusterfs -m service -a "name=glusterd state=started enabled=yes"# 检查服务状态$ ansible glusterfs -a "systemctl status glusterd"
GlusterFS 就装好了, 接下来就可以创建 Volume 分享出去了
另外, 上面的过程可以直接跑个 playbook 来完成:
---- hosts: glusterfs tasks: - name: pv / vg create lvg: vg: gluster-vg pvs: /dev/sdb,/dev/sdc,/dev/sdd - name: lv create lvol: lv={ { item }} size=35G vg=gluster-vg with_items: - ovirt - openshift - openstack - name: filesystem filesystem: dev=/dev/gluster-vg/{ { item }} fstype=xfs opts='-i size=512' with_items: - ovirt - openshift - openstack - name: create mount directories file: state=directory path=/bricks/{ { item }} with_items: - ovirt - openshift - openstack - name: modify fstab lineinfile: path=/etc/fstab line='/dev/gluster-vg/{ { item }} /bricks/{ { item }} xfs defaults 1 2' with_items: - ovirt - openshift - openstack - name: mount shell: mount -a - name: check mounts shell: df -hT - name: install glusterfs yum: name: glusterfs-server - name: disable firewalld service: name: firewalld state: stopped enabled: no - name: enable and start glusterfs service: name: glusterd state: started enabled: yes - name: check daemon status shell: systemctl status glusterd