Tuning Slow ZFS

Saya telah menginstall ZFS dengan setting default. Ternyata performa untuk write nya sangat lambat sekitar 50 Mb/s, jauh di bawah harapan saya menggunakan ZFS.

Setelah membaca artikel dari https://icesquare.com/wordpress/how-to-improve-zfs-performance/ dan mencoba beberapa sarannya, saya dapat bahwa yang paling berpengaruh adalah kompresi.

Jadi, inilah obat paling mujarabnya:

zfs set compression=lz4 namaPoolAnda

zfs set xattr=sa namaPoolAnda

Setelah itu, performa write menjadi lebih dari 1Gb/s. Mantab.

That’s all folks.

Install Zimbra Collaboration – Open Source Version di Ubuntu 12.04

  • Install ubuntu server 12.04 yang 64bit. Bisa install di server fisik atau sebagai virtual server.
  • Karena ada bug di systat bawaan, maka kita harus menghapusnya dan mengganti dengan versi yg lebih baru.

sudo apt-get remove –purge sysstat

wget https://launchpad.net/ubuntu/+source/sysstat/9.0.6-2/+build/1453608/+files/sysstat_9.0.6-2_amd64.deb

sudo dpkg -i sysstat_9.0.6-2_amd64.deb

sudo apt-mark hold sysstat

  • Hapus semua paket yang bisa bertabrakan dengan zimbra

sudo apt-get remove –purge apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common bind9 bind9-host bind9utils sendmail sendmail-base sendmail-bin sendmail-cf sendmail-doc-sensitive mda rmail samba bsd-mailx

  • Install dependencies

sudo apt-get install netcat-openbsd libgmp3c2 sysstat sqlite3 pax

#nama file bisa berbeda tergantung versi zimbra terbaru.

wget http://files2.zimbra.com/downloads/8.0.6_GA/zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702.tgz

  • Install

tar -xzvf zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702.tgz

cd zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702

./install.sh

Hal hal yang perlu dilakkan setelah selesai install:

  • Membuat ECDSA key

ssh-keygen -b 521 -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

  • Menjalankan zmlog pertama kali

sudo su – zimbra

/opt/zimbra/libexec/zmstatuslog

  • Restart

zmcontrol restart

  • Check Status

zmcontrol status

  • Memulai administrasi zimbra

https://nama-domain-anda::7071/zimbraAdmin/

User: admin

Password: sesuai yang dibuat saat instalasi

  • User biasa masuk ke:

https://nama-domain-anda/

 

 

 

 

 

 

perintah “setup” tidak ada atau hilang di centos

[root@tel ~]# setup
-bash: setup: command not found

Biasanya ini terjadi kalau install centos yang minimal

Solusinya:

yum –y install setuptool
yum –y install system-config-network*
yum -y install system-config-firewall*
yum –y install system-config-securitylevel-tui
yum –y install system-config-keyborad

Install SMSlib di Ubuntu / Debian

Ada beberapa software untuk SMS gateway, namun setelah saya banding-bandingkan SMSlib lah yang paling lengkap fiturnya, terutama pada kemampuan menangani SMS lebih dari 160 karakter (multipart). SMSlib dikembangkan berbasis Java, sehingga bisa dijalankan di berbagai sistem operasi. Untuk kali ini saya pakai Ubuntu Server 10.04 LTS. Seharusnya Versi terbaru atau distro Debian sama saja. Untuk Versi Windows, logikanya sama saja. Silahkan cek di http://smslib.org/doc/installation/

Asumsinya Anda sudah punya server yang sudah diinstal Ubuntu dengan konfigurasi Jaringan yang bisa terhubung ke Internet (Untuk ambil file yang diperlukan). Dan Anda dari PC yang sudah terhubung SSH ke server tersebut melalui putty misalnya.

INSTALL JDK

 

