Logo

dev-resources.site

for different kinds of informations.

Oracle Cluster File System(OCFS2) setup for shared Block Volume

Published at
4/29/2024
Categories
oci
ocfs2
cluster
blockvolume
Author
paihari
Categories
4 categories in total
oci
open
ocfs2
open
cluster
open
blockvolume
open
Author
7 person written this
paihari
open
Oracle Cluster File System(OCFS2) setup for shared Block Volume

There are moments when simple tasks can slow down our progress, often because they're not part of our regular routine. This post captured set of steps to enable Shared Block Volume for multiple OCI Compute Instances. Such a setup also needs Oracle Cluster File System(OCFS2) to be enabled.
I so wish this enablement is possible by a click of Button, API call ...

Lets make our hands dirty.

Starting point.

  1. Two OCI Instance with the provision to access through SSH keys

Image description

  1. Block Volume in the same Availability Domain

Image description

Attach the Block Volume to Instance

  1. Navigate to the Unattached Block Volume. Attached Instances >> Attach Instance

Image description

Attach the First Instance.
Repeat the same for Second Instance

Image description

Setup the Oracle Cluster File System(OCFS2)

1) Add stateful Ingress in Security List of the Instance VCN

Source: Subnet/VCN CIDR
IP Prototocol: TCP and UDP
Source Port: All
Target Port: 3260 and 7777

Image description

2) Open the Target ports on Local OS Firewall on instance-1 and instance-2



sudo firewall-cmd --zone=public --permanent --add-port=7777/tcp
sudo firewall-cmd --zone=public --permanent --add-port=7777/udp
sudo firewall-cmd --zone=public --permanent --add-port=3260/tcp
sudo firewall-cmd --zone=public --permanent --add-port=3260/udp
sudo firewall-cmd --complete-reload


Enter fullscreen mode Exit fullscreen mode

3) Install OCFS2 Packages on instance-1 and instance-2



sudo dnf install -y ocfs2-tools


Enter fullscreen mode Exit fullscreen mode

4) Create Cluster definition on instance-1



sudo o2cb add-cluster ocifs2


Enter fullscreen mode Exit fullscreen mode

5) Add the nodes to Cluster on instance-1



sudo o2cb add-node ocifs2 instance-1 --ip <PRIVATE IP OF instance 1>
sudo o2cb add-node ocifs2 instance-2 --ip <PRIVATE IP OF instance 2>


Enter fullscreen mode Exit fullscreen mode

6) Check the Cluster Config file on instance-1



[opc@instance-1 ~]$ sudo cat /etc/ocfs2/cluster.conf
cluster:
    heartbeat_mode = local
    node_count = 2
    name = ocifs2

node:
    number = 0
    cluster = ocifs2
    ip_port = 7777
    ip_address = 172.17.0.173
    name = instance-1

node:
    number = 1
    cluster = ocifs2
    ip_port = 7777
    ip_address = 172.17.0.154
    name = instance-2



Enter fullscreen mode Exit fullscreen mode

7) Copy the content of Cluster Config file to instance-2 at the /etc/ocfs2/cluster.conf

8) Configure the Cluster Stack in instance-1 and instance-2 sequentially



[opc@instance-1 ~]$ sudo /sbin/o2cb.init configure
Configuring the O2CB driver.
...
...
Cluster to start on boot (Enter "none" to clear) [ocfs2]: ocifs2
...


Enter fullscreen mode Exit fullscreen mode

9) Verify the settings for Cluster Stack and note the values are loaded, mounted and online. But the heart beat is not active



[opc@instance-1 ~]$ sudo /sbin/o2cb.init status
Driver for "configfs": Loaded
Filesystem "configfs": Mounted
Stack glue driver: Loaded
Stack plugin "o2cb": Loaded
Driver for "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster "ocifs2": Online
  Heartbeat dead threshold: 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
  Heartbeat mode: Local
Checking O2CB heartbeat: Not active
Debug file system at /sys/kernel/debug: mounted


Enter fullscreen mode Exit fullscreen mode

Repeat above steps in instance-2

10) Setup the Boot time startup of o2cb and ocfs2 services on instance-1 and instance-2



sudo systemctl enable o2cb
sudo systemctl enable ocfs2


Enter fullscreen mode Exit fullscreen mode

11) Configure Kernel for Cluster Operation on instance-1 and instance-2 using SSH



sudo sysctl kernel.panic=30
sudo sysctl kernel.panic_on_oops=1


Enter fullscreen mode Exit fullscreen mode

Add the entries to sysctl configuration file for persistence



sudo vi /etc/sysctl.conf
kernel.panic=30
kernel.panic_on_oops=1



Enter fullscreen mode Exit fullscreen mode

12) Create OCFS2 Volume on only instance-1



