KunlunDB 快速入門 1.0
一、瞭解KunlunDB
1.1 KunlunDB產品基本概念&架構
1.1.1 叢集元件架構圖
1.2 KunlunDB主要元件:
1.2.1 KunlunServer(計算節點)
計算節點執行無狀態計算&查詢引擎,與Kunlun Storage進行互動執行SQL 任務,採用非同步通訊模式,一個計算節點可以協調多個儲存節點執行資料處理(增刪改查)任務。計算節點從後設資料叢集獲取叢集後設資料並在本地持久化。Kunlun Server的SQL層相容PostgreSQL和MySQL協議(開發中......),各個計算節點獨立處理SQL計算。Kunlun Server支援標準SQL連線。
1.2.2 KunlunStorage(儲存節點)
採用Shared-nothing架構,各儲存節點執行一定數目的儲存引擎例項,用來持久化應用(使用者)資料。儲存引擎執行計算節點發起SQL語句(在XA事務中的分支)。可以使用MGR單主模式或Binlog強同步模式做叢集高可用。
1.2.3 Meta Cluster(後設資料叢集)
用來儲存著若干個崑崙分散式資料庫叢集的後設資料,及分散式事務兩階段提交的commit log。後設資料叢集採用一主兩從的部署模式。
叢集管理(Cluster_mgr)作為守護程式執行,負責監控和維護每一個儲存叢集及其節點的replication狀態、叢集計算節點與儲存節點之間的後設資料和狀態同步、處理分散式事務節點故障處理等。叢集管理器提供API供第三方管理軟體呼叫。
節點管理(Node_mgr)在叢集的每一臺機器執行,檢測該機器上所有計算節點,以及儲存節點的狀態,對所有節點例項進行保活管理。並通過HTTP介面接收叢集管理的命令,進行節點例項安裝,刪除等功能。
1.2.4 Xpanel(運維監控平臺)
KunlunDB的運維管理模組,可以對整個叢集環境進行管理和監控。Xpanel可以監控叢集各個節點的作業系統及各關鍵元件的重要資訊,包括作業系統資源,作業系統錯誤日誌,計算&儲存引擎的關鍵日誌錯誤資訊等。
KunlunDMP是KunlunDB備份恢復工具,DataPump是資料載入工具,支援 MySQL,PostgreSQL邏輯備份和資料的載入。
二、快速安裝
一鍵安裝流程
2.1 安裝環境&配置需求
2.1.1 硬體配置
開發及測試環境(最低要求)
2.1.2 Linux 作業系統版本要求
2.2 規劃叢集拓撲
以一個三臺伺服器的配置為例:
做為開發測試環境,每臺伺服器的硬體最低配置為:4核CPU , 16G記憶體。(如果僅作功能測試,可以下載KunlunDB docker映像安裝,普通筆記本就可以部署KunlunDB docker安裝指南)
表格1-1
2.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
2.4 下載安裝包
選擇一臺伺服器:
通過git clone方式在gitee上拉kunlun-scripts包:
git clone
cd進入kunlunnative/cluster下:
cd kunlunnative/cluster
獲取最新的版本的下載包:以0.9.1為例(如有其它最新版本請用最新版本)
進入澤拓官網,點選產品下載;
或者直接wget最新的二程式包。
wget
2.5 配置一鍵安裝引數檔案
前提:三臺伺服器建立使用者名稱為kunlun的使用者,配置好三臺主機間的信任關係。
在一臺伺服器上操作:Server1
以 kunlun使用者登入
進入 cluster 目錄,進入到 install.json 檔案目錄
編輯install.json檔案:附錄的example檔案是根據表格1-1的規劃做的配置,可以根據實際情況修改。
2.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%';
叢集已經可以正常工作。
四、基準效能測 試
4.1 準備環境
4.1.1 在安裝的環境種,進入如下目錄:
/home/kunlun/cloudnative/Tools/sysbench-tpcc
4.1.2 安裝sysbench
直接 apt-get install sysbench 或者 yum installsysbench
4..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
4.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 補充指南
6.1 安裝必要軟體包及依賴(所有主機)
yum install -ypython-setuptools ncurses-libs icu libicu libaio readline python-psycopg2wget --no-check-certificate
6.2 使用者環境& 網路配置
6.2.1 kunlun使用者SUDO免密(所有主機)
chmod u+w /etc/sudoers
chmod 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許可權。
6.2.2 SSH免密登入
6.2.2.1 各臺主機配置主機名(根據情況修改):
/etc/hosts
127
.0
.0
.1
localhost
localhost
.localdomain
localhost4
localhost4
.localdomain4
::1
localhost
localhost
.localdomain
localhost6
localhost6
.localdomain6
192
.168
.0
.130
centos7b
192
.168
.0
.139
centos7c
192
.168
.0
.142
centos7d
192
.168
.0
.130
localhost
6.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/*
6.2.2.3 配置本機SSH免密(本機-第一臺安裝的伺服器)
ssh-keygen -t dsa -P '' -f .ssh/id_dsacat .ssh/id_dsa.pub >>.ssh/authorized_keyschmod 0600 .ssh/authorized_keys
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011764/viewspace-2885947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- KunlunDB 快速入門 4.0(從Oracle實時同步資料到kunlunDB)Oracle
- KunlunDB 快速入門2.0(對等部署最佳實踐)
- 快速排序快速入門排序
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- JavaScript快速入門JavaScript
- vim快速入門
- Webpack快速入門Web
- Lumen快速入門
- TypeScript 快速入門TypeScript
- phpunit 快速入門PHP
- React快速入門React
- WebSocket 快速入門Web
- Pipenv 快速入門
- MQTT 快速入門MQQT
- Zookeeper快速入門
- DvaJS快速入門JS
- SnakeYaml快速入門YAML
- RabbitMQ快速入門MQ
- 快速入門reactReact
- pipenv快速入門
- Promise快速入門Promise
- PHP快速入門PHP
- GitHub 快速入門Github
- mongodb快速入門MongoDB
- mysqlsla快速入門MySql
- Express快速入門Express
- Python快速入門Python
- NuxtJS快速入門UXJS
- MySQL 快速入門MySql
- jackson快速入門
- Composer 快速入門
- zookeeper 快速入門
- Spark 快速入門Spark
- Envoy 快速入門
- Thymeleaf【快速入門】
- Feign快速入門
- Redis快速入門Redis
- IMGUI快速入門GUI