Google Code Prettify

顯示具有 HA 標籤的文章。 顯示所有文章
顯示具有 HA 標籤的文章。 顯示所有文章

2016年2月15日 星期一

PostgreSQL Multi-Master 雙向複寫

安裝 PostgreSQL BDR 版本

What's BDR?
http://2ndquadrant.com/en-us/resources/bdr/

Yum Install

  1. yum install http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/yum-repo-rpms/postgresql-bdr94-2ndquadrant-redhat-1.0-2.noarch.rpm
      1. yum install postgresql-bdr94-bdr

設定PostgreSQL lib

     vi /etc/profile  增加下方資訊
export PATH=/usr/pgsql-9.4/bin:$PATH

Init DB

  1. service postgresql-9.4 initdb -E UTF8  --no-locale --locale=C LC_COLLATE='C' LC_CTYPE='C' -A trust -U postgres
  2. cd /var/lib/pgsql/9.4-bdr/
  3. vi data/pg_hba.conf
  4. vi data/postgresql.conf
  5. service postgresql-9.4 start
  6. chkconfig postgresql-9.4 on

Create DB

  • CREATE ROLE message LOGIN ENCRYPTED PASSWORD 'yourpassword md5' VALID UNTIL 'infinity';
  • CREATE DATABASE message WITH ENCODING='UTF8' OWNER=message TEMPLATE=template0 LC_COLLATE='C' LC_CTYPE='C' CONNECTION LIMIT=-1;

message DB, BDR Setting

##first node

    CREATE EXTENSION btree_gist;
    CREATE EXTENSION bdr;
    SELECT bdr.bdr_group_create( 
        local_node_name := 'centos1', 
        node_external_dsn := 'host=centos1 dbname=message' 
    );

##second node

    CREATE EXTENSION btree_gist;
    CREATE EXTENSION bdr;
    SELECT bdr.bdr_group_join( 
        local_node_name := 'centos2', 
        node_external_dsn := 'host=centos2 dbname=message', 
        join_using_dsn := 'host=centos1 dbname=message' 
    );

更多設定可參考quictstart

2016年2月13日 星期六

Distributed Lock

這幾年一直在碰 HA 相關的系統

一直有一些需求,希望這個程式能在一個 cluster 環境中,只有一台主機執行
不想用DB存相關資料,但一直找不到簡單方便的解決方法

終於發現有一個能跟 java 結合,不需另外寫script

jgroups 提供一個 LockService , 可以實現 DistributedLock

DistributedLock 可以用來做什麼?
  1. Transaction lock , 補足一些 NoSQL 不支援的問題
  2. Service running lock, 讓 Master Node 執行 job, 其它Node 則是一直等待
  3. other lock ???
寫了一個sample code 放在 git