[Cloud] Import VMDK to Amazon EC2

1.從ESXi Server先將虛擬機export 出來

export出後會得到如下圖的內容,裡面的vmdk就是我們要匯入到EC2的東東啦!!

2.安裝EC2的Command Line Tool可由此下載
解壓後就算完成安裝,別忘了設定EC2_HOME及JAVA_HOME,所有的指令才能正常使用
Linux : export EC2_HOME=/opt/ec2-api-tools
            export JAVA_HOME=/usr/local/java/jdk-1.6.0_43

M$Win : set EC2_HOME=C:\ec2-api-tools
              set JAVA_HOME=C:\java\jdk1.6.0_31

3.利用ec2-import-instance command來直接匯入VMDK並利用它產生EC2的instance.


/EC2_HOME/bin/ec2-import-instance /PATH_TO_VMDK_FILE/Win8x64.vmdk -f VMDK -t m1.small -a x86_64 -b vmdk2ec2 -o AKIAJQ6QAZ2H3LHOPMDQ -w Kt/G8SfqwertyU3eNaO/kQUb123tjm1Qa/YN -O AKIAJQ6QAZ2H3LHOPMDQ -W Kt/G8SfqwertyU3eNaO/kQUb123tjm1Qa/YN --region ap-southeast-1

其中 -t : Instance Type(m1.small,m1.medium,m1.large...etc),指的是要使用的機器效能
       -a : architecture (i386, x86_64)
       -f  : format (VMDK, VHD...etc)
       -b : S3 的bucket名稱
       -o/O  : owner id (可由Security credential取得)
       -w/W : security key (可由Security credential取得)

執行結果如下:

4.上傳後可透過 ec2-describe-conversion-tasks 來確認上傳後的轉檔過程與階段
請注意StatusMessage 狀態會由 Pending -> Completed

/EC2_HOME/bin/ec2-describe-conversion-tasks import-i-fg7n41ey -O AKIAJQ6QAZ2H3LHOPMDQ -W Kt/G8SfqwertyU3eNaO/kQUb123tjm1Qa/YN --region ap-southeast-1
執行結果如下:
(Pending)
(Completed)

進到EC2 Console啟動它!!



小提醒:
如果你這個Instance不用了你要terminate掉,別忘了在Terminate後要到Volume去把這個Instance相對應用到的 volume 也刪除!!

[Postgres] Postgres-XC 安裝手冊

1.Download, untar, make, install
$groupadd pgxc
$useradd pgxc -g pgxc
$passwd pgxc
$mkdir /pgdata_xc
$chown -R pgxc:pgxc /pgdata_xc
$tar -zxvf pgxc-v1.0.3.tar.gz
$cd postgres-xc/
$yum install gcc flex perl readline-devel zlib-devel openssl-devel pam-devel libxml2-devel libxml2 libxslt libxslt-devel openldap openldap-devel python-devel bison
$./configure --prefix=/opt/pgsql_xc  --with-segsize=8 --with-wal-segsize=64 --with-wal-blocksize=64 --with-perl --with-python --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --enable-thread-safety
$gmake
$gmake install

Global setting (edit ~/.bash_profile)
-------------------------------------
(Optional)
export PGPORT=XXXX
export PGDATA=/pgdata_xc/XXXXXX
export LANG=en_US.utf8

(Conv)
export PGHOME=/opt/pgsql_xc
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
alias rm='rm -i'
alias ll='ls -lh'
--------------------------------------

2.Config Data Node
### data node 1 ###
$mkdir -p /pgdata_xc/db_data
$initdb -D /pgdata_xc/db_data --nodename db_data_1  -E UTF8 -U postgres -W

modify postgresql.conf
-----------------------
port = 15431
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
gtm_host = '192.168.1.53'
gtm_port = 6666
#pgxc_node_name = 'db_data_1'
pooler_port = 6667
max_pool_size = 100
-----------------------

modify pg_hba.conf
-----------------------
host all all 192.168.38.0/24 trust
or
host all all gtm_server_ip/32 trust
-----------------------

### data node 2 ###
$mkdir -p /pgdata_xc/db_data   <- data="" node="" p="" second="">$initdb -D /pgdata_xc/db_data --nodename db_data_2  -E UTF8 -U postgres -W

