===== RHEL/CentOS 7 GlusterFS =====
==== Pre requisites ====
SSH:
ssh-keygen
ssh-copyid #only from one node
yum install -y ansible
Configure /etc/hosts:
192.168.122.194 gluster2
192.168.122.208 gluster3
192.168.122.22 gluster1
Configure Chrony:
yum install -y chrony
systemctl start chronyd
systemctl enable chronyd
==== GlusterFS installation ====
=== If CentOS ===
yum install -y centos-release-gluster
yum install -y glusterfs-server
=== If RHEL ===
TBD
=== On both SO ===
systemctl start glusterd
systemctl enable glusterd
firewall-cmd --add-service=glusterfs
firewall-cmd --add-service=glusterfs --permanent
(echo o; echo n; echo p; echo 1; echo; echo; echo w) | fdisk /dev/sda
mkfs.xfs /dev/sda1
mkdir -p /data/gluster
echo "/dev/sda1 /data/gluster xfs defaults 0 0" | tee --append /etc/fstab
mount -a
mkdir -p /data/gluster/gv0
On one node:
gluster peer probe gluster2
gluster peer probe gluster3
gluster volume create gv0 replica 2 arbiter 1 gluster1:/data/gluster/gv0 gluster2:/data/gluster/gv0 gluster3:/data/gluster/gv0
gluster volume start gv0
=== Remove volume ====
On one node:
gluster volume stop gv0
gluster volume delete gv0
On all nodes:
setfattr -x trusted.glusterfs.volume-id /data/gluster/gv0/
setfattr -x trusted.gfid /data/gluster/gv0/
rm -rf /data/gluster/gv0/.glusterfs
==== NFS Ganesha ====
yum install -y nfs-ganesha-gluster nfs-ganesha
yum install -y pcs fence-agents-all
firewall-cmd --add-service=nlm --add-service=nfs --add-service=rpc-bind --add-service=high-availability --add-service=mountd --add-service=rquota
firewall-cmd --add-service=nlm --add-service=nfs --add-service=rpc-bind --add-service=high-availability --add-service=mountd --add-service=rquota --permanent
sed -i '/STATD_PORT/s/^#//' /etc/sysconfig/nfs
systemctl restart nfs-config
systemctl restart rpc-statd
gluster volume set gv0 nfs.disable on
passwd hacluster
systemctl start pcsd.service
systemctl enable pcsd.service
pcs cluster auth gluster1 gluster2 gluster3
gluster volume set all cluster.enable-shared-storage enable
==== Ansible ====
Inventory:
[tareastodos]
192.168.122.95
192.168.122.244
192.168.122.150
[tareasunnodo]
192.168.122.95
Playbook:
---
- name: Prepare all nodes gluster software
hosts: tareastodos
tasks:
- name: Configure /etc/hosts
lineinfile:
path: /etc/hosts
line: "{{ item.line }}"
with_items:
- { line: '192.168.122.95 gluster1' }
- { line: '192.168.122.244 gluster2' }
- { line: '192.168.122.150 gluster3' }
- name: Install chrony
yum:
name: chrony
state: present
- name: Enable chronyd
systemd:
name: chronyd
state: started
enabled: yes
- name: Install centos-release-gluster
yum:
name: centos-release-gluster
state: present
- name: Install glusterfs-server
yum:
name: glusterfs-server
state: present
- name: Enable glusterd
systemd:
name: glusterd
state: started
enabled: yes
- name: Disable firewalld
systemd:
name: firewalld
state: stopped
enabled: no
- name: Create mount point
file:
path: /data/gluster/
state: directory
- name: Configure /etc/fstab
lineinfile:
path: /etc/fstab
line: '/dev/sdb1 /data/gluster xfs defaults 0 0'
- name: Create partitions
parted:
device: /dev/sdb
number: 1
state: present
part_end: 4.9GiB
- name: Format partition
filesystem:
fstype: xfs
dev: /dev/sdb1
- name: Create partitions
command: "{{ item }}"
with_items:
- 'mount -a'
- name: Create mount point
file:
path: /data/gluster/gv0
state: directory
- name: Configure gluster
hosts: tareasunnodo
tasks:
- name: Configure gluster vg0
command: "{{ item }}"
with_items:
- gluster peer probe gluster2
- gluster peer probe gluster3
- gluster volume create gv0 replica 2 arbiter 1 gluster1:/data/gluster/gv0 gluster2:/data/gluster/gv0 gluster3:/data/gluster/gv0
- gluster volume start gv0
==== Revisar ====
* https://github.com/nfs-ganesha/nfs-ganesha/wiki/NFS-Ganesha-and-High-Availability
* https://jamesnbr.wordpress.com/2017/01/26/glusterfs-and-nfs-with-high-availability-on-centos-7/
==== References ====
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/system_administrators_guide/index#sect-Using_chrony
* https://www.itzgeek.com/how-tos/linux/centos-how-tos/install-and-configure-glusterfs-on-centos-7-rhel-7.html
* https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.5/html/installation_guide/port_information
* https://docs.gluster.org/en/latest/Administrator%20Guide/arbiter-volumes-and-quorum/
* https://docs.gluster.org/en/latest/Administrator%20Guide/Managing%20Volumes/#deleting-volumes
* https://joejulian.name/post/glusterfs-path-or-a-prefix-of-it-is-already-part-of-a-volume/
* https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.5/html/administration_guide/sect-Native_Client
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/ch-startup-haaa