<?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 Cluster HA PostgreSQL - CoffeeBreak Info</title>
	<atom:link href="https://coffeebreak.en-images.info/category/systeme-linux/redhat-centos-linux/cluster-ha-postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>https://coffeebreak.en-images.info/category/systeme-linux/redhat-centos-linux/cluster-ha-postgresql/</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 Cluster HA PostgreSQL - CoffeeBreak Info</title>
	<link>https://coffeebreak.en-images.info/category/systeme-linux/redhat-centos-linux/cluster-ha-postgresql/</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 5 &#8211; PostgreSQL HA – Grafana/Prometheus : Cluster ETCD</title>
		<link>https://coffeebreak.en-images.info/modop-partie-5-postgresql-ha-grafana-prometheus-cluster-etcd/</link>
					<comments>https://coffeebreak.en-images.info/modop-partie-5-postgresql-ha-grafana-prometheus-cluster-etcd/#respond</comments>
		
		<dc:creator><![CDATA[chris]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 09:57:49 +0000</pubDate>
				<category><![CDATA[Cluster HA PostgreSQL]]></category>
		<category><![CDATA[Grafana]]></category>
		<category><![CDATA[OS Linux]]></category>
		<category><![CDATA[RedHat/Centos Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Cluster HA]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[Linux]]></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=7948</guid>

					<description><![CDATA[<p>MODOP sur la mise en place du monitoring d'un cluster HA ETCD via le couple de service Grafana/Prometheus. Les « metrics » seront récupérés directement auprès des nœuds ETCD sur le port 2379 et « scrappé » par le service Prometheus qui les traitera dans leurs temporalités. Dans le cas présent, nous n’avons pas besoin d’un « exporter ».<br />
Pour afficher les données de la base Prometheus , et donc du cluster ETCD ,  nous utiliserons le service Grafana pour les afficher aux formats « Widget »</p>
<p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-5-postgresql-ha-grafana-prometheus-cluster-etcd/">MODOP – Partie 5 &#8211; PostgreSQL HA – Grafana/Prometheus : 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;">1. Machine grafana/Promteheus</span></h2>
<ul>
<li><strong>hostname : Node-gsql01</strong>
<ul>
<li>IP&nbsp;: 192.168.1.112/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-gsql ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<h2><span style="color: #000000;">3. Ajout des hosts ETCD</span></h2>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">echo "192.168.1.100 node-esql01" &gt;&gt; /etc/hosts</span>
[root@node-gsql ~]# <span style="color: #ff0000;">echo "192.168.1.101 node-esql02" &gt;&gt; /etc/hosts</span>
[root@node-gsql ~]#<span style="color: #ff0000;"> echo "192.168.1.102 node-esql03" &gt;&gt; /etc/hosts</span>
[root@node-gsql ~]#<span style="color: #ff0000;"> echo "192.168.1.112 node-gsql" &gt;&gt; /etc/hosts</span></pre>
<h2><span style="color: #000000;">4. Désactiver SELinux</span></h2>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">setenforce 0</span>
[root@node-gsql ~]# <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-gsql ~]# <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-gsql ~]# <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-gsql ~]# <span style="color: #ff0000;">dnf update -y</span></pre>
<p><img loading="lazy" decoding="async" width="1636" height="148" class="wp-image-7950" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2.png 1636w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2-300x27.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2-1024x93.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2-768x69.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-2-1536x139.png 1536w" sizes="auto, (max-width: 1636px) 100vw, 1636px" /></p>
<h3><span style="color: #000000;">Installation grafana</span></h3>
<pre>[root@node-gsql ~]#<span style="color: #ff0000;"> dnf install grafana -y</span></pre>
<h3><span style="color: #000000;">Start les service grafana</span></h3>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">systemctl start grafana-server</span>
[root@node-gsql ~]# <span style="color: #ff0000;">systemctl enable grafana-server</span></pre>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">systemctl status grafana-server</span></pre>
<p><img loading="lazy" decoding="async" width="1675" height="326" class="wp-image-7951" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3.png 1675w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3-300x58.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3-1024x199.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3-768x149.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-3-1536x299.png 1536w" sizes="auto, (max-width: 1675px) 100vw, 1675px" /></p>
<h3><span style="color: #000000;">Règle Firewall</span></h3>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">firewall-cmd --add-port=3000/tcp --permanent</span>
[root@node-gsql ~]# <span style="color: #ff0000;">firewall-cmd --reload</span></pre>
<h3><span style="color: #000000;">Accès Grafana</span></h3>
<ul>
<li><strong><a href="http://IP_grafana:3000">http://IP_grafana:3000</a></strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="478" height="438" class="wp-image-7952" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-4.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-4.png 478w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-4-300x275.png 300w" sizes="auto, (max-width: 478px) 100vw, 478px" /></p>
<ul>
<li>login :<strong> admin</strong></li>
<li>password&nbsp;: <strong>admin</strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="1544" height="466" class="wp-image-7953" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5.png 1544w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5-300x91.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5-1024x309.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5-768x232.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-5-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-gsql ~]# <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-gsql ~]# <span style="color: #ff0000;">mkdir /etc/prometheus</span>
[root@node-gsql ~]# <span style="color: #ff0000;">mkdir /var/lib/prometheus</span></pre>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">chown prometheus:prometheus /etc/prometheus</span>
[root@node-gsql ~]# <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><strong><a href="https://github.com/prometheus/prometheus/releases/">https://github.com/prometheus/prometheus/releases/</a></strong></li>
</ul>
<p><img loading="lazy" decoding="async" width="779" height="584" class="wp-image-7954" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-6.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-6.png 779w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-6-300x225.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-6-768x576.png 768w" sizes="auto, (max-width: 779px) 100vw, 779px" /></p>
<p><img loading="lazy" decoding="async" width="803" height="381" class="wp-image-7955" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-7.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-7.png 803w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-7-300x142.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-7-768x364.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-7-800x381.png 800w" sizes="auto, (max-width: 803px) 100vw, 803px" /></p>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">cd /tmp</span>
[root@node-gsql tmp]# <span style="color: #ff0000;">dnf install wget tar</span></pre>
<pre>[root@node-gsql 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></pre>
<p><img loading="lazy" decoding="async" width="1662" height="320" class="wp-image-7956" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8.png 1662w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8-300x58.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8-1024x197.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8-768x148.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-8-1536x296.png 1536w" sizes="auto, (max-width: 1662px) 100vw, 1662px" /></p>
<pre>[root@node-gsql tmp]#<span style="color: #ff0000;"> tar xzvf prometheus-2.42.0.linux-amd64.tar.gz</span></pre>
<p><img loading="lazy" decoding="async" width="755" height="279" class="wp-image-7957" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-9.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-9.png 755w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-9-300x111.png 300w" sizes="auto, (max-width: 755px) 100vw, 755px" /></p>
<h3><span style="color: #000000;">Copier les binaires sur la structure Prometheus</span></h3>
<pre>[root@node-gsql 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-gsql 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-gsql tmp]# <span style="color: #ff0000;">cp -r prometheus-2.42.0.linux-amd64/consoles /etc/prometheus</span>
[root@node-gsql tmp]# <span style="color: #ff0000;">cp -r prometheus-2.42.0.linux-amd64/console_libraries /etc/prometheus</span></pre>
<pre>[root@node-gsql tmp]# <span style="color: #ff0000;">chown -R prometheus:prometheus /etc/prometheus/consoles</span>
[root@node-gsql 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. Configurer prometheus ⬄ Cluster ETCD</span></h2>
<pre>[root@node-gsql tmp]#<span style="color: #ff0000;">vi /etc/prometheus/prometheus.yml</span>

<em><span style="color: #ff0000;">global:</span></em>
<em><span style="color: #ff0000;">scrape_interval: 10s</span></em>
<em><span style="color: #ff0000;">scrape_configs:</span></em>
<em><span style="color: #ff0000;">- job_name: etcd</span></em>
<em><span style="color: #ff0000;">scrape_interval: 5s</span></em>
<em><span style="color: #ff0000;">static_configs:</span></em>
<em><span style="color: #ff0000;">- targets: ['node-esql01:2379']</span></em>
<em><span style="color: #ff0000;">- targets: ['node-esql02:2379']</span></em>
<em><span style="color: #ff0000;">- targets: ['node-esql03:2379']</span></em></pre>
<p><img loading="lazy" decoding="async" width="531" height="167" class="wp-image-7958" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-10.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-10.png 531w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-10-300x94.png 300w" sizes="auto, (max-width: 531px) 100vw, 531px" /></p>
<pre>[root@node-gsql tmp]# <span style="color: #ff0000;">promtool check config /etc/prometheus/prometheus.yml</span></pre>
<p><img loading="lazy" decoding="async" width="727" height="71" class="wp-image-7959" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-11.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-11.png 727w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-11-300x29.png 300w" sizes="auto, (max-width: 727px) 100vw, 727px" /></p>
<h3><span style="color: #000000;">Démarrage du service Promotheus</span></h3>
<pre>[root@node-gsql tmp]# <span style="color: #ff0000;">systemctl start prometheus &amp;&amp; systemctl enable prometheus</span></pre>
<pre>[root@node-gsql tmp]# <span style="color: #ff0000;">systemctl status prometheus</span></pre>
<p><img loading="lazy" decoding="async" width="1656" height="310" class="wp-image-7960" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12.png 1656w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12-300x56.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12-1024x192.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12-768x144.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-12-1536x288.png 1536w" sizes="auto, (max-width: 1656px) 100vw, 1656px" /></p>
<h3><span style="color: #000000;">Régle firewall</span></h3>
<pre>[root@node-gsql ~]# <span style="color: #ff0000;">firewall-cmd --zone=public --add-port=9090/tcp –permanent</span>
[root@node-gsql ~]# <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-7961" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-13.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-13.png 1360w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-13-300x56.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-13-1024x193.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-13-768x145.png 768w" sizes="auto, (max-width: 1360px) 100vw, 1360px" /><br />
«&nbsp;<strong>Status&nbsp;</strong>» puis «&nbsp;<strong>Targets&nbsp;</strong>»</p>
<p><img loading="lazy" decoding="async" width="1781" height="348" class="wp-image-7962" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14.png 1781w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14-300x59.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14-1024x200.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14-768x150.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-14-1536x300.png 1536w" sizes="auto, (max-width: 1781px) 100vw, 1781px" /><br />
Le Cluster ETCD est bien présent et «&nbsp;<strong>Up&nbsp;</strong>» sur Promotheus.</p>
<h2><span style="color: #000000;">9. 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-7963" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15.png 1546w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15-300x82.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15-1024x281.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15-768x211.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-15-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-7964" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-16.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-16.png 1362w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-16-300x67.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-16-1024x229.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-16-768x172.png 768w" sizes="auto, (max-width: 1362px) 100vw, 1362px" /><br />
Choisir «&nbsp; <span style="color: #000000;"><strong>Prometheus</strong> </span>»</p>
<p><img loading="lazy" decoding="async" width="1420" height="446" class="wp-image-7965" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-17.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-17.png 1420w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-17-300x94.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-17-1024x322.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-17-768x241.png 768w" sizes="auto, (max-width: 1420px) 100vw, 1420px" /></p>
<p>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-7966" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-18.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-18.png 1276w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-18-300x92.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-18-1024x313.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-18-768x235.png 768w" sizes="auto, (max-width: 1276px) 100vw, 1276px" /><br />
«&nbsp;<strong>DASHBOARD&nbsp;</strong>» puis «<strong>&nbsp;+ Import</strong>&nbsp;»</p>
<p><a href="https://grafana.com/grafana/dashboards/?search=etcd"><strong>https://grafana.com/grafana/dashboards/?search=etcd</strong></a></p>
<ul>
<li>ID: 9733</li>
<li>ID: 3070</li>
<li>ID: 12362</li>
<li>ID: 18233</li>
</ul>
<p><img loading="lazy" decoding="async" width="622" height="129" class="wp-image-7967" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-19.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-19.png 622w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-19-300x62.png 300w" sizes="auto, (max-width: 622px) 100vw, 622px" /><br />
« <strong>Ajouter l’ID souhaité</strong> » puis « <strong>Load</strong> »</p>
<p><img loading="lazy" decoding="async" width="1253" height="493" class="wp-image-7968" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-20.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-20.png 1253w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-20-300x118.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-20-1024x403.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-20-768x302.png 768w" sizes="auto, (max-width: 1253px) 100vw, 1253px" /><br />
«&nbsp;<strong>Import&nbsp;</strong>»</p>
<h3><span style="color: #000000;">Générer du trafic SQL/Etcd</span></h3>
<h4><span style="text-decoration: underline; color: #000000;">Prérequis</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; color: #000000;">Récupération du script</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-7969" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-21.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-21.png 905w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-21-300x33.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-21-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="text-decoration: underline; color: #000000;">Configuration du script</span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">vi HAtester.py</span>

<span style="color: #ff0000;"><em># CONNECTION DETAILS</em></span>
<span style="color: #ff0000;"><em>host = "node-sql"</em></span>
<span style="color: #ff0000;"><em>dbname = "chris2023"</em></span>
<span style="color: #ff0000;"><em>user = "chris"</em></span>
<span style="color: #ff0000;"><em>password = "chris2023"</em></span></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></pre>
<pre>[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-7970" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-22.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-22.png 1099w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-22-300x31.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-22-1024x105.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-22-768x79.png 768w" sizes="auto, (max-width: 1099px) 100vw, 1099px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Générer trafic Répliquât</span></span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">./HAtester.py 5001</span></pre>
<p><img loading="lazy" decoding="async" width="801" height="239" class="wp-image-7971" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-23.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-23.png 801w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-23-300x90.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-23-768x229.png 768w" sizes="auto, (max-width: 801px) 100vw, 801px" /></p>
<h4><span style="text-decoration: underline; color: #000000;"><span>Générer trafic Master</span></span></h4>
<pre>[root@node-gsql home]# <span style="color: #ff0000;">./HAtester.py 5000</span></pre>
<p><img loading="lazy" decoding="async" width="628" height="263" class="wp-image-7972" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-24.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-24.png 628w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-24-300x126.png 300w" sizes="auto, (max-width: 628px) 100vw, 628px" /></p>
<h3><span style="color: #000000;">Monitoring Grafana – Cluster ETCD</span></h3>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Sur 6 heures</span></span></h4>
<p><img loading="lazy" decoding="async" width="1800" height="946" class="wp-image-7973" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25.png 1800w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25-300x158.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25-1024x538.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25-768x404.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-25-1536x807.png 1536w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p>
<p><img loading="lazy" decoding="async" width="1782" height="881" class="wp-image-7974" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26.png 1782w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26-300x148.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26-1024x506.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26-768x380.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-26-1536x759.png 1536w" sizes="auto, (max-width: 1782px) 100vw, 1782px" /></p>
<h4><span style="text-decoration: underline; color: #000000;">Sur 24H</span></h4>
<p><img loading="lazy" decoding="async" width="1794" height="873" class="wp-image-7975" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27.png 1794w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27-300x146.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27-1024x498.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27-768x374.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-27-1536x747.png 1536w" sizes="auto, (max-width: 1794px) 100vw, 1794px" /></p>
<h4><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Sur 48H</span></span></h4>
<p><img loading="lazy" decoding="async" width="1776" height="929" class="wp-image-7976" src="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28.png" srcset="https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28.png 1776w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28-300x157.png 300w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28-1024x536.png 1024w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28-768x402.png 768w, https://coffeebreak.en-images.info/wp-content/uploads/2023/03/word-image-7948-28-1536x803.png 1536w" sizes="auto, (max-width: 1776px) 100vw, 1776px" /></p>
<p>Views: 2</p><p>L’article <a href="https://coffeebreak.en-images.info/modop-partie-5-postgresql-ha-grafana-prometheus-cluster-etcd/">MODOP – Partie 5 &#8211; PostgreSQL HA – Grafana/Prometheus : 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-5-postgresql-ha-grafana-prometheus-cluster-etcd/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>
	</channel>
</rss>
