• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

dll

Cara Upgrade Fedora 35 ke Fedora 36

Last Updated on 14 May 2022 By tommy Leave a Comment

Saat terbaik melakukan upgrade biasanya 1-2 minggu setelah Fedora versi terbaru, karena sudah banyak yang melakukan testing dan bug yang muncul saat proses upgrade sudah di fix atau sudah didokumentasikan cara mengatasinya.

Yang perlu dilakukan sebelum melakukan upgrade:
1. Backup data penting, untuk keamanan dan kenyamanan backup semua data penting karena kita tidak bisa prediksi semua berjalan lancar
2. Cek situs masing-masing repository di /etc/yum.repos.d/, untuk memastikan repository tersebut sudah memiliki Fedora 36. Bila belum ada, bisa nonaktifkan terlebih repository.
3. Agar proses upgrade lancar, pastikan koneksi internet stabil. Fedora melakukan upgrade setelah semua file yang dibutuhkan sudah terdownload dengan baik, sehingga mengurangi efek gagal upgrade.

Mari kita lakukan proses upgrade:
1. Upgrade semua package yang di install dengan dnf

sudo dnf --refresh upgrade

2. Install dnf plugin untuk upgrade system

sudo dnf install dnf-plugin-system-upgrade

3. Aktifkan Repository Fedora dan RPM Fusion
Tahap ini opsional, setelah bagian inti (core) Fedora sudah di upgrade ke Fedora 36, nanti kita bisa mengupdate dari repository ini.

# buat folder backup file repository
mkdir ~/yum.repos.d
# pindahkan semua repository kecuali repository Fedora dan RPM Fusion
mv /etc/yum.repos.d/!(fedora*|rpmfusion)

4. Download package Fedora 36
Download package untuk Fedora 36

sudo dnf system-upgrade download --releasever=36

bila anda menemui error

Error: 
 Problem: package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 requires php(api) = 20200930-64, but none of the providers can be installed
  - package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 requires php(zend-abi) = 20200930-64, but none of the providers can be installed
  - php-common-8.0.19-1.fc35.remi.x86_64 does not belong to a distupgrade repository
  - problem with installed package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64
(try to add '--skip-broken' to skip uninstallable packages)

hapus package yang bermasalah tersebut, pastikan anda mengecek package apa saja yang bermasalah dan mencari informasi lebih jauh sebelum menghapusnya. Pada kasus ini, kedua package tersebut aman untuk dihapus

sudo dnf remove php80-php-phpiredis-1.0.1-3.fc35.remi.x86_64 php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 -y

lalu jalankan kembali dnf system-upgrade diatas

Contoh di komputer saya, sekitar 11 menit

(3670/3675): xorg-x11-drv-nvidia-kmodsrc-510.68.02-1.fc36.x86_64.rpm                                                                                                               4.2 MB/s |  28 MB     00:06    
(3671/3675): xorg-x11-drv-nvidia-libs-510.68.02-1.fc36.i686.rpm                                                                                                                    4.2 MB/s |  24 MB     00:05    
(3672/3675): xorg-x11-drv-nvidia-libs-510.68.02-1.fc36.x86_64.rpm                                                                                                                  4.4 MB/s | 168 MB     00:38    
(3673/3675): compat-ffmpeg28-2.8.19-1.fc36.x86_64.rpm                                                                                                                               38 kB/s | 5.6 MB     02:33    
(3674/3675): audacity-freeworld-3.1.3-3.fc36.x86_64.rpm                                                                                                                             95 kB/s |  14 MB     02:34    
(3675/3675): xorg-x11-drv-nvidia-power-510.68.02-1.fc36.x86_64.rpm                                                                                                                  94 kB/s | 284 kB     00:03    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                              6.8 MB/s | 4.6 GB     11:35     
Fedora 36 - x86_64                                                                                                                                                                 1.6 MB/s | 1.6 kB     00:00

upgrade to Fedora 36
5. Setelah semua di download, restart untuk melanjutkan proses upgrade

sudo dnf system-upgrade reboot

6. Bersih bersih
Setelah reboot, anda sudah masuk ke Fedora 36, saatnya mengmenghapus semua package dan metadata yang tidak terpakai

sudo dnf system-upgrade clean
dnf clean packages

Filed Under: dll

Ekstrak Gzip File dan Ambil Total dengan Python

Last Updated on 11 May 2022 By tommy Leave a Comment

Kali ini contoh kasusnya adalah client memberikan folder yang berisi banyak file log dari aplikasi CRM, file-filenya di kompres dengan zip. Untuk itu client minta semua file didalam folder tersebut dibaca, lalu diambil total berapa total data yang diproses oleh CRM mereka.

Kali ini kita akan menggunakan Python, karena mereka minta dibuat dengan Python :D

Sebagai contoh kita akan membuat file price.txt yang akan digunakan dalam eksperimen ini

# buat 100 baris file
for i in {1..100}; do echo "price: $RANDOM" >> price.txt; done
# buat gzip file
gzip price.txt
# file diatas akan membuat file price.txt.gz

Ekstrak Gzip File

Untuk mengkesktrak file gz dengan Python, kita perlu mengimpor modul gzip. Setelah file tersebut di ekstrak, tampilkan setiap baris yang ada dengan menggunakan looping, baris perbaris.

Buat file dengan nama parse.py, yang berisi

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      print(line)
python3 parse.py

angka yang ditampilan disini akan berbeda dengan file yang anda buat, karena waktu generate file price.txt kita menggunakan angka acak.

Split (Pecah) String

Disini kita mengambil data dari file yang baru di ekstrak. Dari hasil looping diatas, type datanya byte, agar bisa dipecah, pertama kita akan ubah menjadi string dengan str

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      print(number)

jalankan script diatas

python3 parse.py
# output
...
27589
4248
18554
...

dengan format ini kita sudah mendapatkan angka yang kita perlukan, langkah selanjutnya menghitung jumlah angka tersebut.

Menghitung Total Angka

Angka yang kita perlukan sudah didapat, tetapi dari code sebelumnya kita merubah byte menjadi string. Agar bisa menghitung jumlah total, kita harus merubah string tersebut menjadi integer

#!/usr/bin/env python3
import gzip
# nilai awal
total = 0
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      # ubah string jadi integer
      total += int(number)
print(total)

jalankan script diatas

python3 parse.py
# output
1499614

Filed Under: dll

Cara Lengkap Install dan Konfigurasi Elastic Stack 8 Debian 11

Last Updated on 1 March 2022 By tommy Leave a Comment

Elastic stack (Elasticsearch, Kibana dan Logstash) sangat populer dikalangan startup, karena kesusahan setup :) dan kemudahan untuk menggunakannya. Kali ini akan kita bahas cara lengkap untuk menginstall Elasticsearch, Kibana dan Logstash di Debian 11. Dibagian paling akhir kita akan membahas cara mengirim log dari internal ataupun external, sehingga sangat memudahkan bisa menggunakan AWS, GCP ataupun cloud provider yang memberikan akses lokal, ataupun multiple cloud.

Kebutuhan System

Kebutuhan minimal system
Memory : 4 GB
Hardisk : 20 GB
CPU : 1

Update dan Upgrade System

Ingat untuk selalu update system anda agar stabil dan mendapatkan update terbaru.

sudo apt update; sudo apt upgrade -y

ingat untuk menjalankan ini secara berkala, misalkan tiap seminggu sekali.

Install Dependency

Install dependency untuk proses instalasi Elastic Stack ini. Dependency ini dibutuhkan agar proses instalasi lancar

sudo apt install curl wget gnupg apt-transport-https socat -y

Set Server Timezone

Set timezone server ke tempat anda. Ini diperlukan agar memudahkan waktu troubleshooting dan jamnya menyesuaikan jam lokal anda.

sudo timedatectl set-ntp true
sudo timedatectl set-timezone "Asia/Jakarta"
timedatectl

