<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Macellan Tech Blog]]></title><description><![CDATA[Tech talks from our development team]]></description><link>https://tech.macellan.net/</link><image><url>https://tech.macellan.net/favicon.png</url><title>Macellan Tech Blog</title><link>https://tech.macellan.net/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Sat, 30 May 2026 11:14:57 GMT</lastBuildDate><atom:link href="https://tech.macellan.net/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Proxmox ile ZFS Swap alanı nasıl oluşturulur?]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-1-swap-olarak-kullanmak-i%C3%A7in-bir-volume-dataset-zvol-olu%C5%9Fturun">Ad&#x131;m 1: Swap olarak kullanmak i&#xE7;in bir volume dataset (zvol) olu&#x15F;turun.</h4>
<pre><code>zfs create -V 32G rpool/swap
</code></pre>
<p>Burada <code>rpool</code> yerine ba&#x15F;ka bir disk de kullanabilirsiniz.<br>
Disklerinizi <code>zfs list</code> yazarak kontrol edin.<br>
<code>32G</code> k&#x131;sm&#x131;n&#x131; ihtiyac&#x131;n&#x131;</p>]]></description><link>https://tech.macellan.net/proxmox-ile-zfs-swap-olusturma/</link><guid isPermaLink="false">61f6a88204aefead7168a432</guid><category><![CDATA[proxmox]]></category><category><![CDATA[swap]]></category><category><![CDATA[zfs]]></category><dc:creator><![CDATA[Burak Çalık]]></dc:creator><pubDate>Sun, 30 Jan 2022 15:20:38 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1533632638678-bb4b484689a7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fHNlcnZlciUyMG1lbW9yeXxlbnwwfHx8fDE2NDM1NTYxMjg&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-1-swap-olarak-kullanmak-i%C3%A7in-bir-volume-dataset-zvol-olu%C5%9Fturun">Ad&#x131;m 1: Swap olarak kullanmak i&#xE7;in bir volume dataset (zvol) olu&#x15F;turun.</h4>
<pre><code>zfs create -V 32G rpool/swap
</code></pre>
<img src="https://images.unsplash.com/photo-1533632638678-bb4b484689a7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fHNlcnZlciUyMG1lbW9yeXxlbnwwfHx8fDE2NDM1NTYxMjg&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="Proxmox ile ZFS Swap alan&#x131; nas&#x131;l olu&#x15F;turulur?"><p>Burada <code>rpool</code> yerine ba&#x15F;ka bir disk de kullanabilirsiniz.<br>
Disklerinizi <code>zfs list</code> yazarak kontrol edin.<br>
<code>32G</code> k&#x131;sm&#x131;n&#x131; ihtiyac&#x131;n&#x131;za g&#xF6;re d&#xFC;zenleyebilirsiniz.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-2-swap-alan%C4%B1-formatlay%C4%B1n">Ad&#x131;m 2: Swap alan&#x131; formatlay&#x131;n.</h4>
<pre><code>mkswap -f /dev/zvol/rpool/swap
</code></pre>
<p><em><code>/dev/zvol</code> ks&#x131;m&#x131;n&#x131; de&#x11F;i&#x15F;tirmeyin.</em></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-3-etcfstab-dosyas%C4%B1n%C4%B1-d%C3%BCzenleyin">Ad&#x131;m 3: <code>/etc/fstab</code> dosyas&#x131;n&#x131; d&#xFC;zenleyin.</h4>
<pre><code>echo /dev/zvol/rpool/swap none swap defaults 0 0 &gt;&gt; /etc/fstab
</code></pre>
<p>Swap alan&#x131; kal&#x131;c&#x131; hale getirmek i&#xE7;in bu i&#x15F;lem gerekmektedir.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-4-swap-alan%C4%B1-aktif-edin">Ad&#x131;m 4: Swap alan&#x131; aktif edin.</h4>
<pre><code>swapon -av
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h4 id="ad%C4%B1m-5-swappiness-de%C4%9Ferini-azalt%C4%B1n">Ad&#x131;m 5: Swappiness de&#x11F;erini azalt&#x131;n.</h4>
<p>Swap kullan&#x131;m&#x131;n&#x131; azaltmak ve performansl&#x131; bir &#xE7;&#xF6;z&#xFC;m elde etmek i&#xE7;in Production ortamlarda swappiness de&#x11F;erini d&#xFC;&#x15F;&#xFC;rmeniz tavsiye edilir.</p>
<pre><code>sudo sysctl vm.swappiness=10
</code></pre>
<p>Bu de&#x11F;eri kal&#x131;c&#x131; hale getirmek i&#xE7;in <code>/etc/sysctl.conf</code> dosyas&#x131;n&#x131;n sonuna a&#x15F;a&#x11F;&#x131;daki de&#x11F;eri ekleyin.</p>
<pre><code>vm.swappiness=10
</code></pre>
<!--kg-card-end: markdown--><p><em>Kaynaklar:<br><a href="https://pve.proxmox.com/wiki/ZFS_on_Linux#zfs_swap">https://pve.proxmox.com/wiki/ZFS_on_Linux#zfs_swap</a><br><a href="https://docs.oracle.com/cd/E23824_01/html/821-1448/ggrln.html">https://docs.oracle.com/cd/E23824_01/html/821-1448/ggrln.html</a><br><a href="https://linuxize.com/post/how-to-add-swap-space-on-ubuntu-20-04/">https://linuxize.com/post/how-to-add-swap-space-on-ubuntu-20-04/</a><br><a href="https://askubuntu.com/a/987126/197551">https://askubuntu.com/a/987126/197551</a></em></p>]]></content:encoded></item><item><title><![CDATA[Docker Compose vs Single Node Swarm]]></title><description><![CDATA[docker-compose development ortamı için bir muhteşem bir tool, ancak production için tekrar düşünmeniz lazım.]]></description><link>https://tech.macellan.net/docker-compose-vs-single-node-swarm/</link><guid isPermaLink="false">5fec6fb137672e027e237c7d</guid><category><![CDATA[docker]]></category><category><![CDATA[swarm]]></category><category><![CDATA[docker-compose]]></category><category><![CDATA[vs]]></category><dc:creator><![CDATA[Payam Saderi]]></dc:creator><pubDate>Sun, 10 Jan 2021 01:43:00 GMT</pubDate><media:content url="https://tech.macellan.net/content/images/2020/12/docker-compos-vs-swarm.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.macellan.net/content/images/2020/12/docker-compos-vs-swarm.png" alt="Docker Compose vs Single Node Swarm"><p>Docker Compose development ortam&#x131; i&#xE7;in muhte&#x15F;em bir tool, ben kendi geli&#x15F;tirme ortam&#x131;mda da her zaman docker-compose kullan&#x131;yorum. Ancak production ortam&#x131;n&#x131;zda docker-compose kullanmak isterseniz tekrar d&#xFC;&#x15F;&#xFC;nmeniz gerekebilir.</p><p>A&#x15F;a&#x11F;&#x131;da MySQL veritaban&#x131; kullanan bir Laravel projesi i&#xE7;in en basit <code>docker-compose.yml</code> yap&#x131;s&#x131; bulunuyor: </p><!--kg-card-begin: markdown--><pre><code class="language-yaml">version: &apos;3&apos;

services:
  app:
    tty: true
    image: docker.io/bitnami/laravel:7-debian-10
    environment:
      - DB_HOST=mysql
      - DB_USERNAME=my_user
      - DB_DATABASE=my_database
      - DB_PASSWORD=my_password
    depends_on:
      - mysql
    ports:
      - 3000:3000
    volumes:
      - ${PWD}:/app

  mysql:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_USER=my_user
      - MYSQL_DATABASE=my_database
      - MYSQL_PASSWORD=my_password
</code></pre>
<!--kg-card-end: markdown--><p>Geli&#x15F;tirme yaparken bu YAML dosyas&#x131;n&#x131; sadece <code>docker-compose up -d</code> komutuyla &#xE7;al&#x131;&#x15F;t&#x131;rabilirsiniz. Ayn&#x131; &#x15F;ekilde production ortam&#x131;nda da kullanabilirsiniz. Genellikle her &#x15F;ey do&#x11F;ru &#xE7;al&#x131;&#x15F;&#x131;r ancak production ortam&#x131;nda docker-compose kullanmak mant&#x131;kl&#x131; m&#x131;d&#x131;r?</p><p><a href="https://github.com/docker/compose">docker-compose</a> Python ile yaz&#x131;lan bir tool ve YAML dosyas&#x131;ndaki konfig&#xFC;rasyonlar&#x131; arkaplanda docker&apos;&#x131;n anlayabilece&#x11F;i komutlara &#xE7;evirir ve bu &#x15F;ekilde altyap&#x131;m&#x131;z haz&#x131;r olur.</p><h2 id="single-node-swarm-nedir">Single-Node Swarm nedir?</h2><p>Bir Swarm cluster&apos;&#x131;n fault-tolerance olmas&#x131; i&#xE7;in 1 adet manager ve 2 adet worker olmak &#xFC;zere 3 adet node kullan&#x131;lmas&#x131; &#xF6;nerilir, ancak bu zorunlu de&#x11F;il. Sadece bir manager node ile Swarm&apos;&#x131;n &#xF6;zelliklerini kullanabilirsinizs.</p><p>A&#x15F;a&#x11F;&#x131;daki YAML dosyas&#x131; ayn&#x131; docker-composer&apos;da verdi&#x11F;imiz YAML dosyas&#x131; gibi, sadece Swarm i&#xE7;in &#xE7;ok k&#xFC;&#xE7;&#xFC;k de&#x11F;i&#x15F;iklikler yap&#x131;lm&#x131;&#x15F;t&#x131;r.</p><!--kg-card-begin: markdown--><pre><code>version: &apos;3.7&apos;

services:
  app:
    tty: true
    image: my-privet-registry.com/app/laravel:for-test
    secrets:
        - db_password
    environment:
        - DB_HOST=mysql
        - DB_USERNAME=my_user
        - DB_DATABASE=my_database
    depends_on:
      - mysql
    ports:
      - 80:3000
    deploy:
        replicas: 1
        update_config:
            parallelism: 2
            delay: 10s
        restart_policy:
            condition: on-failure

  mysql:
    image: mysql:8.0.21
    command: --default-authentication-plugin=mysql_native_password
    secrets:
        - db_root_password
        - db_password
    environment:
        MYSQL_USER: my_user
        MYSQL_DATABASE: my_database
        MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
        MYSQL_PASSWORD_FILE: /run/secrets/db_password    
    deploy:
        replicas: 1
        update_config:
            parallelism: 2
            delay: 10s
        restart_policy:
            condition: on-failure

secrets:
    db_root_password:
        external: true
    db_password:
        external: true
</code></pre>
<!--kg-card-end: markdown--><h3 id="docker-compose-yerine-single-node-swarm-kullanman-n-avantajlar-nedir">docker-compose yerine single-node swarm kullanman&#x131;n avantajlar&#x131; nedir?</h3><!--kg-card-begin: markdown--><ul>
<li><strong>Sadece bir komut ile Swarm aktif edilir</strong>, <code>docker swarm init</code> komutu ile bir swarm node olu&#x15F;turabilirsiniz, docker-compose install/update i&#x15F;lemleri ile hi&#xE7; u&#x11F;ra&#x15F;mayacaks&#x131;n&#x131;z.</li>
<li><strong>Swarm ile ba&#x15F;larsan&#x131;z highly-available olmaya haz&#x131;rs&#x131;n&#x131;z</strong> ve s&#x131;f&#x131;rdan ba&#x15F;laman&#x131;za gerek kalmaz.</li>
<li><strong>Swarm&apos;&#x131;n getirdi&#x11F;i ekstra &#xF6;zelliklerden faydalanabilirsiniz</strong>, &#xF6;rne&#x11F;in secrets, configs, servisler auto-recovery ise, rollbacks ve healthchecks.</li>
<li><strong>Healthchecks</strong>, <code>docker run</code> ve <code>docker-compose</code> hi&#xE7;bir zaman size healthcheck &#xF6;zelli&#x11F;i sunmaz. Swarm ile production ortamlar&#x131;n&#x131;z&#x131; daha sa&#x11F;l&#x131;kl&#x131; hale getirebilirsiniz..</li>
<li><strong>Rolling updates</strong>, Swarm&apos;daki <code>docker service update</code> komutu size container&apos;lerin y&#xF6;netimi ve update i&#x15F;lemleri i&#xE7;in y&#xFC;zlerce se&#xE7;enek veriyor.</li>
<li><strong>Docker ve Swarm ikisi de b&#xFC;t&#xFC;nle&#x15F;ik</strong>. Bu nedenle production ortam&#x131;n&#x131;zdaki version uyumlulu&#x11F;u konusunda endi&#x15F;elenmenize gerek kalm&#x131;yor.</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>