{"id":1878,"date":"2022-10-18T15:02:36","date_gmt":"2022-10-18T15:02:36","guid":{"rendered":"https:\/\/sunucucozumleri.com\/?p=1878"},"modified":"2022-10-17T21:16:41","modified_gmt":"2022-10-17T21:16:41","slug":"glusterfs-kurulumu-ve-heketi-ile-dynamic-provisioning-nasil-yapilir","status":"publish","type":"post","link":"https:\/\/sunucucozumleri.com\/blog\/glusterfs-kurulumu-ve-heketi-ile-dynamic-provisioning-nasil-yapilir\/","title":{"rendered":"GlusterFS Kurulumu ve Heketi ile Dynamic Provisioning Nas\u0131l Yap\u0131l\u0131r?"},"content":{"rendered":"<p>H\/A bir object storage i\u00e7in <a href=\"https:\/\/sunucucozumleri.com\/glusterfs-nedir\/\">GlusterFS<\/a> g\u00fczel bir \u00e7\u00f6z\u00fcm. Bu yaz\u0131mda sizelere glusterfs kurulumu ve <a href=\"https:\/\/sunucucozumleri.com\/heketi-nedir\/\">heketi<\/a> ile nas\u0131l <strong>dynamic provisioning<\/strong> yapt\u0131m\u0131zdan bahsedece\u011fim.<\/p>\n<p>\u00d6rnek Enviroment a\u015fa\u011f\u0131daki gibidir.<\/p>\n<ul>\n<li>GlusterFS1 &#8211; 192.168.4.86<\/li>\n<li>GlusterFS2 &#8211; 192.168.4.87<\/li>\n<\/ul>\n<p>Bu yap\u0131da Glusterfs1 nodunu ayn\u0131 zamanda management i\u00e7in kullanaca\u011f\u0131z. Duruma g\u00f6re +1 node management i\u00e7in ekleyebilirsiniz.<\/p>\n<p>\u00d6ncelikle sunucular birbirinin ad\u0131n\u0131 \u00e7\u00f6zebilmesi i\u00e7in hosts dosyas\u0131na ekleme yap\u0131yoruz.<br \/>\n<code><br \/>\nsudo cat &gt;&gt; \/etc\/hosts &lt;&lt;EOF<br \/>\n192.168.4.86 glusterfs1<br \/>\n192.168.4.87 glusterfs2<br \/>\nEOF<br \/>\n<\/code><\/p>\n<p>\u015eimdi Centos 7&#8217;de glusterfs kuruluma ge\u00e7elim.<\/p>\n<p><code><br \/>\nyum install -y centos-release-gluster<br \/>\nyum install -y glusterfs-server<br \/>\nsystemctl enable glusterd<br \/>\nsystemctl start glusterd<br \/>\n<\/code><br \/>\nVarolan, sunucular\u0131m\u0131za tak\u0131l\u0131 diskleri listeliyoruz.<\/p>\n<p><code><br \/>\n# fdisk -l <\/code><\/p>\n<p>Disk \/dev\/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk label type: dos<br \/>\nDisk identifier: 0x0002183f<\/p>\n<p>Ayg\u0131t A\u00e7\u0131l\u0131\u015f Ba\u015flang\u0131\u00e7 Biti\u015f BlokSay\u0131s\u0131 Kml Sistem<br \/>\n\/dev\/vda1 * 2048 2099199 1048576 83 Linux<br \/>\n\/dev\/vda2 2099200 33554431 15727616 8e Linux LVM<\/p>\n<p>Disk \/dev\/mapper\/centos-root: 14.4 GB, 14382268416 bytes, 28090368 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<\/p>\n<p>Disk \/dev\/mapper\/centos-swap: 1719 MB, 1719664640 bytes, 3358720 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi \/dev\/vda olarak tak\u0131l\u0131 bir disk g\u00f6z\u00fck\u00fcyor. Her iki sunucuya <a href=\"https:\/\/sunucucozumleri.com\/blog\/sunucu-sanallastirma-teknolojileri-avantajlari-ve-kullanim-alanlari\/\">sanalla\u015ft\u0131rma<\/a> ortam\u0131m\u0131zdan yeni disk tak\u0131yoruz. Sunucular\u0131 <a href=\"https:\/\/sunucucozumleri.com\/blog\/reboot-ne-demek\/\">reboot<\/a> ediyoruz.<\/p>\n<p>Sonras\u0131nda olu\u015fturulan diskleri yap\u0131land\u0131rmak i\u00e7in eklenen diski g\u00f6r\u00fcnt\u00fcl\u00fcyoruz. \u00d6rne\u011fimizde \/dev\/sda olarak eklendi\u011fini g\u00f6rmekteyiz.<br \/>\n<code><br \/>\n# fdisk -l <\/code><\/p>\n<p>Disk \/dev\/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk label type: dos<br \/>\nDisk identifier: 0x0002183f<\/p>\n<p>Ayg\u0131t A\u00e7\u0131l\u0131\u015f Ba\u015flang\u0131\u00e7 Biti\u015f BlokSay\u0131s\u0131 Kml Sistem<br \/>\n\/dev\/vda1 * 2048 2099199 1048576 83 Linux<br \/>\n\/dev\/vda2 2099200 33554431 15727616 8e Linux LVM<\/p>\n<p>Disk \/dev\/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk label type: dos<br \/>\nDisk identifier: 0x8262346b<\/p>\n<p>Ayg\u0131t A\u00e7\u0131l\u0131\u015f Ba\u015flang\u0131\u00e7 Biti\u015f BlokSay\u0131s\u0131 Kml Sistem<br \/>\n\/dev\/sda1 2048 104857599 52427776 8e Linux LVM<\/p>\n<p>Disk \/dev\/mapper\/centos-root: 14.4 GB, 14382268416 bytes, 28090368 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<\/p>\n<p>Disk \/dev\/mapper\/centos-swap: 1719 MB, 1719664640 bytes, 3358720 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<\/p>\n<p>Yeni diski lvm olarak yap\u0131land\u0131r\u0131yoruz.<br \/>\n<code><br \/>\nfdisk \/dev\/sda<br \/>\n&gt; n<br \/>\n&gt; p<br \/>\n&gt; 1<br \/>\n&gt; t<br \/>\n&gt; 8e<br \/>\n&gt; w<br \/>\n&gt; q<br \/>\n<\/code><br \/>\nGlusterfs kurulumu tamamland\u0131 \u015fimdi management nodu olarak kullanaca\u011f\u0131m\u0131z GlusterFS1 noduna heketi kurulumuna ge\u00e7iyoruz. Heketi Kubernetes ortam\u0131m\u0131zdan storage class ile dynamic provisioning yapmam\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<p><code><br \/>\nyum install -y heketi heketi-client<br \/>\n<\/code><\/p>\n<p>Heketi&#8217;nin nodelara eri\u015febilmesi i\u00e7in ssh-key olu\u015fturuyoruz ve nodelara g\u00f6nderiyoruz.<\/p>\n<p><code><br \/>\nsudo -u heketi ssh-keygen<br \/>\nssh-copy-id -i \/var\/lib\/heketi\/.ssh\/id_rsa 192.168.4.86<br \/>\nssh-copy-id -i \/var\/lib\/heketi\/.ssh\/id_rsa 192.168.4.87<br \/>\n<\/code><\/p>\n<p>Heketi configini a\u015fa\u011f\u0131daki gibi d\u00fczenliyoruz.<\/p>\n<p><code><br \/>\nvim \/etc\/heketi\/heketi.json<\/code><\/p>\n<p>###<br \/>\n&#8220;executor&#8221;: &#8220;ssh&#8221;,<br \/>\n&#8220;_sshexec_comment&#8221;: &#8220;SSH username and private key file information&#8221;,<br \/>\n&#8220;sshexec&#8221;: {<br \/>\n&#8220;keyfile&#8221;: &#8220;\/var\/lib\/heketi\/.ssh\/id_rsa&#8221;,<br \/>\n&#8220;user&#8221;: &#8220;root&#8221;,<br \/>\n&#8220;port&#8221;: &#8220;22&#8221;,<br \/>\n&#8220;fstab&#8221;: &#8220;\/etc\/fstab&#8221;<br \/>\n},<br \/>\n###<\/p>\n<p>Heketiyi ba\u015flat\u0131yoruz.<br \/>\n<code><br \/>\nsystemctl enable heketi<br \/>\nsystemctl start heketi<br \/>\n<\/code><br \/>\nTest ediyoruz.<br \/>\n<code><br \/>\ncurl http:\/\/localhost:8080\/hello<br \/>\nHello from Heketi<br \/>\n<\/code><\/p>\n<p>Cluster olu\u015fturuyoruz.<\/p>\n<p><code><br \/>\nexport HEKETI_CLI_SERVER=http:\/\/localhost:8080<br \/>\nheketi-cli cluster create mycluster<br \/>\n<\/code><br \/>\nCluster\u0131m\u0131za nodelar\u0131m\u0131z\u0131 ekliyoruz. ClusterID k\u0131s\u0131mlar\u0131na bir \u00f6nceki komutun \u00e7\u0131kt\u0131s\u0131ndaki cluster id verisini yaz\u0131yoruz.<\/p>\n<p><code><br \/>\nheketi-cli node add --cluster=ClusterID --zone=1 --management-host-name=glusterfs1 --storage-host-name=HOST_IP<br \/>\nheketi-cli node add --cluster=ClusterID --zone=1 --management-host-name=glusterfs2 --storage-host-name=HOST_IP<br \/>\n<\/code><\/p>\n<p>GlusterFS nodelar\u0131m\u0131za ekledi\u011fimiz diskleri cluster\u0131m\u0131za tan\u0131ml\u0131yoruz.<\/p>\n<p><code><br \/>\nheketi-cli device add --name=\/dev\/sda1 --node=NodeID1<br \/>\nheketi-cli device add --name=\/dev\/sda1 --node=NodeID2<br \/>\n<\/code><\/p>\n<p>Evet, glusterfs ve heketi kurulumumuz tamamland\u0131. \u015eimdi bir volume olu\u015ftural\u0131m.<\/p>\n<p><code><br \/>\nheketi-cli volume create --size 10 --replica 2<br \/>\n<\/code><\/p>\n<p>GlusterFS cluster\u0131m\u0131zda yapaca\u011f\u0131m\u0131z i\u015flemler bu kadar. Kubernetes ortam\u0131m\u0131za ge\u00e7ip bir storage cluster olu\u015fturuyoruz.<\/p>\n<p><code><br \/>\ncat &gt; gluster-dyn-sc.yml &lt;&lt; EOF<br \/>\nkind: StorageClass<br \/>\napiVersion: storage.k8s.io\/v1beta1<br \/>\nmetadata:<br \/>\nname: gluster-heketi<br \/>\nprovisioner: kubernetes.io\/glusterfs<br \/>\nreclaimPolicy: Delete<br \/>\nvolumeBindingMode: Immediate<br \/>\nallowVolumeExpansion: true<br \/>\nparameters:<br \/>\nresturl: \"http:\/\/192.168.4.86:8080\"<br \/>\nrestauthenabled: \"false\"<br \/>\nvolumetype: \"replicate:2\"<br \/>\nvolumenameprefix: \"k8s-dev\"<br \/>\nclusterid: \"CLUSTER_ID\"<br \/>\nEOF<br \/>\n<\/code><\/p>\n<p><code><br \/>\nkubectl apply -f gluster-dyn-sc.yml<br \/>\n<\/code><\/p>\n<p>Persistent volume claim olu\u015fturup test ediyoruz.<\/p>\n<p><code><br \/>\ncat &gt; gluster-dyn-pvc.yml &lt;&lt;EOF<br \/>\napiVersion: v1<br \/>\nkind: PersistentVolumeClaim<br \/>\nmetadata:<br \/>\nname: gluster-dyn-pvc<br \/>\nannotations:<br \/>\nvolume.beta.kubernetes.io\/storage-class: gluster-dyn<br \/>\nspec:<br \/>\naccessModes:<br \/>\n- ReadWriteMany<br \/>\nresources:<br \/>\nrequests:<br \/>\nstorage: 10Gi<br \/>\nEOF<br \/>\n<\/code><br \/>\n<code><br \/>\nkubectl apply -f gluster-dyn-pvc.yml<br \/>\n<\/code><br \/>\nPersistent volume claimleri listeleyerek STATUS k\u0131sm\u0131n\u0131 Bound olarak g\u00f6r\u00fcyoruz.<\/p>\n<p><code><br \/>\nkubectl get pvc<br \/>\nNAME                    STATUS    CAPACITY   ACCESS MODES   STORAGECLASS   AGE<br \/>\ngluster-dyn-pvc         Bound     50Gi       RWX            gluster-dyn    8m<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>H\/A bir object storage i\u00e7in GlusterFS g\u00fczel bir \u00e7\u00f6z\u00fcm. Bu yaz\u0131mda sizelere glusterfs kurulumu ve heketi ile nas\u0131l dynamic provisioning yapt\u0131m\u0131zdan bahsedece\u011fim. \u00d6rnek Enviroment a\u015fa\u011f\u0131daki gibidir. GlusterFS1 &#8211; 192.168.4.86 GlusterFS2 &#8211; 192.168.4.87 Bu yap\u0131da Glusterfs1 nodunu ayn\u0131 zamanda management i\u00e7in kullanaca\u011f\u0131z. Duruma g\u00f6re +1 node management i\u00e7in ekleyebilirsiniz. \u00d6ncelikle sunucular birbirinin ad\u0131n\u0131 \u00e7\u00f6zebilmesi i\u00e7in hosts &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1879,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1878","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/comments?post=1878"}],"version-history":[{"count":0,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1878\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media\/1879"}],"wp:attachment":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media?parent=1878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/categories?post=1878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/tags?post=1878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}