tampilan dari zona waktu yang sudah disetting
linux timezone

Install Java JRE

Untuk menjalankan Elasticsearch, Logstash dan Kibana kita memerlukan Java, untuk itu kita akan install versi bawaan distro yang tersedia saat ini.

sudo apt install default-jre -y

saat ini bawaan default JAVA di Debian 11 adalah Java 11, untuk verifikasi jalankan

java --version
which java
readlink -f $(which java)

verifikasi versii java

Repository Elasticsearch

Config file or folder for elasticsearch, kibana and logstash

#Config File/Folder
Elasticsearch/etc/elasticsearch and /etc/default/elasticsearch
Kibana/etc/kibana and /etc/default/kibana
Logstash/etc/logstash and /etc/default/logstash

Import PGP Key

Untuk memastikan software yang kita install di repository Debian merupakan software yang telah di-sign oleh pembuatnya, dalam hal ini Elasticsearch, maka kita perlu mengimport PGP key.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor | sudo tee /usr/share/keyrings/elasticsearch.gpg

verifikasi ini akan otomatis dijalankan oleh APT.

Tambah Repository

Tambah repository elastic stack versio 8.x

echo "deb [signed-by=/usr/share/keyrings/elasticsearch.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

Update cache APT agar mengenali repository yang baru ditambahkan

sudo apt update

Install Elasticsearch

Tahap pertama dari instalasi ini adalah menginstall Elasticsearch, elastic search merupakan inti dari Elastic Stack yang menyediakan full-text search engine dan juga HTTP API untuk dikonsumsi oleh client.

sudo apt-get install elasticsearch -y

tunggu sampai muncul

The generated password for the elastic built-in superuser is : bHBIzuVpyMtWmbaye1_4

Aktifkan Elasticsearch dengan Systemd

# aktifkan waktu boot
sudo systemctl enable elasticsearch.service
# jalankan elasticsearch
sudo systemctl start elasticsearch.service

Tes Query

curl -u "elastic:bHBIzuVpyMtWmbaye1_4" https://localhost:9200 -k

hasilnya

