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, silahkan 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