Tampilkan postingan dengan label CentOs. Tampilkan semua postingan
Tampilkan postingan dengan label CentOs. Tampilkan semua postingan

Selasa, 03 Juni 2025

Create Local Repository via http services

Halo guys, Ridwan heres..
Come again with new notes update!

Mungkin banyak dari teman2 yang sudah menggunakan linux dan merasakan kemudahan dalam menginstall packages/apps hanya menggunakan packages manager seperti APT/YUM/DNF/Zypper atau lainnya, di mana sumber packages nya berasal dari internet repository.

Lalu, bagaimana kalau envirovment dari server linux kalian tidak memiliki internet ?

Memang benar, kita bisa menggunakan file installer seperti .deb/.rpm/.pkg atau lainnya,
tapi masalahnya ada beberapa services/daemon biasanya membutuhkan depedency dari packages lainnya. contohnya seperti gambar berikut :

Untuk menginstall NginX saja kita butuh library & dependency lainnya.
dan sangat tidak practice jika kita melakukan install packages tersebut secara manual satu persatu.
Jauh lebih mudah jika kita menggunakan packages manager seperti berikut :

 

Oleh karena itu, hal yang paling praktis adalah kita membuat repository server secara localy seperti repo yang ada pada internet.
Dan pada sisi client tidak perlu banyak config cukup arahkan alamat repo ke server yang sudah kita buat.

Penasaran cara membuat "Localy Repository via http" ?

Right away...  Let's jump !


1. Prerequisite

Pertama kita siapkan server yang akan menjadi media Repository nya.

Pada tulisan ini kita memiliki 3 VM ( 1 Repo, 2 Client = rhel8 & rhel9)

Kedua, Siapkan packages-packages Repository, kalian bisa ambil dari Full DVD

Disini saya menggunakan Full DVD/ISO dari rhel8 & rhel9,
karena di dalam nya sudah ada packages BaseOS & Appstream default dari Red Hat.

Atau kalian bisa menggunakan "reposync"
untuk download semua packages dari Repository internet, agar nanti dapat digunakan oleh server repo kalian.
**Tapi, pada tulisan ini kita tidak akan bahas reposync*


2. Installation

Pada Server repository, lakukan mounting file ISO/DVD tersebut, dengan command berikut :
# mount /dev/sr0 /mnt/rhel8/
# mount /dev/sr1 /mnt/rhel9/
------
# mount [Devices] [Mount-Directory]

Pada tulisan ini saya akan menyiapkan 2 media untuk repo RHEL-8 & RHEL-9.

Kemudian, install service http pada server, karena kita akan menggunakan service http untuk media repo nya

$ sudo dnf install httpd
$ sudo systemctl start httpd
$ sudo systemctl enable httpd

Buat directory pada http services tersebut.
$ sudo mkdir /var/www/html/rhel8
$ sudo mkdir /var/www/html/rhel9


Step terakhir, extract data dari ISO/DVD ke directory http (/var/www/html/rhel*)

$ sudo cd /mnt/rhel8
$ tar cvf - . | (cd /var/www/html/rhel8/;  tar xvf -)
$ ls -l /var/www/html/rhel8/

 
Pastikan semua isi dari ISO/DVD sudah tercopy ke directory http services kalian


3. Crete file .repo pada client

Pada step ini kita akan membuat 2 contoh file .repo :
1. via file/directory

2. via HTTP services

Buat file .repo tersebut pada sisi client, di alamat directory :
/etc/yum.repos.d/NAMING.repo

 

Kemudian ketik command berikut :
$ yum repolist

Lalu.. coba install sesuatu ~
$ yum install mysql nginx php


Pastikan repo yang digunakan mengarah pada server repo yang sudah kita buat.


Sekian untuk tulisan kali ini, semoga bermanfaat~

Best Regards
Rdw

Share:

Selasa, 20 Mei 2025

How to use Virtual BMC for Virtual Machine

 Halo Guys, Ridwan heres..
