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

3、      安装boost-devel

            执行命令   yum    install  boost-devel


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

执行命令yum  install  gcc-c++

5、安装zlib-devel

         执行命令  yum install  zlib-devel

6、通过svn获取tb-common-utils(里面主要是tbnet和tbsys)

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


7、把下载好的源码放到linux系统的/usr/local/目录下

8、在安装tbnet和tbsys之前,先配置他们的安装路径,在/etc/profile文件中添加以下内容

export       TBLIB_ROOT=/usr/local/tairlib

执行命令  vi /etc/profile

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

执行命令 source   /etc/profile

10、安装tbnet和tbsys,进入/usr/local/tb-common-utils

执行build.sh脚本           ./build.sh

可以看到,安装完成之后,在/usr/local/目录下,多了一个tairlib的文件夹



11、安装tair

(1)把tair-2.3.1.6.tar.gz放到/usr/local/目录下,并进入到该目录下

(2)执行命令 tar -zxvf  tair-2.3.1.6.tar.gz  进行解压缩

(3)进入/usr/local/tair-2.3.1.6目录下,执行脚本bootstrap.sh

 ./bootstrap.sh

(4)执行configure命令     ./configure

(5)执行make命令编译     make

(6)执行make install 命令安装


(7)如果安装完成之后,会在/root/目录下生成一个tair_bin安装文件

(8)进入/root/tair_bin目录下新建两个文件夹,data和logs

执行命令  mkdir   data

执行命令  mkdir  logs


(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

 

修改之前

修改之后

(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命令来查看




(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.



(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




12、把/root/tair_bin复制到configserver和两个dataserver相同的目录下

注意:在复制之前,要先在其他机器安装好libtool、boost-devel、zlib-devel、gcc-c++,还有安装tbnet和tbsys

执行命令    scp   -r   /root/tair_bin        root@192.168.40.115:/root/   

执行命令    scp   -r   /root/tair_bin        root@192.168.40.116:/root/

执行命令    scp   -r   /root/tair_bin        root@192.168.40.117:/root/


13、启动tair

启动的顺序是,先启动dataserver,启动完所有的dataserver之后,再启动configserver

(1)   先启动192.168.40.116这台机器的dataserver,进入这台机器的/root/tair_bin/目录

执行命令 sbin/tair_server   -f    etc/dataserver.conf

(2)    启动192.168.40.117这台机器的dataserver,进入这台机器的/root/tair_bin/目录

执行命令     sbin/tair_server   -f   etc/dataserver.conf



(3)    启动192.168.40.115这台机器的configserver,进入这台机器的/root/tair_bin/目录

执行命令sbin/tair_cfg_svr    -f      etc/configserver.conf

(4)    启动192.168.40.114这台机器的configserver,进入这台机器的/root/tair_bin/目录

执行命令 sbin/tair_cfg_svr    -f     etc/configserver.conf


14、启动完成之后,可以验证是否tair安装成功

     (1) 选择任意一台机器,进入/root/tair_bin/目录

执行命令     sbin/tairclient     -c  192.168..40.114:51980     -g  group_1



(2)执行put key  value   和  get    key命令



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)测试结果如下






 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值