{
  "name" : "logs",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "sgt2mCBqSJq5HISN5BoztA",
  "version" : {
    "number" : "8.0.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "1b6a7ece17463df5ff54a3e1302d825889aa1161",
    "build_date" : "2022-02-03T16:47:57.507843096Z",
    "build_snapshot" : false,
    "lucene_version" : "9.0.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

Install Kibana

Kibana merupakan web UI untuk mengakses fitur-fitur Elasticsearch, begitu juga untuk membuat tampilan dashboard yang menarik.

sudo apt install kibana -y

Edit file /etc/kibana/kibana.yml, update bagian

server.port: 5601
server.host: "0.0.0.0"

agar Kibana bisa diakses dari http://domain-atau-ip-server:5601

Generate token Kibana

sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

token ini akan digunakan untuk inisialisasi kibana dengan elasticsearch.

Buka http://domain-atau-ip-server:5601
enrolment token kibana
masukkan token yang tadi digenerate, klik Configure Elastic

Muncul permintaan verifikasi code
elasticsearch verification token

untuk mengambil token tersebut jalankan

sudo /usr/share/kibana/bin/kibana-verification-code

atau bisa juga dengan melihat tokennya dari log kibana

sudo journalctl -u kibana  | grep verification

masukkan code tersebut, lalu klik Verify

Tunggu beberapa saat, sampai setup selesai dan anda dihapankan dengan halaman login. Gunakan user elastic dan password dari hasil instalasi Elasticsearch, pada contoh saya passwordnya bHBIzuVpyMtWmbaye1_4
login kibana dengan user elastic

Akses Elasticsearch dari Internet

Elasticsearch hanya bisa diakses dari localhost, agar elasticsearch bisa diakses dari internet kita bisa menggunakan nginx sebagai reverse proxy. Setiap kali domain elasticsearch dipanggil, akan diteruskan oleh nginx ke Elasticsearch. Keuntungan menggunakan metode ini adalah kita bisa membuat banyak aturan (firewall) untuk membatasi akses dan juga menggunakan SSL.

1. Setup DNS
Sebagai contoh saya akan menggunakan DNS elastic.jaranguda.com
elastic dns
Cara konfigurasinya mungkin berbeda tiap provider, yang perlu di setting adalah A record dengan Public IP yang anda miliki. Proses update DNS ini bisa sampai 1 jam, untuk memastikannya bisa digunakan bantuan tool dig di linux

dig elastic.jaranguda.com +short
# dns google
dig elastic.jaranguda.com +short @8.8.8.8
# dns cloudflare
dig elastic.jaranguda.com +short @1.1.1.1

pastikan IP yang muncul adalah IP public yang sudah anda setting.
dig dns debian

2. Generate SSL Let’s Encrypt
Login sebagai root (sudo su), lalu eksekusi perintah dibawah ini

wget https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh
bash acme.sh install
source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt

install letsencrypt debian 11
Generate SSL dengan menjalankan

acme.sh --issue --domain elastic.jaranguda.com --standalone

tunggu sampai muncul informasi SSL telah berhasil

[Sun 27 Feb 2022 10:49:29 PM WIB] Your cert is in: /root/.acme.sh/elastic.jaranguda.com/elastic.jaranguda.com.cer
[Sun 27 Feb 2022 10:49:29 PM WIB] Your cert key is in: /root/.acme.sh/elastic.jaranguda.com/elastic.jaranguda.com.key
[Sun 27 Feb 2022 10:49:29 PM WIB] The intermediate CA cert is in: /root/.acme.sh/elastic.jaranguda.com/ca.cer
[Sun 27 Feb 2022 10:49:29 PM WIB] And the full chain certs is there: /root/.acme.sh/elastic.jaranguda.com/fullchain.cer

2. Install Nginx
Install nginx dari repository Debian 11

sudo apt install nginx -y

Buat virtual host untuk elastic.DOMAIN.com (/etc/nginx/sites-enabled/elastic.DOMAIN.com), yang berisi

server {
    listen 443 ssl http2;
    server_name elastic.DOMAIN.com;
    client_max_body_size 50M;
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect off;
        proxy_pass https://localhost:9200;
    }
 
    ssl_certificate /root/.acme.sh/elastic.DOMAIN.com/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/elastic.DOMAIN.com/elastic.DOMAIN.com.key;
}

restart nginx

sudo nginx -t && sudo systemctl restart nginx

verifikasi SSL

curl -u "elastic:bHBIzuVpyMtWmbaye1_4" https://elastic.jaranguda.com

ssl nginx berhasil

Mengirim Log dengan Logstash

Di server yang akan kita kirim log aplikasi atau lainnya jalankan tahap “Repository Elasticsearch” agar bisa langsung menginstall logstash dengan apt

sudo apt install logstash -y

Tambah config untuk logstash di /etc/logstash/conf.d/server.conf yang berisi

input {
    file {
        path => [
            "/var/log/kern.log",
            "/var/log/user.log",
            "/var/log/dpkg.log",
            "/var/log/auth.log",
        ]
        start_position => "beginning"
    }
}
 
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => "https://localhost:9200"
        user => "elastic"
        password => "bHBIzuVpyMtWmbaye1_4"
        index => "server"
        cacert => "/tmp/ca_1645975245142.crt"
    }
}

karena ini dijalankan di server tempat menginstall elastic stack, jadi kita bisa menggunakan localhost. Untuk digunakan di server lain confignya berubah menjadi

input {
    file {
        path => [
            "/var/log/kern.log",
            "/var/log/user.log",
            "/var/log/dpkg.log",
            "/var/log/auth.log",
        ]
        start_position => "beginning"
    }
}
 
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => "https://elastic.jaranguda.com:443"
        user => "elastic"
        password => "bHBIzuVpyMtWmbaye1_4"
        index => "server"
    }
}