Come again with new notes update!

Sebagai SysAdmin pasti sudah biasa mendengar Baseboard Management Controller (BMC).
BMC ini biasanya ada di server-server modern dari beberapa brand terkenal seperti :

  • Dell       = iDRAC (integrated Dell Remote Access Controller)
  • HPE       = iLO (Integrated Lights-Out)
  • Cisco     = Cisco IMC (Cisco Integrated Management Controller)
  • Lenovo = XClarity Controller (XCC)
  • Fujitsu  = iRMC (Remote Management Controller)

Untuk details nya kalian bisa kunjungi official document dari masing brand di atas!

Secara fungsi biasanya saya menggunakan service BMC untuk melakukan remote seperti:

  • Power Control
  • Remote Console Akses
  • Troubleshooting/Monitoring Hardware (Temp, Fan Speed, Voltage, etc)
  • BIOS/UEFI configuration
  • lainnya..


Tapi..
Jika server nya berbentuk Virtual Machine, apakah ada Virtual BMC nya ?

Bagaimana kalau kita mau RnD sesuatu yang membutuhkan service BMC, Seperti openstack, MaaS atau lainnya yang membutuhkan Power Driver untuk remote turn on/off.

Ternyata ada "vBMC"
https://github.com/openstack/virtualbmc

Penasaran cara install nya ?

1. Installation

Dsini saya menggunakan OS Fedora/Redhat dengan Qemu/KVM pada host.

Gunakan command berikut untuk melakukan install packages yang dibutuhkan.

$ yum install -y virt-manager qemu-kvm qemu-img libvirt libvirt-client virt-install bridge-utils ipmitool OpenIPMI

VirtualBMC installation

$ sudo yum install -y python python-virtualbmc


Pastikan vmbc terinstall & berjalan dengan baik seperti gambar berikut :

Gunakan command berikut :

$ sudo is-active vbmc.service && vbmc --version

 

2. Config Virtual BMC untuk Qemu/KVM

Pada tulisan ini saya sudah memiliki Virtual Machine pada Qemu.


Gunakan command "vbmc add" untuk menambahkan vBMC pada suatu VM di atas.

$ sudo vbmc add {VM-Name} --port {port-usage} --username {USER} --password {Passwd} --libvirt-uri qemu+ssh://root@localhost/system

  • Name = Nama sesuai tampilan pada Qemu
  • Port =  Yang akan digunakan vBMC untuk VM tersebut.
  • Username = Create user yang digunakan untuk akses vBMC VM tersebut
  • Password = Create passwd yang digunakan untuk akses vBMC VM tersebut
  • Libvirt-uri = Alamat Host Qemu/KVM

Gunakan command "vbmc list" untuk melihat list VM yang sudah berhasil ditambahkan feature vBMC

$ sudo vbmc list
Jika semua VM sudah ditambahkan vBMC, 
Lakukan start service vBMC dengan command berikut :
$ sudo vbmc start {VM-Name}

Pastikan semua status menjadi running, pada output "vbmc list"


03. Testing turn on/off with IPMI Tool.

Pada testing ini kita dapat menggunakan command ipmi untuk melakukan power management pada server yang sudah terinstall vBMC.

Contohnya seperti melihat power status :

$ sudo ipmitool -I lanplus -U {USER} -P {Passwd} -H {IP-Host-vBMC} -p {Port} power status

 ** user, passwrd = gunakan sesuai dengan input pada "vbmc add" sebelumnya.

Terlihat state pada VM is off, sesuai dengan output pada qemu.

 

Gunakan command berikut untuk, melakukan Turn ON pada VM secara remote :

$ sudo ipmitool -I lanplus -U {USER} -P {Passwd} -H {IP-Host-vBMC} -p {Port} power on

 

Ok, Jika vBMC sudah terinstall dan berhasil testing menggunakan IPMI tools,
mungkin selanjutnya kita coba dengan services ironic dari openstack, atau Maas.

