{"id":33633,"date":"2025-11-05T09:40:58","date_gmt":"2025-11-05T06:40:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=33633"},"modified":"2025-11-05T09:40:58","modified_gmt":"2025-11-05T06:40:58","slug":"yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/","title":{"rendered":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde"},"content":{"rendered":"<p><body><\/p>\n<h2>Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn rekabet\u00e7i dijital d\u00fcnyas\u0131nda, uygulamalar\u0131n ve hizmetlerin kesintisiz \u00e7al\u0131\u015fmas\u0131 kritik \u00f6neme sahiptir. Herhangi bir kesinti, gelir kayb\u0131na, m\u00fc\u015fteri memnuniyetsizli\u011fine ve marka itibar\u0131n\u0131n zedelenmesine yol a\u00e7abilir. Bu nedenle, y\u00fcksek eri\u015filebilirlik (High Availability &#8211; HA) \u00e7\u00f6z\u00fcmleri, modern altyap\u0131lar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Bu teknik makale, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde, HAProxy y\u00fck dengeleyiciyi Corosync ve Pacemaker k\u00fcmeleme ara\u00e7lar\u0131 ile birle\u015ftirerek y\u00fcksek eri\u015filebilirlikli bir mimari olu\u015fturmay\u0131 ayr\u0131nt\u0131l\u0131 olarak ele alacakt\u0131r. Ayr\u0131ca, hizmetin kesintisiz olarak ba\u015fka bir d\u00fc\u011f\u00fcme ta\u015f\u0131nabilmesini sa\u011flayan &#8220;Ayr\u0131lm\u0131\u015f IP&#8221; (Reserved IP veya Floating IP) kavram\u0131n\u0131n nas\u0131l yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131 da a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<p>Ubuntu 14.04, bu makalenin yaz\u0131ld\u0131\u011f\u0131 tarihte destek s\u00fcresi dolmu\u015f eski bir s\u00fcr\u00fcm olsa da, belirtilen gereksinimler do\u011frultusunda bu platform \u00fczerindeki kurulum ad\u0131mlar\u0131 detayland\u0131r\u0131lacakt\u0131r. Temel prensipler ve bile\u015fenlerin \u00e7al\u0131\u015fma mant\u0131\u011f\u0131, daha yeni Linux da\u011f\u0131t\u0131mlar\u0131nda da benzerlik g\u00f6sterecektir.<\/p>\n<h3>Y\u00fcksek Eri\u015filebilirlik Bile\u015fenlerine Genel Bak\u0131\u015f<\/h3>\n<p>Y\u00fcksek eri\u015filebilirlik \u00e7\u00f6z\u00fcm\u00fc, genellikle birden fazla sunucunun (d\u00fc\u011f\u00fcm\u00fcn) bir araya gelerek tek bir hizmeti yedekli olarak sunmas\u0131 prensibine dayan\u0131r. Bu kurulumda kullanaca\u011f\u0131m\u0131z ana bile\u015fenler \u015funlard\u0131r:<\/p>\n<p>*   <strong>HAProxy:<\/strong> Y\u00fcksek performansl\u0131 bir TCP\/HTTP y\u00fck dengeleyici ve ters proxy sunucusudur. Gelen trafi\u011fi birden fazla arka u\u00e7 sunucusu aras\u0131nda da\u011f\u0131tarak performans\u0131 art\u0131r\u0131r ve tek bir hata noktas\u0131n\u0131 (Single Point of Failure &#8211; SPoF) ortadan kald\u0131rmaya yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Corosync:<\/strong> K\u00fcme d\u00fc\u011f\u00fcmleri aras\u0131nda g\u00fcvenilir mesajla\u015fma ve k\u00fcme durumu senkronizasyonu sa\u011flayan temel bir k\u00fcme ileti\u015fim katman\u0131d\u0131r. D\u00fc\u011f\u00fcmlerin birbirlerinin durumunu izlemesini ve k\u00fcme i\u00e7indeki de\u011fi\u015fiklikleri h\u0131zl\u0131ca alg\u0131lamas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Pacemaker:<\/strong> Corosync \u00fczerinde \u00e7al\u0131\u015fan, k\u00fcme kaynak y\u00f6neticisidir. Hangi kayna\u011f\u0131n (IP adresi, hizmet, dosya sistemi vb.) hangi d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler, kaynaklar\u0131n izlenmesini sa\u011flar ve bir d\u00fc\u011f\u00fcm ar\u0131zaland\u0131\u011f\u0131nda kaynaklar\u0131 otomatik olarak ba\u015fka bir sa\u011fl\u0131kl\u0131 d\u00fc\u011f\u00fcme ta\u015f\u0131r (failover).<br \/>\n*   <strong>Ayr\u0131lm\u0131\u015f IP (Reserved IP \/ Floating IP \/ Virtual IP):<\/strong> K\u00fcme i\u00e7indeki aktif d\u00fc\u011f\u00fcm \u00fczerinde bulunan ve d\u00fc\u011f\u00fcm ar\u0131zaland\u0131\u011f\u0131nda otomatik olarak yedek d\u00fc\u011f\u00fcme ge\u00e7en bir IP adresidir. Kullan\u0131c\u0131lar bu IP adresi \u00fczerinden hizmete eri\u015fir, b\u00f6ylece arka plandaki d\u00fc\u011f\u00fcm de\u011fi\u015fikliklerinden etkilenmezler.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu kurulum i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>\u0130ki Adet Ubuntu 14.04 Sunucusu:<\/strong> En az iki adet sunucuya ihtiyac\u0131m\u0131z olacak. Bunlara <code>haproxy-node1<\/code> ve <code>haproxy-node2<\/code> gibi isimler verelim.<br \/>\n*   <strong>Statik IP Adresleri:<\/strong> Her sunucunun statik bir IP adresine sahip olmas\u0131 gerekmektedir. \u00d6rne\u011fin:<br \/>\n    *   <code>haproxy-node1<\/code>: <code>192.168.1.101<\/code><br \/>\n    *   <code>haproxy-node2<\/code>: <code>192.168.1.102<\/code><br \/>\n    *   <strong>Ayr\u0131lm\u0131\u015f IP:<\/strong> <code>192.168.1.100<\/code> (Bu IP, aktif d\u00fc\u011f\u00fcm \u00fczerinde bulunacakt\u0131r.)<br \/>\n*   <strong>SSH Eri\u015fimi ve Sudo Yetkileri:<\/strong> Her iki sunucuya da SSH \u00fczerinden eri\u015fim ve <code>sudo<\/code> komutunu kullanma yetkisi olmal\u0131d\u0131r.<br \/>\n*   <strong>A\u011f Ba\u011flant\u0131s\u0131:<\/strong> Sunucular aras\u0131nda sorunsuz a\u011f ba\u011flant\u0131s\u0131 ve Corosync&#8217;in kullanaca\u011f\u0131 portlar\u0131n (varsay\u0131lan 5405\/UDP) a\u00e7\u0131k olmas\u0131 gerekmektedir.<br \/>\n*   <strong>Zaman Senkronizasyonu (NTP):<\/strong> K\u00fcme d\u00fc\u011f\u00fcmleri aras\u0131nda zaman senkronizasyonunun do\u011fru \u00e7al\u0131\u015fmas\u0131 kritik \u00f6neme sahiptir. NTP (Network Time Protocol) kurulmas\u0131 \u015fiddetle tavsiye edilir.<\/p>\n<h3>Ad\u0131m Ad\u0131m Kurulum ve Konfig\u00fcrasyon<\/h3>\n<h4>1. Sistem Haz\u0131rl\u0131\u011f\u0131<\/h4>\n<p>Her iki d\u00fc\u011f\u00fcmde de a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 uygulay\u0131n:<\/p>\n<h5>1.1. Sistem G\u00fcncellemesi ve Temel Ayarlar<\/h5>\n<p>Sistem paket listesini g\u00fcncelleyin ve y\u00fckl\u00fc paketleri y\u00fckseltin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<h5>1.2. Hostname Ayar\u0131<\/h5>\n<p>Her d\u00fc\u011f\u00fcme benzersiz bir hostname atay\u0131n. \u00d6rne\u011fin:<br \/>\n<strong>haproxy-node1 \u00fczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo hostname haproxy-node1\necho \"haproxy-node1\" | sudo tee \/etc\/hostname<\/code><\/pre>\n<p><strong>haproxy-node2 \u00fczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo hostname haproxy-node2\necho \"haproxy-node2\" | sudo tee \/etc\/hostname<\/code><\/pre>\n<p>De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in sunucular\u0131 yeniden ba\u015flatman\u0131z gerekebilir veya <code>sudo service hostname start<\/code> komutunu kullanabilirsiniz.<\/p>\n<h5>1.3. \/etc\/hosts Dosyas\u0131 Ayar\u0131<\/h5>\n<p>Her iki d\u00fc\u011f\u00fcmde de <code>\/etc\/hosts<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek d\u00fc\u011f\u00fcmlerin IP adreslerini ve hostname&#8217;lerini ekleyin. Bu, k\u00fcme ileti\u015fimi i\u00e7in kolayl\u0131k sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/hosts<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin (kendi IP adreslerinize g\u00f6re d\u00fczenleyin):<\/p>\n<pre><code class=\"language-\">127.0.0.1       localhost\n192.168.1.101   haproxy-node1\n192.168.1.102   haproxy-node2<\/code><\/pre>\n<h5>1.4. Firewall (G\u00fcvenlik Duvar\u0131) Ayarlar\u0131<\/h5>\n<p>E\u011fer bir g\u00fcvenlik duvar\u0131 (ufw gibi) kullan\u0131yorsan\u0131z, Corosync ve Pacemaker&#8217;\u0131n ihtiya\u00e7 duydu\u011fu portlar\u0131 a\u00e7man\u0131z gerekmektedir. Corosync varsay\u0131lan olarak 5405\/UDP portunu kullan\u0131r. Ayr\u0131ca, HAProxy&#8217;nin dinleyece\u011fi portlar\u0131 (\u00f6rne\u011fin 80\/TCP ve 443\/TCP) da a\u00e7mal\u0131s\u0131n\u0131z.<br \/>\nBasitlik ad\u0131na, test ortam\u0131nda g\u00fcvenlik duvar\u0131n\u0131 ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz (ancak \u00fcretim ortam\u0131nda bu \u00f6nerilmez):<\/p>\n<pre><code class=\"language-bash\">sudo ufw disable<\/code><\/pre>\n<p>\u00dcretim ortam\u0131 i\u00e7in gerekli portlar\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 5405\/udp\nsudo ufw allow 22\/tcp # SSH\nsudo ufw allow 80\/tcp # HAProxy HTTP\nsudo ufw allow 443\/tcp # HAProxy HTTPS\nsudo ufw enable<\/code><\/pre>\n<h5>1.5. NTP Kurulumu<\/h5>\n<p>Zaman senkronizasyonu i\u00e7in NTP istemcisini kurun ve yap\u0131land\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install ntp -y\nsudo service ntp restart<\/code><\/pre>\n<p>Her iki d\u00fc\u011f\u00fcmde de zaman\u0131n senkronize oldu\u011fundan emin olun.<\/p>\n<h4>2. Corosync ve Pacemaker Kurulumu<\/h4>\n<p>Her iki d\u00fc\u011f\u00fcmde de Corosync ve Pacemaker paketlerini kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install corosync pacemaker resource-agents -y<\/code><\/pre>\n<p><code>resource-agents<\/code> paketi, Pacemaker&#8217;\u0131n IP adresleri, dosya sistemleri ve hizmetler gibi \u00e7e\u015fitli kaynaklar\u0131 y\u00f6netmek i\u00e7in kulland\u0131\u011f\u0131 betikleri i\u00e7erir.<\/p>\n<h4>3. Corosync Konfig\u00fcrasyonu<\/h4>\n<p>Corosync&#8217;in ana yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/corosync\/corosync.conf<\/code>&#8216;tur. Bu dosya her iki d\u00fc\u011f\u00fcmde de tamamen ayn\u0131 olmal\u0131d\u0131r.<\/p>\n<h5>3.1. Corosync Yap\u0131land\u0131rma Dosyas\u0131n\u0131 Olu\u015fturma\/D\u00fczenleme<\/h5>\n<p>\u0130lk olarak, \u00f6rnek yap\u0131land\u0131rma dosyas\u0131n\u0131 kopyalayabilir veya mevcut dosyay\u0131 d\u00fczenleyebilirsiniz. Ubuntu 14.04&#8217;te genellikle <code>\/etc\/corosync\/corosync.conf<\/code> dosyas\u0131 varsay\u0131lan olarak bo\u015f veya minimaldir.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/corosync\/corosync.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya yap\u0131\u015ft\u0131r\u0131n. <code>bindnetaddr<\/code> k\u0131sm\u0131n\u0131 kendi a\u011f aral\u0131\u011f\u0131n\u0131za g\u00f6re ayarlay\u0131n (\u00f6rne\u011fin <code>192.168.1.0<\/code>).<\/p>\n<pre><code class=\"language-\">totem {\n    version: 2\n    secauth: on\n    cluster_name: haproxy_cluster\n    transport: udpu\n    interface {\n        ringnumber: 0\n        bindnetaddr: 192.168.1.0 # Kendi a\u011f aral\u0131\u011f\u0131n\u0131z\u0131 yaz\u0131n\n        mcastaddr: 226.94.1.1\n        mcastport: 5405\n    }\n    # \u0130ki d\u00fc\u011f\u00fcml\u00fc bir k\u00fcmede quorum sorunlar\u0131n\u0131 \u00f6nlemek i\u00e7in\n    # consensus timeout de\u011ferlerini art\u0131rmak faydal\u0131 olabilir.\n    # Bu de\u011ferler, d\u00fc\u011f\u00fcmlerin birbirlerini ne kadar s\u00fcreyle g\u00f6rmezse\n    # k\u00fcmeden ayr\u0131lm\u0131\u015f say\u0131laca\u011f\u0131n\u0131 belirler.\n    # Bu de\u011ferler varsay\u0131lan olarak yeterli olabilir, ancak a\u011f gecikmesi\n    # olan ortamlarda ayarlanmas\u0131 gerekebilir.\n    # knet_transport: sctp # E\u011fer udpu yerine sctp kullanmak isterseniz\n}\n\nnodelist {\n    node {\n        ring0_addr: 192.168.1.101 # haproxy-node1 IP adresi\n        nodeid: 1\n    }\n    node {\n        ring0_addr: 192.168.1.102 # haproxy-node2 IP adresi\n        nodeid: 2\n    }\n}\n\nquorum {\n    # \u0130ki d\u00fc\u011f\u00fcml\u00fc bir k\u00fcmede, split-brain senaryolar\u0131n\u0131 \u00f6nlemek i\u00e7in\n    # quorum'un nas\u0131l davranaca\u011f\u0131n\u0131 belirlemek \u00f6nemlidir.\n    # Varsay\u0131lan olarak, k\u00fcmenin yar\u0131s\u0131ndan fazlas\u0131 \u00e7al\u0131\u015fm\u0131yorsa\n    # k\u00fcme kaynaklar\u0131 durdurulur. \u0130ki d\u00fc\u011f\u00fcml\u00fc bir k\u00fcmede bu, bir d\u00fc\u011f\u00fcm\n    # \u00e7\u00f6kt\u00fc\u011f\u00fcnde di\u011ferinin de kaynaklar\u0131 durdurmas\u0131na neden olabilir.\n    # Bu nedenle, iki d\u00fc\u011f\u00fcml\u00fc k\u00fcmelerde no-quorum-policy=ignore ayar\u0131\n    # s\u0131kl\u0131kla kullan\u0131l\u0131r, ancak bunun riskleri vard\u0131r (split-brain).\n    # Pacemaker yap\u0131land\u0131rmas\u0131nda bunu daha detayl\u0131 ele alaca\u011f\u0131z.\n    provider: corosync_votequorum\n    # expected_votes: 2 # K\u00fcmedeki beklenen d\u00fc\u011f\u00fcm say\u0131s\u0131\n    # two_node: 1 # \u0130ki d\u00fc\u011f\u00fcml\u00fc k\u00fcme i\u00e7in \u00f6zel ayar\n}\n\nlogging {\n    fileline: off\n    to_stderr: no\n    to_syslog: yes\n    syslog_facility: daemon\n    debug: off\n    timestamp: on\n}<\/code><\/pre>\n<h5>3.2. Corosync Servisini Ba\u015flatma<\/h5>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydettikten sonra, Corosync servisini her iki d\u00fc\u011f\u00fcmde de ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service corosync start<\/code><\/pre>\n<h5>3.3. Corosync Durumunu Kontrol Etme<\/h5>\n<p>Corosync&#8217;in do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 ve d\u00fc\u011f\u00fcmlerin birbirini g\u00f6r\u00fcp g\u00f6rmedi\u011fini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo corosync-cfgtool -s<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>config_version<\/code> ve <code>members<\/code> gibi bilgileri g\u00f6rmelisiniz.<\/p>\n<pre><code class=\"language-bash\">sudo corosync-cmapctl | grep members<\/code><\/pre>\n<p>Bu komut, k\u00fcmedeki \u00fcye d\u00fc\u011f\u00fcmleri listelemelidir.<\/p>\n<h4>4. Pacemaker Konfig\u00fcrasyonu<\/h4>\n<p>Pacemaker, Corosync \u00fczerinde \u00e7al\u0131\u015f\u0131r ve k\u00fcme kaynaklar\u0131n\u0131 y\u00f6netir. Pacemaker yap\u0131land\u0131rmas\u0131 genellikle tek bir d\u00fc\u011f\u00fcmden yap\u0131l\u0131r ve de\u011fi\u015fiklikler otomatik olarak di\u011fer d\u00fc\u011f\u00fcmlere yay\u0131l\u0131r.<\/p>\n<h5>4.1. Pacemaker Ba\u015flang\u0131\u00e7 Ayarlar\u0131<\/h5>\n<p>Pacemaker&#8217;\u0131 ba\u015flatmadan \u00f6nce, Corosync&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Pacemaker, Corosync&#8217;e ba\u011f\u0131ml\u0131d\u0131r.<br \/>\nPacemaker&#8217;\u0131n ilk ba\u015flang\u0131\u00e7 ayarlar\u0131n\u0131 yapal\u0131m. Genellikle <code>crm configure<\/code> komutu ile yap\u0131l\u0131r.<\/p>\n<p><strong>Pacemaker&#8217;\u0131 Ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo service pacemaker start<\/code><\/pre>\n<p><strong>K\u00fcme Durumunu Kontrol Etme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo crm status\n<h2>Veya daha detayl\u0131 izleme i\u00e7in<\/h2>\nsudo crm_mon -1<\/code><\/pre>\n<p>Her iki d\u00fc\u011f\u00fcm\u00fcn de \u00e7evrimi\u00e7i (online) oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h5>4.2. STONITH ve Quorum Ayarlar\u0131<\/h5>\n<p>*   <strong>STONITH (Shoot The Other Node In The Head):<\/strong> Split-brain senaryolar\u0131n\u0131 (iki d\u00fc\u011f\u00fcm\u00fcn de aktif oldu\u011funu sanarak ayn\u0131 kaynaklar\u0131 y\u00f6netmeye \u00e7al\u0131\u015fmas\u0131) \u00f6nlemek i\u00e7in hayati \u00f6neme sahiptir. \u00dcretim ortamlar\u0131nda STONITH mutlaka etkinle\u015ftirilmelidir. Ancak kurulum ve test a\u015famas\u0131nda karma\u015f\u0131kl\u0131\u011f\u0131 azaltmak i\u00e7in ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131labilir.<\/p>\n<pre><code class=\"language-bash\">sudo crm configure property stonith-enabled=false<\/code><\/pre>\n<p>    <strong>UYARI:<\/strong> Bu ayar\u0131 \u00fcretim ortam\u0131nda ASLA kullanmay\u0131n! Bir STONITH cihaz\u0131 (genellikle bir g\u00fc\u00e7 anahtar\u0131 veya sanal makine API&#8217;si entegrasyonu) yap\u0131land\u0131rmadan <code>stonith-enabled=true<\/code> yaparsan\u0131z, bir d\u00fc\u011f\u00fcm ar\u0131zaland\u0131\u011f\u0131nda Pacemaker kaynaklar\u0131 ta\u015f\u0131yamaz.<\/p>\n<p>*   <strong>Quorum (\u00c7o\u011funluk):<\/strong> \u0130ki d\u00fc\u011f\u00fcml\u00fc bir k\u00fcmede, bir d\u00fc\u011f\u00fcm\u00fcn ar\u0131zalanmas\u0131 durumunda k\u00fcme \u00e7o\u011funlu\u011funu kaybeder (\u00e7\u00fcnk\u00fc 2 d\u00fc\u011f\u00fcmden 1&#8217;i %50&#8217;dir, %50&#8217;den fazlas\u0131 de\u011fil). Bu durumda Pacemaker varsay\u0131lan olarak t\u00fcm kaynaklar\u0131 durdurur. Bunu \u00f6nlemek i\u00e7in <code>no-quorum-policy=ignore<\/code> ayar\u0131n\u0131 kullanabiliriz. Ancak bu da split-brain riskini art\u0131r\u0131r. \u00dc\u00e7 veya daha fazla d\u00fc\u011f\u00fcml\u00fc k\u00fcmeler daha g\u00fcvenlidir.<\/p>\n<pre><code class=\"language-bash\">sudo crm configure property no-quorum-policy=ignore<\/code><\/pre>\n<p>    <strong>UYARI:<\/strong> Bu ayar, iki d\u00fc\u011f\u00fcml\u00fc k\u00fcmelerde tek bir d\u00fc\u011f\u00fcm\u00fcn k\u00fcme \u00e7o\u011funlu\u011funu kaybetmesine ra\u011fmen \u00e7al\u0131\u015fmaya devam etmesini sa\u011flar. Bu, dikkatli kullan\u0131lmad\u0131\u011f\u0131nda split-brain senaryolar\u0131na yol a\u00e7abilir. Bu makale bir kurulum rehberi oldu\u011fu i\u00e7in bu ayar\u0131 kullan\u0131yoruz, ancak \u00fcretimde dikkatli olunmal\u0131d\u0131r.<\/p>\n<h4>5. HAProxy Kurulumu ve Konfig\u00fcrasyonu<\/h4>\n<p>HAProxy&#8217;yi her iki d\u00fc\u011f\u00fcmde de kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install haproxy -y<\/code><\/pre>\n<h5>5.1. HAProxy Yap\u0131land\u0131rma Dosyas\u0131<\/h5>\n<p>HAProxy&#8217;nin yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/haproxy\/haproxy.cfg<\/code>&#8216;dir. Bu dosya her iki d\u00fc\u011f\u00fcmde de ayn\u0131 olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/haproxy\/haproxy.cfg<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek yap\u0131land\u0131rmay\u0131 kullanabilirsiniz. Bu \u00f6rnekte, ayr\u0131lm\u0131\u015f IP adresi olan <code>192.168.1.100<\/code> \u00fczerinde dinleyen ve <code>backend_servers<\/code> adl\u0131 bir arka u\u00e7 havuzuna trafi\u011fi y\u00f6nlendiren basit bir HTTP y\u00fck dengeleyici olu\u015fturulmu\u015ftur. Arka u\u00e7 sunucular\u0131 olarak <code>192.168.1.201<\/code> ve <code>192.168.1.202<\/code> IP adresleri kullan\u0131lm\u0131\u015ft\u0131r. Bunlar\u0131 kendi ger\u00e7ek arka u\u00e7 sunucular\u0131n\u0131zla de\u011fi\u015ftirin.<\/p>\n<pre><code class=\"language-\">global\n    log \/dev\/log    daemon\n    chroot \/var\/lib\/haproxy\n    stats socket \/run\/haproxy\/admin.sock mode 660 level admin\n    stats timeout 30s\n    user haproxy\n    group haproxy\n    daemon\n\ndefaults\n    log     global\n    mode    http\n    option  httplog\n    option  dontlognull\n    timeout connect 5000ms\n    timeout client 50000ms\n    timeout server 50000ms\n    errorfile 400 \/etc\/haproxy\/errors\/400.http\n    errorfile 403 \/etc\/haproxy\/errors\/403.http\n    errorfile 408 \/etc\/haproxy\/errors\/408.http\n    errorfile 500 \/etc\/haproxy\/errors\/500.http\n    errorfile 502 \/etc\/haproxy\/errors\/502.http\n    errorfile 503 \/etc\/haproxy\/errors\/503.http\n    errorfile 504 \/etc\/haproxy\/errors\/504.http\n\nfrontend http_front\n    bind 192.168.1.100:80 # Ayr\u0131lm\u0131\u015f IP adresi\n    mode http\n    default_backend backend_servers\n\nbackend backend_servers\n    mode http\n    balance roundrobin\n    option httpchk GET \/\n    server web1 192.168.1.201:80 check\n    server web2 192.168.1.202:80 check\n\nlisten stats\n    bind *:8080 # HAProxy istatistikleri i\u00e7in ayr\u0131 bir port\n    mode http\n    stats enable\n    stats uri \/haproxy?stats\n    stats realm HAProxy\\ Statistics\n    stats auth admin:password # \u0130statistik sayfas\u0131na eri\u015fim i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre\n    stats refresh 10s<\/code><\/pre>\n<p>HAProxy&#8217;nin sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flay\u0131n (Ubuntu 14.04&#8217;te <code>\/etc\/default\/haproxy<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek):<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/default\/haproxy<\/code><\/pre>\n<p><code>ENABLED=0<\/code> sat\u0131r\u0131n\u0131 <code>ENABLED=1<\/code> olarak de\u011fi\u015ftirin.<\/p>\n<p>HAProxy yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin ve servisi ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo haproxy -c -f \/etc\/haproxy\/haproxy.cfg\nsudo service haproxy restart<\/code><\/pre>\n<h4>6. Ayr\u0131lm\u0131\u015f IP ve HAProxy Servisini Pacemaker ile Y\u00f6netme<\/h4>\n<p>\u015eimdi Pacemaker&#8217;a, ayr\u0131lm\u0131\u015f IP adresini ve HAProxy servisini bir kaynak olarak tan\u0131taca\u011f\u0131z ve bunlar\u0131n y\u00fcksek eri\u015filebilirlik sa\u011flamak i\u00e7in nas\u0131l davranaca\u011f\u0131n\u0131 yap\u0131land\u0131raca\u011f\u0131z. Bu ad\u0131mlar, k\u00fcme d\u00fc\u011f\u00fcmlerinden sadece birinde yap\u0131lmal\u0131d\u0131r (Pacemaker otomatik olarak di\u011ferine senkronize edecektir).<\/p>\n<h5>6.1. IP Adresi Kayna\u011f\u0131n\u0131 Tan\u0131mlama<\/h5>\n<p>Ayr\u0131lm\u0131\u015f IP adresini Pacemaker&#8217;a bir kaynak olarak tan\u0131t\u0131n. <code>ip<\/code> parametresini kendi ayr\u0131lm\u0131\u015f IP adresinizle de\u011fi\u015ftirin.<\/p>\n<pre><code class=\"language-bash\">sudo crm configure primitive p_ip_haproxy ocf:heartbeat:IPaddr2 \\\n    params ip=192.168.1.100 cidr_netmask=24 op monitor interval=10s<\/code><\/pre>\n<p>*   <code>p_ip_haproxy<\/code>: Kayna\u011f\u0131n ad\u0131.<br \/>\n*   <code>ocf:heartbeat:IPaddr2<\/code>: Kayna\u011f\u0131n tipi. <code>IPaddr2<\/code> IP adreslerini y\u00f6netmek i\u00e7in kullan\u0131lan bir OCF (Open Cluster Framework) beti\u011fidir.<br \/>\n*   <code>params ip=192.168.1.100<\/code>: Ayr\u0131lm\u0131\u015f IP adresimiz.<br \/>\n*   <code>cidr_netmask=24<\/code>: IP adresinin netmask&#8217;i.<br \/>\n*   <code>op monitor interval=10s<\/code>: Kayna\u011f\u0131n her 10 saniyede bir durumunun kontrol edilmesini sa\u011flar.<\/p>\n<h5>6.2. HAProxy Servis Kayna\u011f\u0131n\u0131 Tan\u0131mlama<\/h5>\n<p>HAProxy servisini Pacemaker&#8217;a bir kaynak olarak tan\u0131t\u0131n. Ubuntu&#8217;da <code>lsb:haproxy<\/code> kayna\u011f\u0131 genellikle <code>\/etc\/init.d\/haproxy<\/code> beti\u011fini kullanarak HAProxy&#8217;yi ba\u015flat\u0131p durdurabilir.<\/p>\n<pre><code class=\"language-bash\">sudo crm configure primitive p_haproxy lsb:haproxy \\\n    op monitor interval=10s<\/code><\/pre>\n<p>*   <code>p_haproxy<\/code>: Kayna\u011f\u0131n ad\u0131.<br \/>\n*   <code>lsb:haproxy<\/code>: HAProxy&#8217;yi y\u00f6netmek i\u00e7in kullan\u0131lan LSB (Linux Standard Base) init beti\u011fi.<\/p>\n<h5>6.3. Kaynaklar\u0131 Bir Grup Alt\u0131nda Toplama<\/h5>\n<p>IP adresi ve HAProxy servisi her zaman ayn\u0131 d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fmal\u0131d\u0131r. Bu nedenle, bu iki kayna\u011f\u0131 bir grup alt\u0131nda toplamak en iyi uygulamad\u0131r. Pacemaker, bir gruptaki t\u00fcm kaynaklar\u0131 ayn\u0131 d\u00fc\u011f\u00fcmde tutmaya \u00e7al\u0131\u015f\u0131r ve grup i\u00e7indeki kaynaklar\u0131 tan\u0131mland\u0131klar\u0131 s\u0131raya g\u00f6re ba\u015flat\u0131r\/durdurur.<\/p>\n<pre><code class=\"language-bash\">sudo crm configure group g_haproxy p_ip_haproxy p_haproxy<\/code><\/pre>\n<p>Bu komut, <code>g_haproxy<\/code> ad\u0131nda bir grup olu\u015fturur ve <code>p_ip_haproxy<\/code> ile <code>p_haproxy<\/code> kaynaklar\u0131n\u0131 bu gruba ekler. Pacemaker, grubu ba\u015flat\u0131rken \u00f6nce <code>p_ip_haproxy<\/code>&#8216;yi, sonra <code>p_haproxy<\/code>&#8216;yi ba\u015flatacakt\u0131r. Durdururken ise ters s\u0131rayla durduracakt\u0131r.<\/p>\n<h5>6.4. Yap\u0131land\u0131rmay\u0131 Kaydetme ve Kontrol Etme<\/h5>\n<p>Yap\u0131land\u0131rma de\u011fi\u015fikliklerini kaydedin:<\/p>\n<pre><code class=\"language-bash\">sudo crm configure commit<\/code><\/pre>\n<p>K\u00fcme durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo crm status\n<h2>Veya s\u00fcrekli izlemek i\u00e7in:<\/h2>\nsudo crm_mon<\/code><\/pre>\n<p><code>crm status<\/code> \u00e7\u0131kt\u0131s\u0131nda, <code>g_haproxy<\/code> grubunun ve i\u00e7indeki <code>p_ip_haproxy<\/code> ile <code>p_haproxy<\/code> kaynaklar\u0131n\u0131n bir d\u00fc\u011f\u00fcmde &#8220;Started&#8221; (Ba\u015flat\u0131ld\u0131) durumda oldu\u011funu g\u00f6rmelisiniz. Ayr\u0131lm\u0131\u015f IP adresinin (192.168.1.100) o d\u00fc\u011f\u00fcmde aktif oldu\u011funu da <code>ip addr show<\/code> komutu ile kontrol edebilirsiniz.<\/p>\n<h4>7. Test Etme ve Y\u00fcksek Eri\u015filebilirlik Do\u011frulama<\/h4>\n<p>Kurulumun ba\u015far\u0131l\u0131 oldu\u011funu do\u011frulamak i\u00e7in \u00e7e\u015fitli testler yapmal\u0131y\u0131z.<\/p>\n<h5>7.1. Servise Eri\u015fim<\/h5>\n<p>Web taray\u0131c\u0131n\u0131zdan veya <code>curl<\/code> komutuyla ayr\u0131lm\u0131\u015f IP adresine (\u00f6rne\u011fin <code>http:\/\/192.168.1.100<\/code>) eri\u015fmeye \u00e7al\u0131\u015f\u0131n. HAProxy&#8217;nin arkas\u0131ndaki arka u\u00e7 sunucular\u0131ndan birinden yan\u0131t almal\u0131s\u0131n\u0131z.<\/p>\n<h5>7.2. Manuel Kaynak Ta\u015f\u0131ma (Failover Testi)<\/h5>\n<p>Pacemaker&#8217;\u0131n kaynaklar\u0131 bir d\u00fc\u011f\u00fcmden di\u011ferine ta\u015f\u0131ma yetene\u011fini test edin.<br \/>\n\u00d6nce aktif d\u00fc\u011f\u00fcm\u00fc belirleyin (<code>crm status<\/code> \u00e7\u0131kt\u0131s\u0131nda kaynaklar\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 d\u00fc\u011f\u00fcm). Diyelim ki <code>haproxy-node1<\/code> \u00fczerinde \u00e7al\u0131\u015f\u0131yor.<br \/>\nKayna\u011f\u0131 <code>haproxy-node2<\/code>&#8216;ye ta\u015f\u0131mak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo crm resource move g_haproxy haproxy-node2<\/code><\/pre>\n<p><code>crm_mon<\/code> komutuyla veya <code>crm status<\/code> komutuyla kaynaklar\u0131n <code>haproxy-node2<\/code>&#8216;ye ta\u015f\u0131nd\u0131\u011f\u0131n\u0131 g\u00f6zlemleyin. Bu s\u0131rada web hizmetine eri\u015fmeye devam edin; k\u0131sa bir kesinti ya\u015fanabilir ancak hizmetin tamamen durmamas\u0131 gerekir. Ta\u015f\u0131ma i\u015flemi tamamland\u0131\u011f\u0131nda, ayr\u0131lm\u0131\u015f IP&#8217;nin <code>haproxy-node2<\/code> \u00fczerinde aktif oldu\u011funu do\u011frulay\u0131n.<\/p>\n<p>Ta\u015f\u0131ma i\u015flemini geri almak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo crm resource unmanage g_haproxy\nsudo crm resource manage g_haproxy<\/code><\/pre>\n<p>Bu komutlar, kayna\u011f\u0131n k\u0131s\u0131tlamalar\u0131n\u0131 kald\u0131r\u0131p yeniden y\u00f6netilmesini sa\u011flar, b\u00f6ylece Pacemaker kayna\u011f\u0131 otomatik olarak tercih edilen d\u00fc\u011f\u00fcme geri ta\u015f\u0131yabilir veya mevcut d\u00fc\u011f\u00fcmde b\u0131rakabilir. Otomatik olarak ilk d\u00fc\u011f\u00fcme geri d\u00f6nmesini istiyorsan\u0131z, bir &#8220;location constraint&#8221; eklemeniz gerekebilir.<\/p>\n<h5>7.3. D\u00fc\u011f\u00fcm Ar\u0131zas\u0131 Sim\u00fclasyonu<\/h5>\n<p>En kritik test, aktif d\u00fc\u011f\u00fcm\u00fcn tamamen \u00e7\u00f6kmesini sim\u00fcle etmektir.<br \/>\n1.  <code>crm status<\/code> komutuyla kaynaklar\u0131n hangi d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 belirleyin (\u00f6rne\u011fin <code>haproxy-node1<\/code>).<br \/>\n2.  Aktif d\u00fc\u011f\u00fcmde (haproxy-node1) Corosync ve Pacemaker servislerini durdurun:<\/p>\n<pre><code class=\"language-bash\">sudo service pacemaker stop\n    sudo service corosync stop<\/code><\/pre>\n<p>    Veya daha ger\u00e7ek\u00e7i bir senaryo i\u00e7in d\u00fc\u011f\u00fcm\u00fc tamamen kapat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo shutdown -h now<\/code><\/pre>\n<p>3.  Di\u011fer d\u00fc\u011f\u00fcme (<code>haproxy-node2<\/code>) ge\u00e7in ve <code>crm status<\/code> komutuyla k\u00fcme durumunu kontrol edin. Birka\u00e7 saniye i\u00e7inde Pacemaker&#8217;\u0131n <code>haproxy-node1<\/code>&#8216;in \u00e7evrimd\u0131\u015f\u0131 oldu\u011funu alg\u0131lamas\u0131 ve <code>g_haproxy<\/code> grubunu <code>haproxy-node2<\/code> \u00fczerine ta\u015f\u0131mas\u0131 gerekir.<br \/>\n4.  Ayr\u0131lm\u0131\u015f IP adresi \u00fczerinden hizmete eri\u015fmeye devam edin. Hizmetin <code>haproxy-node2<\/code> \u00fczerinden sunuldu\u011funu do\u011frulay\u0131n.<\/p>\n<p>Bu testler, y\u00fcksek eri\u015filebilirlik kurulumunuzun beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamaya yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>\u00d6nemli Hususlar ve En \u0130yi Uygulamalar<\/h3>\n<h4>1. STONITH (Shoot The Other Node In The Head)<\/h4>\n<p>Daha \u00f6nce de belirtildi\u011fi gibi, STONITH \u00fcretim ortamlar\u0131nda kesinlikle etkinle\u015ftirilmelidir. STONITH, bir d\u00fc\u011f\u00fcm\u00fcn k\u00fcmeden ayr\u0131lmas\u0131 ancak hala kaynaklar\u0131 \u00fczerinde tutuyor olmas\u0131 durumunda (\u00f6rne\u011fin a\u011f ba\u011flant\u0131s\u0131 kesildi\u011finde) ortaya \u00e7\u0131kan &#8220;split-brain&#8221; senaryolar\u0131n\u0131 \u00f6nler. STONITH, ar\u0131zal\u0131 d\u00fc\u011f\u00fcm\u00fc zorla kapatarak veya yeniden ba\u015flatarak kaynaklar\u0131n tek bir yerde kalmas\u0131n\u0131 sa\u011flar. Sanal makineler i\u00e7in genellikle hypervisor API&#8217;leri (libvirt, fence_vcenter vb.) kullan\u0131l\u0131rken, fiziksel sunucular i\u00e7in IPMI veya g\u00fc\u00e7 anahtarlar\u0131 (fence_apc, fence_drac vb.) kullan\u0131l\u0131r.<\/p>\n<h4>2. Quorum Y\u00f6netimi<\/h4>\n<p>\u0130ki d\u00fc\u011f\u00fcml\u00fc k\u00fcmelerde <code>no-quorum-policy=ignore<\/code> kullanmak, tek bir d\u00fc\u011f\u00fcm\u00fcn kalmas\u0131 durumunda hizmetin devam etmesini sa\u011flar ancak split-brain riskini art\u0131r\u0131r. \u00dc\u00e7 veya daha fazla d\u00fc\u011f\u00fcml\u00fc k\u00fcmeler, \u00e7o\u011funluk ilkesini (quorum) daha g\u00fcvenli bir \u015fekilde uygulamak i\u00e7in daha uygundur. E\u011fer iki d\u00fc\u011f\u00fcml\u00fc bir k\u00fcmede kalman\u0131z gerekiyorsa, STONITH&#8217;in do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6neme sahiptir.<\/p>\n<h4>3. A\u011f Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Corosync trafi\u011fi i\u00e7in ayr\u0131 bir a\u011f aray\u00fcz\u00fc kullanmak, k\u00fcme ileti\u015fiminin di\u011fer trafikten etkilenmemesini ve daha g\u00fcvenilir olmas\u0131n\u0131 sa\u011flayabilir. Bu, &#8220;redundant ring&#8221; (yedekli halka) olarak bilinir.<\/p>\n<h4>4. \u0130zleme ve Uyar\u0131lar<\/h4>\n<p>K\u00fcme durumunu s\u00fcrekli izlemek ve herhangi bir sorun durumunda uyar\u0131 almak kritik \u00f6neme sahiptir. <code>crm_mon<\/code> komutu temel bir izleme arac\u0131d\u0131r, ancak Prometheus, Grafana, Nagios, Zabbix gibi ara\u00e7larla entegrasyon daha kapsaml\u0131 bir izleme ve uyar\u0131 sistemi sa\u011flayacakt\u0131r.<\/p>\n<h4>5. Log Y\u00f6netimi<\/h4>\n<p>Corosync, Pacemaker ve HAProxy loglar\u0131n\u0131 d\u00fczenli olarak kontrol edin. Merkezi bir log y\u00f6netim sistemi (ELK Stack, Graylog vb.) kullanmak, sorun gidermeyi kolayla\u015ft\u0131r\u0131r. Loglar genellikle <code>\/var\/log\/syslog<\/code> veya <code>\/var\/log\/messages<\/code> alt\u0131nda bulunur.<\/p>\n<h4>6. G\u00fcvenlik<\/h4>\n<p>*   G\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 s\u0131k\u0131 tutun ve sadece gerekli portlara izin verin.<br \/>\n*   SSH eri\u015fimini g\u00fcvenli hale getirin (anahtar tabanl\u0131 kimlik do\u011frulama, parola ile eri\u015fimi kapatma).<br \/>\n*   HAProxy istatistikleri sayfas\u0131n\u0131 parola ile koruyun ve varsay\u0131lan portu de\u011fi\u015ftirin.<\/p>\n<h4>7. HAProxy Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>*   Sa\u011fl\u0131k kontrolleri (<code>check<\/code> parametresi) ile arka u\u00e7 sunucular\u0131n\u0131n durumunu do\u011fru bir \u015fekilde izleyin.<br \/>\n*   HTTPS trafi\u011fi i\u00e7in SSL\/TLS sonland\u0131rmas\u0131 veya passthrough yap\u0131land\u0131rmas\u0131n\u0131 ekleyin.<br \/>\n*   HAProxy&#8217;nin performans\u0131n\u0131 ve loglar\u0131n\u0131 d\u00fczenli olarak analiz edin.<\/p>\n<h4>8. Bak\u0131m ve G\u00fcncellemeler<\/h4>\n<p>K\u00fcme d\u00fc\u011f\u00fcmlerinde bak\u0131m veya g\u00fcncelleme yaparken, kaynaklar\u0131 manuel olarak di\u011fer d\u00fc\u011f\u00fcme ta\u015f\u0131yarak kesintisiz bir deneyim sa\u011flay\u0131n. Bak\u0131m bittikten sonra kaynaklar\u0131 geri ta\u015f\u0131yabilirsiniz.<\/p>\n<h4>9. Ubuntu 14.04&#8217;\u00fcn Destek Sonu<\/h4>\n<p>Bu makale Ubuntu 14.04 \u00fczerinde kurulumu detayland\u0131rsa da, bu i\u015fletim sisteminin art\u0131k resmi deste\u011finin sona erdi\u011fini unutmay\u0131n. \u00dcretim ortamlar\u0131nda daha g\u00fcncel ve desteklenen bir i\u015fletim sistemi (\u00f6rne\u011fin Ubuntu 20.04 LTS veya 22.04 LTS) kullanman\u0131z \u015fiddetle tavsiye edilir. Temel prensipler ve komutlar\u0131n \u00e7o\u011fu yeni s\u00fcr\u00fcmlerde de benzer olacakt\u0131r, ancak paket isimleri veya yap\u0131land\u0131rma yollar\u0131nda k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar olabilir.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>*   <strong>K\u00fcme D\u00fc\u011f\u00fcmleri Birbirini G\u00f6rm\u00fcyor:<\/strong><br \/>\n    *   <code>corosync.conf<\/code> dosyas\u0131n\u0131 kontrol edin (\u00f6zellikle <code>bindnetaddr<\/code>, <code>mcastaddr<\/code>). Her iki d\u00fc\u011f\u00fcmde de ayn\u0131 olmal\u0131.<br \/>\n    *   G\u00fcvenlik duvar\u0131n\u0131 kontrol edin (5405\/UDP a\u00e7\u0131k m\u0131?).<br \/>\n    *   <code>\/etc\/hosts<\/code> dosyas\u0131n\u0131 kontrol edin.<br \/>\n    *   A\u011f ba\u011flant\u0131s\u0131n\u0131 kontrol edin (<code>ping<\/code>).<br \/>\n    *   Corosync loglar\u0131n\u0131 kontrol edin (<code>\/var\/log\/syslog<\/code>).<br \/>\n*   <strong>Pacemaker Kaynaklar\u0131 Ba\u015flam\u0131yor\/Ta\u015f\u0131nm\u0131yor:<\/strong><br \/>\n    *   <code>crm status<\/code> veya <code>crm_mon<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 dikkatlice inceleyin. Hata mesajlar\u0131 genellikle sorunun k\u00f6kenini g\u00f6sterir.<br \/>\n    *   Kaynak betiklerinin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun (\u00f6rne\u011fin <code>lsb:haproxy<\/code> i\u00e7in <code>\/etc\/init.d\/haproxy start\/stop<\/code> komutlar\u0131n\u0131 manuel olarak test edin).<br \/>\n    *   Pacemaker loglar\u0131n\u0131 kontrol edin (<code>\/var\/log\/syslog<\/code>).<br \/>\n    *   STONITH&#8217;in devre d\u0131\u015f\u0131 b\u0131rak\u0131ld\u0131\u011f\u0131ndan emin olun (test ortam\u0131 i\u00e7in).<br \/>\n    *   Quorum ayarlar\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>HAProxy \u00c7al\u0131\u015fm\u0131yor:<\/strong><br \/>\n    *   <code>sudo service haproxy status<\/code> komutuyla durumunu kontrol edin.<br \/>\n    *   <code>sudo haproxy -c -f \/etc\/haproxy\/haproxy.cfg<\/code> ile yap\u0131land\u0131rma dosyas\u0131n\u0131 do\u011frulay\u0131n.<br \/>\n    *   HAProxy loglar\u0131n\u0131 kontrol edin (<code>\/var\/log\/haproxy.log<\/code> veya <code>\/var\/log\/syslog<\/code>).<br \/>\n    *   Dinledi\u011fi IP adresinin (ayr\u0131lm\u0131\u015f IP) o anda aktif d\u00fc\u011f\u00fcmde olup olmad\u0131\u011f\u0131n\u0131 kontrol edin (<code>ip addr show<\/code>).<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 14.04 \u00fczerinde HAProxy, Corosync ve Pacemaker kullanarak y\u00fcksek eri\u015filebilirlikli bir y\u00fck dengeleyici kurulumunun nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m ele ald\u0131k. Ayr\u0131lm\u0131\u015f IP adresinin kullan\u0131m\u0131 sayesinde, HAProxy hizmeti herhangi bir d\u00fc\u011f\u00fcm ar\u0131zas\u0131nda otomatik olarak sa\u011fl\u0131kl\u0131 bir d\u00fc\u011f\u00fcme ta\u015f\u0131narak kesintisiz hizmet sunulmas\u0131 sa\u011flanm\u0131\u015ft\u0131r.<\/p>\n<p>Bu t\u00fcr bir kurulum, tek bir hata noktas\u0131n\u0131 ortadan kald\u0131rarak uygulamalar\u0131n\u0131z\u0131n ve hizmetlerinizin dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Ancak, \u00fcretim ortamlar\u0131nda STONITH&#8217;in do\u011fru yap\u0131land\u0131r\u0131lmas\u0131, kapsaml\u0131 izleme ve d\u00fczenli bak\u0131m gibi en iyi uygulamalar\u0131n titizlikle takip edilmesi gerekti\u011fini unutmamak \u00f6nemlidir. Bu \u00e7\u00f6z\u00fcm, kritik i\u015f y\u00fckleri i\u00e7in sa\u011flam ve g\u00fcvenilir bir temel olu\u015fturmaktad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn rekabet\u00e7i d","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-33633","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde\" \/>\n<meta property=\"og:description\" content=\"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn rekabet\u00e7i d\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-05T06:40:58+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde\",\"datePublished\":\"2025-11-05T06:40:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\"},\"wordCount\":2907,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\",\"name\":\"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-05T06:40:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/","og_locale":"tr_TR","og_type":"article","og_title":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde","og_description":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn rekabet\u00e7i d","og_url":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-05T06:40:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde","datePublished":"2025-11-05T06:40:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/"},"wordCount":2907,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/","url":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/","name":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-05T06:40:58+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/yuksek-erisilebilirlige-sahip-haproxy-kurulumu-corosync-pacemaker-ve-ayrilmis-ip-ile-ubuntu-14-04-uzerinde\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Y\u00fcksek Eri\u015filebilirli\u011fe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayr\u0131lm\u0131\u015f IP ile Ubuntu 14.04 \u00dczerinde"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33633"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33633\/revisions"}],"predecessor-version":[{"id":33634,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33633\/revisions\/33634"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}