写点什么

KunlunBase 指导手册(一)快速安装手册

作者:KunlunBase
  • 2022 年 7 月 12 日
  • 本文字数:7678 字

    阅读完需:约 25 分钟

一、快速安装

一键安装流程

1.1 安装环境 &配置需求

1.1.1 硬件配置

开发及测试环境(最低要求)


1.1.2 Linux 操作系统版本要求

1.2 规划集群拓扑

以一个三台服务器的配置为例:


做为开发测试环境,每台服务器的硬件最低配置为:4 核 CPU , 16G 内存。(如果仅作功能测试,可以下载 KunlunBase docker 映像安装,普通笔记本就可以部署 KunlunBase docker 安装指南)



表格 1-1

1.3 安装环境准备

安装之前,要确保服务器操作系统环境满足以下要求:


  • 所有节点所在机器须为 Linux,安装了 bash,sed,gzip,python2, python2-dev 等工具或者库。python2 可执行程序设置为 python2。

  • 所有集群节点所在机器已经正确设置好用户,节点将以该用户启动,该用户能够运行 sudo 而不需要密码。

  • 配置防火墙,开发所有 install.json 配置文件涉及的端口。

  • 对于安装存储节点的机器,需要预先安装以下库(此处为 ubuntu 20.04): libncurses5 libaio-dev。

  • 对于安装计算节点的机器,需要预先安装以下库(此处为 ubuntu 20.04): libncurses5 libicu66python-setuptools gcc

  • 在 centos 上安装,参考附录 2。

  • 对于安装动作,需要预先将二进制发布包(kunlun-cluster-manager-0.9.1.tgz,kunlun-server-0.9.1.tgz,kunlun-storage-0.9.1.tgz)放入当前目录. 此外,工具运行机器和节点所在机器间网络不能太慢,因为需要将发布包传递到这些机器上。

  • 对于安装的所有机器,需要设置安装用户及 root 用户的自动登录验证

  • 设置完毕后 ssh username@host.com

  • ubuntu 可以参考:ubuntu 登录自动验证。

  • centos 可以参考:centos 登录自动验证。

  • 如果在该步骤提示 sudo:需要密码,可以参考:sudonopasswd

1.4 下载安装包

选择一台服务器:


通过 git clone 方式在 gitee 上拉 kunlun-scripts 包:


git clone https://github.com/zettadb/cloudnative.git


cd 进入 kunlunnative/cluster 下:


cd kunlunnative/cluster


获取最新的版本的下载包:以 0.9.1 为例(如有其它最新版本请用最新版本)


进入泽拓官网http://downloads.zettadb.com/,点击产品下载;



或者直接 wget 最新的二进程包。


wget https://zettatech.tpddns.cn:14443/dailybuilds/enterprise/kunlun-cluster-manager-0.9.1.tgz  --no-check-certificatewget https://zettatech.tpddns.cn:14443/dailybuilds/enterprise/kunlun-server-0.9.1.tgz--no-check-certificatewget https://zettatech.tpddns.cn:14443/dailybuilds/enterprise/kunlun-storage-0.9.1.tgz--no-check-certificate
复制代码

1.5 配置一键安装参数文件

前提:三台服务器创建用户名为 kunlun 的用户,配置好三台主机间的信任关系。


在一台服务器上操作:Server1


以 kunlun 用户登录


进入 cluster 目录,进入到 install.json 文件目录



编辑 install.json 文件:附录的 example 文件是根据表格 1-1 的规划做的配置,可以根据实际情况修改。

1.6 执行安装

安装过程将用到 generate_scripts.py 生成脚本,action 为 install,config 为刚刚编辑的配置文件 install.json,defuser 设置为默认工作用户。


defuser: 大部分或者全部机器都可以使用该用户,如无该默认用户则使用配置文件里 machines 的 user(自己指定)


defbase: 大部分或者全部机器都可以创建该默认工作目录,如无法创建默认工作目录则使用配置文件里 machines 的 basedir(自己指定)


第一步:


$python2 generate_scripts.py--action=install --config=install.json --defuser=kunlun --defbase=/kunlun
复制代码


第二步:


$bash install/commands.sh