Sekian untuk tulisan kali ini, semoga bermanfaat~



Best Regards
Rdw

Share:

Selasa, 07 Mei 2024

Log Rotation & Management in Linux like a Pro

 Halo Guys, Sebagai tukang rawat server A.K.A System Administrator pasti sering banget melakukan perawatan / manage log file dari suatu services. Dan services tersebut selalu aktif & melakukan proses setiap hari nya tampa boleh ada stop nya.. 

Oleh karena itu pasti ada output log dari setiap proses yang dilakukan oleh services tersebut, output nya dalam sehari bisa banyak banget dan kadang bisa membuat storage menjadi penuh jika didiamkan dalam waktu lama.

Jika tempat penyimpanan pada log penuh, services bisa saja menjadi stop running, oleh karena itu kita perlu mangatur file-file log tersebut. dan memilih file mana yg perlu dihapus, yang mana yang perlu di pertahankan.

Nah, biasanya yang saya lakukan sebeleum melakukan hapus log, saya melakukan listing log file nya, agar tercatat file log apa saja yang akan dihapus.
dengan menggunakan command berikut :

Dengan command ini kita akan mencari file ".log", yang dibuat pada 30 hari yang lalu di directory "/path/to/logs/",
Lalu karena ada tambahan pipeline dengan command awk print, maka setiap output baris dari command find tersebut akan ditambahkan text print "rm -r" .

Tampilan hasil output nya seperti gambar berikut :

kalau kita lihat gambar di atas output nya sudah menyerupai "bash command" , kita bisa membuat file tersebut menjadi seperti bash script dengan menambahkan permission ( +x )
$ chmod +x output_file

lalu jalankan script tersebut, mulai menghapus file log nya.
$ bash ./output_file

Kenapa ribet-ribet harus membuat list file nya dahulu ?
Bukti/Evidence ini hal yang penting.
Biasanya standart prosedur pada production setiap aktivitas harus ada yang namanya "Persetujuan/Approval dan Bukti/Evidence".

Kenapa tidak menggunakan aplikasi logrotate ?
Aplikasi atau command "find" secara default sudah banyak terinstall di beberapa distro Linux. Berbeda dengan command "logrotate" yang harus memerlukan instalasi tambahan.

Seperti nya ini terlihat sederhana banget ya?
Default command find ini, jika ditambahkan dengan Crontab, atau Airflow dengan paramiko ssh. bisa menjadi tools automation yang keren & tidak bisa dibilang sederhana lagi.

Ok, ta rasa cukup sampai sini tulisan nya..
Kalian bisa kembangkan cara ini & semoga bermanfaat.

Share:

Rabu, 21 Februari 2024

Menguji Kecepatan Koneksi Antara Server dan Client dengan iPerf3

Halo Guys.. Pernah kalian melakukan Uji Kecepatan Koneksi ?
Bicara mengenai Uji kecepatan koneksi biasanya kita identik dengan menggunakan speedtest yang terkenal di media-media online.  Seperti: Fast.com, Speedtest by Ookla, LibreSpeed, dan lain-lainya

Tapi WebApps di tersebut rasanya hanya untuk mengetest kecepatan dari internet yg kita miliki. Sudah pasti bottle neck nya di gateway ISP yang kita gunakan, tidak mungkin hasil speedtest nya melebihi dari status berlangganan yg kita beli.

Ok, sekarang bagaiman kalau contoh kasus nya kita harus melakukan uji koneksi antara Server dengan Client ?
Solusi yang biasa kita temui seperti melakukan koneksi Peer-to-Peer pakai suatu services seperti SCP, FTP, atau services lainya lalu test mengirim data. Tapi menurutku itu cukup ribet & dan kurat readable laporan nya.


Untung nya ada aplikasi "iperf3" - https://github.com/esnet/iperf

