天天看點

tair叢集配置                                        Tair的叢集安裝

                                        Tair的叢集安裝

1、      開發需要的開發環境

(1)    CentOS6.5作業系統

(2)    tair-2.3.1.6.tar.gz (或者Tair的源碼包)

http://code.taobao.org/p/tair/file/30/tair-2.3.tar.gz

(3)    tb-common-utils(或者Tbnet和tbsys的源碼包)

http://code.taobao.org/svn/tb-common-utils/trunk/tb-common-utils

(4)    四台linux虛拟機,分别表示ConfigServer(主),ConfigServer(從),DataServer,DataServer

ConfigServer(主)       192.168.40.114

ConfigServer(從)        192.168.40.115

DataServer                192.168.40.116

DataServer                 192.168.40.117

在192.168.40.114這台機器上安裝tair

  注意:

(I)           在安裝tair之前因為要安裝一些相關的插件,比如libtool、autoconfig、automake、boost-devel、zlib-devel、是以必須確定192.168.40.114可以聯網安裝。(可以通過橋接的方式,然後修改ip位址)

(II)         所有機器的防火牆都要關了(service  iptables stop),設定防火牆不可以開機啟動(chkconfig iptables   off)

(III)       每一台機器都要安裝libtool、boost-devel、zlib-devel、gcc-c++,而且也要安裝tb_common_utils(也就是tbnet和tbsys),安裝的位置要一樣

(IV)        在一台安裝好以後,可以把安裝好的tair_bin包,複制到其他機器同樣的位置中。

2、      安裝libtool(自動安裝automake和autoconfig)

             執行指令  yum  -y   install  libtool

tair叢集配置                                        Tair的叢集安裝

3、      安裝boost-devel

            執行指令   yum    install  boost-devel

tair叢集配置                                        Tair的叢集安裝

4、      安裝gcc-c++  (g++)

執行指令yum  install  gcc-c++

tair叢集配置                                        Tair的叢集安裝

5、安裝zlib-devel

         執行指令  yum install  zlib-devel

tair叢集配置                                        Tair的叢集安裝

6、通過svn擷取tb-common-utils(裡面主要是tbnet和tbsys)

    tb-common-tair源碼位址:http://code.taobao.org/svn/tb-common-utils/trunk

tair叢集配置                                        Tair的叢集安裝

7、把下載下傳好的源碼放到linux系統的/usr/local/目錄下

tair叢集配置                                        Tair的叢集安裝

8、在安裝tbnet和tbsys之前,先配置他們的安裝路徑,在/etc/profile檔案中添加以下内容

export       TBLIB_ROOT=/usr/local/tairlib

執行指令  vi /etc/profile

tair叢集配置                                        Tair的叢集安裝

9、讓/etc/profile配置立即生效

執行指令 source   /etc/profile

tair叢集配置                                        Tair的叢集安裝

10、安裝tbnet和tbsys,進入/usr/local/tb-common-utils

執行build.sh腳本           ./build.sh

tair叢集配置                                        Tair的叢集安裝

可以看到,安裝完成之後,在/usr/local/目錄下,多了一個tairlib的檔案夾

tair叢集配置                                        Tair的叢集安裝

11、安裝tair

(1)把tair-2.3.1.6.tar.gz放到/usr/local/目錄下,并進入到該目錄下

tair叢集配置                                        Tair的叢集安裝

(2)執行指令 tar -zxvf  tair-2.3.1.6.tar.gz  進行解壓縮

tair叢集配置                                        Tair的叢集安裝

(3)進入/usr/local/tair-2.3.1.6目錄下,執行腳本bootstrap.sh

 ./bootstrap.sh

tair叢集配置                                        Tair的叢集安裝

(4)執行configure指令     ./configure

tair叢集配置                                        Tair的叢集安裝

(5)執行make指令編譯     make

tair叢集配置                                        Tair的叢集安裝

(6)執行make install 指令安裝

tair叢集配置                                        Tair的叢集安裝

(7)如果安裝完成之後,會在/root/目錄下生成一個tair_bin安裝檔案

tair叢集配置                                        Tair的叢集安裝
tair叢集配置                                        Tair的叢集安裝

(8)進入/root/tair_bin目錄下建立兩個檔案夾,data和logs

執行指令  mkdir   data

執行指令  mkdir  logs

tair叢集配置                                        Tair的叢集安裝

(9)進入/root/tair_bin/etc目錄下,修改預設檔案的檔案名,修改如下

configserver.conf.default  改為  configserver.conf

dataserver.conf.default    改為    dataserver.conf

group.conf.default         改為  group.conf

執行指令 mv   configserver.conf.default    configserver.conf

執行指令 mv   dataserver.conf.default    dataserver.conf

執行指令 mv   group.conf.default   group.conf

修改之前

tair叢集配置                                        Tair的叢集安裝

修改之後

tair叢集配置                                        Tair的叢集安裝

(10)修改configserver.conf檔案(因為本機是一個主configserver,是以隻要修改configserver.conf檔案和修改group.conf檔案)