Download Sun JDK (Sekarang Oracle) di http://java.sun.com/javase/downloads/widget/jdk6.jsp (Atau versi 7 yang terbaru. Untuk kali ini saya pakai yang versi jdk1.6.0_37). Anda harus daftar sebagai member lalu download melalui browser Firefox atau Chrome. Nah, saat dalam proses download itu stop download, dan klik kanan pada download file lalu copy link, pastekan di sheel dengan cara klik kanan di shell.

$ apt-get install wget
$ cd /usr/src
$ wget  http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-linux-i586.bin?AuthParam=1357142400_9be1c9645d18d994488cb41ba371b5a8
$mv jdk-6u37-linux-i586.bin?AuthParam=1357142400_9be1c9645d18d994488cb41ba371b5a8 jdk-6u37-linux-i586.bin
$ chmod +x jdk-6u37-linux-i586.bin
$ ./jdk-6u37-linux-i586.bin

Edit file ~/.bashrc dan tambahkan export PATH=”/usr/src/jdk1.6.0_37/bin:$PATH” pada file tersebut.

$ export PATH=”/usr/src/jdk1.6.0_37/bin:$PATH”
$ java -version
java version “1.6.0_37”
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) Client VM (build 20.12-b01, mixed mode, sharing)

INSTALL DATABASE SMSlib dengan MYSQL SERVER

$ apt-get install mysql-server

Anda akan diminta membuat password root untuk MySQL.

$ mysql -p -u root

mysql> create database smslib ;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on smslib.* to smslib@localhost identified by ‘smslib’ ;
Query OK, 0 rows affected (0.02 sec)

PREPARE SMServer and DEPENDENCIES

$ cd /usr/src
$ mkdir smslib_sources
$ cd smslib_sources
$ mkdir smslib
$ cd smslib
$ wget http://smslib.googlecode.com/files/smslib-v3.5.2.zip
$ apt-get install unzip
$ unzip smslib-v3.5.2.zip

Install Dependencies

$ apt-get install librxtx-java
$ cp /usr/share/java/RXTXcomm.jar /usr/src/jdk1.6.0_37/jre/lib/ext/
$ cd /usr/src/smslib_sources/
$ wget http://www.trieuvan.com/apache/ant/binaries/apache-ant-1.8.4-bin.tar.gz
$ tar xzvf apache-ant-1.8.4-bin.tar.gz

Edit file ~/.bashrc dan pada bagian ini menjadi export PATH=”/usr/src/jdk1.6.0_37/bin:/usr/src/smslib_source/apache-ant-1.8.4/bin:$PATH” pada file tersebut.

$ export PATH=”/usr/src/jdk1.6.0_37/bin:/usr/src/smslib_source/apache-ant-1.8.4/bin:$PATH”
$ ant -version
Apache Ant(TM) version 1.8.4 compiled on May 22 2012

$ wget http://www.eng.lsu.edu/mirrors/apache/logging/log4j/1.2.17/log4j-1.2.17.tar.gz
$ tar xzvf log4j-1.2.17.tar.gz
$ cp apache-log4j-1.2.17/log4j-1.2.17.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://jsmpp.googlecode.com/files/jsmpp-2.1.0-bin.zip
$ unzip jsmpp-2.1.0-bin.zip
$ cp jsmpp-2.1.0/*.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://mirror.nexcess.net/apache/commons/net/binaries/commons-net-3.2-bin.tar.gz
$ tar xzvf commons-net-3.2-bin.tar.gz
$ cp commons-net-3.2/*.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz
$ tar xzvf mysql-connector-java-5.1.22.tar.gz
$ cp mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

COMPILE SMSServer

$ cd /usr/src/smslib_source/smslib
$ ant
$ ant clean
$ ant build-smsserver
$ cd dist/classes/
$ cp ../../src/java/org/smslib/smsserver/SMSServer.conf . (Jangan lupa ada spasi dan titik di belakang)

Sesuaikan Konfigurasi yang diinginkan di file SMSServer.conf (Dokumentasi ada di www.smslib.org). Jalankan SMSServer dengan perintah sebagai berikut:

$ java org.smslib.smsserver.SMSServer (Atau sesuaikan dengan opsi yang diinginkan, misalnya limit RAM, dll. Silahkan cek dokumentasi Java)

That’s all.

Ethernet Card tidak Terdeteksi di Ubuntu Server 10.04.3

Dapet motherboard Gigabyte yang baru dengan Eth card yang tidak terdeteksi saat instalasi Ubuntu Server 10.04.03. Hal ini karena drivernya tidak ada. Ini mungkin karena saat bikin Ubuntu versi tersebut Eth card jenis ini belum ada.

Caranya ya install driver manual. Cek dulu apa eth cardnya => lshw -class network =>Eth card saya: Atheros Communications Device 1083 (revc c0)

  1. Dari komputer lain yg sudah nyambung internet, download driver source (kalau atheros di http://media.cdn.ubuntu-de.org/forum/attachments/48/33/2666793-AR81Family-linux-v1.0.1.14.tar.gz )
  2. Copy dalam flash disk
  3. Tancepin flash disk ke server ubuntu yg baru diinstall, lihat dia ada di mana (dmesg), misalnya sdb1
  4. Mount USB => mount /dev/sdb1/ /mnt
  5. Copy file *.tar.gz tadi ke server
  6. tar -xzvf *.tar.gz
  7. sudo make install
  8. sudo modprobe atl1e
  9. Check apakah sudah ada => ifconfig -a
  10. Kasih IP DHCP dulu => sudo dhclient eth0 atau langsung kasih ip statis => petunjuk no 13
  11. coba ping detik.com misalnya
  12. Agar dijalankan saat reboot=> sudo echo atl1e >> /etc/modules
  13. Kalau mau ganti IP static edit duly /etc/network/interfaces lalu sudo ifup eth0
  14. upgrade aja => sudo apt-get update => sudo apt-get dist-upgrade
  15. masukkan ifup eth0 atau dhclient eth0 ke /etc/rc.local biar langsung jalan networknya

Menjaga agar service tetap berjalan

Idenya adalah selalu memeriksa apakah service yang kita inginkan berjalan apa tidak. Kalau tidak berjalan maka dijalankan, kalau sudah berjalan ya dibiarkan saja. Caranya begini:

  1. Buat shell script misalnya dengan nama /root/autoStartMyService.sh yang isinya seperti ini:
    #!/bin/bash
    # check MyService
    ps -ef | grep -v grep | grep MyService
    # if not found – equals to 1, start it
    if [ $? -eq 1 ]
    then
    /root/startMyService.sh
    else
    echo “eq 0 – MyService is running – do nothing”
    fi
  2. Jalankan dicron setiap rentang waktu yang diinginkan, misalnya 5 menit sekali:
    */5 * * * * /root/autoStartMyService.sh

Setup MSQL 5.1 Replication di Centos 6

KETERANGAN
Ini kalau pakai SSL. Jika ingin tidak pakai SSL, tinggal skip bagian SSL.
PERSIAPAN
  • Cek dulu apakah ssl sudah diaktifkan di mysql server master
    root@server1:~# mysql -u root -p
    mysql> show variables like ‘%ssl%’;
  • Jika belum, maka aktifkan dulu dengan menambahkan string “ssl” (tanpa quote) pada /etc/my.cnf dan restart mysql