Iperf3 adalah tools untuk mengukur bandwidth dan kecepatan suatu jaringan.
Iperf3 mendukung TCP, UDP, SCTP dan bisa berjalan pada banyak platforms seperti windows, Linux, Android, Mac, dan lainya. Tools ini juga dapat melakukan pengujian koneksi untuk IPv4 & IPv6 bahkan tools ini juga dapat melakukan pengukuran hingga throughput maksimum / "extreme best case".

Cara penggunaan dari tools Iperf3 ini juga cukup mudah, kita cukup install tools ini pada kedua server( Server & Client ) yang akan melakukan test koneksi.

For sample command line usage:
https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/


Pada Sisi Server :
Kita cukup menjalankan command berikut :

$  iperf3 -s
Gunakan option " -s " untuk menjalankan tools ini sebagai mode server.


Pada Sisi Client :
Kita cukup menjalankan command berikut :

$  iperf3 -c [Alamat-Server]
Gunakan option " -c " untuk menjalankan tools ini sebagai mode client, lalu masukan alamat dari server iperf3.

Setelah menjalankan command di atas pada sisi client, biarkan aplikasi berjalan sampai selesai melakukan pengujian seperti gambar berikut. 

Pengujian koneksi ini bisa jadikan kegiatan untuk validasi metrics dari Prometheus pada Grafana Dashboard, yang kebetulan sekarang saya sedang bermain Grafana.


Melalkukan Test Download/Received dengan rate 100Mb/s, menggunakan command :
$  iperf3 -c [Alamat-Server] -i 1 -t 120 -b 120M


Melalkukan Test Upload/Transmit dengan rate 100Mb/s, menggunakan command :
$  iperf3 -c [Alamat-Server] -i 1 -t 120 -b 120M -R
** penambah command -R untuk reverse package nya


Oiya.. pada sisi server juga kita dapat mengaktifkan autentikasi. Bagaimana tools ini cukup membantu kah ?

Semoga Bermanfaat. 

Share:

Kamis, 12 Oktober 2023

Multi Threaded Port Scanner With Bash

Halo Guys.. Pernah kah kalian melakukan cek status port dari server kalian, satu persatu dari masing-masing server / IP Address nya?

Seperti yang kalian ketahui menjadi SysAdmin bukan hanya tentang membuat & manage infrastruktur yang kita buat, Tapi juga harus memastikan semuanya dari ujung ke ujung harus berjalan dengan baik. 

Contohnya hal yang pernah ta alami, Server aplikasi yang kita yakinin berjalan baik. Tapi ternyata IP-Address & Port masih terblokir firewall oleh team Network. Lalu bagaimana cara kita memastikan semua port yang kita pakai sudah open semua dengan output data yang mudah disajikan ?

Untuk mengecek status port, kita pasti sering dengar tools port scanner yang cukup terkenal seperti nmap, atau bahkan menggunakan cara old-schoo dengan telnet.

Contoh Pengunaan NMAP :

$ nmap 10.10.10.12 -p22,80,9090   #(Single IP, Multi Port)

$ nmap 10.10.10.11 10.10.10.11 10.10.10.13 -p22,80,443   #(Multi IP, Not Specified Port Per IP)

Contoh Telnet :

$ telnet 10.10.10.15 80  # (Can't Multi Port)

Tapi tools di atas rasanya masih kurang, kita ingin yang mudah dibaca & simple. Terinspirasi dari Bash script pada postingan sebelumnya mengenai multi ping, 

https://blog.ridwan.tech/2023/03/ping-multiple-host-with-one-command.html

--

Pada tulisan sebelumnya hanya bisa cek ping (ICMP), tidak bisa spesifik port. Dan sekarang kita akan buat script untuk solusi permasalahan kita di atas. Tampilan output nya seperti ini :


Terlihat lebih bagus kan output nya ?

Ok, berikut bash-script nya :

Lalu siapkan masukan daftar IP dan Port kalian ke dalam text file yang nantinya akan dibaca oleh bash-script, seperti berikut format nya :

Ok Next, sebelum running, pastikan kalian memberikan permission executable pada script tersebut :