modify postgresql.conf
-----------------------
port = 15432
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
gtm_host = '192.168.1.53'
gtm_port = 6666
#pgxc_node_name = 'db_data_2'
pooler_port = 6667
max_pool_size = 100
-----------------------

modify pg_hba.conf
-----------------------
host all all 192.168.38.0/24 trust
or
host all all gtm_server_ip/32 trust
-----------------------

3.Config GTM
$mkdir -p /pgdata_xc/gtm
$initgtm -Z gtm -D /pgdata_xc/gtm


4.Config Coordinator Node
### coordinator node 1 ###
$mkdir -p /pgdata_xc/coord1
$initdb -D /pgdata_xc/coord1 --nodename coord1  -E UTF8 -U postgres -W

modify postgresql.conf
-----------------------
listen_addresses = '*'
port = 1921
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
gtm_host = '192.168.38.53'
gtm_port = 6666
#pgxc_node_name = 'coord1'
pooler_port = 6667
max_pool_size = 100
-----------------------

modify pg_hba.conf
-----------------------
host all all 192.168.38.0/24 trust
or
host all all data_node_ip/32 trust
-----------------------

### coordinator node 2 ###
$mkdir -p /pgdata_xc/coord2
$initdb -D /pgdata_xc/coord2 --nodename coord2  -E UTF8 -U postgres -W

modify postgresql.conf
-----------------------
listen_addresses = '*'
port = 1921
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
gtm_host = '192.168.38.53'
gtm_port = 6666
#pgxc_node_name = 'coord2'
pooler_port = 6667
max_pool_size = 100
-----------------------

modify pg_hba.conf
-----------------------
host all all 192.168.38.0/24 trust
or
host all all data_node_ip/32 trust
-----------------------

5.Startup (su - pgxc)
a)GTM
$gtm -D /pgdata_xc/gtm &
b)Data node
$postgres -X -D /pgdata_xc/db_data -p 15431  -i &   <- data="" first="" node="" p=""> $postgres -X -D /pgdata_xc/db_data -p 15431  -i &   <- data="" node="" p="" second="">c)Coordinator node
$postgres -C -D /pgdata_xc/coord2 -p 1921  -i &
$postgres -C -D /pgdata_xc/coord1 -p 1921  -i &

d) stop all service
#pg_ctl stop -D /pgdata_xc/coord2 -p 1921    (node2)
#pg_ctl stop -D /pgdata_xc/coord1 -p 1921    (node1)
#pg_ctl stop -D /pgdata_xc/db_data -p 15431  (node1)
#pg_ctl stop -D /pgdata_xc/db_data -p 15431  (node2)
#pg_ctl stop -D /pgdata_xc/db_data_slave -p 15432 (node1)
#pg_ctl stop -D /pgdata_xc/db_data_slave -p 15432 (node2)
#gtm_ctl stop -Z gtm -D /pgdata_xc/gtm       (gtm server)

6.check status
a)GTM
[pgxc@pgxc-1 ~]$ gtm_ctl status -Z gtm -D /pgdata_xc/gtm
gtm_ctl: server is running (PID: 1551)
  "-D" "/pgdata_xc/gtm"
1 master
b)Data node and Coordinator node
[pgxc@pgxc-1 ~]$ ps -ef | grep pgxc
pgxc      1551  1526  0 11:36 pts/0    00:00:00 gtm -D /pgdata_xc/gtm   <-gtm p=""> pgxc      1561  1526  0 11:38 pts/0    00:00:00 postgres -X -D /pgdata_xc/db_1/pg_root -p 15431 -i    <-datanode nbsp="" p=""> pgxc      1569  1526  0 11:39 pts/0    00:00:00 postgres -C -D /pgdata_xc/coord_1 -p 1921 -i    <-coordinatornode p=""> pgxc      1572  1569  0 11:39 ?        00:00:00 postgres: pooler process  <-pooler atanode="" oordinator="" p="" process="">

7.在CoordinatorNode上註冊DataNode
### coordinator node 1 ###
#psql -p 1921 -U postgres
postgres=# CREATE NODE db_data_1 WITH (TYPE='datanode',HOST = '192.168.38.53', PORT=15431);
postgres=# CREATE NODE db_data_2 WITH (TYPE='datanode',HOST = '192.168.38.54', PORT=15431);
postgres=# CREATE NODE coord2 WITH (TYPE='coordinator',HOST = '192.168.38.54', PORT=1921);
postgres=# select * from pgxc_node;
node_name | node_type | node_port |   node_host   | nodeis_primary | nodeis_preferred |   node_id
-----------+-----------+-----------+---------------+----------------+------------------+-------------
coord1    | C         |      5432 | localhost     | f              | f                |  1885696643
db_data_1 | D         |     15431 | 192.168.38.53 | t              | t                |  1356996994
db_data_2 | D         |     15431 | 192.168.38.54 | t              | t                |  -822936791
coord2    | C         |      1921 | 192.168.38.54 | f              | f                | -1197102633

#SELECT pgxc_pool_reload();  (if alter node, execute it)

### coordinator node 2 ###
#psql -p 1921 -U postgres
postgres=# CREATE NODE db_data_1 WITH (TYPE='datanode',HOST = '192.168.38.53', PORT=15431);
postgres=# CREATE NODE db_data_2 WITH (TYPE='datanode',HOST = '192.168.38.54', PORT=15431);
postgres=# CREATE NODE coord1 WITH (TYPE='coordinator',HOST = '192.168.38.53', PORT=1921);
postgres=# select * from pgxc_node;
node_name | node_type | node_port |   node_host   | nodeis_primary | nodeis_preferred |   node_id
-----------+-----------+-----------+---------------+----------------+------------------+-------------
coord2    | C         |      5432 | localhost     | f              | f                | -1197102633
db_data_1 | D         |     15431 | 192.168.38.53 | t              | t                |  1356996994
db_data_2 | D         |     15431 | 192.168.38.54 | t              | t                |  -822936791
coord1    | C         |      1921 | 192.168.38.53 | f              | f                |  1885696643

#SELECT pgxc_pool_reload();  (if alter node, execute it)

8.Test (在Coordinator1做的create database, table and insert data,會在Coordinator2看到一樣的結果,反之亦然)
### Coordinator node 1 ###
$psql -p 1921 -U postgres
postgres=# \l
postgres=# create database test_xc;
postgres=# \l
postgres=# \c test_xc
test_xc=# create table test_1 (id integer,name varchar(32));
test_xc=# insert into test_1 select generate_series(1,100),'test_xc';
test_xc=# select count(*) from test_1;
count
-------
  402
(1 row)

### Coordinator node 2 ###
$psql -p 1921 -U postgres
postgres=# \l
postgres=# \c test_xc
test_xc=# \d
test_xc=# select count(*) from test_1;
count
-------
  402
(1 row)

### Data node 1 ### (可以看到每個Data node的筆數不同,表示他會平均分散資料存放,可減少IO增進Query performance)
$psql -p 15431 -U postgres -d test_xc
test_xc=# \d
test_xc=# select count(*) from test_1;
  count
-------
    204
(1 row)

### Data node 2 ###
$psql -p 15431 -U postgres -d test_xc
test_xc=# \d
test_xc=# select count(*) from test_1;
count
-------
  198
(1 row)

[Hadoop] Install Hadoop on Ubuntu 12.04 x86_64

Install Hadoop on Ubuntu 12.04 x86_64
A)Install JAVA JDK
# chmod u+x jdk-6u43-linux-x64.bin
  # ./jdk-6u43-linux-x64.bin.bin
  # sudo mkdir -p /usr/lib/jvm
  # sudo mv jdk1.6.0_43 /usr/lib/jvm/
  # sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0_43/bin/java" 1
  # sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_43/bin/javac" 1
 
B)Add Hadoop User
# sudo addgroup hadoop
# sudo adduser --ingroup hadoop hduser  (1qaz2wsx)
# sudo adduser hduser sudo  <-- add="" p="" permission="" sudo="">
C)Configuring SSH
# su - hduser
# ssh-keygen -t rsa -P ""
# cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
# ssh localhost

D)Disable ipv6
# sudo vi /etc/sysctl.conf
--------------------------
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# check ipv6 disabled , return 1 for disable
# cat /proc/sys/net/ipv6/conf/all/disable_ipv6

E)Install Hadoop
#下載:http://apache.stu.edu.tw/hadoop/core/
# cd
# wget http://apache.stu.edu.tw/hadoop/core/hadoop-1.1.2/hadoop-1.1.2.tar.gz
# cd /usr/local
# sudo tar -zxvf ~/hadoop-1.1.2.tar.gz
# sudo mv hadoop-1.0.3 hadoop
# sudo chown -R hduser:hadoop hadoop

F)Update bash
# cd
# vi .bashrc
--------------------------
# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43

# Some convenient aliases and functions for running Hadoop-related commands
unalias fs &> /dev/null
alias fs="hadoop fs"
unalias hls &> /dev/null
alias hls="fs -ls"

# If you have LZO compression enabled in your Hadoop cluster and
# compress job outputs with LZOP (not covered in this tutorial):
# Conveniently inspect an LZOP compressed file from the command
# line; run via:
#
# $ lzohead /hdfs/path/to/lzop/compressed/file.lzo
#
# Requires installed 'lzop' command.
#
lzohead () {
    hadoop fs -cat $1 | lzop -dc | head -1000 | less
}

# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin
--------------------------

G) Configuration
1.hadoop-env.sh  加入JAVA_HOME
# vi /usr/local/hadoop/conf/hadoop-env.sh
--------------------------
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43
--------------------------

2.HDFS
# sudo mkdir -p /app/hadoop/tmp
# sudo chown hduser:hadoop /app/hadoop/tmp
# sudo chmod 750 /app/hadoop/tmp

3.core-site.xml
# vi /usr/local/hadoop/conf/core-site.xml

4.mapred-site.xml
# vi /usr/local/hadoop/conf/mapred-site.xml


5.hdfs-site.xml
# vi /usr/local/hadoop/conf/hdfs-site.xml
6.Format Name Node
# /usr/local/hadoop/bin/hadoop namenode -format

H) Run & Shutdown
# /usr/local/hadoop/bin/start-all.sh
# /usr/local/hadoop/bin/stop-all.sh

I) Testing...
1.Download input data
# mkdir /tmp/gutenberg
# cd /tmp/gutenberg
# wget http://www.gutenberg.org/cache/epub/4300/pg4300.txt
# wget http://www.gutenberg.org/cache/epub/5000/pg5000.txt
# wget http://www.gutenberg.org/cache/epub/20417/pg20417.txt

2.Start Hadoop
# /usr/local/hadoop/bin/start-all.sh

3.Copy local example data to HDFS
# hadoop dfs -copyFromLocal /tmp/gutenberg /user/hduser/gutenberg
# hadoop dfs -ls /user/hduser/gutenberg

4.run mapreduce wordcount
# bin/hadoop jar hadoop-examples-1.1.2.jar wordcount /user/hduser/gutenberg /user/hduser/gutenberg-output
# bin/hadoop dfs -ls /user/hduser/gutenberg-output
# bin/hadoop dfs -cat /user/hduser/gutenberg-output/part-r-00000
# bin/hadoop dfs -getmerge /user/hduser/gutenberg-output /tmp/gutenberg-outpu
# head /tmp/gutenberg-output/gutenberg-output

J) WEB UI
1.TaskTracker Web Interface (MapReduce layer)
- http://localhost:50060
2.JobTracker Web Interface (MapReduce layer)
- http://localhost:50030
3.NameNode Web Interface (HDFS layer)
- http://localhost:50070








[Zabbix] Install Zabbix on CentOS 6.3

Zabbix Server 需求套件
=========================================================
#yum install zlib-devel.*
#yum install openssl-devel.*
#yum install libxml2-devel.*
#yum install curl curl-devel net-snmp net-snmp-devel
#yum install flex
#yum install bison gcc automake autoconf snmp rrdtool
#yum install php-gd php-mysql php-pear phpMyAdmin mysql-server mysql mysql-devel php
#yum install php-bcmath php-mbstring php-xml

