{"id":42,"date":"2012-07-18T15:29:00","date_gmt":"2012-07-18T13:29:00","guid":{"rendered":"https:\/\/test.n3oxid.fr\/?p=42"},"modified":"2021-04-18T21:17:23","modified_gmt":"2021-04-18T19:17:23","slug":"integration-dune-ressource-drbd-sur-un-cluster-pacemaker-corosync-sous-gnu-linux-debian","status":"publish","type":"post","link":"https:\/\/www.n3oxid.fr\/?p=42","title":{"rendered":"Int\u00e9gration d&#8217;une ressource DRBD sur un cluster Pacemaker\/CoroSync sous GNU\/Linux Debian"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Partitionnement<\/h2>\n\n\n\n<p><ins>Remarque<\/ins>&nbsp;: les actions suivantes sont \u00e0 r\u00e9aliser sur les deux noeuds.<\/p>\n\n\n\n<p>Voici le disque d\u00e9di\u00e9 \u00e0 DRBD, sans partition&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># fdisk -l \/dev\/cciss\/c0d1\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Disk \/dev\/cciss\/c0d1: 39.4 GB, 39406141440 bytes\n255 heads, 32 sectors\/track, 9432 cylinders\nUnits = cylinders of 8160 * 512 = 4177920 bytes\nSector size (logical\/physical): 512 bytes \/ 512 bytes\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes\nDisk identifier: 0x64476aa0\n\nDisk \/dev\/cciss\/c0d1 doesn't contain a valid partition table\n<\/pre>\n\n\n\n<p>Lancer l&#8217;outil de partitionnement de ce m\u00eame disque&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># cfdisk \/dev\/cciss\/c0d1\n<\/pre>\n\n\n\n<p>Une fois le partitionnement termin\u00e9, voici ce que nous obtenons&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># fdisk -l \/dev\/cciss\/c0d1\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Disk \/dev\/cciss\/c0d1: 39.4 GB, 39406141440 bytes\n255 heads, 32 sectors\/track, 9432 cylinders\nUnits = cylinders of 8160 * 512 = 4177920 bytes\nSector size (logical\/physical): 512 bytes \/ 512 bytes\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes\nDisk identifier: 0x64476aa0\n\n\nDevice Boot      Start         End      Blocks   Id  System\n\/dev\/cciss\/c0d1p1               1        9432    38482544   83  Linux\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">DRBD ou le RAID 1 over TCP\/IP<\/h2>\n\n\n\n<p><ins>Remarque<\/ins>&nbsp;: les actions suivantes sont \u00e0 r\u00e9aliser sur les deux noeuds. Installer DRBD&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># aptitude install drbd8-utils\n<\/pre>\n\n\n\n<p>Lancer le module appropri\u00e9&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># modprobe drbd\n<\/pre>\n\n\n\n<p>V\u00e9rifier la pr\u00e9sence du module&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># lsmod | grep drbd\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">drbd                  172668  0\nlru_cache               4018  1 drbd\ncn                      3631  1 drbd\n<\/pre>\n\n\n\n<p>Sauvegarder la configuration d&#8217;origine&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># cp \/etc\/drbd.conf \/etc\/drbd.conf.original\n<\/pre>\n\n\n\n<p>Configurer DRBD&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># &gt; \/etc\/drbd.conf\n# vim \/etc\/drbd.conf\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">global { usage-count no; }\ncommon { syncer { rate 100M; } }\nresource r0 {\n        protocol C;\n        startup {\n                wfc-timeout  15;\n                degr-wfc-timeout 60;\n        }\n        net {\n                cram-hmac-alg sha1;\n                shared-secret \"***********\";\n        }\n        on vm-debian1 {\n                device \/dev\/drbd0;\n                disk \/dev\/cciss\/c0d1;\n                address 10.20.30.1:7788;\n                meta-disk internal;\n        }\n        on vm-debian2 {\n                device \/dev\/drbd0;\n                disk \/dev\/cciss\/c0d1;\n                address 10.20.30.2:7788;\n                meta-disk internal;\n        }\n}\n<\/pre>\n\n\n\n<p>Initialiser le RAID avec la ressource r0&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm create-md r0\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">md_offset 39406137344\nal_offset 39406104576\nbm_offset 39404900352\n\nFound some data\n\n ==&gt; This might destroy existing data! &lt;==\n\nDo you want to proceed?\n[need to type 'yes' to confirm] yes\n\nWriting meta data...\ninitializing activity log\nNOT initialized bitmap\nNew drbd meta data block successfully created.\n<\/pre>\n\n\n\n<p>D\u00e9marrer le service DRBD&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># \/etc\/init.d\/drbd start\n<\/pre>\n\n\n\n<p><ins>Remarque&nbsp;<\/ins>&nbsp;: les actions suivantes sont \u00e0 r\u00e9aliser uniquement sur le premier noeud.<\/p>\n\n\n\n<p>Forcer la r\u00e9plication des donn\u00e9es de la ressource r0 depuis le premier noeud&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm -- --overwrite-data-of-peer primary all\n<\/pre>\n\n\n\n<p>V\u00e9rifier le status de la ressource r0&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># cat \/proc\/drbd\n<\/pre>\n\n\n\n<p>Cr\u00e9er le syst\u00e8me de fichiers sur le volume DRBD&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># mkfs.ext3 \/dev\/drbd0\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Int\u00e9gration de la ressource DRBD sous Pacemaker<\/h2>\n\n\n\n<p>Cr\u00e9er le point de montage&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># mkdir \/cluster\n<\/pre>\n\n\n\n<p>Exemple de configuration de Pacemaker&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># crm configure show\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">node vm-debian1\nnode vm-debian2\nprimitive ClusterDisk ocf:linbit:drbd \\\n        params drbd_resource=\"r0\" \\\n        op monitor interval=\"15s\"\nprimitive ClusterFS ocf:heartbeat:Filesystem \\\n        params device=\"\/dev\/drbd0\" directory=\"\/cluster\" fstype=\"ext3\"\nprimitive ClusterIP ocf:heartbeat:IPaddr2 \\\n        params ip=\"10.20.30.10\" cidr_netmask=\"23\" \\\n        op monitor interval=\"15\"\nprimitive Nagios lsb:nagios \\\n        op monitor interval=\"15s\" timeout=\"20s\" \\\n        meta target-role=\"Stopped\"\nms MasterSlaveDisk ClusterDisk \\\n        meta master-max=\"1\" master-node-max=\"1\" clone-max=\"2\" clone-node-max=\"1\" notify=\"true\" target-role=\"Started\"\ncolocation Nagios-with-ClusterFS inf: Nagios ClusterFS\ncolocation mount-ClusterFS-on-Master inf: ClusterFS MasterSlaveDisk:Master\ncolocation mount-ClusterIP-with-ClusterFS inf: ClusterIP ClusterFS\norder Nagios-after-ClusterFS inf: ClusterFS Nagios\norder mount-ClusterFS-after-ClusterDisk inf: MasterSlaveDisk:promote ClusterFS:start\norder mount-ClusterIP-after-ClusterFS inf: ClusterFS ClusterIP\nproperty $id=\"cib-bootstrap-options\" \\\n        dc-version=\"1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b\" \\\n        cluster-infrastructure=\"openais\" \\\n        expected-quorum-votes=\"2\" \\\n        stonith-enabled=\"false\" \\\n        no-quorum-policy=\"ignore\" \\\n        last-lrm-refresh=\"1334323679\"\nrsc_defaults $id=\"rsc-options\" \\\n        resource-stickiness=\"100\"\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple d&#8217;un probl\u00e8me de synchronisation<\/h2>\n\n\n\n<p>Sur le noeud 1&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm status\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;drbd-status version=\"8.3.7\" api=\"88\"&gt;\n&lt;resources config_file=\"\/etc\/drbd.conf\"&gt;\n&lt;resource minor=\"0\" name=\"r0\" cs=\"StandAlone\" ro1=\"Primary\" ro2=\"Unknown\" ds1=\"UpToDate\" ds2=\"DUnknown\" \/&gt;\n&lt;\/resources&gt;\n&lt;\/drbd-status&gt;\n<\/pre>\n\n\n\n<p>Sur le noeud 2&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm status\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;drbd-status version=\"8.3.7\" api=\"88\"&gt;\n&lt;resources config_file=\"\/etc\/drbd.conf\"&gt;\n&lt;resource minor=\"0\" name=\"r0\" cs=\"StandAlone\" ro1=\"Secondary\" ro2=\"Unknown\" ds1=\"Outdated\" ds2=\"DUnknown\" \/&gt;\n&lt;\/resources&gt;\n&lt;\/drbd-status&gt;\n<\/pre>\n\n\n\n<p>Ce \u00e0 quoi cela correspond :<\/p>\n\n\n\n<p>You suffer from schizophrenic DRBD, better known as &#8220;split brain&#8221;.<\/p>\n\n\n\n<p>Basically it means that both nodes became primary on your test resource and started writing to it. The result is an inconsistent resource, which is then called &#8220;split brain&#8221;. Please read the documentation carefully, you will have to discard the data on one of your nodes and let drbd sync that node from scratch.<\/p>\n\n\n\n<p>D\u00e9connecter le noeud avec les &#8220;mauvaises&#8221; donn\u00e9es&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm -- --discard-my-data connect all\n<\/pre>\n\n\n\n<p>Lancer la synchronisation depuis le noeud avec les &#8220;bonnes&#8221; donn\u00e9es&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># drbdadm connect all<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Partitionnement Remarque&nbsp;: les actions suivantes sont \u00e0 r\u00e9aliser sur les deux noeuds. Voici le disque d\u00e9di\u00e9 \u00e0 DRBD, sans partition&nbsp;: # fdisk -l \/dev\/cciss\/c0d1 Disk \/dev\/cciss\/c0d1: 39.4 GB, 39406141440 bytes &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[32,8,33,9,34],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-computing","tag-corosync","tag-debian","tag-drbd","tag-linux","tag-pacemaker"],"_links":{"self":[{"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=42"}],"version-history":[{"count":1,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":43,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=\/wp\/v2\/posts\/42\/revisions\/43"}],"wp:attachment":[{"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.n3oxid.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}