[opc@instance-1 ~]$ sudo mkfs.ocfs2 -L "ocfs2" /dev/sdb
mkfs.ocfs2 1.8.6
Cluster stack: classic o2cb
Label: ocfs2
...
Formatting Journals: 
...
Writing lost+found: done
mkfs.ocfs2 successful


Enter fullscreen mode Exit fullscreen mode

Create a mount directory



[opc@instance-1 ~]$ sudo mkdir /ocfs2


Enter fullscreen mode Exit fullscreen mode

Specify the netdev option in /etc/fstab to allow the system to mount ocfs2 volume during boot time



sudo vi /etc/fstab 
/dev/sdb /ocfs2 ocfs2   _netdev,defaults        0 0


Enter fullscreen mode Exit fullscreen mode

Reload the sysctl and mount



sudo systemctl daemon-reload
sudo mount -a 


Enter fullscreen mode Exit fullscreen mode

Check the mounted block volume



[opc@instance-1 ~]$ lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
...
sdb                  8:16   0    1T  0 disk /ocfs2



Enter fullscreen mode Exit fullscreen mode

13) OCFS2 Volume setup and mount on instance-2



[opc@instance-2 ~]$ sudo mkdir /ocfs2
[opc@instance-2 ~]$ sudo vi /etc/fstab 
[opc@instance-2 ~]$ sudo systemctl daemon-reload
[opc@instance-2 ~]$ sudo mount -a 
[opc@instance-2 ~]$ lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
...
sdb                  8:16   0    1T  0 disk /ocfs2


Enter fullscreen mode Exit fullscreen mode

14) Test: Create a file on the mounted volume for eg. on instance-2



[opc@instance-2 ~]$ cd /ocfs2/
[opc@instance-2 ocfs2]$ sudo touch shared-cluster-file.txt
[opc@instance-2 ocfs2]$ ls -lart
total 8
drwxr-xr-x.  2 root root 3896 Apr 29 12:03 lost+found
dr-xr-xr-x. 19 root root  265 Apr 29 12:15 ..
-rw-r--r--.  1 root root    0 Apr 29 12:19 shared-cluster-file.txt
drwxr-xr-x.  3 root root 3896 Apr 29 12:19 .


Enter fullscreen mode Exit fullscreen mode

15) Test: Access the file on the mounted volume of other instance eg. on instance-1



[opc@instance-1 ~]$ cd /ocfs2/
[opc@instance-1 ocfs2]$ ls -lart
total 8
drwxr-xr-x.  2 root root 3896 Apr 29 12:03 lost+found
dr-xr-xr-x. 19 root root  265 Apr 29 12:04 ..
-rw-r--r--.  1 root root    0 Apr 29 12:19 shared-cluster-file.txt
drwxr-xr-x.  3 root root 3896 Apr 29 12:19 .



Enter fullscreen mode Exit fullscreen mode
cluster Article's
30 articles in total
Favicon
Configure MariaDB Galera Cluster in ubuntu 24.04 LTS
Favicon
Kubenetes Cluster & Nodes related issues
Favicon
Scaling Node.js: Handling 1 Million Requests Like a Pro
Favicon
Guia de Comandos PM2
Favicon
Usage of Node.js Cluster vs Worker
Favicon
🔋⚡ Ensuring High Availability with Two-Server Setup Using Keepalived
Favicon
Monitor Apache Ignite in 5 Minutes: Fix Cluster Issues Fast!
Favicon
Patroni, ETCD ve HAProxy kullanarak Cluster Kurulumu ve Yapılandırması
Favicon
Boost Kubernetes Efficiency: Upgrade to v1.14 in 11 Easy Steps!
Favicon
native people's contribution to ML
Favicon
Create an EKS Cluster Using Terraform
Favicon
Kubernetes Cluster Setup Guide 2024
Favicon
Using Phoenix.PubSub as a message-bus for Elixir cluster
Favicon
Differences between primary, core and task nodes in Amazon EMR cluster
Favicon
What is the purpose of the "cluster" module in Node.js?
Favicon
What is the purpose of the "cluster" module in Node.js?
Favicon
Oracle Cluster File System(OCFS2) setup for shared Block Volume
Favicon
How to Setup a Kubernetes Cluster with Minikube
Favicon
Deploying a WildFly 30.0.1.Final cluster using Ansible
Favicon
Deploy NGINX Application on AWS ECS
Favicon
Kubeadm ile kubernetes cluster kurulumu
Favicon
Security Considerations in Kubernetes
Favicon
Demystifying Kubernetes Manifests
Favicon
Deleting a cluster in Big Animal
Favicon
Highly scalable Minecraft cluster
Favicon
Cluster Architecture
Favicon
Kafka Multi-Cluster Deployment on Kubernetes - simplified !
Favicon
Creating a distributed high-availability cluster
Favicon
Understanding the Difference Between Cluster and Worker in Node.js
Favicon
Different types of cluster in EDB

Featured ones: