Laporan Resmi Praktikum Jaringan Komputer Modul 3
- Yoel Mountanus Sitorus - 5025211078
- Java Kanaya Prada - 5025211112
![topologi new](https://private-user-images.githubusercontent.com/87474722/284048918-562a1dc5-2a49-4ade-916a-e8a154148f9f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDg5MTgtNTYyYTFkYzUtMmE0OS00YWRlLTkxNmEtZThhMTU0MTQ4ZjlmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiODBmMTA3OTcyOTZmN2IzMTdhMTJlODdlMWE1MDMwYTBlMWViNWQ2MDFjYzBmMTEyMjA4MTIwZjZhODZlNWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.RuSsQ0zpvNpTQrL90J3ne65GdikgaBSKb7YXTljJZuE)
- Aura (DHCP Relay)
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.47.1.10
netmask 255.255.255.0
auto eth2
iface eth2 inet static
address 10.47.2.10
netmask 255.255.255.0
auto eth3
iface eth3 inet static
address 10.47.3.100
netmask 255.255.255.0
auto eth4
iface eth4 inet static
address 10.47.4.100
netmask 255.255.255.0
- Himmel (DHCP Server)
auto eth0
iface eth0 inet static
address 10.47.1.1
netmask 255.255.255.0
gateway 10.47.1.10
- Heiter (DNS Server)
auto eth0
iface eth0 inet static
address 10.47.1.2
netmask 255.255.255.0
gateway 10.47.1.10
- Denken (Database Server)
auto eth0
iface eth0 inet static
address 10.47.2.1
netmask 255.255.255.0
gateway 10.47.2.10
- Eisen (Load Balancer)
auto eth0
iface eth0 inet static
address 10.47.2.2
netmask 255.255.255.0
gateway 10.47.2.10
- Fern (Laravel Worker)
auto eth0
iface eth0 inet static
address 10.47.4.1
netmask 255.255.255.0
gateway 10.47.4.100
- Flamme (Laravel Worker)
auto eth0
iface eth0 inet static
address 10.47.4.4
netmask 255.255.255.0
gateway 10.47.4.100
- Frieren (Laravel Worker)
auto eth0
iface eth0 inet static
address 10.47.4.5
netmask 255.255.255.0
gateway 10.47.4.100
- Lugner (PHP Worker)
auto eth0
iface eth0 inet static
address 10.47.3.1
netmask 255.255.255.0
gateway 10.47.3.100
- Linie (PHP Worker)
auto eth0
iface eth0 inet static
address 10.47.3.4
netmask 255.255.255.0
gateway 10.47.3.100
- Lawine (PHP Worker)
auto eth0
iface eth0 inet static
address 10.47.3.5
netmask 255.255.255.0
gateway 10.47.3.100
- Revolte, Richter, Sein, dan Stark (Client)
auto eth0
iface eth0 inet dhcp
Setelah mengalahkan Demon King, perjalanan berlanjut. Kali ini, kalian diminta untuk melakukan register domain berupa riegel.canyon.yyy.com untuk worker Laravel dan granz.channel.yyy.com untuk worker PHP (0) mengarah pada worker yang memiliki IP [prefix IP].x.1.
Melakukan register domain dilakukan pada node yang menjadi DNS Server, yaitu pada node Heater, berikut adalah konfigurasi DNS nya
apt-get install bind9 -y
echo 'zone "riegel.canyon.e21.com" {
type master;
file "/etc/bind/jarkom/riegel.canyon.e21.com";
};
zone "granz.channel.e21.com" {
type master;
file "/etc/bind/jarkom/granz.channel.e21.com";
};' > /etc/bind/named.conf.local
mkdir -p /etc/bind/jarkom
cp /etc/bind/db.local /etc/bind/jarkom/riegel.canyon.e21.com
cp /etc/bind/db.local /etc/bind/jarkom/granz.channel.e21.com
echo ';
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA root.riegel.canyon.e21.com. (
2023111401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS riegel.canyon.e21.com.
@ IN A 10.47.4.1 ; IP Fern
www IN CNAME riegel.canyon.e21.com.' > /etc/bind/jarkom/riegel.canyon.e21.com
echo '
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA granz.channel.e21.com. root.granz.channel.e21.com. (
2023111401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS granz.channel.e21.com.
@ IN A 10.47.3.1 ; IP Lugner
www IN CNAME granz.channel.e21.com.' > /etc/bind/jarkom/granz.channel.e21.com
echo 'options {
directory "/var/cache/bind";
forwarders {
192.168.122.1;
};
// dnssec-validation auto;
allow-query{any;};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
}; ' >/etc/bind/named.conf.options
service bind9 start
Konfigurasi DNS tersebut mengarahkan domain riegel.canyon.e21.com ke IP node Fern 10.47.4.1
(Laravel Worker) dan domain granz.channel.e21.com ke IP node Lugner 10.47.3.1
(PHP Worker).
Untuk mencoba apakah domain tersebut benar dapat diakses, kita perlu menambahkan terlebih dahulu IP DNS Server (Heater), ke dalam file /etc/resolv.conf
, jalakan script berikut, pada node selain node client (pada node client akan ditambahkan melalui DHCP):
echo 'nameserver 10.47.1.2
nameserver 192.168.122.1
' > /etc/resolv.conf
apt update -y
apt-get install dnsutils htop jq apache2-utils lynx -y
Untuk mencobanya gunakan command berikut
ping granz.channel.e21.com -c 5
ping riegel.canyon.e21.com -c 5
![image](https://private-user-images.githubusercontent.com/87474722/284056381-4a81b499-5e22-4a5c-8459-792ddf87f649.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTYzODEtNGE4MWI0OTktNWUyMi00YTVjLTg0NTktNzkyZGRmODdmNjQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM5YjQyNWZjYzNhMzg4MjllNGFhNWE0YTBhMjZhNWI1ODcyMjJkMzE5ZTJhNWY1OWZmNWUyYzA1NGQ3ODVkN2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.iXCv3l5LNARj-bG9yWdqnOI0LUAKbOIEuYMV1pKlCog)
Lakukan konfigurasi sesuai dengan peta yang sudah diberikan. Kemudian, karena masih banyak spell yang harus dikumpulkan, bantulah para petualang untuk memenuhi kriteria berikut:
- Semua CLIENT harus menggunakan konfigurasi dari DHCP Server.
Pada peta yang diberikan menggunakan image docker danielcristh0/debian-buster:1.1
, untuk itu perlu membuat template docker baru, dengan image mengarah pada image docker yang telah diberikan.
Kemudian menyusun setiap node, sesuai dengan peta, dan memberikan network configuration seperti yang telah ditampilkan pada bagian Network Configuration
Selanjutnya untuk konfigurasi DHCP server yang diletakan pada node Himmel adalah sebagai berikut:
apt-get install isc-dhcp-server -y
echo "
INTERFACESv4=\"eth0\"
#INTERFACESv6=\"\"
" > /etc/default/isc-dhcp-server
yes | echo "
default-lease-time 600;
max-lease-time 7200;
subnet 10.47.1.0 netmask 255.255.255.0 {}
subnet 10.47.2.0 netmask 255.255.255.0 {}
subnet 10.47.3.0 netmask 255.255.255.0 {
range 10.47.3.16 10.47.3.32;
range 10.47.3.64 10.47.3.80;
option routers 10.47.3.100;
option broadcast-address 10.47.3.255;
option domain-name-servers 10.47.1.2;
default-lease-time 180;
max-lease-time 5760;
}
subnet 10.47.4.0 netmask 255.255.255.0 {
range 10.47.4.12 10.47.4.20;
range 10.47.4.160 10.47.4.168;
option routers 10.47.4.100;
option broadcast-address 10.47.4.255;
option domain-name-servers 10.47.1.2;
default-lease-time 720;
max-lease-time 5760;
}
" > /etc/dhcp/dhcpd.conf
rm /var/run/dhcpd.pid
service isc-dhcp-server restart
Berikutnya untuk konfigurasi pada DHCP relay, yaitu di node Aura, yang menjadi penghubung antara DHCP server dan client, menggunakan script berikut:
apt update -y
apt-get install isc-dhcp-relay -y
echo '
SERVERS="10.47.1.1"
INTERFACES="eth1 eth2 eth3 eth4"
OPTIONS=""
' > /etc/default/isc-dhcp-relay
echo '
net.ipv4.ip_forward=1
' > /etc/sysctl.conf
service isc-dhcp-relay restart
Setelah itu kita perlu melakukan restart pada node client, dan ketika kita masuk ke console pada node client, akan terlihat bahwa node client sekarang sudah memiliki alamat IP.
- Client yang melalui Switch3 mendapatkan range IP dari [prefix IP].3.16 - [prefix IP].3.32 dan [prefix IP].3.64 - [prefix IP].3.80 (2) Pengaturan range IP untuk client yang melalui Switch3 ada pada bagian berikut, di script sebelumnya.
subnet 10.47.3.0 netmask 255.255.255.0 {
...
range 10.47.3.16 10.47.3.32;
range 10.47.3.64 10.47.3.80;
...
}
Jika dilihat maka IP dari client yang melalui switch3 juga berada pada •range• yang telah ditentukan.
- Client yang melalui Switch4 mendapatkan range IP dari [prefix IP].4.12 - [prefix IP].4.20 dan [prefix IP].4.160 - [prefix IP].4.168 (3) Sama seperti sebelumnya, Pengaturan range IP untuk client yang melalui Switch4 ada pada bagian berikut, di script sebelumnya.
subnet 10.47.4.0 netmask 255.255.255.0 {
...
range 10.47.4.12 10.47.4.20;
range 10.47.4.160 10.47.4.168;
...
}
Jika dilihat maka IP dari client yang melalui switch4 juga berada pada •range• yang telah ditentukan.
- Client mendapatkan DNS dari Heiter dan dapat terhubung dengan internet melalui DNS tersebut (4) Agar Client menerimaa DNS dari DNS Server yaitu Heiter. Diberikan konfigurasi berikut:
subnet 10.47.3.0 netmask 255.255.255.0 {
...
option domain-name-servers 10.47.1.2;
...
}
subnet 10.47.4.0 netmask 255.255.255.0 {
...
option domain-name-servers 10.47.1.2;
...
}
kemudian agar Client dapat terhubung ke internet melalui node DNS Server Heiter digunakan DNS forwarder, yang sebelumnya juga telah dilakukan pada bagian berikut:
echo 'options {
directory "/var/cache/bind";
forwarders {
192.168.122.1;
};
// dnssec-validation auto;
allow-query{any;};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
}; ' >/etc/bind/named.conf.options
- Lama waktu DHCP server meminjamkan alamat IP kepada Client yang melalui Switch3 selama 3 menit sedangkan pada client yang melalui Switch4 selama 12 menit. Dengan waktu maksimal dialokasikan untuk peminjaman alamat IP selama 96 menit (5)
Untuk pengaturan lama waktu peminjaman ada pada bagian berikut, waktu tersebut diubah dulu ke dalam bentuk detik, sehingga waktu peminjaman untuk client yang melalui Switch3 menjadi 180 detik, cleint yang melalui switch 4 menjadi 720 detik, dan waktu maksimalnya menjadi 5760 detik.
subnet 10.47.3.0 netmask 255.255.255.0 {
...
default-lease-time 180;
max-lease-time 5760;
...
}
subnet 10.47.4.0 netmask 255.255.255.0 {
...
default-lease-time 720;
max-lease-time 5760;
...
}
Setelah proses pada node Himmel selesai, selanjutnya lakukan restart pada Node Aura yang menjadi DHCP Relay, dan pada Client, agar Client bisa meneripa IP dari DHCP.
Client juga telah terhubung ke internet, melalui DNS Forwarders.
Pada masing-masing worker PHP, lakukan konfigurasi virtual host untuk website berikut dengan menggunakan php 7.3. (6)
Jalankan script berikut pada PHP Worker, untuk melakukan konfigurasi virtual host pada website tersebut. dengan menggunakan php 7.3.
apt install nginx php7.3 php7.3-fpm wget zip htop -y
wget -O '/var/www/jarkom.zip' 'https://drive.google.com/uc?id=1ViSkRq7SmwZgdK64eRbr5Fm1EGCTPrU1&export=download'
unzip -o /var/www/jarkom.zip -d /var/www/
rm /var/www/jarkom.zip
echo '
server {
listen 8000;
root /var/www/modul-3;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/jarkom_error.log;
access_log /var/log/nginx/jarkom_access.log;
}
' > /etc/nginx/sites-available/modul-3
ln -s /etc/nginx/sites-available/modul-3 /etc/nginx/sites-enabled/modul-3
rm /etc/nginx/sites-enabled/default
service nginx restart
service php7.3-fpm stop
service php7.3-fpm start
Kemudian untuk melakukan pengujian jalankan command berikut pada php worker:
lynx localhost:8000
![image](https://private-user-images.githubusercontent.com/87474722/284056779-9877e921-1af9-4f20-9cae-809c01acc50d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTY3NzktOTg3N2U5MjEtMWFmOS00ZjIwLTljYWUtODA5YzAxYWNjNTBkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5ZDE5MDA2YmY3NWI1MmFiYzA4YmZhMjUzYmUyZDE2OGZiMWE1ZTZjOGE1ZTg2NGQxMDUyNjQ2OTM4ODRmODcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.agp9hFsUufghYib4N8ff5eWnzaRRZtjF9Qz-tkxshPs)
Kepala suku dari Bredt Region memberikan resource server sebagai berikut: Lawine, 4GB, 2vCPU, dan 80 GB SSD; Linie, 2GB, 2vCPU, dan 50 GB SSD; Lugner 1GB, 1vCPU, dan 25 GB SSD; aturlah agar Eisen dapat bekerja dengan maksimal, lalu lakukan testing dengan 1000 request dan 100 request/second. (7)
Untuk mengatur Load balancer Eisen gunakan script berikut, pada node Eisen:
apt install nginx -y
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
Kemudian kita juga perlu menjalankan script berikut pada node Lugner, yang menjadi lokasi dari domain granz.channel.e21.com yang sebelumnya telah diatur pada DNS Server. Hal ini untuk mengarahkan request ke Load Balancer. gunakan script berikut untuk melakukannya pada node Lugner:
apt install nginx php7.3 php7.3-fpm wget zip htop -y
echo '
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_set_header Host $host;
proxy_pass http://10.47.2.2; #IP Eisen
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
wget -O '/var/www/jarkom.zip' 'https://drive.google.com/uc?id=1ViSkRq7SmwZgdK64eRbr5Fm1EGCTPrU1&export=download'
unzip -o /var/www/jarkom.zip -d /var/www/
rm /var/www/jarkom.zip
echo '
server {
listen 8000;
root /var/www/modul-3;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/jarkom_error.log;
access_log /var/log/nginx/jarkom_access.log;
}
' > /etc/nginx/sites-available/modul-3
ln -s /etc/nginx/sites-available/modul-3 /etc/nginx/sites-enabled/modul-3
rm /etc/nginx/sites-enabled/default
service nginx restart
service php7.3-fpm stop
service php7.3-fpm start
Kemudian untuk melakukan pengujian dengan 1000 request dan 100 request/second, gunakan command berikut pada node client:
ab -n 1000 -c 100 http://www.granz.channel.e21.com/
![image](https://private-user-images.githubusercontent.com/87474722/284057027-1bdd8778-fae4-4d8c-b3a4-6bd3d4c6d608.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTcwMjctMWJkZDg3NzgtZmFlNC00ZDhjLWIzYTQtNmJkM2Q0YzZkNjA4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU3YzBmNzcxMzQ4N2U4NWU2ZGYzZDFkYjI5NTQyODhiYWZmNjRiZjViZjQ4OTU0NjBkODNjMzdlODRmNTg2ZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MOzU-qjlK-_CLfgHT-r_qeQenZkb5tNUapHEdBsKYJ8)
![image](https://private-user-images.githubusercontent.com/87474722/284057036-0a1aac5a-a1c6-4279-b6fd-0147d5eb59c1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTcwMzYtMGExYWFjNWEtYTFjNi00Mjc5LWI2ZmQtMDE0N2Q1ZWI1OWMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA1NWJhMWIzNzAwNTAxNGFkZTQ0OTJmY2Y0MDNjNjg2YzQ4NzU3YWFlNjYwZTlmYTExNmY2YmFlNTcxNTUzNWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.b-nzY8YG1opgFLqJZDZFV3JZnn5A31rp0KdVNza2Kw0)
![image](https://private-user-images.githubusercontent.com/87474722/284057052-296cf3ac-5570-428f-8c1c-f9b1e74986e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTcwNTItMjk2Y2YzYWMtNTU3MC00MjhmLThjMWMtZjliMWU3NDk4NmU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBiMDJkYThiNDRiYzNmZTExMmU2OWZiYzcwZTM3YTVkMTVkZDE0NWM4YTNkMTQ3NzM4NTIwYjNkNjZlMTlkZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.l4gtY3hQ4siA1ZylNtq8SjcDO9Q-a4eWAtgkud6Hvuc)
![image](https://private-user-images.githubusercontent.com/87474722/284057160-16f2f703-cf68-4c5b-88fc-f620714918ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTcxNjAtMTZmMmY3MDMtY2Y2OC00YzViLTg4ZmMtZjYyMDcxNDkxOGFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM1OWRmZDUwM2E4ZjE1ZmUyMzIwZjEzNzUzOTMyMjgzOWEzYTE0YzhmN2I2MmM5OTg2ODlmZmUyNjIwODg1ZWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.kPmNhB7egM8wZEXvfBDkAyKKzrTMDC_TibJm4Hyzbeg)
Karena diminta untuk menuliskan grimoire, buatlah analisis hasil testing dengan 200 request dan 10 request/second masing-masing algoritma Load Balancer dengan ketentuan sebagai berikut:
- Nama Algoritma Load Balancer
- Report hasil testing pada Apache Benchmark
- Grafik request per second untuk masing masing algoritma.
- Analisis (8)
Gunakan commmand berikut untuk menlakukan testing
ab -n 200 -c 10 http://www.granz.channel.e21.com/
Perbarui algoritma load balancer pada node Eisen, menggunakan script berikut
- Round Robin
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284058973-8ed2fad4-b57d-4422-8c5b-4cad09de38d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTg5NzMtOGVkMmZhZDQtYjU3ZC00NDIyLThjNWItNGNhZDA5ZGUzOGQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcyODY4Y2RmNDI5NjFkZWUyNmViNDQwMTI4NzM3YmFjNjU0ZDhkNzhiMGI5OTI1ODM5NjVlYjgxZjZmMTJkOTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bIxbn_xKqliU0QrkgTp62QvK6v3EvhCFTsqY7rCXMiU)
![image](https://private-user-images.githubusercontent.com/87474722/284059344-0e587f73-78f1-43a5-901e-8837c2ff3349.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkzNDQtMGU1ODdmNzMtNzhmMS00M2E1LTkwMWUtODgzN2MyZmYzMzQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEzZjZlM2EyOTA4ZDNlZTVkMzNlZmY1YmRmNTA3ZTE5ODZmYTZlNGU0NmYwYmQ0MWFhMjg2ZTViZjkwODBhNjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TvrT8fXBw_3oKxbYE1XzRb0c03K2LwetlqSIHJYqXSA)
- Least Connection
echo '
upstream granz {
least_conn;
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059010-a7bf1652-de76-4cd9-8733-0619ca7853be.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkwMTAtYTdiZjE2NTItZGU3Ni00Y2Q5LTg3MzMtMDYxOWNhNzg1M2JlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI4NjhiMGE5YzgxZjY4MGQzM2ZlY2E5MGY4MzBmYWQ3YTZjMzM5Zjc5YmI5MDIwMTNiOWRhYTA5OTZiYWI4NDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IZaNys7z1t13VrtWl1JiKCoOezn9O2e0RnOAETbzwec)
![image](https://private-user-images.githubusercontent.com/87474722/284059249-079c1513-81e9-47de-b9cf-958131cbfc67.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkyNDktMDc5YzE1MTMtODFlOS00N2RlLWI5Y2YtOTU4MTMxY2JmYzY3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRmODdjYzllNTAyMmJjMTJkOGEwNTkzNWY5ZmVjYzZlYWYzMWM4MzhlZDgzYjM2MGY2MjlhOTMzYjg5MjUyYWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.0NznhN7Gi2ppmFOQMqSGJHSno8XUEzhlscvtbz5QqHw)
- IP Hash:
echo '
upstream granz {
ip_hash;
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059057-0e1f428f-65d5-4a4f-beab-67f0b6769ce5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkwNTctMGUxZjQyOGYtNjVkNS00YTRmLWJlYWItNjdmMGI2NzY5Y2U1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5OGVmNGU5MjU4NTgzMWYzY2Y2MzcxZDJmMDg4ZTI2YzQ2ZTAxNmJlNTU1ZjBmZDVmY2E1NzJjZTAxNzNjODgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ivHdTYa6Ux7DPrDQ1UNNBGOty6c8qmPVRbVdISmxbUs)
![image](https://private-user-images.githubusercontent.com/87474722/284059208-859b3d2b-b82f-49f1-b078-821b0f9d42d2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkyMDgtODU5YjNkMmItYjgyZi00OWYxLWIwNzgtODIxYjBmOWQ0MmQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU0NjBhYWFiYmRkOGJiODMxYzZjNDQ1ZmU0YTFiOTg2MDQxNjNiMjI0NDYzMGY3NGYyMDI2OTBiNTEwNzE2MTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.h1pEm0gRNIJExydjf8QCk7fcP-PI87i-QA63u0-02-g)
- Generic Hash
echo '
upstream granz {
hash $request_uri consistent;
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059090-91916c86-186c-447a-8355-9ab2ba5d3795.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkwOTAtOTE5MTZjODYtMTg2Yy00NDdhLTgzNTUtOWFiMmJhNWQzNzk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyOTQxMDU5YTVkYWUyZDc4NDM0OGQ5ZDIxMTI0OGU4NTI2NDkyOTJhM2Y3MTcyYmQ5NzkwODc0OGI3YjNjMzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.nSgACYWx3Sv7NmVKbarQh0NHWsXO-bcqTpQTZmGwBaU)
![image](https://private-user-images.githubusercontent.com/87474722/284059169-8f144a39-2c36-4ccd-b62f-88960d758a9e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTkxNjktOGYxNDRhMzktMmMzNi00Y2NkLWI2MmYtODg5NjBkNzU4YTllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFlNzg3MzQ5YjU3MTAxNzUzOWZjOGZkYTg0YmQ5NDdiMGUzNjhkNDMxNDBkN2MxNmU5N2Y0NDVlNGQ4NDgwYmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.8bR_a8hFh9TSHtx59mctAiCa7FlDZuVcodIGhrud9LM)
Dengan menggunakan algoritma Round Robin, lakukan testing dengan menggunakan 3 worker, 2 worker, dan 1 worker sebanyak 100 request dengan 10 request/second, kemudian tambahkan grafiknya pada grimoire. (9)
Gunakan commmand berikut untuk menlakukan testing
ab -n 100 -c 10 http://www.granz.channel.e21.com/
- 3 Worker
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059552-09e5738f-eb19-47d2-bd58-a9af8a7aaec0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTk1NTItMDllNTczOGYtZWIxOS00N2QyLWJkNTgtYTlhZjhhN2FhZWMwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiZGYwOTM2MzRmMWMwYTViMjY3OGVkYzllMjEyODk3MDEzMDM1YzdmYjJhODE1MzJmZjY4NjYzNjg0NDg4M2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QmGh60QKx_1vGeGuum-UfUoBlHWWRrsqSevG0qfbu6w)
- 2 Worker
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059703-d90d7a15-7a06-430d-a620-647adf0c0453.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTk3MDMtZDkwZDdhMTUtN2EwNi00MzBkLWE2MjAtNjQ3YWRmMGMwNDUzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRhMTJlMWY0ZDg0OGI1OTljZGJmMjU2MzIwOGM5NThmNTRmMjg3MTU5MTc3MzZlYWI4Nzg3OWM0YTY5ODkzMmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.h-Q3rby8lCLr1ajIq7-3RDssj9JAhcr2h3jHKyoed24)
- 1 Worker
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location / {
proxy_pass http://granz;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
![image](https://private-user-images.githubusercontent.com/87474722/284059795-92d1b4d6-7177-4037-b6e6-06e98291206e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTk3OTUtOTJkMWI0ZDYtNzE3Ny00MDM3LWI2ZTYtMDZlOTgyOTEyMDZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY2N2M2NzlmZWIxYmNkNWUwNDllOTM5MzM5N2I5MzYyM2IyMGFlYmEyMDk4YzhmMzg3ZjU1Y2M4ZGM5ODM0ZTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Mst9qCA38O-TFkmS4aVY1WO4680xkqpz-PrybahESQg)
Selanjutnya coba tambahkan konfigurasi autentikasi di LB dengan dengan kombinasi username: “netics” dan password: “ajkyyy”, dengan yyy merupakan kode kelompok. Terakhir simpan file “htpasswd” nya di /etc/nginx/rahasisakita/ (10)
Untuk menambahkan autentikasi pada Load Balancer, jalankan command berikut:
mkdir /etc/nginx/rahasiakita
echo 'ajke21' | htpasswd -ic /etc/nginx/rahasiakita/.htpasswd netics
Kemudian untuk memperbarui konfigurasi webserver, jalankan script berikut:
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
auth_basic "Authorization";
auth_basic_user_file /etc/nginx/rahasiakita/.htpasswd;
location / {
proxy_pass http://granz;
}
}
'> /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
Untuk mencobanya, coba akses granz.channel.e21.com
menggunakan lynx
:
lynx granz.channel.e21.com
![image](https://private-user-images.githubusercontent.com/87474722/284057389-18d73842-5500-4afc-9bb7-b5a58877fab4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTczODktMThkNzM4NDItNTUwMC00YWZjLTliYjctYjVhNTg4NzdmYWI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQwZjhmYTQzMzM1ZGRkYTFiZTkxODAzZjQzNzVkZGUwNDg4YWU0MzUzY2I4ODA3YzVhOTgzNmI0ODNjYTA3MGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.wZA9KD9arTct4Ifrli1m1LdTksRC9BhrDXgw3qST_uY)
![image](https://private-user-images.githubusercontent.com/87474722/284057397-4c80fdca-da1a-4470-b196-c3451aba12ff.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTczOTctNGM4MGZkY2EtZGExYS00NDcwLWIxOTYtYzM0NTFhYmExMmZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwZGY2YzZkZDczN2EwOTM0ZmQ5YjU1YTZiNjJlODg2ZjRhMGQ0NTE5MWQyOWQxNTUwYmU5YTIwMzYxZTliZDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.vWXdQYk7TavRh8ZsA2gQFBIxWncH4xV58B6jXa9Q_nQ)
![image](https://private-user-images.githubusercontent.com/87474722/284057524-352f42a9-31df-496d-92f4-2f1bd6491871.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTc1MjQtMzUyZjQyYTktMzFkZi00OTZkLTkyZjQtMmYxYmQ2NDkxODcxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYwYWNiM2VkNzdjZjJjNTdmNzZkZjllZDJmNjQzOTQ5MmZiZDdkYzY0NDhiMmZkZTNmODAyOWQ3OWJiNDlhYTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ToDnOjrGWuOH0S_Zs4eZh-nV4AFUm9_DC48N1LtNbGM)
Lalu buat untuk setiap request yang mengandung /its akan di proxy passing menuju halaman https://www.its.ac.id. (11) hint: (proxy_pass)
Gunakan script berikut pada node Lugner untuk memperbarui konfigurasi webserver agar mengatur request yang mengandung /its:
apt install nginx php7.3 php7.3-fpm wget zip htop -y
echo '
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location ~ /its {
proxy_pass https://www.its.ac.id;
proxy_set_header Host www.its.ac.id;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_set_header Host $host;
proxy_pass http://10.47.2.2; #IP Eisen
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
service php7.3-fpm stop
service php7.3-fpm start
Jalankan command berikut untuk mencobanya:
lynx granz.channel.e21.com/its
![image](https://private-user-images.githubusercontent.com/87474722/284057591-39d8b54c-8d9d-4d16-b5ea-aec51904546c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTc1OTEtMzlkOGI1NGMtOGQ5ZC00ZDE2LWI1ZWEtYWVjNTE5MDQ1NDZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE4ZDMzNjI5ZGFmYzIxZDQ0M2RmNWQxNjU3ZmU3OGNmM2Q1ZTBmM2U1NWM3OTRkZTViMThiNTg3NjFhOTNiNDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QCRzes6OIYvMIcO1UVKAwIcR2earoAqPVRRXNvnbdCg)
![image](https://private-user-images.githubusercontent.com/87474722/284057618-49f02986-347e-4fa3-a345-4be68a5a0ef5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTc2MTgtNDlmMDI5ODYtMzQ3ZS00ZmEzLWEzNDUtNGJlNjhhNWEwZWY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdkNjVkNDAyMzNmMzA1MjdkYjMwMjNlNzY0YWE1MWZlYmZkOGQ4ZmMwMDEwYWIxOGZkYzY3MjQ3ZmQ2MzI3ZGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PrUNwdNceHvKe_i6Dp9JO0HROdUU7yy7UC7Dl64mXt4)
Selanjutnya LB ini hanya boleh diakses oleh client dengan IP [Prefix IP].3.69, [Prefix IP].3.70, [Prefix IP].4.167, dan [Prefix IP].4.168. (12) hint: (fixed in dulu clinetnya)
Gunakan script berikut pada node Lugner untuk memperbarui konfigurasi webserver agar mengarahkan request ke Load Balancer oleh client dengan IP yang telah ditentukan.
echo '
geo $allowed {
default 0;
10.47.3.69 1;
10.47.3.70 1;
10.47.4.167 1;
10.47.4.168 1;
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
location ~ /its {
proxy_pass https://www.its.ac.id;
proxy_set_header Host www.its.ac.id;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_set_header Host $host;
if ($allowed) {
proxy_pass http://10.47.2.2; #IP Eisen
}
deny all;
return 403;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
service php7.3-fpm stop
service php7.3-fpm start
Disini, kami mencoba mengakses melaui client Revolte, yang pada saat ini dijalankan DHCP server memberikan IP, 10.47.3.18
. Maka karena hanya range tertentu yang bisa mengakses, otomatis pada percobaan ini tidak akan berhasil untuk mengakses granz.channel.e21.com
Karena para petualang kehabisan uang, mereka kembali bekerja untuk mengatur riegel.canyon.yyy.com. Semua data yang diperlukan, diatur pada Denken dan harus dapat diakses oleh Frieren, Flamme, dan Fern. (13)
Jalankan script berikut pada node yang menjadi database server, yaitu node Denken:
apt-get install mariadb-server -y
echo '
[client-server]
[mysqld]
skip-networking=0
skip-bind-address
' > /etc/mysql/my.cnf
service mysql restart
echo "
CREATE USER IF NOT EXISTS 'kelompoke21'@'%' IDENTIFIED BY 'passworde21';
CREATE USER IF NOT EXISTS 'kelompoke21'@'localhost' IDENTIFIED BY 'passworde21';
CREATE DATABASE IF NOT EXISTS dbkelompoke21;
GRANT ALL PRIVILEGES ON *.* TO 'kelompoke21'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'kelompoke21'@'localhost';
FLUSH PRIVILEGES;
" > ~/script.sql
mysql < ~/script.sql
Kemudian untuk melakukan pengujian, kita bisa menjalankan command berikut pada Laravel Worker (Frieren, Flamme, dan Fern),
apt-get install mariadb-client -y
mariadb --host=10.47.2.1 --port=3306 --user=kelompoke21 --password=passworde21 dbkelompoke21 -e "SHOW DATABASES;"
![image](https://private-user-images.githubusercontent.com/87474722/284047249-813c798c-3193-4d50-bbbd-dc834c1b2d0e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDcyNDktODEzYzc5OGMtMzE5My00ZDUwLWJiYmQtZGM4MzRjMWIyZDBlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVjODRlNzA5MzQ3MzhjYjJhOWZhYzZiNjVkY2JkYjZhMTI2MDE2MWZmMzM0NzY5Yzc5Njc0ODhiMzFjNmVlOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PAjaYWtgs4cN-hWUyKcb9j7U9uOAeC6qnQdQt_FPZv0)
Frieren, Flamme, dan Fern memiliki Riegel Channel sesuai dengan quest guide berikut. Jangan lupa melakukan instalasi PHP8.0 dan Composer (14)
Pada node Fern, karena IP Fern tujuan dari domain riegel.canyon.e21.com, maka kita perlu mengarahkan request agar menuju ke Load balancer, sebelum mengakses web, sama seperti yang dilakukan pada node Lugner, gunakan script berikut:
rm /etc/apt/sources.list.d/php.list
apt-get update
apt install nginx php8.0 php8.0-fpm wget zip htop -y
apt-get install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
apt-get install mariadb-client -y
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update
apt-get install php8.0-mbstring php8.0-xml php8.0-cli php8.0-common php8.0-intl php8.0-opcache php8.0-readline php8.0-mysql php8.0-fpm php8.0-curl -y
wget https://getcomposer.org/download/2.0.13/composer.phar
chmod +x composer.phar
mv composer.phar /usr/bin/composer
echo '
server {
listen 80;
server_name riegel.canyon.e21.com www.riegel.canyon.e21.com;
location / {
proxy_pass http://10.47.2.2; #IP Eisen
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
wget -O '/var/www/jarkom.zip' 'https://github.com/martuafernando/laravel-praktikum-jarkom/archive/refs/heads/main.zip'
unzip -o /var/www/jarkom.zip -d /var/www/
rm /var/www/jarkom.zip
echo '
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=10.47.2.1
DB_PORT=3306
DB_DATABASE=dbkelompoke21
DB_USERNAME=kelompoke21
DB_PASSWORD=passworde21
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
JWT_SECRET=o9HWEIfemIeWt5bn8UuiMTrLQyeNsjmCRNDW7X8gRqkb3CJEEIshDjtCs2abcVcA
' > /var/www/laravel-praktikum-jarkom-main/.env
cd /var/www/laravel-praktikum-jarkom-main
composer update
php artisan migrate:fresh
php artisan db:seed --class=AiringsTableSeeder
php artisan key:generate
cd ~
echo '
server {
listen 8000;
root /var/www/laravel-praktikum-jarkom-main/public;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/jarkom_error.log;
access_log /var/log/nginx/jarkom_access.log;
}
' > /etc/nginx/sites-available/laravel-praktikum-jarkom-main
ln -s /etc/nginx/sites-available/laravel-praktikum-jarkom-main /etc/nginx/sites-enabled/laravel-praktikum-jarkom-main
chown -R www-data.www-data /var/www/laravel-praktikum-jarkom-main/storage
rm /etc/nginx/sites-enabled/default
service nginx restart
service php8.0-fpm stop
service php8.0-fpm start
Pada Laravel Worker lainnya, yaitu Node Frieren dan Flamme jalankan script berikut:
rm /etc/apt/sources.list.d/php.list
apt-get update
apt install nginx php8.0 php8.0-fpm wget zip htop -y
apt-get install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
apt-get install mariadb-client -y
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update
apt-get install php8.0-mbstring php8.0-xml php8.0-cli php8.0-common php8.0-intl php8.0-opcache php8.0-readline php8.0-mysql php8.0-fpm php8.0-curl -y
wget https://getcomposer.org/download/2.0.13/composer.phar
chmod +x composer.phar
mv composer.phar /usr/bin/composer
wget -O '/var/www/jarkom.zip' 'https://github.com/martuafernando/laravel-praktikum-jarkom/archive/refs/heads/main.zip'
unzip -o /var/www/jarkom.zip -d /var/www/
rm /var/www/jarkom.zip
echo '
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=10.47.2.1
DB_PORT=3306
DB_DATABASE=dbkelompoke21
DB_USERNAME=kelompoke21
DB_PASSWORD=passworde21
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
JWT_SECRET=o9HWEIfemIeWt5bn8UuiMTrLQyeNsjmCRNDW7X8gRqkb3CJEEIshDjtCs2abcVcA
' > /var/www/laravel-praktikum-jarkom-main/.env
cd /var/www/laravel-praktikum-jarkom-main
composer update
php artisan key:generate
cd ~
echo '
server {
listen 8000;
root /var/www/laravel-praktikum-jarkom-main/public;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/jarkom_error.log;
access_log /var/log/nginx/jarkom_access.log;
}
' > /etc/nginx/sites-available/laravel-praktikum-jarkom-main
ln -s /etc/nginx/sites-available/laravel-praktikum-jarkom-main /etc/nginx/sites-enabled/laravel-praktikum-jarkom-main
chown -R www-data.www-data /var/www/laravel-praktikum-jarkom-main/storage
rm /etc/nginx/sites-enabled/default
service nginx restart
service php8.0-fpm stop
service php8.0-fpm start
Untuk pengujian jalankan command berikut, pada salah satu worker laravel:
lynx localhost:8000
![image](https://private-user-images.githubusercontent.com/87474722/284048199-1fa92bfb-ef6b-4780-868c-5bad55b666c3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDgxOTktMWZhOTJiZmItZWY2Yi00NzgwLTg2OGMtNWJhZDU1YjY2NmMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2NjIzODc0MjM1NWI4YmY3NTIyNjA5ODRiMTQ5Y2UxNjYwZjJkOWFiOTk5Zjk1MWRkMTM3ZTZjYzZjYzY1NjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rip8vT52XJBkbA3hYgjODuUeS4tCjzN-XdbePP1QPxM)
Riegel Channel memiliki beberapa endpoint yang harus ditesting sebanyak 100 request dengan 10 request/second. Tambahkan response dan hasil testing pada grimoire.
- POST /auth/register (15)
Response
curl -X POST http://10.47.4.1:8000/api/auth/register -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"username": "test123", "password": "test123"}' | jq
![image](https://private-user-images.githubusercontent.com/87474722/284050886-659c84a8-6106-4ed8-ad3f-7554189b60c4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTA4ODYtNjU5Yzg0YTgtNjEwNi00ZWQ4LWFkM2YtNzU1NDE4OWI2MGM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmYzJjYjhiNGUzNGQ5NDI3MmU3NDg0YjY0MTQyM2FjYzUyOGYxNDZmMzQ5ODAxNmY4OWI3Njg2YmU1ZGY1M2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.sM86hiM8z1rX4P7V5lG6DCCfFqUHABHXDLMNJUuugU0)
Testing
echo {"username": "test123", "password": "test123"} > register.json && ab -n 100 -c 10 -p register.json -T application/json http://10.47.4.4:8000/api/auth/register
![image](https://private-user-images.githubusercontent.com/87474722/284048296-195e3cb3-5f94-46af-b565-76def8b3ad58.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDgyOTYtMTk1ZTNjYjMtNWY5NC00NmFmLWI1NjUtNzZkZWY4YjNhZDU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNlMjRlYzRhYTliYzllYjQyOWZjYzE3MmJhNGNlMmFhOGMxMWE0NTQ4Yzc5MGIzOWY1NmY4YTNjMTYzYjRkMmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FBRNu7GlSQyqqlxmkmZ2TbXYXn4HpSoJC9x3LCN7u5M)
- POST /auth/login (16)
Response
curl -X POST http://10.47.4.1:8000/api/auth/login -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"username": "test123", "password": "test123"}' | jq
![image](https://private-user-images.githubusercontent.com/87474722/284050942-31544bf2-1a0b-4a33-b0de-f4c829047238.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTA5NDItMzE1NDRiZjItMWEwYi00YTMzLWIwZGUtZjRjODI5MDQ3MjM4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYxZmE3YWZlMDg1ZjM3MzE4ZmMxMTQ3OGU3ODMzYTM1NzZlZmFkNTk1NmQwMjZmZDM2OTRkZTE4ZjUxODliNmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.doyUkuS3i1rx3Agag7Q5WOqAfDnvPNrISjbdZrkpo0I)
Testing
echo {"username": "test123", "password": "test123"} > login.json && ab -n 100 -c 10 -p login.json -T application/json http://10.47.4.4:8000/api/auth/login
![image](https://private-user-images.githubusercontent.com/87474722/284049075-91bc651d-c858-46fc-9890-54fb28e03f24.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDkwNzUtOTFiYzY1MWQtYzg1OC00NmZjLTk4OTAtNTRmYjI4ZTAzZjI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5OTlkMTAxZjk1Y2JhMDM3NjgyMmQ2ZThjNmEzNjNkMzQ3MmE0ODEyZTNhODE3ZjNlMTcyNTUxZGU1MGRjOWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.h7HhCQdkTcrBgKN9eyQrONx2nvTIDinRfy9E7Qr4VD8)
- GET /me (17)
Response
curl -X GET http://10.47.4.1:8000/api/me -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTAuNDcuNC4xOjgwMDAvYXBpL2F1dGgvbG9naW4iLCJpYXQiOjE3MDAzODEwMTQsImV4cCI6MTcwMDM4NDYxNCwibmJmIjoxNzAwMzgxMDE0LCJqdGkiOiIyYlp5bUJteFNycFpOZnVuIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.GQ5Ej6A0uMbUC3sjAKghHnQwVAjIv_Mo1tLvWztgFQc' | jq
![image](https://private-user-images.githubusercontent.com/87474722/284051099-7a9ea547-03c9-4232-835a-41c50cccd68c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNTEwOTktN2E5ZWE1NDctMDNjOS00MjMyLTgzNWEtNDFjNTBjY2NkNjhjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYyM2JmNTUxN2NlOGQ5MTUyM2NkMWQzZTYyNzY2OWM2NmUxNTRiOTk0MTYxZjNjYjQzOTIyNmJlNzEzODY4NWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AMhuSYYduDAdOIGM-EVomfS5TomeplpmHj3oyhoEk_M)
Testing
curl -X POST -H "Content-Type: application/json" -d @login.json http://10.47.4.4:8000/api/auth/login > login_output.txt
token=$(cat login_output.txt | jq -r '.token')
ab -n 100 -c 10 -H "Authorization: Bearer $token" http://10.47.4.4:8000/api/me
![image](https://private-user-images.githubusercontent.com/87474722/284049089-c3a25c2d-d643-44ac-a82f-6a7c39ca1e93.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDkwODktYzNhMjVjMmQtZDY0My00NGFjLWE4MmYtNmE3YzM5Y2ExZTkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEwZmJmZWE4N2EwZDYzNGUwNTVkNjE4ZmVmOTkzMDU4OWVlZGYxNTc2NGRjYjNmNjRiNGE1MzUwNDNmMjg3ZmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.afwDJops3R3q2rVld-kAE5xy3N7m1r_dHTZhzwFcwqY)
Untuk memastikan ketiganya bekerja sama secara adil untuk mengatur Riegel Channel maka implementasikan Proxy Bind pada Eisen untuk mengaitkan IP dari Frieren, Flamme, dan Fern. (18)
Perbarui pengaturan pada Node Load Balancer Eisen, agar bisa mengatur Riegel Channel, gunakan script berikut:
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
upstream riegel {
server 10.47.4.1:8000; #IP Fern
server 10.47.4.4:8000; #IP Frieren
server 10.47.4.5:8000; #IP Flamme
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
auth_basic "Authorization";
auth_basic_user_file /etc/nginx/rahasiakita/.htpasswd;
location / {
proxy_pass http://granz;
}
}
server {
listen 80;
server_name riegel.canyon.e21.com www.riegel.canyon.e21.com;
location / {
proxy_pass http://riegel;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
Pada salah satu client, jalankan command berikut:
lynx riegel.canyon.e21.com
![image](https://private-user-images.githubusercontent.com/87474722/284048031-492f80f0-ca3f-48c4-9dea-a786cff0d51d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDgwMzEtNDkyZjgwZjAtY2EzZi00OGM0LTlkZWEtYTc4NmNmZjBkNTFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEwMzQwNGQ2MzBmY2RjNzdmZDkyMjlmYTYzN2Q0YjY4NjAyN2YyNjI4N2M2YWY5ZTk5ODdlZWQ3ZjQ1Y2QxMzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.YJGRy-LxrTkHLV76O5Qk2L_MJIBwZ3NqBlsXKC7WfM0)
Untuk meningkatkan performa dari Worker, coba implementasikan PHP-FPM pada Frieren, Flamme, dan Fern. Untuk testing kinerja naikkan
- pm.max_children
- pm.start_servers
- pm.min_spare_servers
- pm.max_spare_servers
sebanyak tiga percobaan dan lakukan testing sebanyak 100 request dengan 10 request/second kemudian berikan hasil analisisnya pada Grimoire.(19)
Testing menggunakan command berikut pada client:
echo {"username": "test123", "password": "test123"} > login.json && ab -n 100 -c 10 -p login.json -T application/json http://reigel.canyon.e21.com/api/auth/login
Jalankan script berikut ke semua worker, lalu untuk testing lakukan pada node client, menggunaakan command diatas:
- Percobaan Pertama
echo '
[www]
user = www-data
group = www-data
listen = /run/php/php8.0-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 4
pm.max_spare_servers = 3
' > /etc/php/8.0/fpm/pool.d/www.conf
service php8.0-fpm stop
service php8.0-fpm start
- Percobaaan Kedua
echo '
[www]
user = www-data
group = www-data
listen = /run/php/php8.0-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 40
pm.start_servers = 15
pm.min_spare_servers = 12
pm.max_spare_servers = 9
' > /etc/php/8.0/fpm/pool.d/www.conf
service php8.0-fpm stop
service php8.0-fpm start
- Percobaan Ketiga
echo '
[www]
user = www-data
group = www-data
listen = /run/php/php8.0-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 80
pm.start_servers = 20
pm.min_spare_servers = 16
pm.max_spare_servers = 12
' > /etc/php/8.0/fpm/pool.d/www.conf
service php8.0-fpm stop
service php8.0-fpm start
Nampaknya hanya menggunakan PHP-FPM tidak cukup untuk meningkatkan performa dari worker maka implementasikan Least-Conn pada Eisen. Untuk testing kinerja dari worker tersebut dilakukan sebanyak 100 request dengan 10 request/second. (20)
Untuk mengimplementasikan Least-Conn, Perbarui Load Balancer dengan menambahkan least-conn;
. jalankan script berikut pada node Eisen:
echo ' # Default menggunakan Round Robin
upstream granz {
server 10.47.3.1:8000; #IP Lugner
server 10.47.3.4:8000; #IP Linie
server 10.47.3.5:8000; #IP Lawine
}
upstream riegel {
least_conn;
server 10.47.4.1:8000; #IP Fern
server 10.47.4.4:8000; #IP Frieren
server 10.47.4.5:8000; #IP Flamme
}
server {
listen 80;
server_name granz.channel.e21.com www.granz.channel.e21.com;
auth_basic "Authorization";
auth_basic_user_file /etc/nginx/rahasiakita/.htpasswd;
location / {
proxy_pass http://granz;
}
}
server {
listen 80;
server_name riegel.canyon.e21.com www.riegel.canyon.e21.com;
location / {
proxy_pass http://riegel;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}' > /etc/nginx/sites-available/lb-proxy
ln -s /etc/nginx/sites-available/lb-proxy /etc/nginx/sites-enabled/lb-proxy
rm /etc/nginx/sites-enabled/default
service nginx restart
Untuk melakukan testing, pada client jalankan command berikut:
ab -n 100 -c 10 http://riegel.canyon.e21.com/
![image](https://private-user-images.githubusercontent.com/87474722/284046649-507e706f-98dd-4961-8ce9-7c8a7113854e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg2ODg0NjYsIm5iZiI6MTcxODY4ODE2NiwicGF0aCI6Ii84NzQ3NDcyMi8yODQwNDY2NDktNTA3ZTcwNmYtOThkZC00OTYxLThjZTktN2M4YTcxMTM4NTRlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDA1MjI0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgwZmUyNDQzYWNjY2E4NzgxYmYxNWU1MzZkY2UyYTY1ZGY2OGQ2Yjg5MDc0ODJkNzkwNWU5YzY2YzM1MjUxOGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rbqflcj73oBbV0VZ-Itwve6p7H3Wjw5s5mrFtxS1bfE)