<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des HA - CoffeeBreak Info</title>
	<atom:link href="https://coffeebreak.en-images.info/tag/ha/feed/" rel="self" type="application/rss+xml" />
	<link>https://coffeebreak.en-images.info/tag/ha/</link>
	<description>Une petite pause :)</description>
	<lastBuildDate>Sun, 02 Apr 2023 10:02:34 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://coffeebreak.en-images.info/wp-content/uploads/2021/07/cropped-Tasse_Cafe-scaled-1-32x32.jpg</url>
	<title>Archives des HA - CoffeeBreak Info</title>
	<link>https://coffeebreak.en-images.info/tag/ha/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MODOP – Partie 1 &#8211; PostgreSQL HA &#8211; Installation du Cluster ETCD</title>
		<link>https://coffeebreak.en-images.info/modop-partie-1-postgresql-ha-installation-du-cluster-etcd/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-1-postgresql-ha-installation-du-cluster-etcd/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 10:02:31 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[RedHat/Centos Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[ETCD]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[postgreSQL]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[systeme]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=8085</guid>

					<description><![CDATA[<p>MODOP sur la mise en place d’un cluster ETCD pour gérer la coordination de plusieurs nœuds d’un cluster postgreSQL en haute disponibilité avec l’aide de Patroni . Il va permettre le stockage de la configuration et des informations de fonctionnement du cluster (nœuds, config, comptes, les rôles, etc.).<br />
Il est assimilé à une base de données distribuée de type clé-valeur.  </p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-1-postgresql-ha-installation-du-cluster-etcd/">MODOP – Partie 1 &#8211; PostgreSQL HA &#8211; Installation du Cluster ETCD</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span style="color: #000000;">Inventaire des machines</span></h2>
<p><img fetchpriority="high" decoding="async" width="977" height="211" class="wp-image-8087" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-2.png 977w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-2-300x65.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-2-768x166.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<h2><span style="color: #000000;">Cluster ETCD</span></h2>
<ul>
<li>hostname : <strong>Node-esql01</strong>
<ul>
<li>IP&nbsp;: 192.168.1.100/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
<li>hostname : <strong>Node-esql02</strong>
<ul>
<li>IP&nbsp;: 192.168.1.101/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
<li>hostname : <strong>Node-esql03</strong>
<ul>
<li>IP&nbsp;: 192.168.1.102/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
</ul>
<h2><span style="color: #000000;">1. Mise à jour (3 nodes)</span></h2>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">2. Ajout des Hosts (pas de DNS)</span></h2>
<h3><span style="color: #000000;">Nodes ETCD</span></h3>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">echo "# Cluster ETCD " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]#<span style="color: #ff0000;"> echo "192.168.1.100 <strong>node-esql01 </strong>" &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.101 <strong>node-esql02</strong> " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]#<span style="color: #ff0000;"> echo "192.168.1.102 <strong>node-esql03</strong> " &gt;&gt; /etc/hosts</span></pre>
<h3><span style="color: #000000;">Nodes PostgreSQL</span></h3>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">echo "# Cluster PostgreSQL " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.103 <strong>node-psql01</strong> " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.104 <strong>node-psql02</strong> " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.105 <strong>node-psql03</strong> " &gt;&gt; /etc/hosts</span></pre>
<h3><span style="color: #000000;">Nodes HaProxy</span></h3>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">echo "# Cluster HaProxy " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.106 <strong>node-hsql01</strong> " &gt;&gt; /etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">echo "192.168.1.107 <strong>node-hsql02</strong> " &gt;&gt; /etc/hosts</span></pre>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">cat /etc/hosts</span></pre>
<p><img decoding="async" width="858" height="234" class="wp-image-8088" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-3.png 858w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-3-300x82.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-3-768x209.png 768w" sizes="(max-width: 858px) 100vw, 858px" /></p>
<h3><span style="color: #000000;">Copy de /etc/hosts vers les hosts</span></h3>
<pre>[root@node-esql01 ~]#<span style="color: #ff0000;"> scp /etc/hosts root@<strong>node-esql02</strong>:/etc/hosts</span>
[root@node-esql01 ~]# <span style="color: #ff0000;">scp /etc/hosts root@<strong>node-esql03</strong>:/etc/hosts</span></pre>
<h3><span style="color: #000000;">Check résolution hosts</span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">ping -c 2 node-esql01</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">ping -c 2 node-esql02</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">ping -c 2 node-esql03</span></pre>
<p><img decoding="async" width="944" height="380" class="wp-image-8089" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-4.png 944w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-4-300x121.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-4-768x309.png 768w" sizes="(max-width: 944px) 100vw, 944px" /></p>
<h2><span style="color: #000000;">3. Désactiver SELinux (3 nodes)</span></h2>
<pre>[root@node-esql0x ~]#<span style="color: #ff0000;"> getenforce</span>
<em>Enforcing</em>

[root@node-esql0x ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-esql0x ~]#<span style="color: #ff0000;"> getenforce</span>
<span style="color: #ff0000;"><em>Permissive</em></span>

[root@node-esql0x ~]# <span style="color: #ff0000;">sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config</span></pre>
<h2><span style="color: #000000;">4. Synchroniser DateTime sur le fuseau de PARIS (3 nodes)</span></h2>
<pre>[root@node-esql0x ~]#<span style="color: #ff0000;"> timedatectl</span></pre>
<p><img loading="lazy" decoding="async" width="614" height="125" class="wp-image-8090" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-5.png 614w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-5-300x61.png 300w" sizes="auto, (max-width: 614px) 100vw, 614px" /></p>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">timedatectl set-timezone Europe/Paris</span></pre>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">timedatectl</span></pre>
<p><img loading="lazy" decoding="async" width="663" height="125" class="wp-image-8091" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-6.png 663w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-6-300x57.png 300w" sizes="auto, (max-width: 663px) 100vw, 663px" /></p>
<h2><span style="color: #000000;">5. Installation des middlewares (3 nodes)</span></h2>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">dnf install epel-release net-tools nmap curl wget tar -y</span></pre>
<h2><span style="color: #000000;">6. Installation Cluster etcd (3 nodes)</span></h2>
<h3><span style="color: #000000;">Installation Repository etcd</span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">echo "ETCD_RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest|grep tag_name | cut -d '"' -f 4)" &gt;&gt; ~/.bashrc</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">source ~/.bashrc</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">echo $ETCD_RELEASE</span>
<span style="color: #ff0000;"><strong><em>v3.5.7 </em></strong></span>

[root@node-esql0x ~]#<span style="color: #ff0000;"> cd /tmp &amp;&amp; wget https://github.com/etcd-io/etcd/releases/download/${ETCD_RELEASE}/etcd-${ETCD_RELEASE}-linux-amd64.tar.gz</span></pre>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">ls -al |grep etc</span></pre>
<p><img loading="lazy" decoding="async" width="799" height="62" class="wp-image-8092" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-7.png 799w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-7-300x23.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-7-768x60.png 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></p>
<h3><span style="color: #000000;">Installation binaire etcd</span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">tar -xzvf etcd-${ETCD_RELEASE}-linux-amd64.tar.gz</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">cd etcd-${ETCD_RELEASE}-linux-amd64/</span></pre>
<pre>[root@node-esql0x etcd-v3.5.7-linux-amd64]# <span style="color: #ff0000;">ls -al |grep etc |grep -v READ</span></pre>
<p><img loading="lazy" decoding="async" width="774" height="82" class="wp-image-8093" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-8.png 774w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-8-300x32.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-8-768x81.png 768w" sizes="auto, (max-width: 774px) 100vw, 774px" /></p>
<pre>[root@node-esql0x etcd-v3.5.7-linux-amd64]#<span style="color: #ff0000;"> mv etcd* /usr/local/bin</span></pre>
<pre>[root@node-esql0x etcd-v3.5.7-linux-amd64]# <span style="color: #ff0000;">ls /usr/local/bin</span></pre>
<p><em><img loading="lazy" decoding="async" width="668" height="70" class="wp-image-8094" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-9.png 668w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-9-300x31.png 300w" sizes="auto, (max-width: 668px) 100vw, 668px" /></em></p>
<pre>[root@node-esql0x etcd-v3.5.7-linux-amd64]#<span style="color: #ff0000;"> etcd --version</span>
[root@node-esql0x etcd-v3.5.7-linux-amd64]# <span style="color: #ff0000;">etcdctl version</span>
[root@node-esql0x etcd-v3.5.7-linux-amd64]# <span style="color: #ff0000;">etcdutl version</span></pre>
<p><img loading="lazy" decoding="async" width="740" height="175" class="wp-image-8095" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-10.png 740w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-10-300x71.png 300w" sizes="auto, (max-width: 740px) 100vw, 740px" /></p>
<h2><span style="color: #000000;">7. Installation/création de la structure ETCD</span></h2>
<h3><span style="color: #000000;"><strong>Création de la strucure etcd</strong></span></h3>
<pre>[root@node-esql0x etcd-v3.5.7-linux-amd64]# <span style="color: #ff0000;">cd ~</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">mkdir -p /var/lib/etcd/</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">mkdir /etc/etcd</span></pre>
<h3><span style="color: #000000;"><strong>Création droit user/group etcd</strong></span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">groupadd --system etcd</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">useradd -s /sbin/nologin --system -g etcd etcd</span></pre>
<h3><span style="color: #000000;"><strong>Ajout des droits user/group etcd sur la structure</strong></span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">chown -R etcd:etcd /var/lib/etcd/</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">chmod -R 0700 /var/lib/etcd</span></pre>
<h3><span style="color: #000000;">Ouverture des rules Firewall</span></h3>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">firewall-cmd --zone=public --permanent --add-port={2379,2380}/tcp</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">firewall-cmd --remove-service={cockpit,dhcpv6-client} --permanent</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">firewall-cmd --reload</span>
[root@node-esql0x ~]# <span style="color: #ff0000;">firewall-cmd --list-port</span>
<span style="color: #ff0000;"><em>2379/tcp 2380/tcp </em></span></pre>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">firewall-cmd --list-all</span></pre>
<p><img loading="lazy" decoding="async" width="673" height="175" class="wp-image-8096" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-11.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-11.png 673w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-11-300x78.png 300w" sizes="auto, (max-width: 673px) 100vw, 673px" /></p>
<h2><span style="color: #000000;">8. Configuration du cluster etcd</span></h2>
<h3><span style="color: #000000;"><strong>Création du Service etcd &nbsp;<span style="text-decoration: underline;">node-esql01</span></strong></span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]#<span style="color: #ff0000;"> systemctl stop etcd.service</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">vi /etc/systemd/system/etcd.service</span>

<em><span style="color: #ff0000;">[Unit]</span></em>
<em><span style="color: #ff0000;">Description=etcd key-value store</span></em>
<em><span style="color: #ff0000;">Documentation=https://github.com/etcd-io/etcd</span></em>
<em><span style="color: #ff0000;">After=network.target</span></em>

<em><span style="color: #ff0000;">[Service]</span></em>
<em><span style="color: #ff0000;">User=etcd</span></em>
<em><span style="color: #ff0000;">Type=notify</span></em>
<em><span style="color: #ff0000;">ExecStart=/usr/local/bin/etcd \</span></em>
<em><span style="color: #ff0000;">--name <strong>node-esql01</strong> \</span></em>
<em><span style="color: #ff0000;">--data-dir /var/lib/etcd/<strong>node-esql01</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-advertise-peer-urls http://<strong>192.168.1.100</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-peer-urls http://<strong>192.168.1.100</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-client-urls http://<strong>192.168.1.100</strong>:2379,http://127.0.0.1:2379 \</span></em>
<em><span style="color: #ff0000;">--advertise-client-urls http://<strong>192.168.1.100</strong>:2379 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-token <strong>clusterpsql</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-cluster <strong>node-esql01</strong>=http://<strong>192.168.1.100</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-state <strong>new </strong>\</span></em>
<em><span style="color: #ff0000;">--heartbeat-interval 1000 \</span></em>
<em><span style="color: #ff0000;">--election-timeout 5000 \</span></em>
<em><span style="color: #ff0000;"><strong>--enable-v2</strong></span></em>
<em><span style="color: #ff0000;">Restart=always</span></em>
<em><span style="color: #ff0000;">RestartSec=10s</span></em>
<em><span style="color: #ff0000;">LimitNOFILE=40000</span></em>

<em><span style="color: #ff0000;">[Install]</span></em>
<em><span style="color: #ff0000;">WantedBy=multi-user.target</span></em></pre>
<h4><span style="color: #000000;">On recharge le service</span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">systemctl daemon-reload</span></pre>
<h3><span style="color: #000000;"><strong>Création du Service etcd &nbsp;<span style="text-decoration: underline;">node-esql02</span></strong></span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-esql02</span></strong> ~]# <span style="color: #ff0000;">systemctl stop etcd.service</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-esql02</span></strong> ~]# <span style="color: #ff0000;">vi /etc/systemd/system/etcd.service</span>

<em><span style="color: #ff0000;">[Unit]</span></em>
<em><span style="color: #ff0000;">Description=etcd key-value store</span></em>
<em><span style="color: #ff0000;">Documentation=https://github.com/etcd-io/etcd</span></em>
<em><span style="color: #ff0000;">After=network.target</span></em>

<em><span style="color: #ff0000;">[Service]</span></em>
<em><span style="color: #ff0000;">User=etcd</span></em>
<em><span style="color: #ff0000;">Type=notify</span></em>
<em><span style="color: #ff0000;">ExecStart=/usr/local/bin/etcd \</span></em>
<em><span style="color: #ff0000;">--name <strong>node-esql02</strong> \</span></em>
<em><span style="color: #ff0000;">--data-dir /var/lib/etcd/<strong>node-esql02</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-advertise-peer-urls http://<strong>192.168.1.101</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-peer-urls http://<strong>192.168.1.101</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-client-urls http://<strong>192.168.1.101</strong>:2379,http://127.0.0.1:2379 \</span></em>
<em><span style="color: #ff0000;">--advertise-client-urls http://<strong>192.168.1.101</strong>:2379 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-token <strong>clusterpsql</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-cluster <strong>node-esql01</strong>=http://<strong>192.168.1.100</strong>:2380,<strong>node-esql02</strong>=http://<strong>192.168.1.101</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-state <strong>existing</strong> \</span></em>
<em><span style="color: #ff0000;">--heartbeat-interval 1000 \</span></em>
<em><span style="color: #ff0000;">--election-timeout 5000 \</span></em>
<em><span style="color: #ff0000;"><strong>--enable-v2</strong></span></em>
<em><span style="color: #ff0000;">Restart=always</span></em>
<em><span style="color: #ff0000;">RestartSec=10s</span></em>
<em><span style="color: #ff0000;">LimitNOFILE=40000</span></em>

<em><span style="color: #ff0000;">[Install]</span></em>
<em><span style="color: #ff0000;">WantedBy=multi-user.target</span></em></pre>
<h4><span style="color: #000000;">On recharge le service</span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql02</span></strong> ~]# <span style="color: #ff0000;">systemctl daemon-reload</span></pre>
<h3><span style="color: #000000;"><strong>Création du Service etcd &nbsp;<span style="text-decoration: underline;">node-esql03</span></strong></span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-esql03</span></strong> ~]# <span style="color: #ff0000;">systemctl stop etcd.service</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-esql03</span></strong> ~]# <span style="color: #ff0000;">vi /etc/systemd/system/etcd.service</span>

<em><span style="color: #ff0000;">[Unit]</span></em>
<em><span style="color: #ff0000;">Description=etcd key-value store</span></em>
<em><span style="color: #ff0000;">Documentation=https://github.com/etcd-io/etcd</span></em>
<em><span style="color: #ff0000;">After=network.target</span></em>