Keterangan
Hosts : server elasticsearch
User : user elasticsearch
Password : password elasticsearch
Index : index di elasticsearch
cacert : cek filenya di /etc/kibana/kibana.yml

Agar logstash bisa mengakses log di /var/log berikan akses adm untuk user logstash

sudo usermod -a -G adm logstash

lalu restart logstash

sudo systemctl restart logstash

cek status logstash

sudo journalctl -u logstash -f

output logstash linux

Filed Under: dll

Deploy Kubernetes di DigitalOcean dengan Terraform

Last Updated on 27 December 2021 By tommy Leave a Comment

Kali ini kita akan membahas cara untuk deploy Kubernetes di DigitalOcean dengan Terraform. Kubernetes dari DigitalOcean adalah managed kubernetes yang ditawarkan oleh DigitalOcean, saat ini versi yang tersedia adalah 1.21.x, 1.20.x dan 1.19.x. Disini yang perlu kita bayar adalah node yang digunakan kubernetes, karena control plane-nya sendiri disediakan gratis.

Untuk menjalankan kubernetes dengan biaya termurah di Digital Ocean adalah $10 atau sekitar Rp. 140.000/bulan.

Install Terraform, kubectl dan doctl

1. Install Terraform
Terraform adalah infrastructure as code yang memungkinkan untuk build, scaling dan manage server dari code atau lebih spesific dengan YAML file. DigitalOcean merupakah salah satu dari provider yang disupport Terraform, jadi kita bisa langsung menggunakan terraform ini untuk deploy berbagai macam service di DO

wget https://releases.hashicorp.com/terraform/1.1.2/terraform_1.1.2_linux_amd64.zip
unzip terraform_1.1.2_linux_amd64.zip
sudo cp terraform /usr/local/bin/terraform

2. Install doctl
doctl adalah command line interface/CLI dari DigitalOcean yang digunakan untuk mengelola services yang ditawarkan lewat CLI. Dengan doctl banyak yang bisa operasi yang bisa dilakukan tanpa perlu login ke dashboard DigitalOcean.
Install doctl di Linux

wget https://github.com/digitalocean/doctl/releases/download/v1.68.0/doctl-1.68.0-linux-amd64.tar.gz
tar zxvf doctl-1.68.0-linux-amd64.tar.gz
sudo cp doctl /usr/local/bin/doctl

3. Install kubectl
kubectl adalah command line interface, tool ini yang akan banyak kita gunakan untuk berinteraksi dengan Kubernetes.

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo cp kubectl /usr/local/bin/kubectl

1. Buat Token API

Token/Key ini digunakan sebagai akses masuk ke akun DigitalOcean anda, token ini bisa digunakan di terraform dan doctl. Buat lewat api/token.
digitalocean personal access token
nanti muncul tokennya, simpan token tersebut. Di terminal anda eksekusi

export DIGITALOCEAN_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

token ini yang akan digunakan oleh terraform nantinya.

2. Terraform

Buat folder tempat menyimpan konfigurasi Terraform, disini kita akan menggunakan folder terraform-kubernetes

mkdir terraform-kubernetes
cd terraform-kubernetes

di folder tersebut buat file provider.tf, yang berisi

terraform {
  required_providers {
    digitalocean = {
      source = "digitalocean/digitalocean"
      version = "2.16.0"
    }
  }
}
 
provider "digitalocean" {
  # Configuration options
}
 
resource "digitalocean_kubernetes_cluster" "jaranguda-sg-prod" {
  name   = "jaranguda-sg-prod"
  region = "sgp1"
  # Grab the latest version slug from `doctl kubernetes options versions`
  version = "1.21.5-do.0"
 
  node_pool {
    name       = "default-pool"
    size       = "s-1vcpu-2gb"
    node_count = 2
  }
}
 
resource "digitalocean_kubernetes_node_pool" "microservices" {
  cluster_id = digitalocean_kubernetes_cluster.jaranguda-sg-prod.id
 
  name       = "microservices"
  size       = "s-1vcpu-2gb"
  node_count = 2
  tags       = ["backend"]
 
  labels = {
    service  = "backend"
  }
 
}
 
resource "digitalocean_loadbalancer" "public-lb" {
  name   = "public-lb"
  region = "sgp1"
  size = "lb-small"
  algorithm = "round_robin"
 
  forwarding_rule {
    entry_port     = 80
    entry_protocol = "http"
 
    target_port     = 80
    target_protocol = "http"
  }
 
}

Dari script diatas akan kita buat cluster kubernetes dengan nama jaranguda-sg-prod, di region Singapore, dengan 2 node pool (default-pool dan microservices), dan 1 Load Balancer.
Biasa saya menggunakan node berbeda untuk berbagai jenis services, contoh

PoolKegunaan
microservicesUntuk aplikasi microservice
jobsUntuk jobs/cronjob
debugsUntuk debugging/troubleshooting
frontendUntuk frontend

3. Download Config Kubernetes

Cara ini akan mendownload config kubernetes dan menyimpannya kedalam file $HOME/.kube/configdigitalocean download kubernetes config

doctl kubernetes cluster kubeconfig save CLUSTERNAME
# contoh
doctl kubernetes cluster kubeconfig save jaranguda-sg-prod

4. Test Deployment Kubernetes

Buat file YAML sederhana, nginx.yaml, untuk mengetes cluster yang baru dibuat

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent

deploy dengan kubectl

kubectl apply -f nginx.yaml 
# output
pod/nginx created

cek informasi pod yang baru di deploy

kubectl describe pod/nginx

akses shell pod nginx

kubectl exec --tty --stdin pod/nginx -- sh

docker exec pod nginx

Akses POD dengan Public IP/Load Balancer

Ubah nginx.yaml menjadi

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-services
  labels:
    service: nginx-services
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80

re-deploy nginx.yaml

kubectl apply -f nginx.yaml

Cek services yang baru dibuat

kubectl get pods,services
# output
NAME        READY   STATUS    RESTARTS   AGE
pod/nginx   1/1     Running   0          7m41s
 
NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)        AGE
service/kubernetes       ClusterIP      10.245.0.1       <none>         443/TCP        67m
service/nginx-services   LoadBalancer   10.245.212.106   167.99.31.xx   80:30565/TCP   8m5s

dibrowser buka yang EXTERNAL-IP di TYPE LoadBalancer

nginx kubernetes via public ip

Filed Under: dll

Daftar/Verifikasi DigitalOcean dengan Bank Jago

Last Updated on 24 December 2021 By tommy Leave a Comment

Dengan menggunakan akun Bank Jago, sekarang kita bisa mendaftar DigitalOcean. Bank Jago bisa digunakan untuk verifikasi, ataupun membayar tagihan DigitalOcean.

Bank digital satu ini, bisa dijadikan sebagai alternative Jenius, yang sekarang sudah mulai membebankan biaya bulanan ke pelanggan sebesar Rp. 10.000. Salah satu keuntungan kartu Debit dibandingkan dengan Kartu Kredit adalah, dengan kartu debit hanya saldo yang tersedia yang bisa ditarik dan kartu debit di Jago bisa dibatasi berapa penggunaan maksimal. Dengan fitur ini diharapkan tidak ada tagihan berlebihan yang tidak diharapkan, bila terjadi charge berlebihan akan muncul notifikasi dari bank Jago, ataupun transaksi langsung ditolak.

1. Signup/Daftar DigitalOcean

Bila anda belum memiliki akun DigitalOcean, daftar terlebih dahulu. Bila anda sudah memiliki akunnya, bisa lompat ke tahap 2.

2. Verify your Identity

digitalocean add card

Isi informasi yang diminta, seperti
– Nomor Kartu Debit
– Nama Pemilik Kartu Debit
– Alamat lengkap

isi informasi kartu debit bank jago

klik Save Payment Method

Tunggu beberapa saat, sampai muncul “Welcome to DigitalOcean, let’s get started!”
verifikasi sukses

Filed Under: dll

Cara Lengkap Install Cluster Cassandra di Linux Ubuntu 20.04 LTS

Last Updated on 14 November 2021 By tommy Leave a Comment

Dari Wikipedia, penjelasan mengenai cassandra

Apache Cassandra is a free and open-source, distributed, wide-column store, NoSQL database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure.

Kebutuhan system (minimal requirement):
2 Core
8 GB RAM
20 GB
Ubuntu 20.04

Server yang saya gunakan memiliki private IP sebagai berikut

node1 : 10.4.10.230
node2 : 10.4.10.111
node3 : 10.4.10.98

kita bisa saja menggunakan public IP, bila anda menggunakan public IP pastikan hanya mengijinkan koneksi antar ketiga cluster ini, diluar akses untuk client.

Kalo digunakan di server production, cluster Cassandra sebaiknya minimal 3 server agar service Cassandra tersedia dalam mode High Availability, bila ada satu server yang down bisa digantikan oleh server lainnya. Tapi hal ini perlu ditelurusi lebih jauh sesuai dengan kebutuhan masing-masing.

Update dan Upgrade System

Setelah menginstall Ubuntu, sangat disarankan untuk menginstall versi terbaru dari system.

sudo apt update && sudo apt upgrade -y

bila ada update kernel baru, sebaiknya system direstart sebelum memulai instalasi.

Install Dependency

Setiap sistem di istall dengan cara yang berbeda, untuk itu kita akan menginstall dependency, agar tutorial ini tetap bisa dijalankan dengan lancar

sudo apt install curl gnupg -y

Install Java

Cassandra dibuat dengan Java, untuk itu kita perlu menginstall Java di server. Jalankan perintah ini di ketiga server cassandra
Java 8 tersedia di repository Ubuntu, jadi bisa langsung di install dengan apt

sudo apt install openjdk-8-jdk -y

Install Cassandra 4.x

Saat ini Cassandra versi stabil adalah 4.0.1, versi ini yang akan di install di cluster kita. Di ketiga server jalankan

echo "deb https://downloads.apache.org/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt update
sudo apt install cassandra -y

tambah repository cassandra ubuntu 20.04

Konfigurasi Cassandra

Pertama stop service cassandra yang lagi berjalan, lalu hapus semua data yang sudah diload, karena cassandra service otomatis dijalankan setelah di install dan kita akan merubah nama cluster maka perlu proses ini

sudo systemctl stop cassandra
sudo rm -rf /var/lib/cassandra/*

ubah config cassandra di file /etc/cassandra/cassandra.yaml, pada masing-masing server.
Bagian cluster_name dan broadcast_rpc_address sesuaikan dengan masing-masing IP Server, sedangkan seeds adalah IP dari ketiga server yang dijadikan cluster cassandra.
Server Cassandra 1

cluster_name: "cassandra-dev-01"
listen_address: 10.4.10.230
seeds: "10.4.10.230:7000,10.4.10.111:7000,10.4.10.98:7000"
rpc_address: 0.0.0.0
broadcast_rpc_address: 10.4.10.230
authenticator: PasswordAuthenticator

Server Cassandra 2

cluster_name: "cassandra-dev-01"
listen_address: 10.4.10.111
seeds: "10.4.10.230:7000,10.4.10.111:7000,10.4.10.98:7000"
rpc_address: 0.0.0.0
broadcast_rpc_address: 10.4.10.111
authenticator: PasswordAuthenticator

Server Cassandra 3

cluster_name: "cassandra-dev-01"
listen_address: 10.4.10.98
seeds: "10.4.10.230:7000,10.4.10.111:7000,10.4.10.98:7000"
rpc_address: 0.0.0.0
broadcast_rpc_address: 10.4.10.98
authenticator: PasswordAuthenticator

setelah merubah konfigurasi tersebut, restart cassandra

sudo systemctl start cassandra

dari salah satu server/node, jalankan nodetool untuk melihat status cluster cassandra

nodetool status
# contoh output
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load        Tokens  Owns (effective)  Host ID                               Rack 
UN  10.4.10.98   69.05 KiB   16      76.0%             cfb5c6bd-1a79-4deb-8e4a-d581300bbe9c  rack1
UN  10.4.10.111  69.05 KiB   16      59.3%             d40c20fc-c263-4375-9140-5cc0c871d050  rack1
UN  10.4.10.230  128.05 KiB  16      64.7%             f8eb0e9e-a4f6-46dc-88d5-170a8ef057ed  rack1

cluster cassandra terhubung

dari informasi diatas, dapat kita pastikan ketiga node berjalan dengan normal, yang ditandai pada bagian UN yang berarti (UP and Normal).

Setting Password

Untuk mengamankan cassandra, kita akan mendisable default user cassandra dan membuat superuser baru. Default credential cassandra

username : cassandra
password : cassandra

Dari server 1/node 1. Pastikan hanya menjalankan perintah ini dari salah satu server, karena proses ini akan otomatis disinkronisasi ke server lain dalam cluster. Login sebagai superuser cassandra

cqlsh -u cassandra -p cassandra localhost

setelah login, buat superuser baru

CREATE ROLE jaranguda WITH PASSWORD = '7odMyFC9TVFswwJ9gYMe' AND SUPERUSER = true AND LOGIN = true;
quit

pada contoh diatas user jaranguda password 7odMyFC9TVFswwJ9gYMe. Setelah membuat user jaranguda, login dengan user tersebut

cqlsh -u jaranguda -p 7odMyFC9TVFswwJ9gYMe localhost

sekarang ubah password default cassandra, dan hapus aksesnya

ALTER ROLE cassandra WITH PASSWORD = 'Ev7aYmR4igwKj9hNUvqc' AND SUPERUSER = false AND LOGIN = false;

Konek ke Cluster Cassandra

Install cqlsh dengan bantuan Python PIP

pip install cqlsh

Connect ke cassandra cluster dengan

cqlsh IP-SERVER -u user -p password

sesuaikan user dan password yang sudah dibuat sebelumnya.
cassandra connect with protection

Setelah konek ke cluster, kita akan mencoba menambahkan data, dan melakukan query sederhana

Buat keyspace baru, dengan nama ecommerce

CREATE KEYSPACE ecommerce WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

Pindah ke keyspace yang baru dibuat

USE ecommerce;

Buat table untuk menyimpan informasi user

CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  last_name text,
  last_login text,
  ip_address text,
  email_address text
);

Insert data contoh

INSERT INTO users (user_id, first_name, last_name, last_login, ip_address, email_address)
    VALUES('user_dev', 'Jaranguda', 'Com', '1636859603', '127.0.0.1', '[email protected]');

Query data yang baru dimasukkan

SELECT * from users

test buat table cassandra

Filed Under: dll

  • « Go to Previous Page
  • Go to page 1
  • Go to page 2
  • Go to page 3
  • Go to page 4
  • Interim pages omitted …
  • Go to page 26
  • Go to Next Page »

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Cara Mengganti Port Screen Sharing macOS
  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway
  • Cara Force Delete Namespace di Kubernetes
  • Install PHP MariaDB di Mac Monterey

Komentar

  • mazda on Tutorial Lengkap Install Mail Server Postfix Dovecot MariaDB di CentOS 7
  • adi on Menggunakan Mikrotik Sebagai SSH Client
  • aris u on Solusi Simple Queue Mikrotik Tidak Berjalan
  • Bowo on Cara Mematikan SSID Molecool Balifiber
  • aris on Solusi Simple Queue Mikrotik Tidak Berjalan

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.2m views
  • Password Terbaru ZTE F609 Indihome 784.5k views
  • Password Superadmin Huawei HG8245A 318.2k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 273k views
  • Cara Setting Wireless ZTE F609 Indihome 257.1k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 169.8k views
  • Akses UseeTV Indihome via Wireless ZTE F609 156.8k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 153.1k views
  • Cara Reset Password ZTE F609 Indihome 147.5k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 113.5k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java