耐心等待 30 分钟左右分钟,只要不出现!!!FAILURES!!!或者其它错误就代表安装成功了。


其他指令:


一键停止集群 stop:defbase 为默认工作目录,Action 为 stop


defbase: 大部分或者全部机器都可以创建该默认工作目录,如无法创建默认工作目录则使用配置文件里 machines 的 basedir(自己指定)


$python2 generate_scripts.py --action=stop--config=install.json --defbase=/kunlun
$bash stop/commands.sh
复制代码


一键启动集群 start:action 为 start


$python2 generate_scripts.py --action=start--config=install.json  --defbase=/kunlun
$bash start/commands.sh
复制代码


一键清除集群 clean:action 为 clean


$python2 generate_scripts.py --action=clean --config=install.json --defbase=/kunlun --sudo
$bash clean/commands.sh
复制代码


使用该命令前,工作目录不可以先清除,否则脚本无法找到工作目录,无法执行该命令,使用完毕后再消除工作目录。

二、验证安装是否成功

登录计算节点:


$psqlpostgres://abc:abc@127.0.0.1:5401/postgres


查看集群节点信息:



postgres=# select name ,id ,when_created from pg_shard; name | id | when_created--------+----+-------------------------------shard1 | 1 |2021-12-22 03:58:59.599486+08shard2 | 2 |2021-12-22 03:58:59.599486+08Shard3 | 3 |2021-12-22 03:58:59.599486+08
复制代码


创建一个分区表测试:


CREATETABLE testtable (id int primary key, name char(8)) partition by hash(id);CREATETABLE  testtable_p1  PARTITION OF testtable FOR VALUES WITH (MODULUS 4, REMAINDER 0);CREATETABLE  testtable_p2  PARTITION OF testtable FOR VALUES WITH (MODULUS 4, REMAINDER 1);CREATETABLE  testtable_p3  PARTITION OF testtable FOR VALUES WITH (MODULUS 4, REMAINDER 2);CREATETABLE  testtable_p4  PARTITION OF testtable FOR VALUES WITH (MODULUS 4, REMAINDER 3);
复制代码


查看表信息:



插入数据:


insert intotesttable(id) values (1);insert intotesttable(id) values (2);insert intotesttable(id) values (3);insert intotesttable(id) values (4);
复制代码


查看表分布情况


postgres=# select relname,relshardid  from pg_class where  reltype<>0 and relname like'%testtable%';
复制代码



集群已经可以正常工作。

三、基准性能测试

3.1 准备环境

3.1.1 在安装的环境种,进入如下目录:

/home/kunlun/cloudnative/Tools/sysbench-tpcc

3.1.2 安装 sysbench

直接 apt-get install sysbench 或者 yum installsysbench

3.1.3 准备数据:

主机、端口、数据库、用户、密码、表数量、scale 数量、线程数、运行时间 s


./prepare.sh hostport dbname user pwd table_num scale_num threads_num times./prepare.sh127.0.0.1  5401 postgres abc abc 1 1 1
复制代码

3.2 运行压测:

./run.sh 1


测试结果:


四、附录 1:install.json

