Varnish adalah salah satu aplikasi cache web server atau aplikasi akselerator website yang biasa dikenal dengan a caching HTTP reverse proxy. Sebelumnya kita telah menginstall nginx sebagai web server yang akan berjalan di belakang varnish. Berikut langkah instalasi dan konfigurasi varnish.

Install Varnish 6

Install varnish terbaru versi 6 dengan cara compile dari source code.
1. Download source varnish dari situs resmi varnish

# wget https://varnish-cache.org/_downloads/varnish-6.0.2.tgz
2. Install paket pendukung (build dependencies)
# yum install make autoconf automake jemalloc-devel libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx
3. Opsi paket pendukung lainnya untuk rebuild svg
# yum install graphviz
4. Untuk mengambil dari repository varnish
# yum install git
5. Ekstrak dan masuk ke dalam folder hasil ekstrak
# tar -zxvf varnish-6.0.2.tgz && cd varnish-6.0.2
6. Jalankan perintah instalasi dari dalam folder varnish
# sh autogen.sh
# sh configure
# make
7. Menjalakan perintah make check untuk menjalankan serangkaian pengecekan. Proses ini akan memakan waktu yang cukup lama dan mungkin akan ada beberapa pengujian yang gagal, hal tersebut bisa dihiraukan.
# make check
8. Setelah selesai, akan ada summary hasil pengujian
9. Terakhir jalankan perintah install
# make install
10. Varnish akan terinstall dalam folder /usr/local dan file binary varnishd tersimpan di /usr/local/sbin 11. Karena varnish terinstall dari paket biner (binary package), maka menjalankannya dengan cara manual
# varnishd -a :6081 -T localhost:6082 -b localhost:8080

Install Varnish 5

  1. Install pygpgme untuk handling paket gpg signatures dan yum-utils untuk menambahkan fungsi dari native yum
    # yum install pygpgme yum-utils
  2. Buat file varnishcache_varnish5.repo di /etc/yum.repos.d/ untuk menampung konfigurasi repository. Isikan dengan konfigurasi berikut
    [varnishcache_varnish5]
    name=varnishcache_varnish5
    baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/$basearch
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    [varnishcache_varnish5-source]
    name=varnishcache_varnish5-source
    baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/SRPMS
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
  3. Update lokal yum cache dan install varnish cache 5
    # yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish5'
  4. Install varnish
    # yum -y install varnish

  5. Konfirmasi varnish telah terinstall dengan sukses
    # which varnishd
    # varnishd -V
  6. Konfigurasi Nginx untuk bisa bekerja dengan Varnish Cache.
  7. Secara default nginx listen ke port 80, ubah menjadi 8080. Edit file /etc/nginx/nginx.conf
    server {
        listen  8080;
        ...
    }
  8. Kemudian buka file konfigurasi varnish environment dan temukan parameter VARNISH_LISTEN_PORT ubah port 6081 menjadi 80 karena varnish akan berada paling depan dalam melayani request HTTP. Edit file /etc/varnish/varnish.params
    ...
    VARNISH_LISTEN_PORT=80
    ...
  9. Setup nginx sebagai backend server untuk varnish proxy pada file /etc/varnish/default.vcl
  10. Cari bagian backend dan definiskan IP Host dan port.
    backend default {
    .host = "127.0.0.1";
    .port = "8080";
    }
  11. Setelah konfigurasi selesai restart nginx dan jalankan varnish cache.
    # systemctl restart nginx
    # systemctl start varnish
    # systemctl enable varnish
    # systemctl status varnish
  12. Lakukan pengecekan apakah varnish telah jalan menggunakan cURL
    # curl -I http://localhost
  13. Cek log varnish
    # varnishlog -q 'RespStatus == 503' -g request
    atau
    # varnishncsa
  14. Menguji konfigurasi varnish, jika tidak ada error maka akan mengeluarkan file konfigurasi varnish
    # varnishd -Cf /etc/varnish/default.vcl
  15. Beberapa direktori penting pada varnish

    • /usr/sbin/varnishd : file utama executable
    • /etc/varnish/varnish.params : file konfigurasi environment varnish
    • /etc/varnish/default.vcl : file konfigurasi utama varnish (menggunakan VCL)
    • /etc/varnish/secret : file rahasia varnish