$ sudo chmod +x bash-script

lalu jalankan dengan script tersebut dengan command berikut :

$ ./bash-script [file]

Jangan sampai lupa load text file yang berisi dari alamat dan port nya ya.

Bagaimana menarik kah, baiklah semoga bermanfaat :)

Share:

Rabu, 20 September 2023

Offline Upgrade RHEL Version (Red Hat Enterprise Linux)

Halo Guys.. Sebagai Tukang Server A.K.A System Administrator melakukan upgrade version dari Software, Aplikasi, ataupun Operating System yang ada pada server merupakan bagian dari kerjaan pastinya. Pada umumnya untuk update versi kita hanya perlu jaringan internet(online) lalu klik update, atau dengan jalankan command update.

Tapi percayalah fakta di lapangannya tidak semudah itu.. Terutama pada server production, ada beberapa server yang dibatasi koneksivitas-nya (Tampa internet, hanya dapat komunikasi ke beberapa IP saja). Artinya untuk proses upgrade ini harus full offline.

Ok jadi pada tulisan kali ini, kita akan bahas cara upgarade secara full offline.

--
Skenario :
  • Upgrade RHEL 7 (Maipo) to RHEL 8 (Ootpa)
  • Akses Root
--
(RHEL 7 - Before Instalation)

Let's Roll !

1. Persiapan Library & Package files yang dibutuhkan untuk instalasi, kalian bisa download terlebih dahulu pada laptop kalian.
    1.1 Download Library & Packages yang dibutuhkan :
leapp-upgrade-el7toel8
audit
audit-libs
audit-libs-python                     
checkpolicy               
dnf
dnf-data
json-glib                                            
leapp                                     
leapp-deps
leapp-upgrade-el7toel8-deps
libcgroup
libcomps
libdnf
libmodulemd
librepo
libreport-filesystem
librhsm
libsemanage-python
libsolv
libyaml
pciutils
policycoreutils
policycoreutils-python
python-IPy
python-chardet
python-enum34
python-requests
python-urllib3
python2-dnf
python2-hawkey
python2-leapp
python2-libcomps
python2-libdnf
setools-libs

Download files tersebut pada halaman berikut :

(Download Page - Gunakan Fungsi Search)

    1.2 Files ISO RHEL :
Download files tersebut pada halaman berikut : https://access.redhat.com/downloads/content/rhel
Pilih "Red Hat Enterprise Linux Binary DVD"

Pastikan semua file yang sudah siap, lalu kirim menggunakan SCP ke dalam target server yang akan kita upgrade.
(Persiapan Files)
Pada tutorial ini terdapat folder "UpgradeOS" yang berisi folder "Packages" dan "file .ISO RHEL".


2. Install Secara Offline leapp, packages, dan library yang dibutuhkan.
    Masuk ke dalam folder "Packages", lalu masukan command berikut :

# yum localinstall *



3. Preupgrade
seteleh melakukan instalasi di atas, kita dapat menggunakan aplikasi leapp. Sebelum melakukan upgrade, ada baiknya kita melakukan persiapan & checklist dengan menggunakan command berikut :

# leapp preupgrade --no-rhsm --iso /root/UpgradeOS/rhel-8.8-x86_64-dvd.iso

Command ini akan melakukan check-list before upgrade, Karena pasti ada beberapa hal yang berbeda antara RHEL 7 dan RHEL 8 dan kita harus melakukan penyesuaian sebelum upgrade. Seperti contoh di RHEL 7 mengunakan kata "eth0XX" (Ethernet) sedangkan di RHEL 8 mengunakan kata "enp0sXX" (Ethernet Network Peripheral Serial)


Kalau kita lihat keterangan error tersebut, terdapat 2 permasalahan yang harus diperbaiki.
1. Beberapa driver yang terinstall pada RHEL 7 mungkin sudah tidak terpakai pada RHEL 8. Solusinya harus di remove menggunakan command berikut :

# rmmod floppy # rmmod pata_acpi

Dan mungkin perlu rename nama interface seperti yang ta bilang di atas, pada file berikut :
/etc/udev/rules.d/70-persistent-net.rules
/etc/sysconfig/network-scripts/ifcfg-eth0
2. Butuh dokumen config berupa answer file. Solusinya bisa buat file tersebut dengan command berikut :
# leapp answer --section remove_pam_pkcs11_module_check.confirm=True
# leapp answer --section authselect_check.confirm=True

lalu ulangi command "leapp preupgrade", sampai kalian tidak menemukan error seperti gambar berikut :

(No Error Found, ready to Upgrade)

4. Ready to Upgrade
Jika kalian sudah yakin tidak ada error lagi, bisa lanjutkan ke command berikut :

# leapp upgrade --no-rhsm --iso /root/UpgradeOS/rhel-8.8-x86_64-dvd.iso

Jika berhasil kalian hanya tinggal reboot server, lihat gambar berikut :

(Ok, Selesai)

Sebenarnya untuk melakukan upgrade ini secara teori dari dokumentasi nya "Red Hat Technical Support" cukup menggunakan aplikasi "leapp" lalu load file .iso RHEL dari aplikasi leapp tersebut.

(RHEL 8 - After Instalation)

Tapi, Pada document tersebut kurang details, Seperti tidak ada tutorial cara install "leapp" dan library nya secara offline, patch leapp problem preupgrade, dlll 🤣. Tutorial ini tidak banyak ta temuin di internet khususnya yang bahasa indonesia. dan Semoga bermanfaat !

Share:

Jumat, 31 Maret 2023

Multi Threaded Ping with Bash

Ok, setelah posting'an sebelumnya ta bahas tentang bash mengenai tutorial execute single command langsung ke beberapa server, kalian bisa lihat dsini

https://blog.ridwan.tech/2023/01/simply-linux-command-for-manage-server.html

Sekarang, saya ingin bikin lagi tutorial untuk ping ke semua server/host/node hanya dengan menggunakan satu command. hal ini berguna banget untuk kita sebagai SysAdmin agar bisa melakukan pengecekan status server apakah online/down dengan cepat.

Yes, I know ini cara manual & tradiosional banget, Walaupun teknologi sekarang sudah banyak caranya seperti SNMP, Remote Log, API Push Notif, dan lain-lainnya. Tapi, cara manual ini tetap keren & terpakai sampai sekarang kok.. seperti kata pepatah "Old School Never Dies"


Ok, Cukup basa-basinya.. kita akan membuat 2 buah file, dengan nama bebas sesukanya kalian. 

Berikut, contoh Bash Script nya :  

jadi script ini akan membaca file node.txt tersebut, lalu melakukan ping bedasarkan isi dari file node.txt tersebut. Jika ping berhasil status output nya "UP", Begitupun sebaliknya jika down. Kurang lebih seperti itu penjelasannya.

Jika script tersebut dijalankan hasilnya sepert ini

terdapat output dari command date, yang dapat mencetak tanggal aktual, jadi klo untuk dijadikan report juga ok.

Dan kalu ternyata isi dari node.txt kalian berisi sampai ratusan host/server. kalian bisa menambahkan command grep agar melihat hasil spesifik dari yg ingin kita cek.

Cukup sekian, catatan kali ini. Semoga bermanfaat.

See you next !!


Share:

Rabu, 11 Januari 2023

Multi Thread SSH Command for Manage Cluster Server


Ok, kali ini aku ingin sharing terkait pekerjaan ku sebagai “System Administrator”, sudah pasti kerjaan nya bermain dengan server, dan tidak hanya satu server.

**Ilustrasi ruang server, 

Sometimes, aku melakukan configure suatu services/daemon di beberapa server sekaligus, walapun command nya copy-paste,  Tapi tetep memerlukan waktu sebab harus login SSH ke satu-persatu server, melahkan bukan kan ?  Belum lagi saat kita lupa, Sudah sampai di server ke-berapa yang sudah kita config.