{   "machines":[       {           "ip":"192.168.0.11",           "basedir":"/kunlun",                 "user":"kunlun"       },       {           "ip":"192.168.0.12",           "basedir":"/kunlun",           "user":"kunlun"       },      {           "ip":"192.168.0.13",           "basedir":"/kunlun",           "user":"kunlun"       }   ],   "cluster":{       "name":"clust1",       "meta":{           "nodes":[                {                   "is_primary":true,                   "ip":"192.168.0.11",                    "port":6001,                    "xport":60010,                    "mgr_port":60011,                   "innodb_buffer_pool_size":"64MB",                   "data_dir_path":"/data1",                   "log_dir_path":"/data1/log",                   "user":"kunlun",                   "election_weight":50                },                {                   "is_primary":false,                   "ip":"192.168.0.12",                   "port":6002,                    "xport":60020,                    "mgr_port":60021,                   "innodb_buffer_pool_size":"64MB",                   "data_dir_path":"/data2",                   "log_dir_path":"/data2/log",                   "user":"kunlun",                   "election_weight":50                },                {                   "is_primary":false,                   "ip":"192.168.0.13",                    "port":6003,                    "xport":60030,                    "mgr_port":60031,                   "innodb_buffer_pool_size":"64MB",                   "data_dir_path":"/data3",                   "log_dir_path":"/data3/log",                   "user":"kunlun",                    "election_weight":50                }           ]       },       "comp":{           "nodes":[                {                    "id":1,                   "name":"comp1",                   "ip":"192.168.0.11",                    "port":5401,                   "user":"abc",                   "password":"abc",                   "datadir":"/pgdatadir"                },                {                    "id":2,                   "name":"comp2",                   "ip":"192.168.0.12",                    "port":5401,                   "user":"abc",                   "password":"abc",                   "datadir":"/pgdatadir"                },                {                    "id":3,                   "name":"comp3",                   "ip":"192.168.0.13",                    "port":5401,                   "user":"abc",                   "password":"abc",                   "datadir":"/pgdatadir"                }           ]       },       "data":[           {                "nodes":[                    {                       "is_primary":true,                       "ip":"192.168.0.11",                        "port":6004,                        "xport":60040,                       "mgr_port":60041,                       "innodb_buffer_pool_size":"4000MB",                       "data_dir_path":"/data4",                       "log_dir_path":"/data4/log",                       "user":"kunlun",                       "election_weight":50                    },                    {                       "is_primary":false,                       "ip":"192.168.0.12",                        "port":6005,                       "xport":60050,                       "mgr_port":60051,                       "innodb_buffer_pool_size":"3000MB",                       "data_dir_path":"/data5",                       "log_dir_path":"/data5/log",                       "user":"kunlun",                       "election_weight":50                    },                    {                       "is_primary":false,                       "ip":"192.168.0.13",                        "port":6006,                       "xport":60060,                       "mgr_port":60061,                       "innodb_buffer_pool_size":"3000MB",                       "data_dir_path":"/data6",                        "log_dir_path":"/data6/log",                       "user":"kunlun",                       "election_weight":50                    }                ]           },           {                "nodes":[                    {                        "is_primary":true,                       "ip":"192.168.0.12",                        "port":6007,                       "xport":60070,                       "mgr_port":60071,                       "innodb_buffer_pool_size":"4000MB",                        "data_dir_path":"/data7",                       "log_dir_path":"/data7/log",                       "user":"kunlun",                       "election_weight":50                    },                    {                       "is_primary":false,                       "ip":"192.168.0.11",                        "port":6008,                       "xport":60080,                       "mgr_port":60081,                       "innodb_buffer_pool_size":"3000MB",                       "data_dir_path":"/data8",                       "log_dir_path":"/data8/log",                       "user":"kunlun",                       "election_weight":50                   },                    {                       "is_primary":false,                       "ip":"192.168.0.13",                        "port":6009,                       "xport":60090,                       "mgr_port":60091,                       "innodb_buffer_pool_size":"3000MB",                       "data_dir_path":"/data9",                       "log_dir_path":"/data9/log",                       "user":"kunlun",                       "election_weight":50                    }                ]           },
{ "nodes":[ { "is_primary":true, "ip":"192.168.0.13", "port":6010, "xport":60100, "mgr_port":60101, "innodb_buffer_pool_size":"4000MB", "data_dir_path":"/data7", "log_dir_path":"/data7/log", "user":"kunlun", "election_weight":50 }, { "is_primary":false, "ip":"192.168.0.11", "port":6011, "xport":60110, "mgr_port":60111, "innodb_buffer_pool_size":"3000MB", "data_dir_path":"/data8", "log_dir_path":"/data8/log", "user":"kunlun", "election_weight":50 }, { "is_primary":false, "ip":"192.168.0.12", "port":6012, "xport":60120, "mgr_port":60121, "innodb_buffer_pool_size":"3000MB", "data_dir_path":"/data9", "log_dir_path":"/data9/log", "user":"kunlun", "election_weight":50 } ] } ], "clustermgr":{ "ip":"192.168.0.11" } }}
复制代码

五、附录 2:CentOS 补充指南

5.1 安装必要软件包及依赖(所有主机)