執行指令  vi  configserver.conf

#

# tair 2.3 --- configserver config

#

[public]

config_server=192.168.40.114:51980  #主的configserver節點

config_server=192.168.40.115:51980  #從的configserver節點

[configserver]

port=51980   #端口号

log_file=/root/tair_bin/logs/config.log #日志檔案存放的路徑

pid_file=/root/tair_bin/logs/config.pid #pid檔案存放的路徑

log_level=warn   #日志級别

group_file=/root/tair_bin/etc/group.conf #組檔案所在的路徑

data_dir=/root/tair_bin/data/data   #資料存放的位置

dev_name=eth1  #使用的網卡,預設是eth0,這個要根據真實機器所使用的網卡而定,可以使用ifconfig指令來檢視

tair叢集配置                                        Tair的叢集安裝

(11)修改group.conf檔案

  執行指令 vi  group.conf

#group name

[group_1] 

# data move is 1 means when some data servedown, the migrating will be start.

# default value is 0

_data_move=0 #當這個配置為1的時候, 如果發生了某個data server當機, 則系統會盡可能的通過備援的備份對資料進行遷移. 注意, 如果 copy_count 為大于1的值, 則這個配置無效, 系統總是會發生遷移的. 隻有copy_count為1的時候, 該配置才有作用

#_min_data_server_count: when data servers left in a group less than thisvalue, config server will stop serve for this group

#default value is copy count.

_min_data_server_count=1  #最少的dataserver數,少于這個配置值時,将不提供服務

_plugIns_list=libStaticPlugIn.so # 需要加載的插件的動态庫名

_build_strategy=1 #1 normal 2 rack 配置設定政策  1為負載均衡優先  2為位置安全優先  3優先采用位置安全優先

_build_diff_ratio=0.6 #how much difference is allowd between different rack

# diff_ratio = |data_sever_count_in_rack1 - data_server_count_in_rack2| / max(data_sever_count_in_rack1, data_server_count_in_rack2)

# diff_ration must less than _build_diff_ratio

_pos_mask=65535  # 65535 is0xffff  this will be used to gerneraterack info. 64 bit serverId & _pos_mask is the rack info,

_copy_count=3   #資料在系統中存放的數量,預設是1,表示存放一份  

_bucket_number=1023 #這個是hash桶的個數, 一般要 >> dataserver的數量(10倍以上). 資料的分布, 負載均衡, 資料的遷移都是以桶為機關的.

# data center A

_server_list=192.168.40.116:51910  #資料存儲節點

_server_list=192.168.40.117:51910  #資料存儲節點

# data center B

#_server_list=192.168.2.1:5191

#_server_list=192.168.2.2:5191

#_server_list=192.168.2.3:5191

#_server_list=192.168.2.4:5191

#quota info

_areaCapacity_list=0,1124000;  #這是每一個area的配額資訊. 這裡的機關是 byte.

tair叢集配置                                        Tair的叢集安裝

(12)修改dataserver.conf

執行指令  vi dataserver.conf

#

#  tair2.2 --- tairserver config

#

[public]

config_server=192.168.40.114:51980   #主configserver

config_server=192.168.40.115:51980  #從configserver

[tairserver]

#

#storage_engine:

#

# mdb

# fdb

# kdb

#

storage_engine=mdb

local_mode=0

#

#mdb_type:

# mdb

# mdb_shm

#

mdb_type=mdb_shm   #mdb類型

#

# if you just run 1 tairserver on a computer, you may ignore this option.

# if you want to run more than 1 tairserver on a computer, each tairservermust have their own "mdb_shm_path"

#

#

mdb_shm_path=/mdb_shm_path01  #如果dataserver處于同一台真實實體機器上,要區分開來,比如第二個資料節點就為/mdb_shm_path02

#tairserver listen port   

port=51910              #工作端口号

heartbeat_port=61910  #心跳端口号

process_thread_num=16   #最大處理程序

#

#mdb size in MB

#

slab_mem_size=1024

log_file=/root/tair_bin/logs/server.log #日志檔案的路徑

pid_file=/root/tair_bin/logs/server.pid #pid檔案的路徑

log_level=warn    #日志級别

dev_name=eth1     #使用的實體網卡,可以使用ifconfig檢視使用的真實網卡

ulog_dir=/root/tair_bin/data/ulog #ulog路徑

ulog_file_number=3  #ulog檔案數量

ulog_file_size=64   #ulog檔案大小

check_expired_hour_range=2-4

check_slab_hour_range=5-7

[fdb]

# in MB

index_mmap_size=30

cache_size=256

bucket_size=10223

free_block_pool_size=8

data_dir=/root/tair_bin/data/fdb

fdb_name=tair_fdb

[kdb]

# in byte

map_size=10485760      # the size ofthe internal memory-mapped region

bucket_size=1048583    # the numberof buckets of the hash table

record_align=128       # the power ofthe alignment of record size

data_dir=/root/tair_bin/data/kdb     # the directory of kdb's data