***
1. 用 vi /etc/httpd/conf/httpd.conf 設定Apache中的語系為:( (記得restart)
         AddDefaultCharset UTF-8

2. 用 vi /etc/php.ini 設定php中的語系為:( (記得restart)
         default_charset = "utf-8"

3. 用 vi /etc/my.cnf 設定MySQL中的語系為:( (記得restart)
      [mysqld]
         init_connect='SET NAMES utf8'
         default-character-set=utf8
      [client]
         default-character-set = utf8

安裝 Zabbix Server
=========================================================
取得 Zabbix 原始碼: http://www.zabbix.com/download.php
# tar zxf zabbix-2.0.5.tar.gz -C /usr/local/src
# cd /usr/local/src/zabbix-2.0.5
# ./configure --prefix=/opt/zabbix-2.0.5 --enable-server --enable-agent \
   --with-mysql --with-libcurl --with-net-snmp
# make install
# mysql -u root -p -A mysql
mysql> CREATE DATABASE `zabbix` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit
# cd /usr/local/src/zabbix-2.0.5/database/mysql
# mysql -u root -p -A zabbix < schema.sql
# mysql -u root -p -A zabbix < images.sql
# mysql -u root -p -A zabbix < data.sql
# cd /opt
# ln -s zabbix-2.0.5 zabbix
# vi /opt/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
# groupadd zabbix
# useradd -g zabbix -s /sbin/nologin -M zabbix
啟動 Zabbix Server 與 Zabbix Agent Daemon
# /opt/zabbix/sbin/zabbix_server
# /opt/zabbix/sbin/zabbix_agentd
開機自動啟動
# echo "/opt/zabbix/sbin/zabbix_server" >> /etc/rc.d/rc.local
# echo "/opt/zabbix/sbin/zabbix_agentd" >> /etc/rc.d/rc.local
在 Zabbix Server 安裝 Web 介面
# cp -r /usr/local/src/zabbix-2.0.5/frontends/php/. /var/www/zabbix/
# chown apache:apache /var/www/zabbix/conf
# vi /etc/php.ini
date.timezone = "Asia/Taipei"
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
# vi /etc/httpd/conf.d/zabbix.conf
Alias /zabbix /var/www/zabbix

    AllowOverride Limit
    Order allow,deny
    Allow from 192.168.

# service httpd restart

Zabbix Agent @ Linux 安裝步驟
=========================================================
# ./configure --prefix=/opt/zabbix-2.0.1 --enable-agent
# make install
# cd /opt
# ln -s zabbix-2.0.1 zabbix
# vi /opt/zabbix/etc/zabbix_agentd.conf
Server=zabbix.server.name.or.ip
Hostname=my.host.name
# groupadd zabbix
# useradd -g zabbix -s /sbin/nologin -M zabbix
# /opt/zabbix/sbin/zabbix_agentd
# echo "/opt/zabbix/sbin/zabbix_agentd" >> /etc/rc.d/rc.local

Zabbix Agent @ Windows 安裝步驟
=========================================================
1. 取得 Zabbix Agent for Windows: http://www.zabbix.com/download.php
2. 將 win32 (32位元) 或 win64 (64位元) 裡的檔案解壓縮到 C:\zabbix
3. 以 Administrator 身份執行 cmd
4. 產生 zabbix_agentd.conf 設定檔
> echo Server=zabbix.server.name.or.ip > c:\zabbix\zabbix_agentd.conf
5. 註冊 Zabbix Agent 服務
> c:\zabbix\zabbix_agentd.exe --config c:\zabbix\zabbix_agentd.conf --install
6. 啟動 Zabbix Agent 服務
> net start "Zabbix Agent"
7. 開機自動啟動 Zabbix Agent 服務 (注意空格)
> sc config "Zabbix Agent" start= auto
註: 如果沒有出現防火牆開放提示, 必須到控制台手動操作防火牆設定, 允許 C:\zabbix\zabbix_agentd.exe 通過防火牆, 或開放 TCP 10050 port
       

[MySQL] Install MySQL Cluster 7.2.10 on CentOS 6

0.Pre-config OS
================================================================
先將/etc/udev/rules.d/70-persistent-net.rules裡的eth0刪除並把eth1改為eth0
#sudo vi /etc/udev/rules.d/70-persistent-net.rules

更改/etc/sysconfig/network-scripts/ifcfg-eth0
#sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.1.0
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
IPADDR=192.168.1.xxx

更改hostname
#sudo vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xxx_xxx

disable SELINUX
#sudo vi /etc/sysconfig/selinux
SELINUX=disabled

1.Management Node
================================================================
#tar -zxvf mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz
#cd mysql-cluster-gpl-7.2.5-linux2.6-x86_64
#mv bin/ndb_mgm .
#mv bin/ndb_mgmd .
#chmod +x ndb_mg*
#mv ndb_mg* /usr/bin/

set up the config file ON ManagementNode
#mkdir /var/lib/mysql-cluster
#cd /var/lib/mysql-cluster
#vi config.ini

-------config.ini--------
[NDBD DEFAULT]
DataMemory=80M
IndexMemory=18M
NoOfReplicas=2

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Managment Server
[NDB_MGMD]
HostName=192.168.1.180       # the IP of Mgm SERVER
# Storage Engines
[NDBD]
HostName=192.168.1.182        # the IP of the 2nd SERVER
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.1.183    # the IP of the 3rd SERVER
DataDir=/var/lib/mysql-cluster
# 1 MySQL Clients
[MYSQLD]
HostName=192.168.1.180       # the IP of 4th SERVER
---------------------------

#mkdir -p /usr/local/mysql/mysql-cluster

Start the Management Node:
#ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
#ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload

2.Data Node
================================================================
#tar -zxvf mysql-cluster-gpl-7.2.10-linux2.6-x86_64.tar.gz
#mv mysql-cluster-gpl-7.2.10-linux2.6-x86_64 /usr/local/
#cd /usr/local/
#mv mysql-cluster-gpl-7.2.10-linux2.6-x86_64 mysql-cluster
#mkdir /var/lib/mysql-cluster
#mkdir /etc/mysql
#cd /etc/mysql
#vi my.cnf

--------my.cnf--------
[mysqld]
datadir=/usr/local/mysql-cluster/data
basedir=/usr/local/mysql-cluster
socket=/usr/local/mysql-cluster/mysql.sock
default-storage-engine=NDBCLUSTER
ndbcluster
ndb-connectstring=192.168.1.180

[mysql_cluster]
ndb-connectstring=192.168.1.180
-----------------------

Startup DataNode
#/usr/local/mysql-cluster/bin/ndbd --initial
#/usr/local/mysql-cluster/bin/ndbd -d

3.SQL Node
================================================================
#tar -zxvf mysql-cluster-gpl-7.2.10-linux2.6-x86_64.tar.gz
#mv mysql-cluster-gpl-7.2.10-linux2.6-x86_64 /usr/local/
#cd /usr/local/
#mv mysql-cluster-gpl-7.2.10-linux2.6-x86_64 mysql-cluster
#cp mysql-cluster/support-files/mysql.server /etc/init.d/mysqld
#mkdir /etc/mysql
#vi /etc/mysql/my.cnf

——————-my.cnf——————————–
[client]
port = 3306
socket = /tmp/mysql.sock

# The MySQL server
[mysqld]
basedir = /usr/local/mysql-cluster
datadir = /usr/local/mysql-cluster/data
port = 3306
socket = /tmp/mysql.sock
ndbcluster
ndb-connectstring=192.168.1.180
user = mysql
# Try number of CPU’s*2 for thread_concurrency
thread_concurrency = 2
log-bin=mysql-bin
log-error

[mysql_cluster]
ndb-connectstring=192.168.1.180

[mysqld_safe]
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[mysqlhotcopy]
interactive-timeout
————————————-————————-

#groupadd mysql
#useradd -r -g mysql -s /sbin/nologin mysql
#cd /usr/local/mysql-cluster
#scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-cluster
#vi /etc/init.d/mysqld
***把basedir 跟 datadir的路徑加入
basedir=
    datadir=
    改為
basedir=/usr/local/mysql-cluster
    datadir=/usr/local/mysql-cluster/data

#/etc/init.d/mysqld start
#/etc/init.d/mysqld stop

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Add Data and SQL Node
Step 1: Update configuration file.  (add [NDBD] or [MYSQLD]), 加sqlnode只要做到Step 4
Step 2: Restart the management server.
2.1 in ndb_mgm console, type 'x' stop. x is mgmnode id, x=1 usually.
2.2 in shell, restart ndb_mgmd (#ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload)
Step 3: Perform a rolling restart of the existing data nodes.
3.1 in ndb_mgm console, type 'x' restart. x is data node id.(每一個Data Node都要restart)
Step 4: Perform a rolling restart of all cluster API nodes.
4.1 in shell, restart mysqld (#/etc/init.d/mysqld restart)
Step 5: Perform an initial start of the new data nodes.
5.1 in shell, execute ndbd --initial
Step 6: Create a new node group.
6.1 in ndb_mgm console, type CREATE NODEGROUP 3,4
Step 7: Redistribute cluster data
7.1 in ndb_mgm console, type ALL REPORT MEMORY
7.2 在sqlnode的結點下,連入mysql> ALTER ONLINE TABLE xxxxx REORGANIZE PARTITION
7.3 在sqlnode的結點下,連入mysql> OPTIMIZE TABLE xxxxx,xxxxx

[OpenERP] Install OpenERP 6.1 on Amazon EC2 (Ubuntu 12.04 LTS x64)

1.先安裝系統所需的程式或lib
#sudo apt-get install openssh-server denyhosts
#sudo apt-get update
#sudo apt-get dist-upgrade

2.Create the OpenERP user
#sudo adduser --system --home=/opt/openerp --group openerp
#sudo su - openerp -s /bin/bash
#exit

3.Install and configure the database server(PostgreSQL)
#sudo apt-get install postgresql
#sudo su - postgres
#createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt openerp
Enter password for new role: cen0q@dmin (mz@dmin)
Enter it again: cen0q@dmin (mz@dmin)
#exit

4.Install the necessary Python libraries for the OpenERP server
#sudo apt-get install unzip python-mock python-unittest2 python-docutils python-jinja2 python-dateutil python-feedparser python-gdata python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-pip
#sudo apt-get remove python-werkzeug
#sudo pip install werkzeug

5.Install the OpenERP server
a.Download:
#wget http://nightly.openerp.com/6.1/releases/openerp-6.1-1.tar.gz
#     http://nightly.openerp.com/6.1/releases/openerp-6.1-latest.tar.gz
b.unzip:
#sudo mkdir /opt/openerp
#cd /opt/openerp
#sudo tar xvf ~/openerp-6.1-1.tar.gz
#sudo chown -R openerp: *
#sudo cp -a openerp-6.1-1 server

6.Configuring the OpenERP server
#sudo cp /opt/openerp/server/install/openerp-server.conf /etc/
#sudo chown openerp: /etc/openerp-server.conf
#sudo chmod 640 /etc/openerp-server.conf
#sudo vi /etc/openerp-server.conf
db_password = False
logfile = /var/log/openerp/openerp-server.log
#########################
for openerp v7
要額外加上gdata-python-client (http://code.google.com/p/gdata-python-client/)
先下載最新版本,解壓後再執行
#sudo python ./setup.py install
#########################
#sudo su - openerp -s /bin/bash
#/opt/openerp/server/openerp-server   <---for ctrl="" div="" run="" server="" shutdown="" test="" to="">
#exit

7.Installing the boot script
#sudo chmod 755 /etc/init.d/openerp-server
#sudo chown root: /etc/init.d/openerp-server
#sudo update-rc.d -f openerp-server defaults
#sudo mkdir /var/log/openerp
#sudo chown openerp:root /var/log/openerp

[OpenERP] 客製流程(以expense為例)

1.        先定義流程狀態(state)
#sudo vi /opt/openerp/server/openerp/addons/hr_expense/hr_expense.py
修改 :
=>增加兩個狀態 hr_expense.mt_expense_first_approved, hr_expense.mt_expense_second_approved

=>增加兩個狀態 first_approved, second_approved

=>加入以下兩個method給action call,主要是來change state

       
2.        增加流程動作
於OpenERP上,點選"設置">"技術">"工作流程">"工作流程"


=>這時會顯示所有目前已定義的流程


我們以expense來說明,所以點選"hr.wkf.expenses"

點選後會跳出此流程的所有動作(activity),



按下"編輯"來新增我們要的動作

點選"新增一個項目",填入名稱,工作流程,類別及python 動作

新增源活動及目標活動

這裡的信號代表畫面上按鈕的動作(name),此時可選擇這個活動的使用者群組,來限定可執行該動作的人員.

依樣作出second_approved.
3.        修改畫面
點選”人力資源”>”費用”並按下”建立”

此時在上方”調試視圖#xxx”內選擇”編輯Form視圖”

會出現如下圖,


在裡面新增兩個button
更改
最後按下存檔就完成了.