環境准備
| 主機 | IP | 配置(最低要求配置) |
| :----- | ------------- | ------------------ |
| node-1 | 192.168.1.81 | 8核16G |
| node-2 | 192.168.1.160 | 8核16G |
| node-3 | 192.168.1.202 | 8核16G |
自己整理的文檔和部署包[7天有效期]:
鏈接:https://pan.baidu.com/s/1eRUhNzbrNQT2vqy1XPe-hQ
提取碼:1234
復制這段內容后打開百度網盤手機App,操作更方便哦--來自百度網盤超級會員V5的分享
物料包准備
tdsql_full_install_ansible_10.3.14.1.0_D002.zip
TDSQL私有雲部署手冊 151.doc
每個服務器准備2塊額外磁盤用於HDFS
配置要求:
測試環境:
至少需要3台機器來搭建一個最小的TDSQL集群(2台物理機用於DB、1台虛擬機用於調度和運營體系部署)
組件 | 機器數 | 機器配置(CPU/內存/磁盤) | 備注 |
---|---|---|---|
zookeeper | 1台 | 虛擬機 2C/4G/100G | |
keeper | 0台 | 虛擬機 2C/4G/100G | 可以與zookeeper同機部署 |
oss | 0台 | 虛擬機 2C/4G/100G | 可以與zookeeper同機部署 |
DB | 2台 | 物理機 8C/16G/500GSSD | |
Proxy | 0台 | 物理機 2C/4G/100G | 可以與db機器同機部署 |
monitor | 0台 | 虛擬機 2C/4G/100G | 可以與zookeeper同機部署 |
chitu | 0台 | 虛擬機 2C/4G/100G | 可以與zookeeper同機部署 |
hdfs(可選) | 1台 | 物理機 4C/4G/1T | 可選,磁盤容量看具體需求 |
LVS(可選) | 2台 | 物理機2C/4G/100G | 可選 |
es | 1台 | 虛擬機 2C/4G/100G | |
kafka | 3台 | 虛擬機 2C/4G/100G | 加載java虛擬機的時候會吃掉3個g |
正式環境:
組件 | 機器數 | 機器配置(CPU/內存/磁盤) | 備注 |
---|---|---|---|
zookeeper | 3台/5台 | 虛擬機8C/16G/500G | |
keeper | 0台 | 虛擬機8C/16G/500G | 可以與oss同機部署 |
oss | 2台 | 虛擬機8C/16G/500G | |
DB | 3*n台 | 物理機 32C/64G/1T SSD | 一主兩備,機器配置看具體需求 |
Proxy | 3台 | 物理機8C/16G/500G | 可以與DB機器同機部署,機器配置看具體需求 |
monitor | 3台 | 虛擬機 8C/16G/500G | 可以與zookeeper同機部署 |
chitu | 2台 | 虛擬機 8C/16G/500G | 可以與zookeeper同機部署 |
hdfs(可選) | 3台 | 物理機8C/8G/12T | 可選,磁盤容量看具體需求 |
LVS(可選) | 2台 | 物理機8C/16G/500G | 可選 |
kafka(可選) | 3台 | 物理機8C/16G/2T | 多源同步組件,萬兆網卡 |
consumer(可選) | 1台 | 物理機8C/16G/500G | 多源同步組件,可與kafka混部 |
es | 1台 | 物理機8C/16G/500G |
當前環境規划:
模塊 | 192.168.1.81 | 192.168.1.160 | 192.168.1.202 |
---|---|---|---|
zk | Y | Y | Y |
scheduler | Y | Y | |
oss | Y | Y | |
chitu | Y | Y | |
monitor(采集監控) | Y | Y | |
db | Y | Y | |
proxy | Y | Y | |
hdfs | Y |
TDSQL部署
免密配置
ssh-keygen -f ~/.ssh/id_rsa -N ''
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.81
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.160
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.202
解包
#解包
unzip tdsql_full_install_ansible_10.3.14.1.0_D002.zip
#執行pythin腳本安裝ansible
cd tdsql_full_install_ansible
python settings/install_ansible.py
#格式化數據盤,新建data1目錄[所有機器]
mkfs.xfs -f /dev/sdb
mkdir -p /data1
mount /dev/sdb /data1
修改配置:
#vim group_vars/all (修改網卡名和數據庫密碼)
sed -i 's/netif_name: .*$/netif_name: eth0/' group_vars/all
sed -i 's/tdsql_pass: .*$/tdsql_pass: a+complex+123456/' group_vars/all
sh -x encrypt.sh
修改tdhost文件:
[root@node-1 tdsql_full_install_ansible]# pwd
/root/tdsql_full_install_ansible
cat tdsql_hosts
#-------------------------------------------------------------#
[envcheck]
mac1 ansible_ssh_host=192.168.1.81
mac2 ansible_ssh_host=192.168.1.160
mac3 ansible_ssh_host=192.168.1.202
[zk]
zk1 ansible_ssh_host=192.168.1.81
zk2 ansible_ssh_host=192.168.1.202
zk3 ansible_ssh_host=192.168.1.160
[scheduler]
scheduler1 ansible_ssh_host=192.168.1.202
scheduler2 ansible_ssh_host=192.168.1.160
[oss]
oss1 ansible_ssh_host=192.168.1.202
oss2 ansible_ssh_host=192.168.1.160
[chitu]
chitu1 ansible_ssh_host=192.168.1.202
chitu2 ansible_ssh_host=192.168.1.160
[monitor]
monitor1 ansible_ssh_host=192.168.1.202
monitor2 ansible_ssh_host=192.168.1.160
[db]
db1 ansible_ssh_host=192.168.1.202
db2 ansible_ssh_host=192.168.1.160
[proxy]
proxy1 ansible_ssh_host=192.168.1.202
proxy2 ansible_ssh_host=192.168.1.160
[hdfs]
hdfs1 ansible_ssh_host=192.168.1.160
[es]
es1 ansible_ssh_host=192.168.1.81
[newdb]
newdb1 ansible_ssh_host=1.1.1.1
newdb2 ansible_ssh_host=2.2.2.2
newdb3 ansible_ssh_host=3.3.3.3
#-------------------------------------------------------------#
設置tdsql明文密碼
#假定我們給tdsql賬號設置的明文密碼為:a+complex+123456
cat group_vars/all
---
zk_num: 3 #<---填入zk集群的數量,1、3或者5
netif_name: eth0 #<---填入scheduler(ifconfig看到的)網卡的名稱
tdsql_pass: a+complex+123456 #<---填入tdsql賬號的明文密碼
zk_rootdir: /tdsqlzk2 #<---填入tdsql系統在zk上的根路徑(一般不改)
metadb_ip: 1.1.1.1 #<-----暫時不改動
metadb_port: 15001 #<-----暫時不改動
metadb_ip_bak: 2.2.2.2 #<-----暫時不改動
metadb_port_bak: 15001 #<-----暫時不改動
metadb_user: tdsql_hanlon #<-----暫時不改動
metadb_password: 123456 #<-----暫時不改動
ssh_port: 22 #<-----暫時不改動
hdfs_datadir: /data1/hdfs #<-----暫時不改動
kafka_logdir: /data1/kafka #<-----暫時不改動
es_mem: 8 #<-----暫時不改動
es_log_days: 7 #<-----暫時不改動
es_base_path: /data/application/es-install/es #<-----暫時不改動
tdsql_secret_pass: K2JatUv5llBbMrske/k2YbqC #<-------密文密碼,自動更新,切勿手動更改
oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I #<-------密文密碼,自動更新,切勿手動更改
clouddba_metadb_pass: h5Wyg2Xy #<-------密文密碼,自動更新,切勿手動更改
---
zk_num: 3
netif_name: eth0
tdsql_pass: a+complex+123456
zk_rootdir: /tdsqlzk2
metadb_ip: 1.1.1.1
metadb_port: 15001
metadb_ip_bak: 2.2.2.2
metadb_port_bak: 15001
metadb_user: tdsql_hanlon
metadb_password: 123456
ssh_port: 22
hdfs_datadir: /data1/hdfs
kafka_logdir: /data1/kafka
es_mem: 8
es_log_days: 7
es_base_path: /data/application/es-install/es
tdsql_secret_pass: K2JatUv5llBbMrske/k2YbqC
oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I
clouddba_metadb_pass: h5Wyg2Xy
部署
#vim group_vars/all (修改網卡名和數據庫密碼)
sed -i "s/netif_name:.*/netif_name: eth0/" group_vars/all
sed -i "s/tdsql_pass:.*/tdsql_pass: a+complex+123456/" group_vars/all
#安裝zk:
#使用tdsql安裝的zk
sh -x encrypt.sh
ansible-playbook -i tdsql_hosts part1_site.yml
#訪問任意節點:
[root@node-1 tdsql_full_install_ansible]# grep chitu tdsql_hosts
[chitu]
chitu1 ansible_ssh_host=192.168.1.202
chitu2 ansible_ssh_host=192.168.1.160
集群配置
集群初始化
添加機房
添加機型規格
proxy機型並非實際用到的 這里隨便怎么寫都行
添加TS80機型為后續數據庫使用的機型,配置如下
mkfs.xfs /dev/sdb
mkdir /data1
mount /dev/sdb /data1
TS80機型配置:
數據磁盤目錄:
建議是: /data1/tdengine/data
日志磁盤目錄:
建議是: /data1/tdengine/log
安裝包目錄:
/data/home/tdsql/tdsqlinstall,固定不變
數據庫安裝目錄:
/data/tdsql_run,固定不變
數據磁盤與日志磁盤大小比例為 3:1
設備資源添加
上報網關資源
這里添加了3個網關資源並且對應了2個IDC,在組成網關組的時候可以選擇2個IDC取3個服務器
上傳DB資源:
192.168.1.81 192.168.1.160 划分到機房1 192.168.1.202划分到機房2 用於組成集群,並設置了3個網關
因為目前兩個機房有3台服務器,上報資源時上報了2個DB服務器所以可以從2個機房取2台服務器
開始創建:
初始化完成后直接下一步:
安裝完成會直接跳轉到登錄頁面:
http://192.168.1.160/tdsqlpcloud
測試tdsql連接
mysql -utdsqlpcloud -h192.168.1.160 -P15065 -p'123456'
[root@node-1 tdsql_full_install_ansible]# mysql -utdsqlpcloud -h192.168.1.160 -P15065 -p'123456'
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3648
Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
測試mysql連接無誤,將連接賬號密碼寫入到 group_vars/all 文件中
---
zk_num: 3
netif_name: eth0
tdsql_pass: a+complex+123456
zk_rootdir: /tdsqlzk2
metadb_ip: 192.168.1.160 #主庫IP
metadb_port: 15065 #主庫端口
metadb_ip_bak: 192.168.1.202 #從庫IP
metadb_port_bak: 15065 #從庫端口
metadb_user: tdsqlpcloud #數據庫連接賬號
metadb_password: 123456 #數據庫連接密碼
ssh_port: 36000
hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs
kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka
es_mem: 8
es_log_days: 7
es_base_path: /data/application/es-install/es
tdsql_secret_pass: S8dfgSoMUjGaUn+EHkm3pA==
oc_secret_pass: TM1QhyoMWT2dWHCCHkm8qA==
clouddba_metadb_pass: h5Wyg2Xy
執行安裝part2_site.yml
#安裝大約4分鍾左右,日志路徑/var/log/ansible.log,最終顯示failed任務數為0表示安裝成功。
sh -x encrypt.sh <---------必須執行,更新密文密碼
ansible-playbook -i tdsql_hosts part2_site.yml
#找到安裝了 scheduler 的服務器並執行:
[root@node-1 tdsql_full_install_ansible]# grep scheduler tdsql_hosts
[scheduler]
scheduler1 ansible_ssh_host=192.168.1.202
scheduler2 ansible_ssh_host=192.168.1.160
# ssh 192.168.1.202
cd /data/application/scheduler/bin
./agent_config --mode modify --option="ocagent_port" --value="8966"
./agent_config --mode modify --option="hadoop_dir" --value=" /data/home/tdsql/hadoop-3.2.1/bin"
#執行結果:
[root@node-1 tdsql_full_install_ansible]# ssh 192.168.1.202
Last login: Tue Feb 23 16:57:56 2021 from 192.168.1.81
[root@localhost ~]# cd /data/application/scheduler/bin
[root@localhost bin]# ./agent_config --mode modify --option="ocagent_port" --value="8966"
zookeeper timeout:10000 msec,msg timeout 30000 msec
zookeeper path:/tdsqlzk2/configs/agent@global
zookeeper value:{
"hadoop_dir" : "/data/home/tdsql/hadoop-3.2.1/bin",
"ocagent_port" : "8966"
}
operation success!
[root@localhost bin]# ./agent_config --mode modify --option="hadoop_dir" --value=" /data/home/tdsql/hadoop-3.2.1/bin"
zookeeper timeout:10000 msec,msg timeout 30000 msec
zookeeper path:/tdsqlzk2/configs/agent@global
zookeeper value:{
"hadoop_dir" : " /data/home/tdsql/hadoop-3.2.1/bin",
"ocagent_port" : "8966"
}
operation success!
安裝備用赤兔:
將已初始化的chitu機器上拷貝2個文件到未初始化的chitu機器上,並刪除未初始化chitu機器上的crontab,如下:
192.168.1.202 已初始化chitu
192.168.1.160 未初始化chitu
(1)在202機器上,拷貝文件到160機器上
scp -p /data/website/tdsqlpcloud/www/config/database.php 192.168.1.160:/data/website/tdsqlpcloud/www/config/
scp -p /data/website/tdsqlpcloud/www/config/install.lock 192.168.1.160:/data/website/tdsqlpcloud/www/config/
(2)刪除160機器上nginx用戶的crontab
[root@localhost bin]# ssh 192.168.1.160
[root@localhost ~]# cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak
[root@localhost ~]# rm -f /var/spool/cron/nginx
(3)測試,登錄205的chitu
http://192.168.1.160/tdsqlpcloud
安裝HDFS服務
由於磁盤前面已經添加並格式化過,這里不用操作了
#需要安裝hdfs的服務器修改主機名[必須修改,因為我們的主機名存在 - 線 需要改成沒有特殊符號的]
#修改 tdsql_hosts 文件,將需要安裝hdfs服務的服務器添加上去,這里就添加3台hdfs
vim tdsql_hosts 新增hdfs配置:
[hdfs]
hdfs1 ansible_ssh_host=192.168.1.81
hdfs2 ansible_ssh_host=192.168.1.160
hdfs3 ansible_ssh_host=192.168.1.202
#安裝hdfs單點[適用於低配服務器]:
#執行安裝
ansible-playbook -i tdsql_hosts hdfs_single.yml
#切換到tdsql用戶
su - tdsql
#用tdsql用戶在hdfs1機器上,格式化namenode
hdfs namenode -format
#用tdsql用戶在hdfs1機器上,啟動namenode和datanode
hdfs --daemon start namenode
hdfs --daemon start datanode
#附:用tdsql用戶關閉hdfs進程
hdfs --daemon stop datanode
hdfs --daemon stop namenode
#安裝hdfs高可用安裝啟動
#在安裝時需要保證主機名修改了
#[本文用多點,配置不高就用單點如果hdfs多點,那么zk服務也需要是多點,因為之前配置的zk就是多點,這里就可以繼續安裝多點hdfs,否則安裝單點]:
#每台服務器需要主機名不同 設置方法: hostnamectl set-hostname node1
ansible-playbook -i tdsql_hosts hdfs.yml
#初始化HDFS:
#用tdsql用戶在hdfs1機器,格式化zk
hdfs zkfc -formatZK
#用tdsql用戶在所有機器,啟動journalnode
hdfs --daemon start journalnode
#用tdsql用戶在hdfs1機器,格式化並啟動namenode
hdfs namenode -format
hdfs --daemon start namenode
#用tdsql用戶在hdfs2機器,格式化namenode
hdfs namenode -bootstrapStandby
#------------------------------啟動hdfs集群------------------------------#
#用tdsql用戶在hdfs1機器,格式化並啟動 zk
su - tdsql
hdfs zkfc -formatZK #格式化只能一次
#所有機器啟動 journalnode
hdfs --daemon start journalnode
#在hdfs1和hdfs2上啟動namenode
hdfs --daemon start namenode
#在hdfs1和hdfs2上啟動zkfc
hdfs --daemon start zkfc
#在所有hdfs機器上啟動datanode
hdfs --daemon start datanode
#------------------------------啟動hdfs集群------------------------------#
#------------------------------停止hdfs集群------------------------------#
在所有hdfs機器上關閉datanode
hdfs --daemon stop datanode
在hdfs1和hdfs2上關閉zkfc
hdfs --daemon stop zkfc
在hdfs1和hdfs2上關閉namenode
hdfs --daemon stop namenode
在所有hdfs機器上關閉journalnode
hdfs --daemon stop journalnode
#------------------------------停止hdfs集群------------------------------#
# hdfs haadmin -getAllServiceState 命令執行失敗嘗試:
hdfs --daemon stop namenode
hdfs --daemon stop journalnode
hdfs --daemon start namenode
hdfs --daemon start journalnode
hdfs dfsadmin -report
hdfs haadmin -getAllServiceState
在hdfs集群下查看/tdsqlbackup路徑
(7)在hdfs集群下查看/tdsqlbackup路徑
用tdsql用戶執行以下命令
su - tdsql
#查看/tdsqlbackup目錄是否已經被自動創建,權限是否是:tdsql supergroup
hadoop fs -ls /
drwxr-xr-x - tdsql supergroup 0 2019-01-02 17:52 /tdsqlbackup
#如果目錄不在或者權限不對,用下面命令修改:
hadoop fs -mkdir /tdsqlbackup
hadoop fs -chown tdsql.supergroup /tdsqlbackup
檢查HDFS端口並補充到 group_vars/all 文件中
如果是3節點的hdfs架構,如上圖所示填寫namenode節點(一般2個)的50070端口
/data2/hdfs /data3/hdfs /data4/hdfs
將這些信息填寫到all文件中
hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs
自動化演練
創建一個分布式實例: