Halo, kalau kamu merasa tulisan saya ngebantu, kamu bisa ucapkan terima kasih lewat saweria.

If you feel this website help you, you can donate at saweria.



Sebelum mengikuti tutorial ini, silakan kunjungi tutorial Belajar Docker Swarm // Part 1 - Deploy Service Pertama di Swarm

Di tutorial sebelumnya saya menggunakan traefik sebagai web server/reverse proxy, tapi di sini saya menggunakan nginx (non docker) sebagai load balancer/reverse proxy.

Selain pake nginx, kamu bisa pake layanan load balancer dari cloud provider, tapi saya pilih menggunkaan nginx karena lebih configurable dan lebih murah…

Tools yang Digunakan

  1. 2 Server Ubuntu 22.04.2 LTS

    a. 1 sebagai docker swarm manager

    b. 1 sebagai load balancer/reverse proxy menggunakan nginx

  2. Nginx v1.22.1


How To

  1. Masuk ke server docker swarm manager, buat 1 file compose, whoami.yml

    version: '3.7'
    
    networks:
      whoami:
        external: false
    
    services:
      whoami:
          image: traefik/whoami:latest
          ports:
            - '8089:80'
          deploy:
            replicas: 4
          networks:
            - whoami
    
  2. Jalankan docker stack deploy -c whoami.yml whoami.yml,

    a. Test menggunakan curl, curl ip-private:8089

    Test Pake Curl

    Test Pake Curl

    b. Check service dengan docker service ps whoami_whoami

    Check Service

    Check Service

  3. Masuk ke server nginx, buat 1 file virtual block

    upstream whoami {
      server 10.104.0.9:8089;
    }
    
    server {
      server_name domainkamu.com;
      server_tokens off;
    
      location / {
        limit_req zone=download_limit burst=10 nodelay;
        #prevent search engine indexing
        add_header  X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_pass http://whoami;
      }
    
    
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/domainkamu.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/domainkamu.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    }
    
    server {
      if ($host = domainkamu.com) {
        return 301 https://$host$request_uri;
      } # managed by Certbot
    
    
      server_name domainkamu.com;
      listen 80;
      return 404; # managed by Certbot
        return 301 https://$host$request_uri;
    }
    

    Test di browser, perhatikan bagian Hostname dan IP akan selalu berubah-berubah