<em><span style="color: #ff0000;">[Service]</span></em>
<em><span style="color: #ff0000;">User=etcd</span></em>
<em><span style="color: #ff0000;">Type=notify</span></em>
<em><span style="color: #ff0000;">ExecStart=/usr/local/bin/etcd \</span></em>
<em><span style="color: #ff0000;">--name <strong>node-esql03</strong> \</span></em>
<em><span style="color: #ff0000;">--data-dir /var/lib/etcd/<strong>node-esql03</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-advertise-peer-urls http://<strong>192.168.1.102</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-peer-urls http://<strong>192.168.1.102</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--listen-client-urls http://<strong>192.168.1.102</strong>:2379,http://127.0.0.1:2379 \</span></em>
<em><span style="color: #ff0000;">--advertise-client-urls http://<strong>192.168.1.102</strong>:2379 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-token <strong>clusterpsql</strong> \</span></em>
<em><span style="color: #ff0000;">--initial-cluster <strong>node-esql01</strong>=http://<strong>192.168.1.100</strong>:2380,<strong>node-esql02</strong>=http://<strong>192.168.1.101</strong>:2380,<strong>node-esql03</strong>=http://<strong>192.168.1.102</strong>:2380 \</span></em>
<em><span style="color: #ff0000;">--initial-cluster-state <strong>existing</strong> \</span></em>
<em><span style="color: #ff0000;">--heartbeat-interval 1000 \</span></em>
<em><span style="color: #ff0000;">--election-timeout 5000 \</span></em>
<em><span style="color: #ff0000;"><strong> --enable-v2</strong></span></em>
<em><span style="color: #ff0000;">Restart=always</span></em>
<em><span style="color: #ff0000;">RestartSec=10s</span></em>
<em><span style="color: #ff0000;">LimitNOFILE=40000</span></em>