tair叢集配置                                        Tair的叢集安裝
tair叢集配置                                        Tair的叢集安裝

12、把/root/tair_bin複制到configserver和兩個dataserver相同的目錄下

注意:在複制之前,要先在其他機器安裝好libtool、boost-devel、zlib-devel、gcc-c++,還有安裝tbnet和tbsys

執行指令    scp   -r   /root/tair_bin        [email protected]:/root/   

執行指令    scp   -r   /root/tair_bin        [email protected]:/root/

執行指令    scp   -r   /root/tair_bin        [email protected]:/root/

tair叢集配置                                        Tair的叢集安裝

13、啟動tair

啟動的順序是,先啟動dataserver,啟動完所有的dataserver之後,再啟動configserver

(1)   先啟動192.168.40.116這台機器的dataserver,進入這台機器的/root/tair_bin/目錄

執行指令 sbin/tair_server   -f    etc/dataserver.conf

tair叢集配置                                        Tair的叢集安裝

(2)    啟動192.168.40.117這台機器的dataserver,進入這台機器的/root/tair_bin/目錄

執行指令     sbin/tair_server   -f   etc/dataserver.conf

tair叢集配置                                        Tair的叢集安裝

(3)    啟動192.168.40.115這台機器的configserver,進入這台機器的/root/tair_bin/目錄

執行指令sbin/tair_cfg_svr    -f      etc/configserver.conf

tair叢集配置                                        Tair的叢集安裝

(4)    啟動192.168.40.114這台機器的configserver,進入這台機器的/root/tair_bin/目錄

執行指令 sbin/tair_cfg_svr    -f     etc/configserver.conf

tair叢集配置                                        Tair的叢集安裝

14、啟動完成之後,可以驗證是否tair安裝成功

     (1) 選擇任意一台機器,進入/root/tair_bin/目錄

執行指令     sbin/tairclient     -c  192.168..40.114:51980     -g  group_1

tair叢集配置                                        Tair的叢集安裝

(2)執行put key  value   和  get    key指令

tair叢集配置                                        Tair的叢集安裝

15、java用戶端連接配接驗證

(1)需要到的jar包如下:

commons-logging-1.1.3.jar

log4j-1.2.17.jar

mina-core-1.1.7.jar

slf4j-api-1.7.7.jar

slf4j-log4j12-1.7.7.jar

tair-client-2.3.1.jar

(2)編寫代碼,這裡主要有兩個類,一個是JAVABean類,一個是測試類,代碼如下所示

(I)因為對象要在網絡中傳輸,是以這裡實作了序列化,DataBean類

importjava.io.Serializable;

publicclass DataBeanimplements Serializable {

privateString username;

privateString address;

privateString password;

    publicDataBean(String username, String address, String password) {

    super();

    this.username =username;

    this.address =address;

    this.password =password;

}

    publicString getUsername() {

       returnusername;

    }

    publicvoidsetUsername(String username) {

       this.username =username;

    }

    publicString getAddress() {

       returnaddress;

    }

    publicvoidsetAddress(String address) {

       this.address =address;

    }

    publicString getPassword() {

       returnpassword;

    }

    publicvoidsetPassword(String password) {

       this.password =password;

    }

    @Override

    publicString toString() {

       // TODOAuto-generated method stub

       returnthis.username+":"+this.password+":"+this.address;

    }

}

(II)測試類

importjava.util.ArrayList;

importjava.util.List;

importcom.taobao.tair.DataEntry;

importcom.taobao.tair.Result;

importcom.taobao.tair.ResultCode;

import com.taobao.tair.impl.DefaultTairManager;

public classTairTest {

    public static void main(String []args){

       //建立configserver清單

       List <String> confServers = newArrayList<String>();

       confServers.add("192.168.40.114:51980");

       confServers.add("192.168.40.114:51950");

       //建立用戶端執行個體

       DefaultTairManager tairManager = newDefaultTairManager();

       tairManager.setConfigServerList(confServers);

       //設定組名

       tairManager.setGroupName("group_1");

       //初始化用戶端

       tairManager.init();

       DataBean dataBean = new DataBean("龐麗彬", "廣西博白","123456789");

       ResultCode resultCode =tairManager.put(0, "data", dataBean);

       if(resultCode.isSuccess()){

       System.out.println("插入資料成功!");

       }

       Result<DataEntry> result =tairManager.get(0,"data");

       System.out.println("擷取資料:"+result.isSuccess());

       if(result.isSuccess()){

        DataEntry entry = result.getValue();

        if(entry!=null){

            DataBean bean= (DataBean)entry.getValue();

            System.out.println("username="+bean.getUsername());

            System.out.println("password="+bean.getPassword());

            System.out.println("address="+bean.getAddress());

            System.out.println("valueis:"+entry.getValue().toString());

        }

        else{

            System.out.println("this key is not exists");

        }

        }

    }

}

(3)測試結果如下

tair叢集配置                                        Tair的叢集安裝

繼續閱讀