{"id":4241,"date":"2015-02-17T23:38:37","date_gmt":"2015-02-17T15:38:37","guid":{"rendered":"http:\/\/rmohan.com\/?p=4241"},"modified":"2015-02-19T19:43:43","modified_gmt":"2015-02-19T11:43:43","slug":"centos-6-5-gfs-cluster","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=4241","title":{"rendered":"CENTOS 6.5 GFS CLUSTER"},"content":{"rendered":"<p>CentOS 6.5 x64 RHCS GFS<\/p>\n<p>cluster1.rmohan.com<br \/>\ncluster2.rmohan.com<\/p>\n<p># cat \/etc\/hosts<\/p>\n<p>192.168.0.10 cluster1.rmohan.com cluster1<br \/>\n192.168.0.11 cluster2.rmohan.com cluster2<\/p>\n<p>[root@cluster1 ~]# iptables -F<br \/>\n[root@cluster1 ~]# iptables-save &gt; \/etc\/sysconfig\/iptables<br \/>\n[root@cluster1 ~]# \/etc\/init.d\/iptables restart<br \/>\niptables: Setting chains to policy ACCEPT: filter [ OK ]<br \/>\niptables: Flushing firewall rules: [ OK ]<br \/>\niptables: Unloading modules: [ OK ]<br \/>\niptables: Applying firewall rules: [ OK ]<br \/>\n[root@cluster1 ~]# vi \/etc\/selinux\/config<br \/>\n[root@cluster1 ~]#<\/p>\n<p>[root@cluster1 ~]# cat \/etc\/selinux\/config<\/p>\n<p># This file controls the state of SELinux on the system.<br \/>\n# SELINUX= can take one of these three values:<br \/>\n# enforcing &#8211; SELinux security policy is enforced.<br \/>\n# permissive &#8211; SELinux prints warnings instead of enforcing.<br \/>\n# disabled &#8211; No SELinux policy is loaded.<br \/>\nSELINUX=permissive<br \/>\n# SELINUXTYPE= can take one of these two values:<br \/>\n# targeted &#8211; Targeted processes are protected,<br \/>\n# mls &#8211; Multi Level Security protection.<br \/>\nSELINUXTYPE=targeted<\/p>\n<p>yum install iscsi-initiator-utils<br \/>\nchkconfig iscsid on<br \/>\nservice iscsid start<\/p>\n<p>yum install ntp<\/p>\n<p>chkconfig ntpd on<\/p>\n<p>service ntpd start<\/p>\n<p>[root@cluster ~]# chkconfig &#8211;level 345 ntpd on<br \/>\n[root@cluster2 ~]# \/etc\/init.d\/ntpd<br \/>\nntpd ntpdate<br \/>\n[root@cluster2 ~]# \/etc\/init.d\/ntpd restart<br \/>\nShutting down ntpd: [FAILED]<br \/>\nStarting ntpd: [ OK ]<br \/>\n[root@cluster2 ~]# clear<\/p>\n<p>ntpdate -u 0.centos.pool.ntp.org<br \/>\n17 Feb 21:32:32 ntpdate[12196]: adjust time server 103.11.143.248 offset 0.000507 sec<\/p>\n<p>[root@cluster1 ~]# date<br \/>\nTue Feb 17 21:32:49 SGT 2015<br \/>\n[root@cluster1 ~]#<\/p>\n<p># iscsiadm -m discovery -t sendtargets -p 192.168.1.50<\/p>\n<p>qdisk 100MB<br \/>\ndata 20GB<\/p>\n<p>[root@cluster2 ~]# yum install iscsi-initiator-utils<br \/>\nLoaded plugins: fastestmirror<br \/>\nSetting up Install Process<br \/>\nLoading mirror speeds from cached hostfile<br \/>\n* base: centos.ipserverone.com<br \/>\n* extras: singo.ub.ac.id<br \/>\n* updates: centos.ipserverone.com<br \/>\nResolving Dependencies<br \/>\n&#8211;&gt; Running transaction check<br \/>\n&#8212;&gt; Package iscsi-initiator-utils.x86_64 0:6.2.0.873-13.el6 will be installed<br \/>\n&#8211;&gt; Finished Dependency Resolution<\/p>\n<p>Dependencies Resolved<\/p>\n<p>========================================================================================================================================<br \/>\nPackage Arch Version Repository Size<br \/>\n========================================================================================================================================<br \/>\nInstalling:<br \/>\niscsi-initiator-utils x86_64 6.2.0.873-13.el6 base 719 k<\/p>\n<p>Transaction Summary<br \/>\n========================================================================================================================================<br \/>\nInstall 1 Package(s)<\/p>\n<p>Total download size: 719 k<br \/>\nInstalled size: 2.4 M<br \/>\nIs this ok [y\/N]: y<br \/>\nDownloading Packages:<br \/>\niscsi-initiator-utils-6.2.0.873-13.el6.x86_64.rpm | 719 kB 00:00<br \/>\nRunning rpm_check_debug<br \/>\nRunning Transaction Test<br \/>\nTransaction Test Succeeded<br \/>\nRunning Transaction<br \/>\nInstalling : iscsi-initiator-utils-6.2.0.873-13.el6.x86_64 1\/1<br \/>\nVerifying : iscsi-initiator-utils-6.2.0.873-13.el6.x86_64 1\/1<\/p>\n<p>Installed:<br \/>\niscsi-initiator-utils.x86_64 0:6.2.0.873-13.el6<\/p>\n<p>Complete!<\/p>\n<p>[root@cluster2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.50<br \/>\nStarting iscsid: [ OK ]<br \/>\n192.168.1.50:3260,1 iqn.2006-01.com.openfiler:tsn.5ed5c1620415<br \/>\n[root@cluster2 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.5ed5c1620415 -p 192.168.1.50 -l<br \/>\nLogging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.5ed5c1620415, portal: 192.168.1.50,3260] (multiple)<br \/>\nLogin to [iface: default, target: iqn.2006-01.com.openfiler:tsn.5ed5c1620415, portal: 192.168.1.50,3260] successful.<br \/>\n[root@cluster2 ~]#<\/p>\n<p>[root@cluster2 ~]# cat \/proc\/partitions<br \/>\nmajor minor #blocks name<\/p>\n<p>8 0 20971520 sda<br \/>\n8 1 512000 sda1<br \/>\n8 2 20458496 sda2<br \/>\n253 0 18358272 dm-0<br \/>\n253 1 2097152 dm-1<br \/>\n8 16 19988480 sdb<br \/>\n8 32 327680 sdc<\/p>\n<p>[root@cluster2 ~]# fdisk -l<\/p>\n<p>Disk \/dev\/sda: 21.5 GB, 21474836480 bytes<br \/>\n255 heads, 63 sectors\/track, 2610 cylinders<br \/>\nUnits = cylinders of 16065 * 512 = 8225280 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00098b76<\/p>\n<p>Device Boot Start End Blocks Id System<br \/>\n\/dev\/sda1 * 1 64 512000 83 Linux<br \/>\nPartition 1 does not end on cylinder boundary.<br \/>\n\/dev\/sda2 64 2611 20458496 8e Linux LVM<\/p>\n<p>Disk \/dev\/mapper\/vg_cluster2-lv_root: 18.8 GB, 18798870528 bytes<br \/>\n255 heads, 63 sectors\/track, 2285 cylinders<br \/>\nUnits = cylinders of 16065 * 512 = 8225280 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00000000<\/p>\n<p>Disk \/dev\/mapper\/vg_cluster2-lv_swap: 2147 MB, 2147483648 bytes<br \/>\n255 heads, 63 sectors\/track, 261 cylinders<br \/>\nUnits = cylinders of 16065 * 512 = 8225280 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00000000<\/p>\n<p>Disk \/dev\/sdb: 20.5 GB, 20468203520 bytes<br \/>\n64 heads, 32 sectors\/track, 19520 cylinders<br \/>\nUnits = cylinders of 2048 * 512 = 1048576 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00000000<\/p>\n<p>Disk \/dev\/sdc: 335 MB, 335544320 bytes<br \/>\n11 heads, 59 sectors\/track, 1009 cylinders<br \/>\nUnits = cylinders of 649 * 512 = 332288 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00000000<\/p>\n<p>[root@cluster2 ~]#<\/p>\n<p>Second, the installation package RHCS<\/p>\n<p>1) cluster1 (managed node) installation package RHCS, luci end management software package, install only the management side.<\/p>\n<p>yum -y install luci cman odcluster ricci gfs2-utils rgmanager lvm2-cluster<\/p>\n<p>2) cluster2 installation package RHCS<\/p>\n<p>yum -y install cman odcluster ricci gfs2-utils rgmanager lvm2-cluster<\/p>\n<p>3) cluster1, cluster2 nodes ricci change user passwords<\/p>\n<p>passwd ricci<\/p>\n<p>4) Configuration RHCS service boot<\/p>\n<p>chkconfig ricci on<br \/>\nchkconfig rgmanager on<br \/>\nchkconfig cman on<br \/>\nservice ricci start<br \/>\nservice rgmanager start<br \/>\nservice cman start<\/p>\n<p>[root@cluster1 ~]# chkconfig ricci on<br \/>\nchkconfig cman on<br \/>\nservice ricci start<br \/>\nservice rgmanager start<br \/>\n[root@cluster1 ~]# chkconfig rgmanager on<br \/>\nservice cman start<br \/>\n[root@cluster1 ~]# chkconfig cman on<br \/>\n[root@cluster1 ~]# service ricci start<br \/>\nStarting system message bus: [ OK ]<br \/>\nStarting oddjobd: [ OK ]<br \/>\ngenerating SSL certificates&#8230; done<br \/>\nGenerating NSS database&#8230; done<br \/>\nStarting ricci: [ OK ]<br \/>\n[root@cluster1 ~]# service rgmanager start<br \/>\nStarting Cluster Service Manager: [ OK ]<br \/>\n[root@cluster1 ~]# service cman start<br \/>\nStarting cluster:<br \/>\nChecking if cluster has been disabled at boot&#8230; [ OK ]<br \/>\nChecking Network Manager&#8230; [ OK ]<br \/>\nGlobal setup&#8230; [ OK ]<br \/>\nLoading kernel modules&#8230; [ OK ]<br \/>\nMounting configfs&#8230; [ OK ]<br \/>\nStarting cman&#8230; xmlconfig cannot find \/etc\/cluster\/cluster.conf<br \/>\n[FAILED]<br \/>\nStopping cluster:<br \/>\nLeaving fence domain&#8230; [ OK ]<br \/>\nStopping gfs_controld&#8230; [ OK ]<br \/>\nStopping dlm_controld&#8230; [ OK ]<br \/>\nStopping fenced&#8230; [ OK ]<br \/>\nStopping cman&#8230; [ OK ]<br \/>\nUnloading kernel modules&#8230; [ OK ]<br \/>\nUnmounting configfs&#8230; [ OK ]<\/p>\n<p>[root@cluster2 ~]# service ricci start<br \/>\nStarting system message bus: [ OK ]<br \/>\nStarting oddjobd: [ OK ]<br \/>\ngenerating SSL certificates&#8230; done<br \/>\nGenerating NSS database&#8230; done<br \/>\nStarting ricci: [ OK ]<br \/>\n[root@cluster2 ~]# service rgmanager start<br \/>\nStarting Cluster Service Manager: [ OK ]<br \/>\n[root@cluster2 ~]# service cman start<br \/>\nStarting cluster:<br \/>\nChecking if cluster has been disabled at boot&#8230; [ OK ]<br \/>\nChecking Network Manager&#8230; [ OK ]<br \/>\nGlobal setup&#8230; [ OK ]<br \/>\nLoading kernel modules&#8230; [ OK ]<br \/>\nMounting configfs&#8230; [ OK ]<br \/>\nStarting cman&#8230; xmlconfig cannot find \/etc\/cluster\/cluster.conf<br \/>\n[FAILED]<br \/>\nStopping cluster:<br \/>\nLeaving fence domain&#8230; [ OK ]<br \/>\nStopping gfs_controld&#8230; [ OK ]<br \/>\nStopping dlm_controld&#8230; [ OK ]<br \/>\nStopping fenced&#8230; [ OK ]<br \/>\nStopping cman&#8230; [ OK ]<br \/>\nUnloading kernel modules&#8230; [ OK ]<br \/>\nUnmounting configfs&#8230; [ OK ]<br \/>\n[root@cluster2 ~]#<\/p>\n<p>Install the start luci service on the management node cluster1<\/p>\n<p>1) Start luci Service<\/p>\n<p>[root@cluster1 ~]# chkconfig luci on<br \/>\n[root@cluster1 ~]# service luci start<br \/>\nAdding following auto-detected host IDs (IP addresses\/domain names), corresponding to `cluster1.rmohan.com&#8217; address, to the configuration of self-managed certificate `\/var\/lib\/luci\/etc\/cacert.config&#8217; (you can change them by editing `\/var\/lib\/luci\/etc\/cacert.config&#8217;, removing the generated certificate `\/var\/lib\/luci\/certs\/host.pem&#8217; and restarting luci):<br \/>\n(none suitable found, you can still do it manually as mentioned above)<\/p>\n<p>Generating a 2048 bit RSA private key<br \/>\nwriting new private key to &#8216;\/var\/lib\/luci\/certs\/host.pem&#8217;<br \/>\nStart luci&#8230; [ OK ]<br \/>\nPoint your web browser to https:\/\/cluster1.rmohan.com:8084 (or equivalent) to access luci<br \/>\n[root@cluster1 ~]#<\/p>\n<p>[root@cluster1 ~]#<\/p>\n<p>RHCS cluster configuration<\/p>\n<p>https:\/\/192.168.1.10:8084\/homebase\/<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-001.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4242\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-001.jpg\" alt=\"GFS 001\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-001-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>1. Add a cluster<\/p>\n<p>Log into the management interface, click Manage Clusters -&gt; Create fill in the following:<\/p>\n<p>Cluster Name: gfs<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-002.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-4243\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-002.jpg\" alt=\"GFS 002\" width=\"1348\" height=\"758\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-002-900x506.jpg 900w\" sizes=\"(max-width: 1348px) 100vw, 1348px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-003.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4244\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-003.jpg\" alt=\"GFS 003\" width=\"832\" height=\"495\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-003.jpg 832w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-003-300x178.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-003-150x89.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-003-400x238.jpg 400w\" sizes=\"(max-width: 832px) 100vw, 832px\" \/><\/a><\/p>\n<p>Cluster Name: gfs<\/p>\n<p>NodeName        \tPassword      RicciHostname    \t\t Ricci Port<br \/>\ncluster1.rmohan.com  test123      cluster1.rmohan.com     11111<br \/>\ncluster2.rmohan.com  test123      cluster2.rmohan.com  \t  11111<\/p>\n<p>Select the following options, and then submit the<br \/>\nUse locally installed packages.<\/p>\n<p>Note: This step will create a cluster configuration file \/etc\/cluster\/cluster.conf<\/p>\n<p>Fence Devices<\/p>\n<p>Description:<br \/>\nRHCS To achieve a complete clustering capabilities, we must realize fence function.<br \/>\nDue to the non-physical server configuration and other conditions, especially the use of VMware ESXi5.X virtual fence fence to realize the function of the device.<br \/>\nIt is thanks to the fence device can be used, was able to complete the test RHCS function.<\/p>\n<p>(1) log into the management interface, click Cluster-> Fence Devices -><br \/>\n(2) Select the &#8220;Add selection VMware Fencing (SOAP Interface)<br \/>\n(3) Name &#8220;ESXi_fence&#8221;<br \/>\n(4) IP Address or Hostname &#8220;192.168.1.31&#8221; (ESXi Address)<br \/>\n(5) Login &#8220;root&#8221;<br \/>\n(6) Password &#8220;test123&#8221;<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-004.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4245\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-004.jpg\" alt=\"GFS 004\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-004-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-005.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4246\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-005.jpg\" alt=\"GFS 005\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-005-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>3. The device node binding Fence<\/p>\n<p>Adding a node a fence<\/p>\n<p>1) Click cluster1.rmohan.com node, <\/p>\n<p>Add Fence Method, here fill node01_fence;<br \/>\n2) add a fence instance, select &#8220;ESXi_fence&#8221; VMware Fencing (SOAP Interface)<br \/>\n3) VM NAME &#8220;kvm_cluster1&#8221;<br \/>\n4) VM UUID &#8220;564d6fbf-05fb-1dd1-fb66-7ea3c85dcfdf &#8220;check ssl<\/p>\n<p>Description: VMNAME: virtual machine name, VM UUID: virtual machine.vmx file &#8221;<br \/>\nuuid.location, &#8220;value, using the following format string.<\/p>\n<p># \/usr\/sbin\/fence_vmware_soap -a 192.168.1.31 -z -l root -p test123 -n kvm_node2 -o list<br \/>\nkvm_cluster2,564d4c42-e7fd-db62-3878-57f77df2475e<br \/>\nkvm_cluster1,564d6fbf-05fb-1dd1-fb66-7ea3c85dcfdf<\/p>\n<p>Adding a node two fence<\/p>\n<p>1) Click cluster2.rmohan.com node, Add Fence Method, here fill node02_fence;<br \/>\n2) add a fence instance, select &#8220;ESXi_fence&#8221; VMware Fencing (SOAP Interface)<br \/>\n3) VM NAME &#8220;kvm_cluster2&#8221;<br \/>\n4) VM UUID &#8220;564d4c42-e7fd-db62-3878-57f77df2475e &#8220;check ssl<\/p>\n<p># Manual test fence function example:<br \/>\n<a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-006.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4247\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-006.jpg\" alt=\"GFS 006\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-006-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-007.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4248\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-007.jpg\" alt=\"GFS 007\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-007-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p># Manual test fence function example:<\/p>\n<p>#  \/usr\/sbin\/fence_vmware_soap -a 192.168.1.31 -z -l root -p test123 -n kvm_node2 -o reboot<br \/>\nStatus: ON<\/p>\n<p>Options:<br \/>\n-o: List, status, and other parameters reboot<\/p>\n<p>4. Add Failover Domains Configuration<\/p>\n<p>Name &#8220;gfs_failover&#8221;<br \/>\nPrioritized<br \/>\nRestricted<br \/>\ncluster1.rmohan.com   1<br \/>\ncluster2.rmohan.com   1<\/p>\n<p>5. Configure GFS Service<\/p>\n<p>(1) GFS Service Configuration<\/p>\n<p>In cluster1.rmohan.com, cluster2.rmohan.comstart CLVM services were integrated cluster lock<\/p>\n<p>lvmconf &#8211;enable-cluster<br \/>\nchkconfig clvmd on<\/p>\n<p>service clvmd start<br \/>\nActivating VG(s):  No volume groups found      [  OK  ]<\/p>\n<p>[root@cluster1 ~]# service clvmd start<br \/>\nActivating VG(s):   2 logical volume(s) in volume group &#8220;vg_cluster1&#8221; now active<br \/>\n                                                           [  OK  ]<br \/>\n[root@cluster1 ~]#<\/p>\n<p>[root@cluster2 ~]# service clvmd start<br \/>\nActivating VG(s):   2 logical volume(s) in volume group &#8220;vg_cluster2&#8221; now active<br \/>\n                                                           [  OK  ]<br \/>\n[root@cluster2 ~]#<\/p>\n<p>cluster1.rmohan.com<\/p>\n<p>pvcreate \/dev\/sdb1<\/p>\n<p>[root@cluster1 ~]# pvcreate \/dev\/sdb1<br \/>\n  Physical volume &#8220;\/dev\/sdb1&#8221; successfully created<\/p>\n<p>[root@cluster1 ~]#  vgcreate gfsvg \/dev\/sdb1<br \/>\n  Clustered volume group &#8220;gfsvg&#8221; successfully created<\/p>\n<p># pvcreate \/dev\/sdc1<br \/>\n  Physical volume &#8220;\/dev\/sdc1&#8221; successfully created<\/p>\n<p># pvs<br \/>\n  PV        VG      Fmt  Attr PSize  PFree<br \/>\n  \/dev\/sda2  vg_node01 lvm2 a&#8211;  39.51g      0<br \/>\n  \/dev\/sdc1          lvm2 a&#8211;  156.25g 156.25g<\/p>\n<p># vgcreate gfsvg \/dev\/sdb1<br \/>\n  Clustered volume group &#8220;gfsvg&#8221; successfully created<\/p>\n<p>   Failed to activate new LV.<br \/>\n[root@cluster1 ~]#  lvcreate -l +100%FREE -n data gfsvg<br \/>\n  Error locking on node cluster2.rmohan.com: Volume group for uuid not found: EjHAOyOMJtk7pJ1gcUeOrbXjgFKMl05y2a3Mdh27oxKVpVBXjLYxHeU6088U9Ptc<br \/>\n  Failed to activate new LV.<\/p>\n<p>  Note:  just reboot the cluster2<\/p>\n<p>[root@cluster1 ~]#  lvcreate -l +100%FREE -n data gfsvg<br \/>\n  clvmd not running on node cluster2.rmohan.com<br \/>\n  Unable to drop cached metadata for VG gfsvg.<br \/>\n  clvmd not running on node cluster2.rmohan.com<\/p>\n<p>cluster2<br \/>\n# \/etc\/init.d\/clvmd start<\/p>\n<p>(3) GFS file system format<\/p>\n<p>cluster1 node:<\/p>\n<p>[root@cluster1 ~]#  mkfs.gfs2 -p lock_dlm -t gfs:gfs2 -j 2 \/dev\/gfsvg\/data<br \/>\nThis will destroy any data on \/dev\/gfsvg\/data.<br \/>\nIt appears to contain: symbolic link to `..\/dm-2&#8242;<\/p>\n<p>Are you sure you want to proceed? [y\/n] y<\/p>\n<p>Device:                    \/dev\/gfsvg\/data<br \/>\nBlocksize:                 4096<br \/>\nDevice Size                19.06 GB (4996096 blocks)<br \/>\nFilesystem Size:           19.06 GB (4996093 blocks)<br \/>\nJournals:                  2<br \/>\nResource Groups:           77<br \/>\nLocking Protocol:          &#8220;lock_dlm&#8221;<br \/>\nLock Table:                &#8220;gfs:gfs2&#8221;<br \/>\nUUID:                      aaecbd43-cd34-fc15-61c8-29fb0c282279<\/p>\n<p>Description:<br \/>\ngfs: gfs2 gfs is the name of the cluster, gfs2 is to define the name, the equivalent of the label.<br \/>\n-j mount the file system specified number of hosts, you do not specify a default is the management node.<br \/>\nHere there are two nodes experiment<\/p>\n<p>6. mount the GFS file system<\/p>\n<p>cluster1, create a mount point on cluster2 GFS<\/p>\n<p>[root@cluster1 ~]# mkdir \/vmdata<br \/>\n[root@cluster1 ~]# mount.gfs2 \/dev\/gfsvg\/data \/vmdata<br \/>\n[root@cluster1 ~]#<\/p>\n<p>[root@cluster2 ~]# mkdir \/vmdata<br \/>\n[root@cluster2 ~]# mount.gfs2 \/dev\/gfsvg\/data \/vmdata<br \/>\n[root@cluster2 ~]# df -TH<br \/>\nFilesystem           Type   Size  Used Avail Use% Mounted on<br \/>\n\/dev\/mapper\/vg_cluster2-lv_root<br \/>\n                     ext4    19G  1.1G   17G   6% \/<br \/>\ntmpfs                tmpfs  2.0G   33M  2.0G   2% \/dev\/shm<br \/>\n\/dev\/sda1            ext4   500M   52M  422M  11% \/boot<br \/>\n\/dev\/gfsvg\/data      gfs2    21G  272M   21G   2% \/vmdata<br \/>\n[root@cluster2 ~]#<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-008.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4249\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-008.jpg\" alt=\"GFS 008\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-008-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-009.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4250\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-009.jpg\" alt=\"GFS 009\" width=\"654\" height=\"387\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-009.jpg 654w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-009-300x178.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-009-150x89.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-009-400x237.jpg 400w\" sizes=\"(max-width: 654px) 100vw, 654px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-010.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4251\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-010.jpg\" alt=\"GFS 010\" width=\"992\" height=\"238\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-010.jpg 992w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-010-300x72.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-010-150x36.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-010-400x96.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-010-900x216.jpg 900w\" sizes=\"(max-width: 992px) 100vw, 992px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-011.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4252\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-011.jpg\" alt=\"GFS 011\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-011-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-012.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4253\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-012.jpg\" alt=\"GFS 012\" width=\"988\" height=\"292\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-012.jpg 988w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-012-300x89.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-012-150x44.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-012-400x118.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-012-900x266.jpg 900w\" sizes=\"(max-width: 988px) 100vw, 988px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-013.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4254\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-013.jpg\" alt=\"GFS 013\" width=\"916\" height=\"243\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-013.jpg 916w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-013-300x80.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-013-150x40.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-013-400x106.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-013-900x239.jpg 900w\" sizes=\"(max-width: 916px) 100vw, 916px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-014.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4255\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-014.jpg\" alt=\"GFS 014\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-014-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-015.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4256\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-015.jpg\" alt=\"GFS 015\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-015-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-016.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4257\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/02\/GFS-016.jpg\" alt=\"GFS 016\" width=\"1366\" height=\"768\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016.jpg 1366w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016-300x169.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016-1024x576.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016-150x84.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016-400x225.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/02\/GFS-016-900x506.jpg 900w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>7. Configure the voting disk<\/p>\n<p>Description:<br \/>\n# voting disk is a shared disk, no need for too much, in this case using the \/dev\/sdc1 300MB to be created.<\/p>\n<p>fdisk -l<\/p>\n<p>   Device Boot      Start         End      Blocks   Id  System<br \/>\n\/dev\/sdc1               1        1009      327391   8e  Linux LVM<\/p>\n<p>Disk \/dev\/mapper\/gfsvg-data: 20.5 GB, 20464009216 bytes<br \/>\n255 heads, 63 sectors\/track, 2487 cylinders<br \/>\nUnits = cylinders of 16065 * 512 = 8225280 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk identifier: 0x00000000<\/p>\n<p>mkqdisk -c \/dev\/sdc1 -l myqdisk   <\/p>\n<p>[root@cluster1 ~]# mkqdisk -c \/dev\/sdc1 -l myqdisk<br \/>\nmkqdisk v3.0.12.1<\/p>\n<p>Writing new quorum disk label &#8216;myqdisk&#8217; to \/dev\/sdc1.<br \/>\nWARNING: About to destroy all data on \/dev\/sdc1; proceed [N\/y] ? y<br \/>\nInitializing status block for node 1&#8230;<br \/>\nInitializing status block for node 2&#8230;<br \/>\nInitializing status block for node 3&#8230;<br \/>\nInitializing status block for node 4&#8230;<br \/>\nInitializing status block for node 5&#8230;<br \/>\nInitializing status block for node 6&#8230;<br \/>\nInitializing status block for node 7&#8230;<br \/>\nInitializing status block for node 8&#8230;<br \/>\nInitializing status block for node 9&#8230;<br \/>\nInitializing status block for node 10&#8230;<br \/>\nInitializing status block for node 11&#8230;<br \/>\nInitializing status block for node 12&#8230;<br \/>\nInitializing status block for node 13&#8230;<br \/>\nInitializing status block for node 14&#8230;<br \/>\nInitializing status block for node 15&#8230;<br \/>\nInitializing status block for node 16&#8230;<\/p>\n<p>[root@cluster1 ~]# mkqdisk -L<br \/>\nmkqdisk v3.0.12.1<\/p>\n<p>\/dev\/block\/8:33:<br \/>\n\/dev\/disk\/by-id\/scsi-14f504e46494c45525a344e426c512d623153702d326e417a-part1:<br \/>\n\/dev\/disk\/by-path\/ip-192.168.1.50:3260-iscsi-iqn.2006-01.com.openfiler:tsn.5ed5c1620415-lun-1-part1:<br \/>\n\/dev\/sdc1:<br \/>\n        Magic:                eb7a62c2<br \/>\n        Label:                myqdisk<br \/>\n        Created:              Tue Feb 17 22:56:30 2015<br \/>\n        Host:                 cluster1.rmohan.com<br \/>\n        Kernel Sector Size:   512<br \/>\n        Recorded Sector Size: 512<\/p>\n<p>(3) Voting Disk configuration qdisk<\/p>\n<p># Into the management interface Manage Clusters -> gfs -> Configure -> QDisk<\/p>\n<p>Device      : \/dev\/sdc1<\/p>\n<p>Path to program : ping -c3 -t2 192.168.0.253<br \/>\nInterval        : 3<br \/>\nScore          : 2<br \/>\nTKO            : 10<br \/>\nMinimum Score  : 1<\/p>\n<p># Click apply<\/p>\n<p>(4) Start qdisk Service<\/p>\n<p>chkconfig qdiskd on<br \/>\nservice qdiskd start<br \/>\nclustat -l<\/p>\n<p>[root@cluster1 ~]# clustat -l<br \/>\nCluster Status for gfs @ Tue Feb 17 23:10:24 2015<br \/>\nMember Status: Quorate<\/p>\n<p> Member Name                                                     ID   Status<br \/>\n &#8212;&#8212; &#8212;-                                                     &#8212;- &#8212;&#8212;<br \/>\n cluster1.rmohan.com                                                 1 Online, Local<br \/>\n cluster2.rmohan.com                                                 2 Online<br \/>\n \/dev\/sdc1                                                           0 Online, Quorum Disk<\/p>\n<p> [root@cluster2 ~]# clustat -l<br \/>\nCluster Status for gfs @ Tue Feb 17 23:10:29 2015<br \/>\nMember Status: Quorate<\/p>\n<p> Member Name                                                     ID   Status<br \/>\n &#8212;&#8212; &#8212;-                                                     &#8212;- &#8212;&#8212;<br \/>\n cluster1.rmohan.com                                                 1 Online<br \/>\n cluster2.rmohan.com                                                 2 Online, Local<br \/>\n \/dev\/sdc1                                                           0 Online, Quorum Disk<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CentOS 6.5 x64 RHCS GFS<\/p>\n<p>cluster1.rmohan.com cluster2.rmohan.com<\/p>\n<p># cat \/etc\/hosts<\/p>\n<p>192.168.0.10 cluster1.rmohan.com cluster1 192.168.0.11 cluster2.rmohan.com cluster2<\/p>\n<p>[root@cluster1 ~]# iptables -F [root@cluster1 ~]# iptables-save &gt; \/etc\/sysconfig\/iptables [root@cluster1 ~]# \/etc\/init.d\/iptables restart iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,4],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4241"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4241"}],"version-history":[{"count":6,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4241\/revisions"}],"predecessor-version":[{"id":4263,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4241\/revisions\/4263"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}