<em><span style="color: #ff0000;">[Install]</span></em>
<em><span style="color: #ff0000;">WantedBy=multi-user.target</span></em></pre>
<h4><span style="color: #000000;">On recharge le service</span></h4>
<pre><span style="color: #000000;">[root@<strong><span style="color: #ff0000;">node-psql03</span></strong> ~]# <span style="color: #ff0000;">systemctl daemon-reload</span></span></pre>
<h2><span style="color: #000000;">9. Lancement du cluster etcd</span></h2>
<h3><span style="color: #000000;"><strong>Lancement etcd sur <span style="text-decoration: underline;">node-esql01</span></strong></span></h3>
<h4><span style="color: #000000;">On supprime des anciennes traces d’installation cluster</span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">rm -rf /var/lib/etcd/node-esql01</span>
[root@<strong><span style="color: #ff0000;">node-esql01</span> </strong>~]# <span style="color: #ff0000;">systemctl start etcd.service</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">systemctl status etcd.service</span></pre>
<p><img loading="lazy" decoding="async" width="1558" height="307" class="wp-image-8097" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12.png 1558w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12-300x59.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12-1024x202.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12-768x151.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-12-1536x303.png 1536w" sizes="auto, (max-width: 1558px) 100vw, 1558px" /></p>
<h4><span style="color: #000000;">Ajout des membres du cluster sur&nbsp;node-esql01</span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">etcdctl member add <strong>node-esql02</strong> --peer-urls=http://<strong>192.168.1.101:2380</strong></span></pre>
<p><img loading="lazy" decoding="async" width="888" height="131" class="wp-image-8098" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-13.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-13.png 888w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-13-300x44.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-13-768x113.png 768w" sizes="auto, (max-width: 888px) 100vw, 888px" /></p>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">etcdctl member add <strong>node-esql03</strong> --peer-urls=http://<strong>192.168.1.102:2380</strong></span></pre>
<p><em><img loading="lazy" decoding="async" width="1128" height="130" class="wp-image-8099" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-14.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-14.png 1128w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-14-300x35.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-14-1024x118.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-14-768x89.png 768w" sizes="auto, (max-width: 1128px) 100vw, 1128px" /></em></p>
<h3><span style="color: #000000;">Démarrage/Création du Cluster ETCD</span></h3>
<h4><span style="color: #000000;">Lancement etcd <span style="text-decoration: underline;">node-esql01</span></span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">systemctl start --now etcd</span>
[root@<strong><span style="color: #ff0000;">node-esql01</span></strong> ~]# <span style="color: #ff0000;">systemctl enable etcd.service</span></pre>
<h4><span style="color: #000000;">Lancement etcd <span style="text-decoration: underline;">node-esql02</span></span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql02</span></strong> ~]# <span style="color: #ff0000;">systemctl start --now etcd</span>
[root@<strong><span style="color: #ff0000;">node-esql02</span></strong> ~]# <span style="color: #ff0000;">systemctl enable etcd.service</span></pre>
<h4><span style="color: #000000;">Lancement etcd <span style="text-decoration: underline;">node-esql03</span></span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-esql03</span></strong> ~]# <span style="color: #ff0000;">systemctl start --now etcd</span>
[root@<strong><span style="color: #ff0000;">node-esql03</span></strong> ~]# <span style="color: #ff0000;">systemctl enable etcd.service</span></pre>
<h2><span style="color: #000000;">10. Check du Cluster ETCD</span></h2>
<h3><span style="color: #000000;"><strong>Check «&nbsp;Status&nbsp;» des membres </strong></span></h3>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">etcdctl -w table member list</span></pre>
<p><img loading="lazy" decoding="async" width="961" height="141" class="wp-image-8100" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-15.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-15.png 961w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-15-300x44.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-15-768x113.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></p>
<h3><span style="color: #000000;"><strong>Check «&nbsp;Health&nbsp;» des membres </strong></span></h3>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">etcdctl endpoint health --endpoints=192.168.1.100:2380,192.168.1.101:2380,192.168.1.101:2380 health</span></pre>
<p><img loading="lazy" decoding="async" width="1022" height="88" class="wp-image-8101" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-16.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-16.png 1022w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-16-300x26.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-16-768x66.png 768w" sizes="auto, (max-width: 1022px) 100vw, 1022px" /></p>
<pre>[root@node-esql01 ~]# <span style="color: #ff0000;">etcdctl --write-out=table --endpoints=192.168.1.100:2380,192.168.1.101:2380,192.168.1.101:2380 endpoint status</span></pre>
<p><img loading="lazy" decoding="async" width="1236" height="144" class="wp-image-8102" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-17.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-17.png 1236w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-17-300x35.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-17-1024x119.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8085-17-768x89.png 768w" sizes="auto, (max-width: 1236px) 100vw, 1236px" /></p>
<p>Views: 8</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-1-postgresql-ha-installation-du-cluster-etcd/">MODOP – Partie 1 &#8211; PostgreSQL HA &#8211; Installation du Cluster ETCD</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-partie-1-postgresql-ha-installation-du-cluster-etcd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MODOP – Partie 3 – PostrgreSQL &#8211; Installation du Cluster HaPoxy</title>
		<link>https://coffeebreak.en-images.info/modop-partie-3-postrgresql-installation-du-cluster-hapoxy/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-3-postrgresql-installation-du-cluster-hapoxy/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 10:01:19 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[HaProxy]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[Serveur]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=8008</guid>

					<description><![CDATA[<p>MODOP sur la mise en place de HA Proxy/KeepAlived pour un cluster de service Haute disponibilité de base de données postgreSQL. Le service KeepAlived va permettre de gérer la mise à disposition d’une « Virual IP » et la bascule de celle-ci lors de la perte d’un nœud KeepAlived/HA Proxy. Le service HAProxy va permettre de faire du « Balancing » de flux réseau de requêtes SQL Read/Write sur les nœuds du cluster postgreSQL.</p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-3-postrgresql-installation-du-cluster-hapoxy/">MODOP – Partie 3 – PostrgreSQL &#8211; Installation du Cluster HaPoxy</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span style="color: #000000;">Inventaire des machines</span></h2>
<p><img loading="lazy" decoding="async" width="975" height="206" class="wp-image-8010" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-2.png 975w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-2-300x63.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-2-768x162.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></p>
<h3><span style="color: #000000;">Cluster HaProxy</span></h3>
<ul>
<li>hostname : <strong>Node-hsql01</strong>
<ul>
<li>IP&nbsp;: 192.168.1.106/24</li>
<li>VIP&nbsp;: <strong>192.168.1.110/24</strong>
<ul>
<li>Virtuel Host&nbsp;: node-sql</li>
</ul>
</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
<li>hostname : <strong>Node-hsql02</strong>
<ul>
<li>IP&nbsp;: 192.168.1.107/24</li>
<li>VIP&nbsp;:<strong> 192.168.1.110/24</strong>
<ul>
<li>Virtuel Host&nbsp;: node-sql</li>
</ul>
</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
</ul>
<h2><span style="color: #000000;">1. Mise à jour (2 nodes)</span></h2>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">2. Ajout des Hosts (pas de DNS)</span></h2>
<h3><span style="color: #000000;">Copy de /etc/hosts node-esql01 vers les hosts hsql</span></h3>
<pre>[root@node-hsql01 ~]#<span style="color: #ff0000;"> scp root@192.168.1.100:/etc/hosts /etc/hosts</span>
[root@node-hsql02 ~]# <span style="color: #ff0000;">scp root@192.168.1.100:/etc/hosts /etc/hosts</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">cat /etc/hosts</span></pre>
<p><img loading="lazy" decoding="async" width="829" height="224" class="wp-image-8011" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-3.png 829w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-3-300x81.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-3-768x208.png 768w" sizes="auto, (max-width: 829px) 100vw, 829px" /></p>
<h3><span style="color: #000000;">Check résolution hosts (2 hosts)</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">ping -c 2 node-esql01</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">ping -c 2 node-psql01</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">ping -c 2 node-hsql02</span></pre>
<p><img loading="lazy" decoding="async" width="943" height="312" class="wp-image-8012" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-4.png 943w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-4-300x99.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-4-768x254.png 768w" sizes="auto, (max-width: 943px) 100vw, 943px" /></p>
<h2><span style="color: #000000;">3. Désactiver SELinux (2 nodes)</span></h2>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config</span></pre>
<h2><span style="color: #000000;">4. Synchroniser DateTime sur le fuseau de PARIS (2 nodes)</span></h2>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">timedatectl set-timezone Europe/Paris</span></pre>
<h2><span style="color: #000000;">5. Installation des middlewares (2 nodes)</span></h2>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf install epel-release net-tools nmap curl wget tar –y</span></pre>
<h2><span style="color: #000000;">6. Installation KeepAlive (2 nodes)</span></h2>
<h3><span style="color: #000000;">Installation des paquets</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y install keepalived</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y install ipvsadm</span></pre>
<h3><span style="color: #000000;">Chargement du module ip_vs</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">modprobe ip_vs</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">lsmod |grep ip_vs</span></pre>
<p><img loading="lazy" decoding="async" width="664" height="94" class="wp-image-8013" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-5.png 664w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-5-300x42.png 300w" sizes="auto, (max-width: 664px) 100vw, 664px" /></p>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">echo ip_vs &gt;&gt; /etc/module</span></pre>
<h3><span style="color: #000000;">Configuration KeepAlive</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">cp /etc/keepalived/keepalived.conf{,-old}</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">sh -c '&gt; /etc/keepalived/keepalived.conf'</span></pre>
<h4><span style="color: #000000;">Fichier conf <span style="text-decoration: underline;">node-hsql01</span></span></h4>
<pre>[root@<span style="color: #ff0000;"><strong>node-hsql01</strong></span> ~]#<span style="color: #ff0000;"> vi /etc/keepalived/keepalived.conf</span>

<span style="color: #ff0000;"><em>! /etc/keepalived/keepalived.conf</em></span>
<span style="color: #ff0000;"><em>! Configuration File for keepalived</em></span>
<span style="color: #ff0000;"><em>
global_defs {</em></span>
<span style="color: #ff0000;"><em> notification_email {</em></span>
<span style="color: #ff0000;"><em> chris@en-images.info</em></span>
<span style="color: #ff0000;"><em> }</em></span>

<span style="color: #ff0000;"><em> notification_email_from chris@en-images.info</em></span>
<span style="color: #ff0000;"><em> smtp_server localhost</em></span>
<span style="color: #ff0000;"><em> smtp_connect_timeout 30</em></span>
<span style="color: #ff0000;"><em> }</em></span>

<span style="color: #ff0000;"><em>vrrp_instance VI_1 {</em></span>
<span style="color: #ff0000;"><em> state MASTER</em></span>
<span style="color: #ff0000;"><em> interface </em><strong><em>ens18</em></strong></span>
<span style="color: #ff0000;"><em> virtual_router_id 100</em></span>
<span style="color: #ff0000;"><em> priority </em><strong><em>200</em></strong></span>

<span style="color: #ff0000;"><em> authentication {</em></span>
<span style="color: #ff0000;"><strong><em>auth_type PASS</em></strong></span>
<span style="color: #ff0000;"><strong><em> auth_pass chris@2023</em></strong></span>
<span style="color: #ff0000;"><em> }</em></span>

<span style="color: #ff0000;"><em> virtual_ipaddress {</em></span>
<span style="color: #ff0000;"><strong><em> 192.168.1.110/24 dev ens18</em></strong></span>
<span style="color: #ff0000;"><em> }</em></span>

<span style="color: #ff0000;"><em>}</em></span></pre>
<h4><span style="color: #000000;">Fichier conf <span style="text-decoration: underline;">node-hsql02</span></span></h4>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql02</span></strong> ~]#<span style="color: #ff0000;"> vi /etc/keepalived/keepalived.conf</span>

<span style="color: #ff0000;"><em>! /etc/keepalived/keepalived.conf</em></span>
<span style="color: #ff0000;"><em>! Configuration File for keepalived</em></span>

<span style="color: #ff0000;"><em>global_defs {</em></span>
<span style="color: #ff0000;"><em>notification_email {</em></span>
<span style="color: #ff0000;"><em>chris@en-images.info</em></span>
<span style="color: #ff0000;"><em>}</em></span>
<span style="color: #ff0000;"><em>
 notification_email_from chris@en-images.info</em></span>
<span style="color: #ff0000;"><em> smtp_server localhost</em></span>
<span style="color: #ff0000;"><em> smtp_connect_timeout 30</em></span>

<span style="color: #ff0000;"><em>}</em></span>

<span style="color: #ff0000;"><em>vrrp_instance VI_1 {</em></span>
<span style="color: #ff0000;"><em> state BACKUP</em></span>
<span style="color: #ff0000;"><em> interface </em><strong><em>ens18</em></strong></span>
<span style="color: #ff0000;"><em> virtual_router_id 100</em></span>
<span style="color: #ff0000;"><em> priority </em><strong><em>199</em></strong></span>

<span style="color: #ff0000;"><em>authentication {</em></span>
<span style="color: #ff0000;"><strong><em> auth_type PASS</em></strong></span>
<span style="color: #ff0000;"><strong><em> auth_pass chris@2023</em></strong></span>
<span style="color: #ff0000;"><em>}</em></span>

<span style="color: #ff0000;"><em>virtual_ipaddress {</em></span>
<span style="color: #ff0000;"><strong><em>192.168.1.110/24 dev ens18</em></strong></span>
<span style="color: #ff0000;"><em>}</em></span>

<span style="color: #ff0000;"><em>}</em></span></pre>
<h4><span style="color: #000000;">Prérequis réseau KeepAlive</span></h4>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">echo "net.ipv4.ip_nonlocal_bind = 1" &gt;&gt; /etc/sysctl.conf</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">sysctl -p</span>
<span style="color: #ff0000;"><em>net.ipv4.ip_nonlocal_bind = 1</em></span></pre>
<h4><span style="color: #000000;">Règles firewall</span></h4>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent --zone=public</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">firewall-cmd --remove-service={cockpit,dhcpv6-client} --permanent</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">firewall-cmd --reload</span></pre>
<h4><span style="color: #000000;">Lancement KeepAlive</span></h4>
<h5><span style="text-decoration: underline; color: #000000;">Node-hsql01</span></h5>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql01</span></strong> ~]# <span style="color: #ff0000;">systemctl start --now keepalived</span>
[root@<span style="color: #ff0000;"><strong>node-hsql01</strong></span> ~]# <span style="color: #ff0000;">systemctl enable keepalived</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql01</span></strong> ~]# <span style="color: #ff0000;">systemctl status keepalived</span></pre>
<p><img loading="lazy" decoding="async" width="1223" height="329" class="wp-image-8014" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-6.png 1223w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-6-300x81.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-6-1024x275.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-6-768x207.png 768w" sizes="auto, (max-width: 1223px) 100vw, 1223px" /></p>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql01</span></strong> ~]# <span style="color: #ff0000;">ip a</span></pre>
<p><img loading="lazy" decoding="async" width="983" height="201" class="wp-image-8015" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-7.png 983w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-7-300x61.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-7-768x157.png 768w" sizes="auto, (max-width: 983px) 100vw, 983px" /></p>
<h5><span style="text-decoration: underline; color: #000000;">Node-hsql02</span></h5>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql02</span></strong> ~]# <span style="color: #ff0000;">systemctl start --now keepalived</span>
[root@<span style="color: #ff0000;"><strong>node-hsql02</strong></span> ~]# <span style="color: #ff0000;">systemctl enable keepalived</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-hsql02</span></strong> ~]# <span style="color: #ff0000;">systemctl status keepalived</span></pre>
<p><img loading="lazy" decoding="async" width="1135" height="320" class="wp-image-8016" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-8.png 1135w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-8-300x85.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-8-1024x289.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-8-768x217.png 768w" sizes="auto, (max-width: 1135px) 100vw, 1135px" /></p>
<pre>[root@<span style="color: #ff0000;"><strong>node-hsql02</strong></span> ~]#<span style="color: #ff0000;"> ip a</span></pre>
<p><img loading="lazy" decoding="async" width="889" height="186" class="wp-image-8017" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-9.png 889w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-9-300x63.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-9-768x161.png 768w" sizes="auto, (max-width: 889px) 100vw, 889px" /></p>
<h2><span style="color: #000000;">7. Installation client postgreSQL ( 2 nodes)</span></h2>
<h3><span style="color: #000000;">Installation Repository PostgreSQL</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y install yum-utils</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y install <a style="color: #ff0000;" href="https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm">https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm</a></span></pre>
<h3><span style="color: #000000;">Sélection version 12 PostgreSQL</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y module list postgresql</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y module enable postgresql:12</span></pre>
<h3><span style="color: #000000;">Installation du paquet client de postgresql</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -qy module disable postgresql</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf -y install postgresql12</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">ls /usr/pgsql-12/bin</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">ln -s /usr/pgsql-12/bin/* /usr/sbin/</span></pre>
<h2><span style="color: #000000;">8. Installation HaProxy (2 nodes)</span></h2>
<h3><span style="color: #000000;">Installation du paquet</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">dnf install -y haproxy</span></pre>
<h3><span style="color: #000000;">Inventaire des ports Utiles</span></h3>
<ul>
<li>Port <strong>5000</strong>&nbsp;: «&nbsp;Writes&nbsp;SQL»</li>
<li>Port <strong>5001&nbsp;</strong>: «&nbsp;Read&nbsp;SQL»</li>
<li>Port <strong>7000&nbsp;</strong>: «&nbsp;DashBoard HaProxy&nbsp;»</li>
<li>Port <strong>8008</strong>&nbsp;: «&nbsp;Patroni Rest api&nbsp;»</li>
<li>Port <strong>5432</strong>&nbsp;: PostgreSQL</li>
</ul>
<h3><span style="color: #000000;">Check Accès Cluster Psql</span></h3>
<h4><span style="text-decoration: underline; color: #000000;">Check rest api patroni</span></h4>
<pre>[root@node-hsql01 ~]# <span style="color: #ff0000;">curl -s <a style="color: #ff0000;" href="http://node-psql01:8008">http://node-psql01:8008</a></span></pre>
<p><img loading="lazy" decoding="async" width="1655" height="83" class="wp-image-8018" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10.png 1655w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10-300x15.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10-1024x51.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10-768x39.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-10-1536x77.png 1536w" sizes="auto, (max-width: 1655px) 100vw, 1655px" /></p>
<pre>[root@node-hsql01 ~]# <span style="color: #ff0000;">curl -s <a style="color: #ff0000;" href="http://node-psql02:8008">http://node-psql02:8008</a></span>
[root@node-hsql01 ~]# <span style="color: #ff0000;">curl -s <a style="color: #ff0000;" href="http://node-psql03:8008">http://node-psql03:8008</a></span></pre>
<p><img loading="lazy" decoding="async" width="1661" height="136" class="wp-image-8019" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11.png 1661w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11-300x25.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11-1024x84.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11-768x63.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-11-1536x126.png 1536w" sizes="auto, (max-width: 1661px) 100vw, 1661px" /></p>
<h5><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Check connexion postgreSQL via les nodes HaProxy</span></span></h5>
<pre>[root@node-hsql01 ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-psql01</strong> -d <strong>chris2023</strong></span></pre>
<p><img loading="lazy" decoding="async" width="644" height="98" class="wp-image-8020" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-12.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-12.png 644w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-12-300x46.png 300w" sizes="auto, (max-width: 644px) 100vw, 644px" /></p>
<pre>[root@node-hsql01 ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-psql02</strong> -d <strong>chris2023</strong></span>
[root@node-hsql01 ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-psql03</strong> -d <strong>chris2023</strong></span></pre>
<p><img loading="lazy" decoding="async" width="713" height="186" class="wp-image-8021" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-13.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-13.png 713w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-13-300x78.png 300w" sizes="auto, (max-width: 713px) 100vw, 713px" /></p>
<h3><span style="color: #000000;">Configuration HaProxy ( 2 nodes)</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">mv /etc/haproxy/haproxy.cfg{,-old}</span></pre>
<pre>[root@node-hsql0x ~]# vi /etc/haproxy/haproxy.cfg

<span style="color: #ff0000;"><em>global</em></span>
<span style="color: #ff0000;"><em> maxconn 100</em></span>
<span style="color: #ff0000;"><em>defaults</em></span>
<span style="color: #ff0000;"><em> log global</em></span>
<span style="color: #ff0000;"><em> mode tcp</em></span>
<span style="color: #ff0000;"><em> retries 2</em></span>
<span style="color: #ff0000;"><em> timeout client 30m</em></span>
<span style="color: #ff0000;"><em> timeout connect 4s</em></span>
<span style="color: #ff0000;"><em> timeout server 30m</em></span>
<span style="color: #ff0000;"><em> timeout check 5s</em></span>

<span style="color: #ff0000;"><em>listen stats</em></span>
<span style="color: #ff0000;"><em> mode http</em></span>
<span style="color: #ff0000;"><em> bind *:7000</em></span>
<span style="color: #ff0000;"><em> stats enable</em></span>
<span style="color: #ff0000;"><em> stats uri /status</em></span>
<span style="color: #ff0000;"><em> stats refresh 2s</em></span>
<span style="color: #ff0000;"><em> stats auth chris:Chris</em></span>
<span style="color: #ff0000;"><em> stats admin if TRUE</em></span>

<span style="color: #ff0000;"><em>listen master</em></span>
<strong><span style="color: #ff0000;"><em> bind *:5000</em></span></strong>
<span style="color: #ff0000;"><em> option httpchk OPTIONS /master</em></span>
<span style="color: #ff0000;"><em> http-check expect status 200</em></span>
<span style="color: #ff0000;"><em> default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions</em></span>
<span style="color: #ff0000;"><em> s<strong>erver node-psql01 node-psql01:5432 maxconn 100 check port 8008</strong></em></span>
<strong><span style="color: #ff0000;"><em> server node-psql02 node-psql02:5432 maxconn 100 check port 8008</em></span></strong>
<strong><span style="color: #ff0000;"><em> server node-psql03 node-psql03:5432 maxconn 100 check port 8008</em></span></strong>

<span style="color: #ff0000;"><em>listen replicats</em></span>
<span style="color: #ff0000;"><em> balance roundrobin</em></span>
<strong><span style="color: #ff0000;"><em> bind *:5001</em></span></strong>
<span style="color: #ff0000;"><em> option httpchk OPTIONS /replica</em></span>
<span style="color: #ff0000;"><em> http-check expect status 200</em></span>
<span style="color: #ff0000;"><em> default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions</em></span>
<strong><span style="color: #ff0000;"><em> server node-psql01 node-psql01:5432 maxconn 100 check port 8008</em></span></strong>
<strong><span style="color: #ff0000;"><em> server node-psql02 node-psql02:5432 maxconn 100 check port 8008</em></span></strong>
<strong><span style="color: #ff0000;"><em>&nbsp;server node-psql03 node-psql03:5432 maxconn 100 check port 8008</em></span></strong></pre>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">haproxy -c -V -f /etc/haproxy/haproxy.cfg</span>
<span style="color: #ff0000;"><em>Configuration file is valid</em></span></pre>
<h3><span style="color: #000000;">Régles Firewall (2 nodes)</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">firewall-cmd --add-port={5000,5001,7000}/tcp --permanent</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">firewall-cmd --add-service=http –permanent</span>
[root@node-hsql0x ~]#<span style="color: #ff0000;"> firewall-cmd --reload</span></pre>
<h3><span style="color: #000000;">Démarrage du service HaProxy (2 nodes)</span></h3>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">systemctl start haproxy</span>
[root@node-hsql0x ~]# <span style="color: #ff0000;">systemctl enable haproxy</span></pre>
<pre>[root@node-hsql0x ~]# <span style="color: #ff0000;">systemctl status haproxy</span></pre>
<p><img loading="lazy" decoding="async" width="951" height="202" class="wp-image-8022" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-14.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-14.png 951w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-14-300x64.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-14-768x163.png 768w" sizes="auto, (max-width: 951px) 100vw, 951px" /></p>
<h2><span style="color: #000000;">9. Connexion IHM HaProxy</span></h2>
<ul>
<li><strong><a href="http://192.168.1.110:7000/status">http://192.168.1.110:7000/status</a></strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1032" height="274" class="wp-image-8023" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-15.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-15.png 1032w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-15-300x80.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-15-1024x272.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-15-768x204.png 768w" sizes="auto, (max-width: 1032px) 100vw, 1032px" /><br />
Login/passwod&nbsp;: <strong>chris/Chris</strong></p>
<p><img loading="lazy" decoding="async" width="1895" height="324" class="wp-image-8024" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16.png 1895w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16-300x51.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16-1024x175.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16-768x131.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8008-16-1536x263.png 1536w" sizes="auto, (max-width: 1895px) 100vw, 1895px" /><br />
Ici on peut constater les deux configurations suivantes</p>
<ul>
<li>Le master «<strong>&nbsp;Write SQL</strong>&nbsp;» est le <span style="text-decoration: underline;">node-psql02</span></li>
<li>Les réplicas «<strong>&nbsp;Read SQL</strong>&nbsp;» sont <span style="text-decoration: underline;">node-psql01</span> et <span style="text-decoration: underline;">node-psql03</span></li>
</ul>
<p>Views: 8</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-3-postrgresql-installation-du-cluster-hapoxy/">MODOP – Partie 3 – PostrgreSQL &#8211; Installation du Cluster HaPoxy</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-partie-3-postrgresql-installation-du-cluster-hapoxy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MODOP – Partie 2 – PostgreSQL HA &#8211; Installation du Cluster PostgreSQL/Patroni</title>
		<link>https://coffeebreak.en-images.info/modop-partie-2-postgresql-ha-installation-du-cluster-postgresql-patroni/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-2-postgresql-ha-installation-du-cluster-postgresql-patroni/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 09:58:34 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[RedHat/Centos Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[postgreSQL]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[systeme]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=8039</guid>

					<description><![CDATA[<p>MODOP sur la mise en place d’un cluster haute disponibilité de base de données PostgreSQL/Patroni. Le cluster est constitué d’une machine « Master » et deux machines «REPLICAS ». Toutes données insérées sur le « Master » sera automatiquement répliquées sur les deux autres machines «REPLICAS ». Patroni sera en charge de gérer toutes les transactions et le management du cluster et cela pour chacun des nœuds PostgreSQL. Il peut décider de promouvoir un nœud en « Master » et d’autres en «REPLICAS ».</p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-2-postgresql-ha-installation-du-cluster-postgresql-patroni/">MODOP – Partie 2 – PostgreSQL HA &#8211; Installation du Cluster PostgreSQL/Patroni</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span style="color: #000000;">Inventaire des machines</span></h2>
<p><img loading="lazy" decoding="async" width="973" height="208" class="wp-image-8041" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-2.png 973w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-2-300x64.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-2-768x164.png 768w" sizes="auto, (max-width: 973px) 100vw, 973px" /></p>
<h2><span style="color: #000000;">Cluster PostgreSQL/patroni</span></h2>
<ul>
<li>hostname : <strong>Node-psql01</strong>
<ul>
<li>IP&nbsp;: 192.168.1.103/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
<li>hostname : <strong>Node-psql02</strong>
<ul>
<li>IP&nbsp;: 192.168.1.104/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
<li>hostname :<strong> Node-psql03</strong>
<ul>
<li>IP&nbsp;: 192.168.1.105/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
</ul>
<h2><span style="color: #000000;">1. Mise à jour (3 nodes)</span></h2>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">2. Ajout des Hosts (pas de DNS)</span></h2>
<h3><span style="color: #000000;">Copy de /etc/hosts node-esql01 vers les hosts psql</span></h3>
<pre>[root@<span style="color: #ff0000;"><strong>node-psql01</strong></span> ~]# <span style="color: #ff0000;">scp root@192.168.1.100:/etc/hosts /etc/hosts</span>
[root@<strong><span style="color: #ff0000;">node-psql02</span></strong> ~]# <span style="color: #ff0000;">scp root@192.168.1.100:/etc/hosts /etc/hosts</span>
[root@<span style="color: #ff0000;"><strong>node-psql03</strong></span> ~]# <span style="color: #ff0000;">scp root@192.168.1.100:/etc/hosts /etc/hosts</span></pre>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">cat /etc/hosts</span></pre>
<p><img loading="lazy" decoding="async" width="857" height="226" class="wp-image-8042" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-3.png 857w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-3-300x79.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-3-768x203.png 768w" sizes="auto, (max-width: 857px) 100vw, 857px" /></p>
<h3><span style="color: #000000;">Check résolution hosts</span></h3>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">ping -c 2 node-esql01</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">ping -c 2 node-psql01</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">ping -c 2 node-hsql01</span></pre>
<p><img loading="lazy" decoding="async" width="910" height="317" class="wp-image-8043" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-4.png 910w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-4-300x105.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-4-768x268.png 768w" sizes="auto, (max-width: 910px) 100vw, 910px" /></p>
<h2><span style="color: #000000;">3. Désactiver SELinux (3 nodes)</span></h2>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">getenforce</span>
<em><span style="color: #ff0000;">Permissive</span></em>
[root@node-psql0x ~]# <span style="color: #ff0000;">sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config</span></pre>
<h2><span style="color: #000000;">4. Synchroniser DateTime sur le fuseau de PARIS (3 nodes)</span></h2>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">timedatectl set-timezone Europe/Paris</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">timedatectl</span></pre>
<p><img loading="lazy" decoding="async" width="611" height="125" class="wp-image-8044" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-5.png 611w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-5-300x61.png 300w" sizes="auto, (max-width: 611px) 100vw, 611px" /></p>
<h2><span style="color: #000000;">5. Installation des middlewares (3 nodes)</span></h2>
<pre>[root@node-esql0x ~]# <span style="color: #ff0000;">dnf install epel-release net-tools nmap curl wget tar -y</span></pre>
<h2><span style="color: #000000;">6. Installation Cluster PostgreSQL v12 (3 nodes)</span></h2>
<h3><span style="color: #000000;">Installation Repository PostgreSQL</span></h3>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">dnf -y install yum-utils</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">dnf -y install <a style="color: #ff0000;" href="https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm">https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm</a></span></pre>
<h3><span style="color: #000000;">Installation PostgreSQL v12</span></h3>
<pre>[root@node-psql0x ~]#<span style="color: #ff0000;"> dnf module list postgresql</span></pre>
<p><img loading="lazy" decoding="async" width="1391" height="141" class="wp-image-8045" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-6.png 1391w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-6-300x30.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-6-1024x104.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-6-768x78.png 768w" sizes="auto, (max-width: 1391px) 100vw, 1391px" /></p>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">dnf module enable postgresql:12</span></pre>
<p><img loading="lazy" decoding="async" width="1394" height="126" class="wp-image-8046" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-7.png 1394w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-7-300x27.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-7-1024x93.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-7-768x69.png 768w" sizes="auto, (max-width: 1394px) 100vw, 1394px" /></p>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">dnf --enablerepo=powertools install perl-IPC-Run</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">dnf -qy module disable postgresql</span></pre>
<pre>[root@node-psql0x ~]#<span style="color: #ff0000;"> dnf -y install postgresql12 postgresql12-server postgresql12-devel</span></pre>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">ls /usr/pgsql-12/bin</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">ln -s /usr/pgsql-12/bin/* /usr/sbin/</span></pre>
<h2><span style="color: #000000;">7. Installation Patroni (3 nodes)</span></h2>
<h3><span style="color: #000000;">Installation des prérequis (3 nodes)</span></h3>
<pre>[root@node-psql0x ~]#<span style="color: #ff0000;"> dnf -y install python3 python3-devel python3-pip gcc libpq-devel</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">pip3 install --upgrade testresources</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">pip3 install --upgrade setuptools</span></pre>
<h3><span style="color: #000000;">Installation patroni et dépendances (3 nodes)</span></h3>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">pip3 install psycopg2</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">dnf -y install python3-etcd</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">dnf -y install patroni patroni-etcd watchdog</span></pre>
<h3><span style="color: #000000;">Configuration patroni (3 nodes)</span></h3>
<pre>[root@node-psql0x ~]#<span style="color: #ff0000;"> mkdir -p /etc/patroni</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">cp -v /usr/share/doc/patroni/postgres0.yml /etc/patroni/patroni.yml</span>
<span style="color: #ff0000;"><em>'/usr/share/doc/patroni/postgres0.yml' -&gt; '/etc/patroni/patroni.yml'</em></span></pre>
<h4><span style="color: #000000;">Configuration patroni &#8211; <span style="text-decoration: underline;">node-psql01</span></span></h4>
<pre>[root@node-psql01 ~]#<span style="color: #ff0000;"> vi /etc/patroni/patroni.yml</span>

<span style="color: #ff0000;"><em>scope: </em><strong><em>psql_cluster</em></strong></span>
<span style="color: #ff0000;"><em>namespace: /service/</em></span>
<span style="color: #ff0000;"><em>name: </em><strong><em>node-psql01</em></strong></span>

<span style="color: #ff0000;"><em>restapi:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>0.0.0.0</em></strong><em>:8008</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.103</em></strong><em>:8008</em></span>

<span style="color: #ff0000;"><em>etcd:</em></span>
<span style="color: #ff0000;"><em> hosts:</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.100:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.101:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.102:2379</em></span>

<span style="color: #ff0000;"><em>bootstrap:</em></span>
<span style="color: #ff0000;"><em> dcs:</em></span>
<span style="color: #ff0000;"><em> ttl: 30</em></span>
<span style="color: #ff0000;"><em> loop_wait: 10</em></span>
<span style="color: #ff0000;"><em> retry_timeout: 10</em></span>
<span style="color: #ff0000;"><em> maximum_lag_on_failover: 1048576</em></span>

<span style="color: #ff0000;"><em> postgresql:</em></span>
<span style="color: #ff0000;"><em> use_pg_rewind: true</em></span>
<span style="color: #ff0000;"><em> use_slots: true</em></span>
<span style="color: #ff0000;"><em> parameters:</em></span>
<em>
<span style="color: #ff0000;"> initdb:</span></em>
<span style="color: #ff0000;"><em> - encoding: UTF8</em></span>
<span style="color: #ff0000;"><em> - data-checksums</em></span>

<span style="color: #ff0000;"><em> pg_hba: # Add following lines to pg_hba.conf after running 'initdb'</em></span>
<span style="color: #ff0000;"><em> - host replication replicator 127.0.0.1/32 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.103/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.104/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.105/0 md5</em></strong></span>
<span style="color: #ff0000;"><em> - host all all 0.0.0.0/0 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host all all 192.168.1.0/24 md5</em></strong></span>

<span style="color: #ff0000;"><em> users:</em></span>
<span style="color: #ff0000;"><em> admin:</em></span>
<span style="color: #ff0000;"><em> password: admin</em></span>
<span style="color: #ff0000;"><em> options:</em></span>
<span style="color: #ff0000;"><em> - createrole</em></span>
<span style="color: #ff0000;"><em> - createdb</em></span>

<span style="color: #ff0000;"><em>postgresql:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>192.168.1.103</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.103</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> data_dir: </em><strong><em>/var/lib/pgsql/12/data</em></strong></span>
<span style="color: #ff0000;"><em> bin_dir: </em><strong><em>/usr/pgsql-12/bin</em></strong></span>
<span style="color: #ff0000;"><em> pgpass: /tmp/pgpass</em></span>
<span style="color: #ff0000;"><em>
 authentication:</em></span>
<span style="color: #ff0000;"><em> replication:</em></span>
<span style="color: #ff0000;"><strong><em> username: replicator</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: replicator2023</em></strong></span>
<span style="color: #ff0000;"><em> superuser:</em></span>
<span style="color: #ff0000;"><strong><em>username: postgres</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: chris@2023</em></strong></span>

<span style="color: #ff0000;"><em>watchdog:</em></span>
<span style="color: #ff0000;"><em> mode: required</em></span>
<span style="color: #ff0000;"><em> device: /dev/watchdog</em></span>
<span style="color: #ff0000;"><em> safety_margin: 5</em></span>

<span style="color: #ff0000;"><em>tags:</em></span>
<span style="color: #ff0000;"><em> nofailover: false</em></span>
<span style="color: #ff0000;"><em> noloadbalance: false</em></span>
<span style="color: #ff0000;"><em> clonefrom: false</em></span>
<span style="color: #ff0000;"><em> nosync: false</em></span></pre>
<h4><span style="color: #000000;">Configuration patroni &#8211; <span style="text-decoration: underline;">node-esql02</span></span></h4>
<pre>[root@node-psql02 ~]# <span style="color: #ff0000;">vi /etc/patroni/patroni.yml</span>

<span style="color: #ff0000;"><em>scope: </em><strong><em>psql_cluster</em></strong></span>
<span style="color: #ff0000;"><em>namespace: /service/</em></span>
<span style="color: #ff0000;"><em>name: </em><strong><em>node-psql02</em></strong></span>

<span style="color: #ff0000;"><em>restapi:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>0.0.0.0</em></strong><em>:8008</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.104</em></strong><em>:8008</em></span>

<span style="color: #ff0000;"><em>etcd:</em></span>
<span style="color: #ff0000;"><em> hosts:</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.100:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.101:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.102:2379</em></span>

<span style="color: #ff0000;"><em>bootstrap:</em></span>
<span style="color: #ff0000;"><em> dcs:</em></span>
<span style="color: #ff0000;"><em> ttl: 30</em></span>
<span style="color: #ff0000;"><em> loop_wait: 10</em></span>
<span style="color: #ff0000;"><em> retry_timeout: 10</em></span>
<span style="color: #ff0000;"><em> maximum_lag_on_failover: 1048576</em></span>

<span style="color: #ff0000;"><em> postgresql:</em></span>
<span style="color: #ff0000;"><em> use_pg_rewind: true</em></span>
<span style="color: #ff0000;"><em> use_slots: true</em></span>
<span style="color: #ff0000;"><em>
 parameters:</em></span>
<span style="color: #ff0000;"><em> initdb:</em></span>
<span style="color: #ff0000;"><em> - encoding: UTF8</em></span>
<span style="color: #ff0000;"><em> - data-checksums</em></span>

<span style="color: #ff0000;"><em> pg_hba: # Add following lines to pg_hba.conf after running 'initdb'</em></span>
<span style="color: #ff0000;"><em> - host replication replicator 127.0.0.1/32 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.103/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.104/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.105/0 md5</em></strong></span>
<span style="color: #ff0000;"><em> - host all all 0.0.0.0/0 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host all all 192.168.1.0/24 md5</em></strong></span>

<span style="color: #ff0000;"><em> users:</em></span>
<span style="color: #ff0000;"><em> admin:</em></span>
<span style="color: #ff0000;"><em> password: admin</em></span>
<span style="color: #ff0000;"><em> options:</em></span>
<span style="color: #ff0000;"><em> - createrole</em></span>
<span style="color: #ff0000;"><em> - createdb</em></span>
<span style="color: #ff0000;"><em>
postgresql:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>0.0.0.0</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.104</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> data_dir: </em><strong><em>/var/lib/pgsql/12/data</em></strong></span>
<span style="color: #ff0000;"><em> bin_dir: </em><strong><em>/usr/pgsql-12/bin</em></strong></span>
<span style="color: #ff0000;"><em> pgpass: /tmp/pgpass</em></span>

<span style="color: #ff0000;"><em> authentication:</em></span>
<span style="color: #ff0000;"><em> replication:</em></span>
<span style="color: #ff0000;"><strong><em> username: replicator</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: replicator2023</em></strong></span>
<span style="color: #ff0000;"><em> superuser:</em></span>
<span style="color: #ff0000;"><strong><em>username: postgres</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: chris@2023</em></strong></span>

<span style="color: #ff0000;"><em>watchdog:</em></span>
<span style="color: #ff0000;"><em> mode: required</em></span>
<span style="color: #ff0000;"><em> device: /dev/watchdog</em></span>
<span style="color: #ff0000;"><em> safety_margin: 5</em></span>

<span style="color: #ff0000;"><em>tags:</em></span>
<span style="color: #ff0000;"><em> nofailover: false</em></span>
<span style="color: #ff0000;"><em> noloadbalance: false</em></span>
<span style="color: #ff0000;"><em> clonefrom: false</em></span>
<span style="color: #ff0000;"><em> nosync: false</em></span></pre>
<h4><span style="color: #000000;">Configuration patroni &#8211; <span style="text-decoration: underline;">node-esql03</span></span></h4>
<pre>[root@node-psql03 ~]#<span style="color: #ff0000;"> vi /etc/patroni/patroni.yml</span>

<span style="color: #ff0000;"><em>scope: </em><strong><em>psql_cluster</em></strong></span>
<span style="color: #ff0000;"><em>namespace: /service/</em></span>
<span style="color: #ff0000;"><em>name: </em><strong><em>node-psql03</em></strong></span>

<span style="color: #ff0000;"><em>restapi:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>0.0.0.0</em></strong><em>:8008</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.105</em></strong><em>:8008</em></span>

<span style="color: #ff0000;"><em>etcd:</em></span>
<span style="color: #ff0000;"><em> hosts:</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.100:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.101:2379</em></span>
<span style="color: #ff0000;"><em> - 192.168.1.102:2379</em></span>

<span style="color: #ff0000;"><em>bootstrap:</em></span>
<span style="color: #ff0000;"><em> dcs:</em></span>
<span style="color: #ff0000;"><em> ttl: 30</em></span>
<span style="color: #ff0000;"><em> loop_wait: 10</em></span>
<span style="color: #ff0000;"><em> retry_timeout: 10</em></span>
<span style="color: #ff0000;"><em> maximum_lag_on_failover: 1048576</em></span>

<span style="color: #ff0000;"><em> postgresql:</em></span>
<span style="color: #ff0000;"><em> use_pg_rewind: true</em></span>
<span style="color: #ff0000;"><em> use_slots: true</em></span>

<span style="color: #ff0000;"><em> parameters:</em></span>
<span style="color: #ff0000;"><em> initdb:</em></span>
<span style="color: #ff0000;"><em> - encoding: UTF8</em></span>
<span style="color: #ff0000;"><em> - data-checksums</em></span>

<span style="color: #ff0000;"><em> pg_hba: # Add following lines to pg_hba.conf after running 'initdb'</em></span>
<span style="color: #ff0000;"><em> - host replication replicator 127.0.0.1/32 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.103/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.104/0 md5</em></strong></span>
<span style="color: #ff0000;"><strong><em> - host replication replicator 192.168.1.105/0 md5</em></strong></span>
<span style="color: #ff0000;"><em> - host all all 0.0.0.0/0 md5</em></span>
<span style="color: #ff0000;"><strong><em> - host all all 192.168.1.0/24 md5</em></strong></span>

<span style="color: #ff0000;"><em> users:</em></span>
<span style="color: #ff0000;"><em> admin:</em></span>
<span style="color: #ff0000;"><em> password: admin</em></span>
<span style="color: #ff0000;"><em> options:</em></span>
<span style="color: #ff0000;"><em> - createrole</em></span>
<span style="color: #ff0000;"><em> - createdb</em></span>

<span style="color: #ff0000;"><em>postgresql:</em></span>
<span style="color: #ff0000;"><em> listen: </em><strong><em>0.0.0.0</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> connect_address: </em><strong><em>192.168.1.105</em></strong><em>:5432</em></span>
<span style="color: #ff0000;"><em> data_dir: </em><strong><em>/var/lib/pgsql/12/data</em></strong></span>
<span style="color: #ff0000;"><em> bin_dir: </em><strong><em>/usr/pgsql-12/bin</em></strong></span>
<span style="color: #ff0000;"><em> pgpass: /tmp/pgpass</em></span>
<span style="color: #ff0000;"><em>
 authentication:</em></span>
<span style="color: #ff0000;"><em> replication:</em></span>
<span style="color: #ff0000;"><strong><em> username: replicator</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: replicator2023</em></strong></span>
<span style="color: #ff0000;"><em> superuser:</em></span>
<span style="color: #ff0000;"><strong><em>username: postgres</em></strong></span>
<span style="color: #ff0000;"><strong><em> password: chris@2023</em></strong></span>

<span style="color: #ff0000;"><em>watchdog:</em></span>
<span style="color: #ff0000;"><em> mode: required</em></span>
<span style="color: #ff0000;"><em> device: /dev/watchdog</em></span>
<span style="color: #ff0000;"><em> safety_margin: 5</em></span>

<span style="color: #ff0000;"><em>tags:</em></span>
<span style="color: #ff0000;"><em> nofailover: false</em></span>
<span style="color: #ff0000;"><em> noloadbalance: false</em></span>
<span style="color: #ff0000;"><em> clonefrom: false</em></span>
<span style="color: #ff0000;"><em> nosync: false</em></span></pre>
<h2><span style="color: #000000;">8. Activation Watchdogs pour postgres (3 nodes)</span></h2>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">vi /etc/watchdog.conf</span></pre>
<p><img loading="lazy" decoding="async" width="483" height="77" class="wp-image-8047" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-8.png 483w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-8-300x48.png 300w" sizes="auto, (max-width: 483px) 100vw, 483px" /></p>
<p>Dé-commenter la ligne «&nbsp;<strong>watchdog-device</strong>&nbsp;»</p>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">mknod /dev/watchdog c 10 130</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">modprobe softdog</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">chown postgres /dev/watchdog</span></pre>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">ls -al /dev/watchdog</span></pre>
<p><img loading="lazy" decoding="async" width="605" height="55" class="wp-image-8048" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-9.png 605w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-9-300x27.png 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></p>
<h2><span style="color: #000000;">9. Règles firewall (3 nodes)</span></h2>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">firewall-cmd --zone=public --add-port=8008/tcp --permanent</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">firewall-cmd --zone=public --add-port=5432/tcp --permanent</span>
[root@node-psql0x ~]#<span style="color: #ff0000;"> firewall-cmd --remove-service={cockpit,dhcpv6-client} –permanent</span>
[root@node-psql0x ~]# <span style="color: #ff0000;">firewall-cmd --reload</span></pre>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">firewall-cmd --list-all</span></pre>
<p><img loading="lazy" decoding="async" width="681" height="184" class="wp-image-8049" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-10.png 681w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-10-300x81.png 300w" sizes="auto, (max-width: 681px) 100vw, 681px" /></p>
<h2><span style="color: #000000;">10. Lancement de Patroni (3 nodes)</span></h2>
<h3><span style="color: #000000;">Node-psql01</span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-psql01</span></strong> ~]# <span style="color: #ff0000;">systemctl start patroni</span>
[root@<span style="color: #ff0000;"><strong>node-psql01</strong></span> ~]# <span style="color: #ff0000;">systemctl enable patroni</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-psql01</span></strong> ~]# <span style="color: #ff0000;">systemctl status patroni</span></pre>
<p><img loading="lazy" decoding="async" width="1447" height="367" class="wp-image-8050" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-11.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-11.png 1447w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-11-300x76.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-11-1024x260.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-11-768x195.png 768w" sizes="auto, (max-width: 1447px) 100vw, 1447px" /></p>
<h3><span style="color: #000000;">Node-psql02</span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-psql02</span></strong> ~]# <span style="color: #ff0000;">systemctl start patroni</span>
[root@<span style="color: #ff0000;"><strong>node-psql02</strong> </span>~]# <span style="color: #ff0000;">systemctl enable patroni</span></pre>
<pre>[root@<strong><span style="color: #ff0000;">node-psql02</span> </strong>~]# <span style="color: #ff0000;">systemctl status patroni</span></pre>
<p><img loading="lazy" decoding="async" width="1606" height="420" class="wp-image-8051" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12.png 1606w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12-300x78.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12-1024x268.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12-768x201.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-12-1536x402.png 1536w" sizes="auto, (max-width: 1606px) 100vw, 1606px" /></p>
<h3><span style="color: #000000;">Node-psql03</span></h3>
<pre>[root@<strong><span style="color: #ff0000;">node-psql03</span></strong> ~]#<span style="color: #ff0000;"> systemctl start patroni</span>
[root@<strong><span style="color: #ff0000;">node-psql03</span></strong> ~]# <span style="color: #ff0000;">systemctl enable patroni</span></pre>
<pre>[root@<span style="color: #ff0000;"><strong>node-psql03</strong></span> ~]# <span style="color: #ff0000;">systemctl status patroni</span></pre>
<p><img loading="lazy" decoding="async" width="1397" height="482" class="wp-image-8052" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-13.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-13.png 1397w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-13-300x104.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-13-1024x353.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-13-768x265.png 768w" sizes="auto, (max-width: 1397px) 100vw, 1397px" /></p>
<h2><span style="color: #000000;">11. Check cluster Patroni</span></h2>
<pre>[root@node-psql01 ~]#<span style="color: #ff0000;"> patronictl -d etcd://192.168.1.100:2379 list psql_cluster</span></pre>
<p><img loading="lazy" decoding="async" width="807" height="123" class="wp-image-8053" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-14.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-14.png 807w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-14-300x46.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-14-768x117.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-14-800x123.png 800w" sizes="auto, (max-width: 807px) 100vw, 807px" /></p>
<pre>[root@node-psql01 ~]# <span style="color: #ff0000;">curl -s <a style="color: #ff0000;" href="http://node-psql01:8008">http://node-psql01:8008</a></span></pre>
<p><img loading="lazy" decoding="async" width="1652" height="95" class="wp-image-8054" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15.png 1652w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15-300x17.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15-1024x59.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15-768x44.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-15-1536x88.png 1536w" sizes="auto, (max-width: 1652px) 100vw, 1652px" /></p>
<pre>[root@node-psql01 ~]# <span style="color: #ff0000;">curl -s <a style="color: #ff0000;" href="http://node-psql02:8008">http://node-psql02:8008</a></span></pre>
<p><img loading="lazy" decoding="async" width="1657" height="104" class="wp-image-8055" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16.png 1657w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16-300x19.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16-1024x64.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16-768x48.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-16-1536x96.png 1536w" sizes="auto, (max-width: 1657px) 100vw, 1657px" /></p>
<pre><span style="color: #ff0000;"><span style="color: #000000;">[root@node-psql01 ~]#</span> curl -s <a style="color: #ff0000;" href="http://node-psql03:8008">http://node-psql03:8008</a></span></pre>
<p><img loading="lazy" decoding="async" width="1663" height="86" class="wp-image-8056" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17.png 1663w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17-300x16.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17-1024x53.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17-768x40.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-17-1536x79.png 1536w" sizes="auto, (max-width: 1663px) 100vw, 1663px" /></p>
<h2><span style="color: #000000;">12. Check cluster SQL HA</span></h2>
<h3><span style="color: #000000;">Création données sur Node-psql01 (<strong>node Master</strong>)</span></h3>
<pre>[root@node-psql01 ~]# <span style="color: #ff0000;">psql -U postgres</span>
<em><span style="color: #ff0000;">postgres-# \du</span></em></pre>
<p><img loading="lazy" decoding="async" width="931" height="117" class="wp-image-8057" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-18.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-18.png 931w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-18-300x38.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-18-768x97.png 768w" sizes="auto, (max-width: 931px) 100vw, 931px" /></p>
<pre>postgres=#<span style="color: #ff0000;"> SELECT schema_name FROM information_schema.schemata;</span></pre>
<p><img loading="lazy" decoding="async" width="646" height="161" class="wp-image-8058" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-19.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-19.png 646w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-19-300x75.png 300w" sizes="auto, (max-width: 646px) 100vw, 646px" /></p>
<pre>postgres=# <span style="color: #ff0000;">CREATE DATABASE chris2023;</span>
<span style="color: #ff0000;"><em>CREATE DATABASE</em></span></pre>
<pre>postgres=#<span style="color: #ff0000;"> \l</span></pre>
<p><img loading="lazy" decoding="async" width="805" height="161" class="wp-image-8059" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-20.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-20.png 805w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-20-300x60.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-20-768x154.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-20-800x161.png 800w" sizes="auto, (max-width: 805px) 100vw, 805px" /></p>
<pre>postgres=# <span style="color: #ff0000;">CREATE ROLE chris SUPERUSER LOGIN PASSWORD 'chris2023';</span>
<span style="color: #ff0000;"><em>CREATE ROLE</em></span></pre>
<pre>postgres=#<span style="color: #ff0000;"> \du</span></pre>
<p><img loading="lazy" decoding="async" width="925" height="194" class="wp-image-8060" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-21.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-21.png 925w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-21-300x63.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-21-768x161.png 768w" sizes="auto, (max-width: 925px) 100vw, 925px" /></p>
<h3><span style="color: #000000;">Check réplication données sur Node-psql02 et node-psql03 (<strong> replication</strong>)</span></h3>
<pre>[root@node-psql0x~]#<span style="color: #ff0000;"> psql -U postgres</span>
postgres=# <span style="color: #ff0000;">\du</span></pre>
<p><img loading="lazy" decoding="async" width="908" height="155" class="wp-image-8061" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-22.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-22.png 908w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-22-300x51.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-22-768x131.png 768w" sizes="auto, (max-width: 908px) 100vw, 908px" /></p>
<pre>postgres=# <span style="color: #ff0000;">\l</span></pre>
<p><img loading="lazy" decoding="async" width="783" height="171" class="wp-image-8062" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-23.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-23.png 783w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-23-300x66.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-8039-23-768x168.png 768w" sizes="auto, (max-width: 783px) 100vw, 783px" /></p>
<p>Views: 4</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-2-postgresql-ha-installation-du-cluster-postgresql-patroni/">MODOP – Partie 2 – PostgreSQL HA &#8211; Installation du Cluster PostgreSQL/Patroni</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-partie-2-postgresql-ha-installation-du-cluster-postgresql-patroni/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MODOP – Partie 4 – PostgreSQL HA &#8211; Connexion sql via client Linux</title>
		<link>https://coffeebreak.en-images.info/modop-partie-4-postgresql-ha-connexion-sql-via-client-linux/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-4-postgresql-ha-connexion-sql-via-client-linux/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 09:58:12 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[RedHat/Centos Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[postgreSQL]]></category>
		<category><![CDATA[Serveur]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=7990</guid>

					<description><![CDATA[<p>MODOP sur un client LINUX se connectant à un cluster Haute Disponibilité de service PostgreSQL via HaProxy . Le client va générer deux types de requêtes SQL , L’une en « Read – SELECT » sur le port 5000 et l’autre  « Write – UPDATE/INSERT» sur le port 5001. HaProxy orientera les deux types de requête en fonction des ports TCP utilisés. SQL « READ » vers les réplicas du cluster PostrgreSQL . SQL « WRITE » vers le(s) master du cluster PostrgreSQL . </p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-4-postgresql-ha-connexion-sql-via-client-linux/">MODOP – Partie 4 – PostgreSQL HA &#8211; Connexion sql via client Linux</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span style="color: #000000;">1. Mise à jour</span></h2>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">2. Ajout hosts VIP node-sql</span></h2>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">echo "192.168.1.110 node-sql" &gt;&gt; /etc/hosts</span></pre>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">ping -c 2 node-sql</span></pre>
<p><img loading="lazy" decoding="async" width="644" height="128" class="wp-image-7992" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-2.png 644w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-2-300x60.png 300w" sizes="auto, (max-width: 644px) 100vw, 644px" /></p>
<h2><span style="color: #000000;">3. Désactiver SELinux</span></h2>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-csql ~]# <span style="color: #ff0000;">sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config</span></pre>
<h2><span style="color: #000000;">4. Synchroniser DateTime sur le fuseau de PARIS</span></h2>
<pre>[root@node-csql ~]#<span style="color: #ff0000;"> timedatectl set-timezone Europe/Paris</span></pre>
<h2><span style="color: #000000;">5. Installation client PostgreSQL</span></h2>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">dnf -y install postgresql.x86_64</span></pre>
<h2><span style="color: #000000;">6. Requête SQL sur Serveur « Write » port 5000</span></h2>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Qui est serveur «&nbsp;Master&nbsp;» sur le cluster</span></span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">echo "node-sql:<strong>5000</strong>:<strong>chris2023</strong>:<strong>chris</strong>:<strong>chris2023</strong>" &gt;&gt; ~/.pgpass</span>
[root@node-csql ~]# <span style="color: #ff0000;">chmod 0600 ~/.pgpass</span></pre>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-sql</strong> -p <strong>5000</strong> -d <strong>chris2023</strong> -t -c "select inet_server_addr()"</span>
<strong><span style="color: #ff0000;"><em>192.168.1.104</em></span></strong></pre>
<p><strong>Ici le serveur «&nbsp;Master&nbsp;» est le node-psql02 (192.168.1.104)</strong></p>
<h4><span style="text-decoration: underline; color: #000000;">Création d’une base «&nbsp;betty&nbsp;» via node-psql02</span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-sql </strong>-p <strong>5000</strong> -d <strong>chris2023</strong> -t -c "CREATE DATABASE betty"</span>
<span style="color: #ff0000;"><em>CREATE DATABASE</em></span></pre>
<p><img loading="lazy" decoding="async" width="871" height="131" class="wp-image-7993" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-3.png 871w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-3-300x45.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-3-768x116.png 768w" sizes="auto, (max-width: 871px) 100vw, 871px" /></p>
<h4><span style="text-decoration: underline; color: #000000;">Création utilisateur «&nbsp;bettyboop&nbsp;» via node-psql02</span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-sql</strong> -p <strong>5000</strong> -d <strong>chris2023</strong> -t -c "CREATE USER bettyboop WITH PASSWORD 'betty2023'"</span>
<span style="color: #ff0000;"><em>CREATE ROLE</em></span></pre>
<p><img loading="lazy" decoding="async" width="1006" height="70" class="wp-image-7994" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-4.png 1006w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-4-300x21.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-4-768x53.png 768w" sizes="auto, (max-width: 1006px) 100vw, 1006px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Liste des bases sur le node-psql02</span></span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h node-sql -p <strong>5000</strong> -d <strong>chris2023</strong> -t -c "\l"</span></pre>
<p><img loading="lazy" decoding="async" width="894" height="158" class="wp-image-7995" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-5.png 894w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-5-300x53.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-5-768x136.png 768w" sizes="auto, (max-width: 894px) 100vw, 894px" /></p>
<h4><span style="text-decoration: underline; color: #000000;">Liste des utilisateurs sur le node-psql02</span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h node-sql -p <strong>5000</strong> -d <strong>chris2023</strong> -t -c "\du"</span></pre>
<p><img loading="lazy" decoding="async" width="831" height="122" class="wp-image-7996" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-6.png 831w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-6-300x44.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-6-768x113.png 768w" sizes="auto, (max-width: 831px) 100vw, 831px" /></p>
<h2><span style="color: #000000;">7. Requête SQL sur Serveur « Write » port 5001</span></h2>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Qui est serveur «&nbsp;Replicator&nbsp;» sur le cluster</span></span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">echo "node-sql:5001:chris2023:chris:chris2023" &gt;&gt; ~/.pgpass</span>
[root@node-csql ~]# <span style="color: #ff0000;">chmod 0600 ~/.pgpass</span></pre>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">for i in {1..4}; do psql -U chris -h node-sql -p <strong>5001</strong> -d <strong>chris2023</strong> -t -c "select inet_server_addr()" ; done</span></pre>
<p><img loading="lazy" decoding="async" width="1043" height="131" class="wp-image-7997" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-7.png 1043w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-7-300x38.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-7-1024x129.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-7-768x96.png 768w" sizes="auto, (max-width: 1043px) 100vw, 1043px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Création d’une base «&nbsp;betty&nbsp;» via les nodes de réplication (READ)</span></span></h4>
<pre>[root@node-csql ~]#<span style="color: #ff0000;"> psql -U chris -h <strong>node-sql</strong> -p <strong>5001</strong> -d <strong>chris2023</strong> -t -c "CREATE DATABASE betty01"</span></pre>
<p><img loading="lazy" decoding="async" width="854" height="69" class="wp-image-7998" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-8.png 854w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-8-300x24.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-8-768x62.png 768w" sizes="auto, (max-width: 854px) 100vw, 854px" /></p>
<p>Le message est tout à fait normal, nous sommes dans un contexte de réplication et donc en mode « <strong>Lecture&nbsp;</strong>»</p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Liste des bases sur les nodes de réplication (READ)</span></span></h4>
<pre>[root@node-csql ~]# <span style="color: #ff0000;">psql -U chris -h <strong>node-sql</strong> -p <strong>5001</strong> -d <strong>chris2023</strong> -t -c "\l"</span></pre>
<p><img loading="lazy" decoding="async" width="872" height="131" class="wp-image-7999" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-9.png 872w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-9-300x45.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-9-768x115.png 768w" sizes="auto, (max-width: 872px) 100vw, 872px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Liste des utilisateurs sur les nodes de réplication (READ)</span></span></h4>
<pre>[root@node-csql ~]#<span style="color: #ff0000;"> psql -U chris -h <strong>node-sql</strong> -p <strong>5001</strong> -d <strong>chris2023</strong> -t -c "\du"</span></pre>
<p><img loading="lazy" decoding="async" width="845" height="135" class="wp-image-8000" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-10.png 845w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-10-300x48.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7990-10-768x123.png 768w" sizes="auto, (max-width: 845px) 100vw, 845px" /></p>
<p>Views: 1</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-4-postgresql-ha-connexion-sql-via-client-linux/">MODOP – Partie 4 – PostgreSQL HA &#8211; Connexion sql via client Linux</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-partie-4-postgresql-ha-connexion-sql-via-client-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MODOP – Partie 6 &#8211; PostgreSQL HA – Grafana/Prometheus : Cluster PostgreSQL</title>
		<link>https://coffeebreak.en-images.info/modop-partie-6-postgresql-ha-grafana-prometheus-cluster-postgresql/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-6-postgresql-ha-grafana-prometheus-cluster-postgresql/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 09:56:56 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[Grafana]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[postgreSQL]]></category>
		<category><![CDATA[prometheus]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[Serveur]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=7884</guid>

					<description><![CDATA[<p>MODOP sur la mise en place du monitoring d'un cluster HA postgreSQL via le couple de service Grafana/Prometheus. Les « metrics » seront récupérés via un « exporter » sur le port 9187 et « scrappé » par le service Prometheus qui les traitera dans leurs temporalités. Le service web Grafana affichera les données sous formes de Widget facilitant la compréhension des données du Cluster postgreSQL</p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-6-postgresql-ha-grafana-prometheus-cluster-postgresql/">MODOP – Partie 6 &#8211; PostgreSQL HA – Grafana/Prometheus : Cluster PostgreSQL</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span style="color: #000000;">1. Machine grafana/Promteheus</span></h2>
<ul>
<li><strong>hostmachine : Node-gpsql</strong>
<ul>
<li>IP&nbsp;: 192.168.1.113/24</li>
<li>OS&nbsp;: Rocky Linux 8.5</li>
<li>RAM&nbsp;: 2Go</li>
<li>CPU&nbsp;: 1</li>
</ul>
</li>
</ul>
<h2><span style="color: #000000;">2. Mise à jour</span></h2>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">3. Ajout des hosts PosgreSQL</span></h2>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">echo "192.168.1.103 node-psql01" &gt;&gt; /etc/hosts</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">echo "192.168.1.104 node-psql02" &gt;&gt; /etc/hosts</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">echo "192.168.1.104 node-psql03" &gt;&gt; /etc/hosts</span>
[root@node-gpsql ~]#<span style="color: #ff0000;"> echo "192.168.1.113 node-pgsql" &gt;&gt; /etc/hosts</span></pre>
<h2><span style="color: #000000;">4. Désactiver SELinux</span></h2>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config</span></pre>
<h2><span style="color: #000000;">5. Synchroniser DateTime sur le fuseau de PARIS</span></h2>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">timedatectl set-timezone Europe/Paris</span></pre>
<h2><span style="color: #000000;">6. Installation Grafana</span></h2>
<h3><span style="color: #000000;">Installation repository</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">vi /etc/yum.repos.d/grafana.repo</span>

<span style="color: #ff0000;"><em>[grafana]</em></span>
<span style="color: #ff0000;"><em>name=grafana</em></span>
<span style="color: #ff0000;"><em>baseurl=https://packages.grafana.com/oss/rpm</em></span>
<span style="color: #ff0000;"><em>repo_gpgcheck=1</em></span>
<span style="color: #ff0000;"><em>enabled=1</em></span>
<span style="color: #ff0000;"><em>gpgcheck=1</em></span>
<span style="color: #ff0000;"><em>gpgkey=https://packages.grafana.com/gpg.key</em></span>
<span style="color: #ff0000;"><em>sslverify=1</em></span>
<span style="color: #ff0000;"><em>sslcacert=/etc/pki/tls/certs/ca-bundle.crt</em></span></pre>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h3><span style="color: #000000;">Installation grafana</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">dnf install grafana -y</span></pre>
<h3><span style="color: #000000;">Start les service grafana</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">systemctl start grafana-server</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">systemctl enable grafana-server</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">systemctl status grafana-server</span></pre>
<p><img loading="lazy" decoding="async" width="1660" height="308" class="wp-image-7886" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2.png 1660w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2-300x56.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2-1024x190.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2-768x142.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-2-1536x285.png 1536w" sizes="auto, (max-width: 1660px) 100vw, 1660px" /></p>
<h3><span style="color: #000000;">Règle Firewall</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">firewall-cmd --add-port=3000/tcp --permanent &amp;&amp; firewall-cmd --reload</span></pre>
<h3><span style="color: #000000;">Accès Grafana</span></h3>
<ul>
<li><a href="http://IP_grafana:3000">http://IP_grafana:3000</a></li>
</ul>
<p><img loading="lazy" decoding="async" width="478" height="438" class="wp-image-7887" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-3.png 478w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-3-300x275.png 300w" sizes="auto, (max-width: 478px) 100vw, 478px" /></p>
<ul>
<li>login&nbsp;: <span style="color: #000000;"><strong>admin</strong></span></li>
<li>password&nbsp;: <strong>admin</strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1544" height="466" class="wp-image-7888" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4.png 1544w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4-300x91.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4-1024x309.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4-768x232.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-4-1536x464.png 1536w" sizes="auto, (max-width: 1544px) 100vw, 1544px" /></p>
<h2><span style="color: #000000;">7. Installation prometheus</span></h2>
<h3><span style="color: #000000;">Création user</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">adduser -M -r -s /sbin/nologin prometheus</span></pre>
<h3><span style="color: #000000;">Création structure</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">mkdir /etc/prometheus</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">mkdir /var/lib/prometheus</span></pre>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">chown prometheus:prometheus /etc/prometheus</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">chown prometheus:prometheus /var/lib/prometheus</span></pre>
<h3><span style="color: #000000;">Récupération des sources</span></h3>
<ul>
<li><a href="https://github.com/prometheus/prometheus/releases/">https://github.com/prometheus/prometheus/releases/</a></li>
</ul>
<p><img loading="lazy" decoding="async" width="779" height="584" class="wp-image-7889" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-5.png 779w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-5-300x225.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-5-768x576.png 768w" sizes="auto, (max-width: 779px) 100vw, 779px" /></p>
<p><img loading="lazy" decoding="async" width="803" height="381" class="wp-image-7890" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-6.png 803w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-6-300x142.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-6-768x364.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-6-800x381.png 800w" sizes="auto, (max-width: 803px) 100vw, 803px" /></p>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">cd /tmp</span>
[root@node-gpsql tmp]# <span style="color: #ff0000;">dnf install wget tar -y</span>

[root@node-gpsql tmp]# <span style="color: #ff0000;">wget https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz</span>
[root@node-gsql tmp]# <span style="color: #ff0000;">tar xzvf prometheus-2.42.0.linux-amd64.tar.gz</span></pre>
<h3><span style="color: #000000;">Copier les binaires sur la structure Prometheus</span></h3>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">cp prometheus-2.42.0.linux-amd64/prometheus /usr/local/bin/</span>
[root@node-gsql tmp]#<span style="color: #ff0000;"> cp prometheus-2.42.0.linux-amd64/promtool /usr/local/bin/</span></pre>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">chown prometheus:prometheus /usr/local/bin/prometheus</span>
[root@node-gsql tmp]# <span style="color: #ff0000;">chown prometheus:prometheus /usr/local/bin/promtool</span></pre>
<h3><span style="color: #000000;">Copier les fichiers conf sur la structure Prometheus</span></h3>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">cp -r prometheus-2.42.0.linux-amd64/consoles /etc/prometheus</span>
[root@node-gpsql tmp]# <span style="color: #ff0000;">cp -r prometheus-2.42.0.linux-amd64/console_libraries /etc/prometheus</span></pre>
<pre>[root@node-gpsql tmp]#<span style="color: #ff0000;"> chown -R prometheus:prometheus /etc/prometheus/consoles</span>
[root@node-gpsql tmp]# <span style="color: #ff0000;">chown -R prometheus:prometheus /etc/prometheus/console_libraries</span></pre>
<h3><span style="color: #000000;">Création du service Prometheus</span></h3>
<pre>[root@node-gsql tmp]# <span style="color: #ff0000;">vi /etc/systemd/system/prometheus.service</span>

<span style="color: #ff0000;"><em>[Unit]</em></span>
<span style="color: #ff0000;"><em>Description=Prometheus</em></span>
<span style="color: #ff0000;"><em>Wants=network-online.target</em></span>
<span style="color: #ff0000;"><em>After=network-online.target</em></span>

<span style="color: #ff0000;"><em>[Service]</em></span>
<span style="color: #ff0000;"><em>User=prometheus</em></span>
<span style="color: #ff0000;"><em>Group=prometheus </em></span>
<span style="color: #ff0000;"><em>Type=simple</em></span>
<span style="color: #ff0000;"><em>ExecStart=/usr/local/bin/prometheus \</em></span>
<span style="color: #ff0000;"><em>--config.file /etc/prometheus/prometheus.yml \</em></span>
<span style="color: #ff0000;"><em>--storage.tsdb.path /var/lib/prometheus/ \</em></span>
<span style="color: #ff0000;"><em>--web.console.templates=/etc/prometheus/consoles \</em></span>
<span style="color: #ff0000;"><em>--web.console.libraries=/etc/prometheus/console_libraries</em></span>

<span style="color: #ff0000;"><em>[Install]</em></span>
<span style="color: #ff0000;"><em>WantedBy=multi-user.target</em></span></pre>
<pre>[root@node-gsql tmp]#<span style="color: #ff0000;"> systemctl daemon-reload</span></pre>
<h2><span style="color: #000000;">8. Installation exporter PostgreSQL (<span style="text-decoration: underline;">Sur les nodes postgreSQL</span>)</span></h2>
<h3><span style="color: #000000;">Installation prérequis (3 nœuds postgreSQL)</span></h3>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">yum -y install wget tar curl git</span></pre>
<h3><span style="color: #000000;">Récupération exporter postgreSQL (3 nœuds postgreSQL)</span></h3>
<ul>
<li><a href="https://github.com/prometheus-community/postgres_exporter">https://github.com/prometheus-community/postgres_exporter</a></li>
</ul>
<pre>[root@node-psql0x ~]# <span style="color: #ff0000;">cd /home</span>
[root@node-psql0x home]# <span style="color: #ff0000;">git clone <a style="color: #ff0000;" href="https://github.com/prometheus-community/postgres_exporter.git">https://github.com/prometheus-community/postgres_exporter.git</a></span></pre>
<h3><span style="color: #000000;">Installation exporter postgreSQL (3 nœuds postgreSQL)</span></h3>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Installation go</span></span></h4>
<ul>
<li><a href="https://go.dev/dl/">https://go.dev/dl/</a></li>
</ul>
<p><img loading="lazy" decoding="async" width="1140" height="460" class="wp-image-7891" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-7.png 1140w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-7-300x121.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-7-1024x413.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-7-768x310.png 768w" sizes="auto, (max-width: 1140px) 100vw, 1140px" /></p>
<pre>[root@node-psql0x home]# <span style="color: #ff0000;">wget <a style="color: #ff0000;" href="https://go.dev/dl/go1.20.2.linux-amd64.tar.gz">https://go.dev/dl/go1.20.2.linux-amd64.tar.gz</a></span>
[root@node-psql0x home]# <span style="color: #ff0000;">tar -zxvf go1.20.2.linux-amd64.tar.gz -C /usr/local/</span></pre>
<pre>[root@node-psql0x home]# <span style="color: #ff0000;">echo 'export GOROOT=/usr/local/go' | sudo tee -a /etc/profile</span>
<span style="color: #ff0000;"><em>export GOROOT=/usr/local/go</em></span>

[root@node-psql0x home]# <span style="color: #ff0000;">echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee -a /etc/profile</span>
<span style="color: #ff0000;"><em>export PATH=$PATH:/usr/local/go/bin</em></span>

[root@node-psql0x home]# <span style="color: #ff0000;">source /etc/profile</span></pre>
<pre>[root@node-psql0x home]# <span style="color: #ff0000;">go version</span>
<span style="color: #ff0000;"><em>go version go1.20.2 linux/amd64</em></span></pre>
<p><img loading="lazy" decoding="async" width="840" height="133" class="wp-image-7892" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-8.png 840w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-8-300x48.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-8-768x122.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px" /></p>
<h4><span style="text-decoration: underline; color: #000000;"><strong>Compiler «</strong>&nbsp;postgres_esporter<strong>&nbsp;»</strong></span></h4>
<pre>[root@node-psql0x home]# <span style="color: #ff0000;">cd postgres_exporter/</span>
[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">make build</span></pre>
<p><img loading="lazy" decoding="async" width="1491" height="638" class="wp-image-7893" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-9.png 1491w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-9-300x128.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-9-1024x438.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-9-768x329.png 768w" sizes="auto, (max-width: 1491px) 100vw, 1491px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Copier le binaire «&nbsp;postgres_esporter&nbsp;» sur /usr/local/bin</span></span></h4>
<pre>[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">ls -al |grep postgres_exporter</span></pre>
<p><img loading="lazy" decoding="async" width="818" height="96" class="wp-image-7894" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-10.png 818w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-10-300x35.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-10-768x90.png 768w" sizes="auto, (max-width: 818px) 100vw, 818px" /></p>
<p>[root@node-psql0x postgres_exporter]# cp postgres_exporter /usr/local/bin</p>
<h3><span style="color: #000000;">Configurer exporter postgreSQL (3 nœuds postgreSQL)</span></h3>
<ul>
<li>User&nbsp;: <strong>chris</strong></li>
<li>Password&nbsp;: <strong>chris2023</strong></li>
<li>Dbase&nbsp;: <strong>chris2023</strong></li>
</ul>
<pre>[root@node-psql0x postgres_exporter]#<span style="color: #ff0000;"> vi postgres_exporter.env</span>
<span style="color: #ff0000;"><em>DATA_SOURCE_NAME="postgresql://chris:chris2023@localhost:5432/chris2023?sslmode=disable"</em></span></pre>
<h3><span style="color: #000000;">Configurer le service exporter postgreSQL (3 nœuds postgreSQL)</span></h3>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Création utilisateur et droits postgres_exporter</span></span></h4>
<pre>[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">adduser -M -r -s /sbin/nologin postgres_exporter</span>
[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">chown -R postgres_exporter:postgres_exporter /home/postgres_exporter</span></pre>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Création du service exporter</span></span></h4>
<pre>[root@node-psql01 postgres_exporter]# <span style="color: #ff0000;">vi /etc/systemd/system/postgres_exporter.service</span>

<span style="color: #ff0000;"><em>[Unit]</em></span>
<span style="color: #ff0000;"><em>Description=Prometheus exporter for Postgresql</em></span>
<span style="color: #ff0000;"><em>Wants=network-online.target</em></span>
<span style="color: #ff0000;"><em>After=network-online.target</em></span>

<span style="color: #ff0000;"><em>[Service]</em></span>
<span style="color: #ff0000;"><em>User=</em><strong><em>postgres_exporter</em></strong></span>
<span style="color: #ff0000;"><em>Group=</em><strong><em>postgres_exporter</em></strong></span>
<span style="color: #ff0000;"><em>WorkingDirectory=</em><strong><em>/home/postgres_exporter</em></strong></span>
<span style="color: #ff0000;"><em>EnvironmentFile=</em><strong><em>/home/postgres_exporter/postgres_exporter.env</em></strong></span>
<span style="color: #ff0000;"><em>ExecStart=/usr/local/bin/postgres_exporter --web.listen-address=</em><strong><em>node-psql0x</em></strong><em>:</em><strong><em>9187</em></strong><em> --web.telemetry-path=/metrics</em></span>
<span style="color: #ff0000;"><em>Restart=always</em></span>

<span style="color: #ff0000;"><em>[Install]</em></span>
<span style="color: #ff0000;"><em>WantedBy=multi-user.target</em></span></pre>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Démarrage du service exporter</span></span></h4>
<pre>[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">systemctl daemon-reload</span>
[root@node-psql0x postgres_exporter]# <span style="color: #ff0000;">systemctl start postgres_exporter &amp;&amp; systemctl enable postgres_exporter</span></pre>
<pre>[root@node-psql01 postgres_exporter]# <span style="color: #ff0000;">systemctl status postgres_exporter</span></pre>
<p><img loading="lazy" decoding="async" width="1344" height="173" class="wp-image-7895" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-11.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-11.png 1344w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-11-300x39.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-11-1024x132.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-11-768x99.png 768w" sizes="auto, (max-width: 1344px) 100vw, 1344px" /></p>
<pre>[root@node-psql01 postgres_exporter]# <span style="color: #ff0000;">netstat -antp |grep 9187</span></pre>
<p><img loading="lazy" decoding="async" width="857" height="68" class="wp-image-7896" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-12.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-12.png 857w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-12-300x24.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-12-768x61.png 768w" sizes="auto, (max-width: 857px) 100vw, 857px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Ouverture port firewall pour l’exporter</span></span></h4>
<pre>[root@node-psql01 postgres_exporter]# <span style="color: #ff0000;">firewall-cmd --add-port=9187/tcp --permanent &amp;&amp; firewall-cmd --reload</span></pre>
<h4><span style="text-decoration: underline; color: #000000;">Check connexion aux metrics postgreSQL</span></h4>
<ul>
<li><strong>http://IP_node-psqlx:9187/metrics</strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1496" height="701" class="wp-image-7897" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-13.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-13.png 1496w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-13-300x141.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-13-1024x480.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-13-768x360.png 768w" sizes="auto, (max-width: 1496px) 100vw, 1496px" /></p>
<h2><span style="color: #000000;">9. Configurer prometheus ⬄ Cluster postgreSQL</span></h2>
<pre>[root@node-gpsql tmp]#<span style="color: #ff0000;">vi /etc/prometheus/prometheus.yml</span>

<span style="color: #ff0000;"><em>global:</em></span>
<span style="color: #ff0000;"><em>scrape_interval: 10s</em></span>
<span style="color: #ff0000;"><em>scrape_configs:</em></span>
<span style="color: #ff0000;"><em>- job_name: postgreSQL</em></span>
<span style="color: #ff0000;"><em>scrape_interval: 5s</em></span>
<span style="color: #ff0000;"><em>static_configs:</em></span>
<span style="color: #ff0000;"><em>- targets: ['node-psql01:9187']</em></span>
<span style="color: #ff0000;"><em>- targets: ['node-psql02:9187']</em></span>
<span style="color: #ff0000;"><em>- targets: ['node-psql03:9187']</em></span></pre>
<p><img loading="lazy" decoding="async" width="620" height="165" class="wp-image-7898" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-14.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-14.png 620w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-14-300x80.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></p>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">promtool check config /etc/prometheus/prometheus.yml</span></pre>
<p><img loading="lazy" decoding="async" width="736" height="86" class="wp-image-7899" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-15.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-15.png 736w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-15-300x35.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></p>
<h3><span style="color: #000000;">Démarrage du service Promotheus</span></h3>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">systemctl start prometheus &amp;&amp; systemctl enable prometheus</span></pre>
<pre>[root@node-gpsql tmp]# <span style="color: #ff0000;">systemctl status prometheus</span></pre>
<p><img loading="lazy" decoding="async" width="1642" height="306" class="wp-image-7900" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16.png 1642w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16-300x56.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16-1024x191.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16-768x143.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-16-1536x286.png 1536w" sizes="auto, (max-width: 1642px) 100vw, 1642px" /></p>
<h3><span style="color: #000000;">Régle firewall</span></h3>
<pre>[root@node-gpsql ~]# <span style="color: #ff0000;">firewall-cmd --zone=public --add-port=9090/tcp --permanent</span>
[root@node-gpsql ~]# <span style="color: #ff0000;">firewall-cmd --reload</span></pre>
<h3><span style="color: #000000;">Connexion au service Prometheus</span></h3>
<ul>
<li><strong><a href="http://IP_Prometheus:9090">http://IP_Prometheus:9090</a></strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1360" height="256" class="wp-image-7901" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-17.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-17.png 1360w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-17-300x56.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-17-1024x193.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-17-768x145.png 768w" sizes="auto, (max-width: 1360px) 100vw, 1360px" /><br />
«&nbsp;<strong>Status</strong>&nbsp;» puis «&nbsp;<strong>Targets</strong>&nbsp;»</p>
<p><img loading="lazy" decoding="async" width="1425" height="274" class="wp-image-7902" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-18.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-18.png 1425w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-18-300x58.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-18-1024x197.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-18-768x148.png 768w" sizes="auto, (max-width: 1425px) 100vw, 1425px" /><br />
Le Cluster postgreSQL est bien présent et «&nbsp;<strong>Up</strong>&nbsp;» sur Promotheus.</p>
<h2><span style="color: #000000;">10. Interfacer prometheus / Grafana</span></h2>
<ul>
<li><strong><a href="http://IP_grafana:3000">http://IP_grafana:3000</a></strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1546" height="424" class="wp-image-7903" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19.png 1546w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19-300x82.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19-1024x281.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19-768x211.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-19-1536x421.png 1536w" sizes="auto, (max-width: 1546px) 100vw, 1546px" /><br />
«&nbsp;<strong>DATA SOURCES</strong>&nbsp;»</p>
<p><img loading="lazy" decoding="async" width="1362" height="305" class="wp-image-7904" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-20.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-20.png 1362w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-20-300x67.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-20-1024x229.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-20-768x172.png 768w" sizes="auto, (max-width: 1362px) 100vw, 1362px" /><br />
Choisir «&nbsp; <strong>Prometheus</strong>»</p>
<p><img loading="lazy" decoding="async" width="1013" height="170" class="wp-image-7905" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-21.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-21.png 1013w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-21-300x50.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-21-768x129.png 768w" sizes="auto, (max-width: 1013px) 100vw, 1013px" /><br />
Dans URL préciser l’adresse http de la base Prometheus.</p>
<h3><span style="color: #000000;">Ajouter un dashboard</span></h3>
<p><img loading="lazy" decoding="async" width="1276" height="390" class="wp-image-7906" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-22.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-22.png 1276w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-22-300x92.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-22-1024x313.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-22-768x235.png 768w" sizes="auto, (max-width: 1276px) 100vw, 1276px" /><br />
«&nbsp;<strong>DASHBOARD</strong>&nbsp;» puis «<strong>&nbsp;+ Import&nbsp;</strong>»</p>
<p><strong><a href="https://grafana.com/grafana/dashboards/?search=postgres">https://grafana.com/grafana/dashboards/?search=postgres</a></strong></p>
<ul>
<li>ID&nbsp;: 9628</li>
<li>ID&nbsp;: 455</li>
<li>ID&nbsp;: 3742</li>
<li>ID&nbsp;: 4164</li>
</ul>
<p>«<strong> Ajouter l’ID souhaité</strong> » puis «<strong> Load</strong> »</p>
<p><img loading="lazy" decoding="async" width="981" height="319" class="wp-image-7907" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-23.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-23.png 981w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-23-300x98.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-23-768x250.png 768w" sizes="auto, (max-width: 981px) 100vw, 981px" /><br />
«&nbsp;<strong>Import</strong>&nbsp;»</p>
<h3><span style="color: #000000;">Générer du trafic SQL/PostgreSQL</span></h3>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Prérequis</span></span></h4>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">dnf -y install postgresql python3-psycopg2 python3</span></pre>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">cd /home</span>
[root@node-gsql home]#<span style="color: #ff0000;"> echo "192.168.1.110 node-sql" &gt;&gt; /etc/hosts</span></pre>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Récupération du script</span></span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">curl -LO <a style="color: #ff0000;" href="https://raw.githubusercontent.com/jobinau/pgscripts/main/patroni/HAtester.py">https://raw.githubusercontent.com/jobinau/pgscripts/main/patroni/HAtester.py</a></span></pre>
<p><img loading="lazy" decoding="async" width="905" height="100" class="wp-image-7908" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-24.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-24.png 905w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-24-300x33.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-24-768x85.png 768w" sizes="auto, (max-width: 905px) 100vw, 905px" /></p>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">chmod -x HAtester.py</span></pre>
<h4><span style="color: #000000;">Configuration du script</span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">vi HAtester.py</span>

<em><span style="color: #ff0000;"># CONNECTION DETAILS</span></em>
<em><span style="color: #ff0000;">host = "node-sql"</span></em>
<em><span style="color: #ff0000;">dbname = "chris2023"</span></em>
<em><span style="color: #ff0000;">user = "chris"</span></em>
<em><span style="color: #ff0000;">password = "chris2023"</span></em></pre>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Prérequis du script</span></span></h4>
<pre>[root@node-gsql home]#<span style="color: #ff0000;"> psql -U chris -h node-sql -p 5000 -d chris2023 -t -c "CREATE TABLE HATEST (TM TIMESTAMP);"</span>

[root@node-gsql home]# <span style="color: #ff0000;">psql -U chris -h node-sql -p 5000 -d chris2023 -t -c "CREATE UNIQUE INDEX idx_hatext ON hatest (tm desc);"</span></pre>
<p><img loading="lazy" decoding="async" width="1099" height="113" class="wp-image-7909" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-25.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-25.png 1099w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-25-300x31.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-25-1024x105.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-25-768x79.png 768w" sizes="auto, (max-width: 1099px) 100vw, 1099px" /></p>
<h4><span style="text-decoration: underline; color: #000000;">Générer trafic «&nbsp;MASTER&nbsp;»</span></h4>
<pre>[root@node-gpsql home]# <span style="color: #ff0000;">./HAtester.py 5000</span></pre>
<p><img loading="lazy" decoding="async" width="747" height="196" class="wp-image-7910" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-26.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-26.png 747w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-26-300x79.png 300w" sizes="auto, (max-width: 747px) 100vw, 747px" /></p>
<h4><span style="text-decoration: underline; color: #000000;">Générer trafic «&nbsp;REPLICA&nbsp;»</span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">./HAtester.py 5001</span></pre>
<p><img loading="lazy" decoding="async" width="924" height="242" class="wp-image-7911" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-27.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-27.png 924w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-27-300x79.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-27-768x201.png 768w" sizes="auto, (max-width: 924px) 100vw, 924px" /></p>
<h3><span style="color: #000000;">Monitoring Grafana – Cluster postgreSQL</span></h3>
<p><img loading="lazy" decoding="async" width="1204" height="228" class="wp-image-7912" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-28.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-28.png 1204w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-28-300x57.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-28-1024x194.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-28-768x145.png 768w" sizes="auto, (max-width: 1204px) 100vw, 1204px" /><br />
Check des <span style="text-decoration: underline;">hosts monitorés</span></p>
<p><img loading="lazy" decoding="async" width="1420" height="213" class="wp-image-7913" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-29.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-29.png 1420w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-29-300x45.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-29-1024x154.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-29-768x115.png 768w" sizes="auto, (max-width: 1420px) 100vw, 1420px" /><br />
Check des <span style="text-decoration: underline;">bases monitorées</span></p>
<h4><span style="text-decoration: underline;"><strong>Sur 1 heures</strong></span></h4>
<p><img loading="lazy" decoding="async" width="1800" height="923" class="wp-image-7914" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30.png 1800w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30-300x154.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30-1024x525.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30-768x394.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-30-1536x788.png 1536w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /><br />
<strong>Node-sql01</strong></p>
<p><img loading="lazy" decoding="async" width="1784" height="921" class="wp-image-7915" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31.png 1784w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31-300x155.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31-1024x529.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31-768x396.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-31-1536x793.png 1536w" sizes="auto, (max-width: 1784px) 100vw, 1784px" /><br />
<strong>Node-sql02</strong></p>
<p><img loading="lazy" decoding="async" width="1783" height="908" class="wp-image-7916" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32.png 1783w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32-300x153.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32-1024x521.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32-768x391.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-32-1536x782.png 1536w" sizes="auto, (max-width: 1783px) 100vw, 1783px" /><br />
<strong>Node-sql03</strong></p>
<p><img loading="lazy" decoding="async" width="1794" height="911" class="wp-image-7917" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33.png 1794w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33-300x152.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33-1024x520.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33-768x390.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-33-1536x780.png 1536w" sizes="auto, (max-width: 1794px) 100vw, 1794px" /></p>
<p><img loading="lazy" decoding="async" width="1803" height="906" class="wp-image-7918" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34.png 1803w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34-300x151.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34-1024x515.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34-768x386.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-34-1536x772.png 1536w" sizes="auto, (max-width: 1803px) 100vw, 1803px" /><br />
<strong>Node-sql01</strong></p>
<p><img loading="lazy" decoding="async" width="1818" height="919" class="wp-image-7919" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35.png 1818w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35-300x152.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35-1024x518.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35-768x388.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-35-1536x776.png 1536w" sizes="auto, (max-width: 1818px) 100vw, 1818px" /><br />
<strong>Node-sql02</strong></p>
<p><img loading="lazy" decoding="async" width="1807" height="913" class="wp-image-7920" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36.png 1807w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36-300x152.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36-1024x517.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36-768x388.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-36-1536x776.png 1536w" sizes="auto, (max-width: 1807px) 100vw, 1807px" /><br />
<strong>Node-sql02</strong></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Sur 12heures</span></span></h4>
<p><img loading="lazy" decoding="async" width="1806" height="850" class="wp-image-7921" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37.png 1806w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37-300x141.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37-1024x482.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37-768x361.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-37-1536x723.png 1536w" sizes="auto, (max-width: 1806px) 100vw, 1806px" /></p>
<p><img loading="lazy" decoding="async" width="1796" height="677" class="wp-image-7922" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38.png 1796w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38-300x113.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38-1024x386.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38-768x289.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-38-1536x579.png 1536w" sizes="auto, (max-width: 1796px) 100vw, 1796px" /><br />
<strong>Node-psql01</strong></p>
<p><img loading="lazy" decoding="async" width="1801" height="845" class="wp-image-7923" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39.png 1801w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39-300x141.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39-1024x480.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39-768x360.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-39-1536x721.png 1536w" sizes="auto, (max-width: 1801px) 100vw, 1801px" /></p>
<p><img loading="lazy" decoding="async" width="1802" height="682" class="wp-image-7924" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40.png 1802w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40-300x114.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40-1024x388.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40-768x291.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-40-1536x581.png 1536w" sizes="auto, (max-width: 1802px) 100vw, 1802px" /><br />
<strong>Node-psql02</strong></p>
<p><img loading="lazy" decoding="async" width="1802" height="844" class="wp-image-7925" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41.png 1802w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41-300x141.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41-1024x480.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41-768x360.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-41-1536x719.png 1536w" sizes="auto, (max-width: 1802px) 100vw, 1802px" /></p>
<pre><img loading="lazy" decoding="async" width="1799" height="673" class="wp-image-7926" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42.png 1799w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42-300x112.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42-1024x383.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42-768x287.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7884-42-1536x575.png 1536w" sizes="auto, (max-width: 1799px) 100vw, 1799px" />
<strong>Node-psql03</strong></pre>
<p>Views: 3</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-6-postgresql-ha-grafana-prometheus-cluster-postgresql/">MODOP – Partie 6 &#8211; PostgreSQL HA – Grafana/Prometheus : Cluster PostgreSQL</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-partie-6-postgresql-ha-grafana-prometheus-cluster-postgresql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MODOP &#8211; Réplication MASTER – MASTER entre Deux bases Mysql</title>
		<link>https://coffeebreak.en-images.info/modop-replication-master-master-entre-deux-bases-mysql/</link>
					<comments>https://coffeebreak.en-images.info/modop-replication-master-master-entre-deux-bases-mysql/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 15:50:16 +0000</pubDate>
				<category><![CDATA[Debian Linux]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[Mysql]]></category>
		<guid isPermaLink="false">https://coffeebreak.en-images.info/?p=1074</guid>

					<description><![CDATA[<p>Mise en Place d'une réplication Master-Master entre deux bases de données MySQL Toute donnée arrivant sur une base sera répliqué sur la deuxième.</p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-replication-master-master-entre-deux-bases-mysql/">MODOP &#8211; Réplication MASTER – MASTER entre Deux bases Mysql</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Prérequis :</strong></p>
<ul>
<li>Serveur sql01.house.cpb  IP 192.168.1.62</li>
<li>Serveur sql02.house.cpb  IP 192.168.1.63</li>
</ul>
<p><strong>Dans le DNS :</strong></p>
<ul>
<li>sql.house.cpb. IN A 192.168.1.62</li>
<li>sql.house.cpb. IN A 192.168.1.63</li>
</ul>
<h4><span style="text-decoration: underline;"><strong>1° ) Installation Base de données/PhpMyadmin (ql01.house.cpb/sql02.house.cpb)</strong></span></h4>
<pre>root@sql01:/home/sysbreak# <span style="color: #ff0000;"><strong>apt-get install mysql-server mysql-client</strong></span>
root@sql01:/home/sysbreak# <strong><span style="color: #ff0000;">systemctl enable mariadb.service</span></strong>
root@sql01:/home/sysbreak#<span style="color: #ff0000;"><strong> systemctl start mariadb.service</strong></span></pre>
<p><strong>Configuration</strong></p>
<pre>root@sql01:/home/sysbreak# <strong><span style="color: #ff0000;">mysql_secure_installation</span></strong>

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): <span style="color: #ff0000;"><strong>« ENTER »</strong></span>
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] <span style="color: #ff0000;"><strong>yes</strong></span>
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]<span style="color: #ff0000;"><strong> y</strong></span>
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]<span style="color: #ff0000;"><strong> n</strong></span>
... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <span style="color: #ff0000;"><strong>n</strong></span>
... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <strong><span style="color: #ff0000;">y</span></strong>
... Success!
Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!</pre>
<p><strong>Installer PhpMyAdmin</strong></p>
<pre>root@sql01:/etc# <strong><span style="color: #ff0000;">apt install phpmyadmin</span></strong></pre>
<p><img loading="lazy" decoding="async" width="855" height="241" class="wp-image-1076" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-209.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-209.png 855w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-209-300x85.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-209-768x216.png 768w" sizes="auto, (max-width: 855px) 100vw, 855px" /><br />
« apache2 »</p>
<p><img loading="lazy" decoding="async" width="1467" height="285" class="wp-image-1078" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-210.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-210.png 1467w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-210-300x58.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-210-1024x199.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-210-768x149.png 768w" sizes="auto, (max-width: 1467px) 100vw, 1467px" /><br />
« oui »</p>
<p><img loading="lazy" decoding="async" width="673" height="216" class="wp-image-1079" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-211.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-211.png 673w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-211-300x96.png 300w" sizes="auto, (max-width: 673px) 100vw, 673px" /><br />
« Taper un mot de passe »</p>
<p><img loading="lazy" decoding="async" width="439" height="219" class="wp-image-1081" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-212.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-212.png 439w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-212-300x150.png 300w" sizes="auto, (max-width: 439px) 100vw, 439px" /><br />
« Confirmer le mot de passe »</p>
<p>Régler le Souci suivant :<br />
<img loading="lazy" decoding="async" width="415" height="452" class="wp-image-1084" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-213.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-213.png 415w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-213-275x300.png 275w" sizes="auto, (max-width: 415px) 100vw, 415px" /></p>
<pre>root@sql01:/etc/apache2# <span style="color: #ff0000;"><strong>mysql --user=root mysql</strong></span>
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mysql]&gt;<strong><span style="color: #ff0000;"> use mysql;</span></strong>
Database changed
MariaDB [mysql]&gt; <strong><span style="color: #ff0000;">update user set plugin='' where User='root';</span></strong>
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [mysql]&gt; <strong><span style="color: #ff0000;">flush privileges;</span></strong>
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]&gt;<strong><span style="color: #ff0000;"> exit;</span></strong></pre>
<h4><span style="text-decoration: underline;"><strong>2°) Modifier les Fichier Systèmes my.cnf pour les Deux Servers SQL01 et SQL02</strong></span></h4>
<p><span style="text-decoration: underline;"><strong>Pour le Serveur SQL01</strong></span></p>
<pre>chris@sql01:/etc/mysql$<span style="color: #ff0000;"><strong> vi my.cnf</strong></span>
Ajouter les Lignes Suivantes
<span style="color: #ff0000;"><em>[mysqld]</em></span>
<span style="color: #ff0000;"><em>server_id = 1</em></span>
<span style="color: #ff0000;"><em>log_bin = /var/log/mysql/mysql-bin.log</em></span>
<span style="color: #ff0000;"><em>log_bin_index = /var/log/mysql/mysql-bin.log.index</em></span>
<span style="color: #ff0000;"><em>relay_log = /var/log/mysql/mysql-relay-bin</em></span>
<span style="color: #ff0000;"><em>relay_log_index = /var/log/mysql/mysql-relay-bin.index</em></span>
<span style="color: #ff0000;"><em>expire_logs_days = 10</em></span>
<span style="color: #ff0000;"><em>max_binlog_size = 100M</em></span>
<span style="color: #ff0000;"><em>log_slave_updates = 1</em></span>
<span style="color: #ff0000;"><em>auto-increment-increment = 2</em></span>
<span style="color: #ff0000;"><em>auto-increment-offset = 1</em></span></pre>
<p><strong>éditer le fichier 50-server.conf</strong></p>
<pre>chris@sql01:/etc/mysql$ <strong><span style="color: #ff0000;">vi ./mariadb.conf.d/50-server.cnf</span></strong>
<span style="color: #ff0000;"><em>Modifier la bind-address</em></span>
<span style="color: #ff0000;"><em>bind-address = 192.168.1.62</em></span> (Adresse du Serveur SQL01)</pre>
<p><strong>Redémarrer le serveur de base de données.</strong></p>
<p><strong><span style="text-decoration: underline;">Pour le Serveur SQL02</span></strong></p>
<pre>chris@sql02:/etc/mysql$<strong><span style="color: #ff0000;"> vi my.cnf</span></strong></pre>
<pre>#Ajouter les Lignes Suivantes
<span style="color: #ff0000;"><em>[mysqld]</em></span>
<span style="color: #ff0000;"><em>server_id = 2</em></span>
<span style="color: #ff0000;"><em>log_bin = /var/log/mysql/mysql-bin.log</em></span>
<span style="color: #ff0000;"><em>log_bin_index = /var/log/mysql/mysql-bin.log.index</em></span>
<span style="color: #ff0000;"><em>relay_log = /var/log/mysql/mysql-relay-bin</em></span>
<span style="color: #ff0000;"><em>relay_log_index = /var/log/mysql/mysql-relay-bin.index</em></span>
<span style="color: #ff0000;"><em>expire_logs_days = 10</em></span>
<span style="color: #ff0000;"><em>max_binlog_size = 100M</em></span>
<span style="color: #ff0000;"><em>log_slave_updates = 1</em></span>
<span style="color: #ff0000;"><em>auto-increment-increment = 2</em></span>
<span style="color: #ff0000;"><em>auto-increment-offset = 2</em></span></pre>
<p><strong>éditer le fichier 50-server.conf</strong></p>
<pre>chris@sql02:/etc/mysql$ <strong><span style="color: #ff0000;">vi ./mariadb.conf.d/50-server.cnf</span></strong>
<span style="color: #ff0000;"><em>Modifier la bind-address</em></span>
<span style="color: #ff0000;"><em>bind-address = 192.168.1.63</em></span> (Adresse du Serveur SQL02)</pre>
<p><strong>Redémarrer le serveur de base de données.</strong><br />
Vérifier que les deux server SQL01 et SQL02 écoute sur leurs adresses IP et non Localhost</p>
<p><img loading="lazy" decoding="async" width="627" height="205" class="wp-image-1086" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-214.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-214.png 627w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-214-300x98.png 300w" sizes="auto, (max-width: 627px) 100vw, 627px" /></p>
<h4><span style="text-decoration: underline;"><strong>3°) Création du compte ‘replication’ pour la réplication (à faire sur les deux bases)</strong></span></h4>
<p><span style="text-decoration: underline;"><strong>Sur Sql01</strong></span></p>
<p><strong>On va créer un compte user ‘replication’ avec l’IP de SQL02 (192.168.1.63)</strong><br />
<span style="color: #ff0000;"><em>GRANT REPLICATION SLAVE ON *.* TO &lsquo;replication&rsquo;@&rsquo;192.168.1.63&rsquo; IDENTIFIED BY &lsquo;replication@2019&rsquo;;</em></span></p>
<pre>root@sql01:/etc# <strong><span style="color: #ff0000;">mysql -u root –p</span></strong>
Enter password: <span style="color: #ff0000;"><strong>« PASWORD »</strong></span>

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt;<strong><span style="color: #ff0000;"> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.63' IDENTIFIED BY 'replication@2019';</span></strong>
Query OK, 0 rows affected (0.00 sec)</pre>
<p><span style="text-decoration: underline;"><strong>Sur Sql02</strong></span></p>
<p><strong>On va créer un compte user ‘replication’ avec l’IP de SQL01 (192.168.1.62)</strong><br />
<span style="color: #ff0000;"><em>GRANT REPLICATION SLAVE ON *.* TO &lsquo;replication&rsquo;@&rsquo;192.168.1.62&rsquo; IDENTIFIED BY &lsquo;replication@2019&rsquo;;</em></span></p>
<pre>root@sql01:/etc# <strong><span style="color: #ff0000;">mysql -u root –p</span></strong>
Enter password: <span style="color: #ff0000;"><strong>« PASWORD »</strong></span>

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt; <strong><span style="color: #ff0000;">GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.62' IDENTIFIED BY 'replication@2019';</span></strong>
Query OK, 0 rows affected (0.00 sec)</pre>
<p>Faire un test Croisé sur les deux bases afin de vérifier que les deux bases puissent se connecter entre elles via le compte ‘replication’</p>
<p>Ex : on est sur sql02 et on se connecte sur ma base SQL01 avec le compte ‘replication’*’192.168.1 .62’</p>
<p><img loading="lazy" decoding="async" width="999" height="192" class="wp-image-1087" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-215.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-215.png 999w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-215-300x58.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-215-768x148.png 768w" sizes="auto, (max-width: 999px) 100vw, 999px" /></p>
<h4><span style="text-decoration: underline;"><strong>4°) Réaliser la Réplication Master – Master entre les Deux bases</strong></span></h4>
<p><span style="text-decoration: underline;"><strong>MASTER SQL02</strong></span></p>
<p><strong>Sur SQL01 Récupérer le Status MASTER</strong></p>
<pre>root@sql01:/etc/mysql# <strong><span style="color: #ff0000;">mysql -u root -p</span></strong>
Enter password: <span style="color: #ff0000;"><strong>« PASWORD »</strong></span>
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>SHOW MASTER STATUS;</strong></span>
<em>+------------------+----------+--------------+------------------+</em>
<em>| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |</em>
<em>+------------------+----------+--------------+------------------+</em>
<em>| <span style="color: #339966;"><strong>mysql-bin.000004</strong></span> | <span style="color: #800080;"><strong>1045</strong> </span>| | |</em>
<em>+------------------+----------+--------------+------------------+</em>
<em>1 row in set (0.00 sec)</em>
MariaDB [(none)]&gt;</pre>
<p><strong>Sur SQL02 intégrer le status MASTER SQL01</strong><br />
A passer dans la requête sur SQL02 ci-dessous</p>
<ul>
<li>Mot de passe réplication de SQLO1</li>
<li>IP de SQL01</li>
<li>Master_log_file de SQL01 (ci-dessus)</li>
<li>Master_log_pos de SQL01 (ci-dessus)</li>
</ul>
<pre>root@sql02:/etc/mysql/mariadb.conf.d# <strong><span style="color: #ff0000;">mysql -u root -p</span></strong>
Enter password: <span style="color: #ff0000;"><strong>« PASWORD »</strong></span>

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>STOP SLAVE;</strong></span>
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>CHANGE MASTER TO master_host='192.168.1.62' , master_port=3306, master_user='replication' , master_password='replication@2019',master_log_file='<span style="color: #339966;">mysql-bin.000004</span>',master_log_pos=<span style="color: #800080;">1045</span>;</strong></span>
Query OK, 0 rows affected (0.05 sec)

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>START SLAVE;</strong></span>
Query OK, 0 rows affected (0.00 sec)</pre>
<p><span style="text-decoration: underline;"><strong>MASTER SQL01</strong></span><br />
Sur SQL02 Récupérer le Status MASTER</p>
<pre>root@sql02:/etc/mysql# <strong><span style="color: #ff0000;">mysql -u root -p</span></strong>
Enter password:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>SHOW MASTER STATUS;</strong></span>
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
|<span style="color: #339966;"><strong> mysql-bin.000002</strong></span> |<span style="color: #800080;"><strong> 1045</strong></span> | | |
<span style="font-size: inherit;"><em>+------------------+----------+--------------+------------------+</em></span></pre>
<p><span style="font-size: inherit;">A passer dans la requête sur SQL01 ci-dessous</span>1 row in set (0.00 sec)<br />
MariaDB [(none)]&gt;<br />
Sur SQL01 intégrer le status MASTER SQL02</p>
<ul>
<li>Mot de passe réplication de SQL02</li>
<li>IP de SQL02</li>
<li>Master_log_file de SQL02 (ci-dessus)</li>
<li>Master_log_pos de SQL02 (ci-dessus)</li>
</ul>
<pre>root@sql01:/etc/mysql/mariadb.conf.d# <span style="color: #ff0000;"><strong>mysql -u root -p</strong></span>
Enter password:<span style="color: #ff0000;"><strong>« PASWORD »</strong></span>

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>STOP SLAVE;</strong></span>
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]&gt; <strong><span style="color: #ff0000;">CHANGE MASTER TO master_host='192.168.1.63' , master_port=3306, master_user='replication' , master_password='replication@2019',master_log_file='</span><span style="color: #339966;">mysql-bin.000002</span><span style="color: #ff0000;">',master_log_pos=</span><span style="color: #800080;">1045</span>;</strong>
Query OK, 0 rows affected (0.05 sec)

MariaDB [(none)]&gt;<span style="color: #ff0000;"> <strong>START SLAVE;</strong></span>
Query OK, 0 rows affected (0.00 sec)</pre>
<p><span style="text-decoration: underline;"><strong>5°) Test de la Réplication &#8211; Création BASE et TABLE</strong></span></p>
<p>Créer une Table sur SQL01 cela devrait créer la même table sur SQL02</p>
<p><strong>Sur SQL01</strong></p>
<pre>MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>create database chris;</strong></span>
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]&gt; <strong><span style="color: #ff0000;">create table chris.flowers (`id` varchar(10));</span></strong>
Query OK, 0 rows affected (0.02 sec)</pre>
<p><strong>Sur SQL02</strong></p>
<pre>MariaDB [(none)]&gt;<strong><span style="color: #ff0000;"> show tables in chris;</span></strong>
<em>+-----------------+</em>
<em>| Tables_in_chris |</em>
<em>+-----------------+</em>
<em>| flowers |</em>
<em>+-----------------+</em>
<em>1 row in set (0.00 sec)</em></pre>
<p><strong><em>La table se retrouve à présen</em>t aussi sur SQL02.</strong></p>
<h4><span style="text-decoration: underline;"><strong>6°) Test suppession TABLE &#8211; Création BASE et TABLE</strong></span></h4>
<p>Supprimer la table ‘chris.flowers’ sur SQL02 er vérifions la suppression sur SQL01.</p>
<p><strong>Sur SQL02</strong></p>
<pre>MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>drop table chris.flowers;</strong></span>
Query OK, 0 rows affected (0.01 sec)

Sur SQL01
MariaDB [(none)]&gt; <span style="color: #ff0000;"><strong>show tables in chris;</strong></span>
<strong><span style="color: #ff0000;">Empty set (0.00 sec)</span></strong></pre>
<p>La table « chris » est vide donc la réplication fonctionne.</p>
<h4><span style="text-decoration: underline;"><strong>7°) Affichage dans PhpMyAdmin</strong></span></h4>
<p><strong>Affichage PhpMyadmin SQL01</strong><br />
<img loading="lazy" decoding="async" width="1120" height="500" class="wp-image-1089" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-216.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-216.png 1120w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-216-300x134.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-216-1024x457.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-216-768x343.png 768w" sizes="auto, (max-width: 1120px) 100vw, 1120px" /></p>
<p><strong>Affichage PhpMyadmin SQL02</strong><br />
<img loading="lazy" decoding="async" width="1031" height="467" class="wp-image-1092" src="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-217.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-217.png 1031w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-217-300x136.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-217-1024x464.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2021/06/word-image-217-768x348.png 768w" sizes="auto, (max-width: 1031px) 100vw, 1031px" /></p>
<p>Views: 12</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-replication-master-master-entre-deux-bases-mysql/">MODOP &#8211; Réplication MASTER – MASTER entre Deux bases Mysql</a> est apparu en premier sur <a href="https://coffeebreak.en-images.info">CoffeeBreak Info</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://coffeebreak.en-images.info/modop-replication-master-master-entre-deux-bases-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