yum install -ypython-setuptools ncurses-libs icu libicu libaio readline python-psycopg2wget --no-check-certificatehttps://zettatech.tpddns.cn:14443/thirdparty/mysql-connector-python.el7.x86_64.rpmyum localinstall -ymysql-connector-python.el7.x86_64.rpm
复制代码

5.2 用户环境 &网络配置

5.2.1 kunlun 用户 SUDO 免密(所有主机)

chmod u+w /etc/sudoerschmod u+w /etc/sudoers,为 sudoers 文件添加写权限。


然后用 vi 打开这一文件


vi /etc/sudoers , 找到如下两行并增加 kunlun 用户及组


##Allow root to run any commands anywhereroot   ALL=(ALL)       ALLkunlun ALL=(ALL)      NOPASSWD:ALL## Allows people in group wheel to run all commands%wheel ALL=(ALL)       ALLkunlun ALL=(ALL)       NOPASSWD:ALL
复制代码


然后执行命令chmod u-w /etc/sudoers,撤销 write 权限。

5.2.2 SSH 免密登录

5.2.2.1 各台主机配置主机名(根据情况修改):
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.0.130 centos7b192.168.0.139 centos7c192.168.0.142 centos7d192.168.0.130 localhost
复制代码
5.2.2.2 配置远程 SSH 免密(远程)
chmod 755 ~/.ssh
cd /home/kunlun/.ssh
复制代码


如果“.ssh”目录不存在,请在/home/hadoop目录执行mkdir ~/.ssh命令创建。


执行以下命令后,如果提示,就一直按“Enter”键,直至生成公钥。(每台机器)


ssh-keygen -t rsa


拷贝公钥到服务器(要登录上去的那台服务器)


scp id_rsa.pubkunlun@centos7c:/home/kunlun/.ssh/authorized_keys_from_centos7b
复制代码


登录到要被登录的服务器()进入./ssh 目录


cd~/.ssh


将客户端发送来的公钥文件进行合并


cat authorized_keys_from_centos7b >> authorized_keys


修改目录权限:


chown kunlun: .ssh chown kunlun: .ssh/* chmod 700 .ssh chmod 600 .ssh/*
复制代码
5.2.2.3 配置本机 SSH 免密(本机-第一台安装的服务器)
ssh-keygen -t dsa -P '' -f .ssh/id_dsacat .ssh/id_dsa.pub >>.ssh/authorized_keyschmod 0600 .ssh/authorized_keys
复制代码

END

昆仑数据库是一个 HTAP NewSQL 分布式数据库管理系统,可以满足用户对海量关系数据的存储管理和利用的全方位需求。应用开发者和 DBA 的使用昆仑数据库的体验与单机 MySQL 和单机 PostgreSQL 几乎完全相同,因为首先昆仑数据库支持 PostgreSQL 和 MySQL 双协议,支持标准 SQL:2011 的 DML 语法和功能以及 PostgreSQL 和 MySQL 对标准 SQL 的扩展。同时,昆仑数据库集群支持水平弹性扩容,数据自动拆分,分布式事务处理和分布式查询处理,健壮的容错容灾能力,完善直观的监测分析告警能力,集群数据备份和恢复等 常用的 DBA 数据管理和操作。所有这些功能无需任何应用系统侧的编码工作,也无需 DBA 人工介入,不停服不影响业务正常运行。昆仑数据库具备全面的 OLAP 数据分析能力,通过了 TPC-H 和 TPC-DS 标准测试集,可以实时分析最新的业务数据,帮助用户发掘出数据的价值。昆仑数据库支持公有云和私有云环境的部署,可以与 docker,k8s 等云基础设施无缝协作,可以轻松搭建云数据库服务。请访问 http://www.zettadb.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。KunlunBase 项目已开源

【GitHub:】https://github.com/zettadb

【Gitee:】https://gitee.com/zettadb

发布于: 刚刚阅读数: 3
用户头像

KunlunBase

关注

还未添加个人签名 2022.03.09 加入

还未添加个人简介

评论

发布
暂无评论
KunlunBase 指导手册(一)快速安装手册_国产数据库_KunlunBase_InfoQ写作社区