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