Salı, Ocak 28, 2014

rename lots of redis keys with regex



önce

error-testtask_2405406e-98d4-45a0-874f-46131843520b

redis-cli keys "error-*" |awk '{print "redis-cli RENAME " $1 " " substr($0,7)}'|sh

sonra

testtask_2405406e-98d4-45a0-874f-46131843520b

Pazar, Ocak 05, 2014

Failover With KeepAlived

Network Scenario:
  1. LB1 Server: 192.168.10.111 ( eth1 )
  2. LB2 Server: 192.168.10.112 ( eth1 )
  3. Virtual IP: 192.168.10.121
Install Keepalived

Keepalived is available in centos base repository. Install it using yum command line tool.
# yum install keepalived
Keepalived configuration File: /etc/keepalived/keepalived.conf

Configure Keepalived on LB1.

Edit Keepalived configuration file on LB1 and add following configuration.
vrrp_instance VI_1 {
    interface eth1 state MASTER
    virtual_router_id 10
    priority 101 # 101 on master, 100 on backup
    virtual_ipaddress {
        192.168.10.121
    }
}
Configure Keepalived on LB2.

Edit Keepalived configuration file on LB2 and add following configuration.
vrrp_instance VI_1 {
    interface eth1 state BACKUP
    virtual_router_id 10
    priority 100 # 101 on master, 100 on backup
        virtual_ipaddress {
            192.168.10.121
        }
    }

1. Priority value will be higher on Master server, It doesn’t matter what you used in state. Ifyour state is MASTER but your priority is lower than the router with BACKUP, you will lose the MASTER state.
2. virtual_router_id should be same on both LB1 and LB2 servers.
3. By default single vrrp_instance support up to 20 virtual_ipaddress. In order to add more addresses you need to add more vrrp_instance
Start Keepalived

Start Keepalived service using following command and also configure to auto start on system boot.
# service keepalived start
# chkconfig keepalived on

Çarşamba, Ocak 01, 2014

PostgreSQL 9.1 Hot standby Kurulumu


kontrol makinesi : 192.168.2.5
master db : 192.168.101
slave db: 192.168.2.102

Bu yöntem ile yapılabilecekler.

  • Orjinal veritabanınızın bir kopyasına sahip olursunuz ve veri kaybınıönlemiş olursunuz.
  • Veritabanına gelen yükü dağıtabilirsiniz (Slave server üzerinde sadeceokuma amaçlı sorguları çalışıtrabilirsiniz )
  • Rapor amaçlı uzun süren sorguları slaver server üzerinde çalıştırarakperformans artışı sağlanabilir.

Bu yöntem ile neler yapılamaz
  • Sadece bir tabloyu, şemayı (schema) yada veritabanını kopyalayamazsınız.
  • Slave server orjinalin bire bir kopyası olmak zorundadır.
  • Birden fazla Master kopya olamaz.
  • PostgreSQL versiyonları farklı olamaz.

Kurulum

sudo apt-get install postgresql" 
yazarak postgresql in son sürümünü indirin.
Postgresql için kullanıcı adı ve şifrelerin ayarlanması için gereken terminal komutları
sudo -u postgres psql postgres
\password postgres
Master tarafında ki ayarlamalar
Master tarafında yapılan değişkilklikler. Master sunucu içerisinde ki ayar dosyalarındaki değişiklikleri yapın.
/etc/postgresql/9.1/main/postgresql.conf
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3

etc/postgresql/9.1/main/pg_hba.conf
host all all 192.168.2.5/32 md5
host replication all           192.168.2.102/32            trust

Veri klasörünün kopyalanması
öncelikle master veri tabanın da backup işlemini başlatın
pgadmin den veya psql den yazılabilir.
select pg_start_backup('backup');

Şimdi master sunucudaki postgresql in veri klasörünü, slave sunucudaki postgresql veri klasörüne kopyalamalısınız.
rsync -av 192.168.2.101:/var/lib/postgresql/9.1/main/ /var/lib/postgresql/9.1/main/
kopyalama işlemini yaptıktan sonra kopyalanan slave sunucudaki "postmaster.pid" dosyasını silin.
rm -rf /var/lib/postgresql/9.1/main/postmaster.pid 
veri klasörünün nerde olduğunu bulmak için pgadmin de aşağıdaki sql cümlesini yazıp çalıştırabilirsiniz.
show data_directory;
Son olarak master sunucudaki backup işlemini durdurmalısınız. Bunun için pgadmin de aşağıdakı sorguyu çalıştırın.
select pg_stop_backup();
Slave sunucu tarafında yapılan değişklikler

Slave sunucudaki postgresql veri klasörü içine "recovery.conf" adında bir dosya oluşturmalısınız.
Bu dosyaya aşağıdaki satırları yazın.

vi /var/lib/postgresql/9.1/recovery.conf

standby_mode='on'
primary_conninfo='host=192.168.2.101'
eğer salave sunucuda sorgu çalıştırmak istiyorsanız slave sunucuda aşağıdaki ayarı da yapın
/etc/postgresql/9.1/main/postgresql.conf

hot_standby = on

Son olarak yapmanız gereken slave sunucudaki postgresql servisini yeniden başlatmanız. Bunun için terminale aşağıdaki kodu yazın.
sudo /etc/init.d/postgresql restart