KONFIGURASI di MASTER

  • MySQL harus bisa listen all interface. Caranya comment pada bind-address = 127.0.0.1 di file /etc/my.cnf. Untuk test, engan perintah berikut:
    root@server1:~# netstat -tap | grep mysql
    tcp 0 0 *:mysql *:* LISTEN 2166/mysqld
  • Membuat folder untuk log mysql jika belum ada
    root@server1:~# mkdir /var/log/mysql
    root@server1:~#  chown mysql:mysql /var/log/mysql
  • Membuat CA certificate
    root@server1:~# (mkdir /etc/mysql/newcerts) cd /etc/mysql/newcerts
    root@server1:~# openssl genrsa 2048 > ca-key.pem
    root@server1:~# openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
  • Membuat server certificate
    root@server1:~# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
    root@server1:~#  openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
  • Membuat client certificate
    root@server1:~# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
    root@server1:~#  openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
  • Transfer file ca-cert.pem, client-cert.pem, and client-key.pem ke slave di direktori /etc/mysql/newcerts juga
  • Buka /etc/my.cnf lalu masukkan berikut:
    ssl
    ssl-ca=/etc/mysql/newcerts/ca-cert.pem
    ssl-cert=/etc/mysql/newcerts/server-cert.pem
    ssl-key=/etc/mysql/newcerts/server-key.pem
  • Restart mysql
  • Membuat user slave d master
    root@server1:~# mysql -u root -p
    mysql> GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘slave_password’ REQUIRE SSL;
    mysql> GRANT USAGE ON *.* TO ‘slave_user’@’%’ REQUIRE SSL;
    mysql> FLUSH PRIVILEGES;
  • Penomoran server dan penentuan database di /etc/my.cnf
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    expire_logs_days = 10
    max_binlog_size = 100M
    binlog_do_db = exampledb
  • Restart mysql
  • Flush & Lock mysql database dulu dan lihat posisi di master status
    root@server1:~# mysql -u root -p
    mysql> USE exampledb;
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;
    +——————+———-+————–+——————+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +——————+———-+————–+——————+
    | mysql-bin.000001 |  3096416 | exampledb    |                  |
    +——————+———-+————–+——————+
    1 row in set (0.00 sec)
  •  INGAT, jangan tutup atau quit dari mysql dulu karena pada pisisi ini harus ngedump database. Buka terminal baru:
    root@server1:~# mysqldump -u root -pyourrootsqlpassword –opt exampledb > snapshot.sql
  • Kirim snapshot.sql ke server slave
  • Dari terminal yang sebelumnya:
    mysql> UNLOCK TABLES;
    mysql> quit;

KONFIGURASI di SLAVE

  • Buka  /etc/my.cnf buat setting server-id, master-connect-retry, replicate-do-db di bagian  [mysqld]
    ssl
    server-id=2
    master-connect-retry=60
    replicate-do-db=exampledb
  • restart mysql
  • membuat database
    root@server2:~# mysql -u root -p
    mysql> CREATE DATABASE exampledb;
    mysql> STOP SLAVE;
    mysql> quit;
  •  memasukkan data awal:
    root#server2:~# mysql -u root -pyourrootsqlpassword exampledb < snapshot.sql
  • set slave:
    root@server2:~# mysql -u root -p
    mysql> CHANGE MASTER TO MASTER_HOST=’192.168.0.100′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’slave_password’, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=3096416, MASTER_SSL=1, MASTER_SSL_CA = ‘/etc/mysql/newcerts/ca-cert.pem’, MASTER_SSL_CERT = ‘/etc/mysql/newcerts/client-cert.pem’, MASTER_SSL_KEY = ‘/etc/mysql/newcerts/client-key.pem’;
    mysql> START SLAVE;
    mysql> SHOW SLAVE STATUS \G

scp, ssh dan rsync tanpa prompting password

Dari host asal:

$ ssh-keygen -t rsa

akan menghasilkan file di ~/.ssh/id_rsa.pub

Kirim file tersebut ke host tujuan.

Lalu masuk ke host tujuan dan memasukkan isi dari id_rsa.pub yg tadi ke ~/.ssh/authorized_keys di host tujuan

$ cat id_rsa.pub >>~/.ssh/authorized_keys

$ chmod 700 ~/.ssh/authorized_keys

Jika butuh root login, edit /etc/ssh/sshd_config dan ubah PermitRootLogin dari no menjadi yes, lalu restart sshd.