一个典型的三副本SequoiaDB集群一般是由三台PC Server组成。每台Server上均存储一份数据副本、一份编目数据、一到多个协调节点。
首先,规划一下集群结构,即各主机各节点端口号分布:
sdbcm : 11790
sdbom : 11780
Temperory coord node : 18800
Coord node1(Server1) : 12000
Coord node2(Server2) : 12000
Coord node3(Server3) : 12000
Catalog node1(Server1) : 13000
Catalog node2(Server2) : 13000
Catalog node2(Server3) : 13000
Data nodes :
datagroup1: 14100 跨越3台主机
datagroup2: 14200 跨越3台主机
daragroup3: 14300 跨越3台主机
transdg1: 14400 跨越3台主机
transdg2: 14500 跨越3台主机
transdg3: 14600 跨越3台主机
Domains :
domnormal(datagroup1,datagroup2,datagroup3)
domtrans(transdg1,transdg2,transdg3)
第二步,需要把每台server的系统参数配置好,否则容易导致未来发生一些因为不合适的内核参数造成的问题。具体做法请参考文档中心的“系统要求”: http://doc.sequoiadb.com/cn/index/cat_id/1432190595/edition_id/0
修改系统参数之后,就可以在每台server上安装好SequoiaDB。
安装完成之后,我们就可以开始部署集群了。按照下面的步骤去做,即可部署一个由三台PC Server 组成的典型SDB集群。
启动集群内所有主机的sdbcm,需要每台主机里运行如下命令:
service sdbcm status
/opt/sequoiadb/sdbcmart
进入sdb命令行:
/opt/sequoiadb/bin/sdb
(以下命令均在sdb命令行下运行)
启动om:
var oma = new Oma("Server1",11790);
创建并启动临时协调节点:
oma.createCoord(18800,"/home/sdbadmin/sequoiadb/coord/18800");
oma.startNode(18800);
创建和启动编目节点组(ReplicaGroup)和编目节点:
var db = new Sdb("Server1",18800);
db.createCataRG("Server1",13000,"/home/sdbadmin/sequoiadb/cata/13000");
var cataRG = db.getRG("SYSCatalogGroup");
var catanode1 = cataRG.createNode("Server2",13000,"/home/sdbadmin/sequoiadb/cata/13000");
var catanode2 = cataRG.createNode("Server3",13000,"/home/sdbadmin/sequoiadb/cata/13000");
catanode1.start();
catanode2.start();
创建和启动数据节点组及数据节点:
var dataRG = db.createRG("datagroup1");
dataRG.createNode("Server1", 14100, "/home/sdbadmin/sequoiadb/datagroup1/14100");
dataRG.createNode("Server2", 14100, "/home/sdbadmin/sequoiadb/datagroup1/14100");
dataRG.createNode("Server3", 14100, "/home/sdbadmin/sequoiadb/datagroup1/14100");
dataRG.start();
var dataRG = db.createRG("datagroup2");
dataRG.createNode("Server1", 14200, "/home/sdbadmin/sequoiadb/datagroup2/14200");
dataRG.createNode("Server2", 14200, "/home/sdbadmin/sequoiadb/datagroup2/14200");
dataRG.createNode("Server3", 14200, "/home/sdbadmin/sequoiadb/datagroup2/14200");
dataRG.start();
var dataRG = db.createRG("datagroup3");
dataRG.createNode("Server1", 14300, "/home/sdbadmin/sequoiadb/datagroup3/14300");
dataRG.createNode("Server2", 14300, "/home/sdbadmin/sequoiadb/datagroup3/14300");
dataRG.createNode("Server3", 14300, "/home/sdbadmin/sequoiadb/datagroup3/14300");
dataRG.start();
var dataRG = db.createRG("transdg1");
dataRG.createNode("Server1", 14400, "/home/sdbadmin/sequoiadb/transdg1/14400", {transactionon:true});
dataRG.createNode("Server2", 14400, "/home/sdbadmin/sequoiadb/transdg1/14400", {transactionon:true});
dataRG.createNode("Server3", 14400, "/home/sdbadmin/sequoiadb/transdg1/14400", {transactionon:true});
dataRG.start();
var dataRG = db.createRG("transdg2");
dataRG.createNode("Server1", 14500, "/home/sdbadmin/sequoiadb/transdg2/14500", {transactionon:true});
dataRG.createNode("Server2", 14500, "/home/sdbadmin/sequoiadb/transdg2/14500", {transactionon:true});
dataRG.createNode("Server3", 14500, "/home/sdbadmin/sequoiadb/transdg2/14500", {transactionon:true});
dataRG.start();
var dataRG = db.createRG("transdg3");
dataRG.createNode("Server1", 14600, "/home/sdbadmin/sequoiadb/transdg3/14600", {transactionon:true});
dataRG.createNode("Server2", 14600, "/home/sdbadmin/sequoiadb/transdg3/14600", {transactionon:true});
dataRG.createNode("Server3", 14600, "/home/sdbadmin/sequoiadb/transdg3/14600", {transactionon:true});
dataRG.start();
创建和启动协调节点组(CoordReplicaGroup)及协调节点,并删除临时协调节点:
var coordRG = db.createCoordRG();
coordRG.createNode("Server1", 12000, "/home/sdbadmin/sequoiadb/coord/12000");
coordRG.createNode("Server2", 12000, "/home/sdbadmin/sequoiadb/coord/12000");
coordRG.createNode("Server3", 12000, "/home/sdbadmin/sequoiadb/coord/12000");
coordRG.start();
var oma = new Oma("Server1", 11790);
oma.removeCoord(18800);
查看SDB服务:
/opt/sequoiadb/bin/sdblist -l
/opt/sequoiadb/bin/sdblist -t all
创建域:
var db = new Sdb("Server1", 12000);
db.createDomain("domnormal",["datagroup1","datagroup2","datagroup3"], {AutoSplit:true} );
db.createDomain("domtrans",["transdg1","transdg2","transdg3"], {AutoSplit:true} );
创建集合空间(Collection Space):
var db = new Sdb("Server1", 12000);
db.createCS("testCS",{Domain:"domnormal"});
db.createCS("testTransCS",{Domain:"domtrans"});
创建最终一致性集合:
db.testCS.createCL("testDoc", {ShardingKey:{"DocID":1}, ShardingType:"hash", Partition:1024, ReplSize:1, Compressed:true, CompressionType:"snappy", AutoSplit:true});
创建强一致性集合:
db.testTransCS.createCL("testTransDoc", {ShardingKey:{"DocID":1}, ShardingType:"hash", Partition:1024, ReplSize:3, Compressed:true, CompressionType:"snappy", AutoSplit:true});