Feeds:
Posts
Comments

Posts Tagged ‘Workload’

Oleh : Henoch Immanuel Setiadi (1200951904)

1.    Introduction : Workload Management

(Introduction to Workload Management, 2010) menuliskan bahwa pertama untuk mengenal Load Balancing, kita harus mengetahui terlebih dahulu mengenai Workload Management. Workload Management ini memungkinkan kita untuk mengatur distribusi Workload untuk menghasilkan performa yang optimal bagi Users dan Applications. Workload Management terdiri dari :
•    Services
Oracle Database 10g memperkenalkan fasilitas Workload Management yang Powerful, disebut dengan Services, untuk memungkinkan konsep Enterprise Grid. Services merupakan Entities yang didefinisikan di Oracle RAC Database yang memungkinkan kita untuk mengelompokkan Database Workloads dan mengarahkan Work ke Instances yang optimal yang menyediakan Service yang diminta.
•    Connection Load Balancing
Merupakan sebuah fitur dari Oracle Net Services yang menyimbangkan Connections yang masuk ke seluruh Instances yang menyediakan Service yang diminta.
•    High Availability Framework
Sebuah komponen Oracle RAC yang memungkinkan Oracle Database untuk Maintain komponen dalam keadaan jalan setiap waktu.
•    Fast Application  Notification (FAN)
Mekanisme notifikasi yang digunakan Oracle RAC untuk secara cepat memberikan informasi pada aplikasi mengenai konfigurasi dan perubahan level dari Workload Service.
•    Load Balancing Advisory
Menyediakan informasi ke aplikasi mengenai level dari Current Service yang Database dan Instances – nya sediakan. Load Balancing Advisory membuat rekomendasi ke aplikasi mengenai ke mana untuk mengarahkan permintaan aplikasi untuk mendapatkan layanan terbaik berdasarkan Policy yang telah kita atur.
•    Fast Connection Failover
Ini merupakan salah satu kemampuan Oracle Clients untuk menyediakan koneksi yang memiliki Failover cepat dengan Subscribing ke FAN Events.
•    Runtime Connection Load Balancing
Ini merupakan kemampuan Oracle Clients untuk menyediakan alokasi koneksi yang pintar dalam Connection Pool didasarkan pada Current Service Level yang disediakan oleh Database Instances ketika aplikasi meminta koneksi untuk menyelesaikan beberapa tugas.

2.    Connection Load Balancing

Gambar 1 Connection Load Balancing

Menurut (Introduction to Workload Management, 2010) salah satu kemampuan dari Oracle Net Services untuk menyeimbangkan koneksi klien ke seluruh Instances dalam sebuah Oracle RAC Configuration. Ada 2 tipe dari Load Balancing yaitu Client – Side dan Server – Side Load Balancing. Client – Side Load Balancing menyeimbangkan connection requests ke seluruh

Listeners. Dengan Server – Side Load Balancing, Listener mengarahkan Connection Request ke Instance terbaik yang menyediakan layanan tersebut dengan menggunakan Load Balancing Advisory. Dalam Oracle RAC Database, Client Connection harus menggunakan kedua tipe tersebut.

Untuk konfigurasi Connection Load Balancing memiliki 2 Goals, yaitu :
• Long
Digunakan untuk aplikasi yang memiliki Long – Lived Connection. Sering digunakan untuk Connection Pools dan SQL *Form Sessions. Long merupakan

Default dari  Connection Load Balancing Goals. Berikut ini adalah contoh dari Modifying sebuah Service, POSTMAN, dengan PL/SQL DBMS_SERVICE Package dan CLB_GOAL_LONG Package Constant untuk mendefinisikan Connection Load Balancing untuk Long – Lived Sessions :

EXECUTE DBMS_SERVICE.MODIFY_SERVICE (service_name => ‘POSTMAN’ , clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);

• Short

Digunakan untuk aplikasi yang memiliki ¬Short – Lived Connections. Berikut ini contoh Modifies sebuah Service, Order, dengan menggunakan DBMS_SERVICE.CLB_GOAL_SHORT Package Constant untuk mengatur Goal menjadi Short :

EXECUTE DBMS_SERVICE.MODIFY_SERVICE (service_name => ‘ORDER’        , CLB_GOAL => DBMS_SERVICE.CLB_GOAL_SHORT);

Ketika kita membuat sebuah Oracle RAC Database dengan Database Configuration Assistant (DBCA), DBCA mengkonfigurasikan dan memungkinkan Server – Side Load Balancing secara Default. DBCA juga membuat contoh definisi Client – Side Load Balancing dalam tnsnames.ora pada Server. Service apapun yang dibuat melalui DBCA memiliki Default Setting CLB_GOAL=CLB_GOAL_LONG.
Ketika Oracle Net Services membuat koneksi ke sebuah Instance, koneksi tersebut tetap terbuka sampai Client menutup koneksi tersebut, Instance Shutdown, atau terjadi Failure. Jika kita mengkonfigurasikan Transparent Application Failover (TAF), maka Oracle akan memindahkan Session ke Instance yang masih hidup, jika terjadi Outage.
TAF dapat Restart sebuah Query setelah Failover selesai, tetapi untuk transaksi tipe lain, seperti INSERT, UPDATE, DELETE, aplikasi harus Rollback transaksi yang gagal dan Resubmit transaksi tersebut. Kita harus Reexecute Session Customizations apapun, dengan kata lain, ALTER SESSION Statements, setelah terjadi Failover. Namin, dengan TAF, sebuah koneksi tidak bergerak selama proses normal, sekalipun jika Workload – nya berubah melebihi waktu.
Services menyederhanakan Deployment dari TAF. Kita dapat mendefinisikan TAF Policy buat sebuah Service dan seluruh koneksi yang menggunakan Service ini akan memiliki TAF aktif. Hal ini tidak membutuhkan  perubahan dari Client – Side. TAF Service pada sebuah Service Overrides TAF Setting apapun di Client – Side Definition. Untuk mendefinisikan TAF Policy untuk sebuah Service, gunakan PL/SQL Procedure seperti contoh di bawah ini :

EXECUTE DBMS_SERVICE.MODIFY_SERVICE (service_name => ‘gl.us.oracle.com’
, aq_ha_notifications => TRUE
, failover_method => DBMS_SERVICE.FAILOVER_METHOD_BASIC
, failover_type => DBMS_SERVICE.FAILOVER_TYPE_SELECT
, failover_retries => 180
, failover_delay => 5
, clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);

Client Side Load Balancing didefinisikan di Client Connection milik kita dengan mengatur Parameter LOAD_BALANCE=ON (Default adalah ON untuk Description Lists). Ketika kita merubah Parameter ini menjadi ON, Oracle akan secara Random memilih sebuah alamat dalam daftar alamat dan konek ke Node’s Listener tersebut. Hal ini menyeimbangkan Client Connection ke seluruh Listeners yang tersedia dalam Cluster tersebut. Ketika Listener menerima Connection Request, Listener tersebut Connects User tersebut ke sebuah Instance yang Listener tahu menyedikan Service yang diminta. Kalau inginmelihat Services apa yang didukung oleh sebuah Listener, jalankan lsnrctl services command.

3.    Load Balancing Advisory

Gambar 2 Load Balancing Advisory

Menurut (Introduction to Workload Management, 2010) Load Balancing mendistribusikan tugas ke seluruh Oracle RAC Database Instances yang tersedia. Oracle merekomendasikan aplikasi untuk menggunakan koneksi yang kuat yang meluaskan Instance yang menawarkan layanan tertentu. Koneksi dibuat secara Infrequently dan berada untuk waktu yang lama. Tugas dating ke System dengan frekuensi tinggi. Meminjam koneksi – koneksi ini, dan berada untuk durasi yang pendek. Load Balancing Advisory menyediakan informasi mengenai bagaimana untuk mengarahkan tugas yang masuk ke Instances yang menyediakan kualitas Service yang optimal untuk tugas tersebut. Hal ini mengurangi kebutuhan untuk mengalokasikan tugas tersebut nanti.
Dengan menggunakan THROUGHPUT  atau SERVICE_TIME Goals, feedback dibangun di System. Tugas diarahkan untuk menyediakan Service Time terbaik secara global, dan mengarahkan respon untuk mengubah kondisi system. Dalam Steady State, system mencapai Equilibrium yang meningkatkan Throughput ke seluruh Oracle RAC Instance.
Arsitektur standard yang dapat digunakan untuk Load Balancing Advisory termasuk Connection Load Balancing, Transaction Processing Monitors, Application Servers, Connection Concentrators, Hardware and Software Load Balancers, Job Schedulers, Batch Schedulers, and Message Queuing Systems. Semua ini dapat mengalokasikan tugas.
Load Balancing Advisory Deployed dengan Key Oracle Clients, seperti Listener, JDBC Implicit Connection 10g, ODP.NET Connection Pool. Load Balancing Advisory juga dibuka untuk subskripsi Third Party dengan Way Of ONS.
Kita dapat konfigurasikan Environment untuk menggunakan Load Balancing Advisory dengan mendefinisikan Service – Level Goals untuk setiap Service yang ingin diaktifkan Load Balancing – nya. Ada 2 tipe dari Service – Level Goals untuk Runtime :
•    SERVICE_TIME
Mencoba untuk mengarahkan Work Requests ke Instances berdasarkan waktu respon. Load Balancing Advisory Data didasarkan pada waktu yang sudah dijalankan untuk menyelesaikan suatu pekerjaan dalam Service dan Bandwith yang tersedia untuk Service tersebut. Contoh kegunaan SERVICE_TIME adalah untuk beban kerja seperti Internet Shopping dimana tingkat permintaan berubah – rubah :

EXECUTE DBMS_SERVICE.MODIFY_SERVICE (service_name => ‘OE’
, goal => DBMS_SERVICE.GOAL_SERVICE_TIME –
, clb_goal => DBMS_SERVICE.CLB_GOAL_SHORT);

•    THROUGHPUT
Mencoba untuk mengarahkan Work Requests ke Instances tergantung dari Throughput. Load Balancing Advisory Data didasarkan pada tingkat keberhasilan tugas di dalam Service ditambah dengan Bandwith yang tersedia di Serrvice tersebut. Contoh penggunaan THROUGHPUT ini adalah untuk beban kerja seperti Batch Processes, dimana tugas berikutnya dilakukan ketika tugas terakhir sudah selesai :

EXECUTE DBMS_SERVICE.MODIFY_SERVICE (service_name => ‘sjob’ –
        , goal => DBMS_SERVICE.GOAL_SERVICE_TIME –
       , clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);

Mengubah Setting menjadi NONE akan menonaktifkan Load Balancing untuk Service tersebut. Kita dapat melihat Goal Setting di dalam Data Dictionary dan di dalamViews DBA_SERVICES, V$SERVICES, dan V$ACTIVE_SERVICES.

Reference


Advertisements

Read Full Post »