Bedasarkan kasus tersebut, aku coba belajar lagi lebih dalam terntang bash, dan menghasilkan hal berikut yang dapat mempersingkat waktu & pekerjaan untuk memanage banyak server, satu command dapat efek semua server :

**check services di semua server

**Check version Java, di semua server

**Check Services SELinux

**Check IP Address semua server

Dan bisa juga untuk copy file menggunakan scp (Secure Copy)  ke semua server sekaligus, dengan satu command saja.

**Copy testfile ke semua server

Satu command, bisa remote semua server sekaligus, Ajaib..kan!

Ok, Bagaimana caranya ?

Kuncinya ada di ssh authorized_keys & file server.txt

ssh authorized_keys di pakai agar login ke server tujuan tampa perlu input password lagi, tutorial nya banyak di google “How to Set Up SSH Passwordless” .

lalu file server.txt, ini berisi alamat server yang digunakan untuk scripting bash symbol i menjadi {i} untuk input alamat server pada command ssh.

** ini contoh isi dari dalam file tersebut.

Ok, kita bahas dikit command nya.

# for i in `cat server.txt`; do ssh root@${i} "Try Linux command"; done

Jad command ini akan membaca isi dari file “server.txt” lalu membaca setiap isi dari alamat IP server pada file tersebut, kemudian melakukan ssh ke user root dengan alamat {i} yang diambil dari dalam file tersebut. Kurang lebih begitu penjelasan nya.

Contoh beberapa command yang sering dipakai oleh banyak orang :

Check status SELinux
# for i in `cat server.txt`; do ssh root@${i} "hostname  && sestatus"; done

Check IP Address
# for i in `cat server.txt`; do ssh root@${i} "hostname  && ip a | grep inet"; done

Installasi Package
# for i in `cat server.txt`; do ssh root@${i} "yum -y install java-1.8.0-openjdk*"; done

Lalu kita juga bisa melakukan scp / copy file ke semua server

# for i in `cat server.txt`; do scp TestFile root@${i}:TestFile; done
# for i in `cat server.txt`; do scp /Folder/TestFile root@${i}:/Folder/TestFile; done


Selebihnya mungkin kalian bisa kembangkan sendiri.. sesuai dengan kebutuhan kalian,

Ok, sekian catatan kali ini. Terima Kasih.

 

Share:

Selasa, 13 Desember 2022

Install Spark Cluster on HADOOP YARN CentOS 7


Apache Spark adalah data processing framework yang dapat melakukan tugas pemrosesan pada kumpulan data besar dengan cepat , mencakup berbagai macam beban kerja seperti batch aplication, iterative algorithms, interactive queres dan streaming. Biasanya Spark menjadi bagian dari infrastruktur Big Data dan Machine learning. Apache Spark dapat mendistribusikan tugas pemrosesan ke beberapa worker (cluster), Hal ini membuatnya pemrosesan data menjadi lebih cepat.

Sejarah Spark

Apache Spark dimulai sebagai proyek penelitian dari AMP-Lab UC Berkley kolaborasi antara mahasiswa, peneliti, fakultas yang berfokus pada data di tahun 2009, tujuannya untuk membuat system baru yang dapat dioptimalkan untuk pemrosesan berulang yang cepat dan jumlah data besar.

Matei Zaharia merupakan programer awal pembuat aplikasi Spark Framework ini pada tanggal 26 Mei 2014 dia menulis Spark dengan Scala.

Spark berstatus open-source di bawah licensi BSD (Berkeley Software Distribution) setelah makalah paper/Jurnal pertama release berjudul “Spark: Cluster Computing with Working Sets,” pada Juni 2010, lalu pada Juni 2013 Spark diterima dalam program inkubasi Apache Software Fondation (ASF), dan pada bulan Februari 2014 masuk delam list Apache Top-Level Project. Untuk detailnya mungkin bisa dibaca disini https://cds.iisc.ac.in/wp-content/uploads/DS256.2017.L15.Spark_.RDD_.pdf


Dalam dokumentasi kali ini kita akan mengginstall Apache Spark Cluster di Centos 7 dengan environment virtual Machine. 

  • Instalasi Server

Cluster Multi Worker berisi dua atau lebih Worker. Artinya kita membutuhkan lebih dari satu server untuk menjadikan nya cluster sebagai master/worker untuk Cluster ini. 

Oiya metode instalasi clusternya hampir sama seperti instalasi Hadoop Cluster pada postingan sebelumnya jadi ada beberapa yang akan kita skip. Dan pastikan ketiga server tersebut dapat saling terhubung satu dengan lainnya, dan server master sudah authorization untuk akses semua worker nya.

  • Instalasi Java

Spark dibuat menggunakan bahasa programan "java", jadi kita perlu instalasi Java. Gunakan syntax berikut :. 

# yum install java-1.8.0-openjdk*

Jika sudah ter'install dengan benar kita dapat melakukan pengecekan instalasi Java tersebut

$ java -version
$ javac -version              

  • Instalasi Scala

Untuk menginstal Scala, disarankan untuk menggunakan cs setup, sesuai rekomendasi dari official website nya dengan command berikut :

$ curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup

Official Website nya > Install | The Scala Programming Language (scala-lang.org)

Jika sudah terinstall dengan benar, kita dapat melakukan pengecekan instalasi tersebut :

$ scala -version



  • Instalasi Spark

Download spark di website resmi nya, dan lakukan instalasi

https://spark.apache.org/downloads.html

$  wget [file-url]
Extract file Spark yang sudah di download dengan command berikut
$tar xzf [file-tar.gz]
Rename folder extract tersebut menjadi “spark”
$ mv [folder-extract] spark

*Disarankan untuk menjalankan menggunakan standart user (non root),    

Tambahkan baris berikut ke file ~/.bashrc untuk menambahkan informasi lokasi di mana file spark berada.

export SPARK_HOME=/home/hadoop2/spark
export SPARK_BIN=$SPARK_HOME/bin
export SPARK_SBIN=$SPARK_HOME/sbin
export SPARK_CONF=$SPARK_HOME/conf
export PATH=$SPARK_HOME/bin:$PATH

Kemudian terapkan perubahan pada console yang berjalan saat ini/refresh.

$ source ~/.bashrc

  • Spark Master Configuration

Lakukan langkah berikut :

Edit file spark-env.sh, Masuk ke dalam folder configurasi pada spark

$ cd spark/conf

Lalu edit file spark-env, 
$ cp spark-env.sh.template spark-env.sh
$ nano spark-env.sh

Tambhkan baris kode berikut ke dalam file spark-env.sh :

export SPARK_MASTER_HOST='<MASTER-IP>'
export JAVA_HOME=<Path_of_JAVA_installation>

Contohnya seperti gambar berikut 

Edit file Workers (Hanya di server-master)
$ nano workers
Tambahkan alamat server/domain dari worker ke dalam file workers

Kita hanya tinggal lakukan instalasi Aplikasi Spark ke masing-masing workers, lalu jalankan spark cukup dari server master saja, dengan menjalankan script "start-all.sh" di dalam folder spark/sbin 

**pastikan services port sudah dibuka / services firewalld disable

Spark Manger

Gunakan web-browser untuk melihat active workers dari Web Spark Manager dengan mengakses http://[IP-Server-Master] : Port 8080 (http) atau Port 8480 (https)

Spark-Shell

Secara detail bisa dibaca website resmi nya  Quick Start - Spark 3.3.1 Documentation (apache.org)

untuk menjalankan nya cukup execute file "spark-shell" yang berada di "spark/bin" 

Untuk more detail tentang penggunaan Spark-Shell, dapat dilihat di link berikut Spark Shell Command Usage with Examples - Spark by {Examples} (sparkbyexamples.com)

a

Share: