1. 程式人生 > >騰訊資料庫tdsql部署與驗證

騰訊資料庫tdsql部署與驗證

## 環境準備 ``` | 主機 | 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/1MS1YMx2IobyJYkghVqcHrQ 提取碼:4osl 複製這段內容後開啟百度網盤手機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 [email protected] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] ``` ### 解包 ``` #解包 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 ``` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111132230-1648321530.png) ### 叢集配置 ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111143495-1142405291.png) ## 叢集初始化 ### 新增機房 ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111215146-2137316429.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111231393-1378773594.png) ### 新增機型規格 `proxy機型並非實際用到的 這裡隨便怎麼寫都行` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111244806-1648882443.png) `新增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 ``` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111305372-10833056.png) ## 裝置資源新增 ### 上報閘道器資源 ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111324275-1903554924.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111339986-611590356.png) `這裡添加了3個閘道器資源並且對應了2個IDC,在組成閘道器組的時候可以選擇2個IDC取3個伺服器` 上傳DB資源: `192.168.1.81 192.168.1.160 劃分到機房1 192.168.1.202劃分到機房2 用於組成叢集,並設定了3個閘道器` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111356599-643031342.png) `因為目前兩個機房有3臺伺服器,上報資源時上報了2個DB伺服器所以可以從2個機房取2臺伺服器` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111409421-1481556225.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111423042-1914927111.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111436788-278126720.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226112103097-649764416.png) 開始建立: ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111453761-1013858621.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111508464-32476681.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111522476-183149596.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111534062-943722778.png) 初始化完成後直接下一步: ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111545441-436986077.png) 安裝完成會直接跳轉到登入頁面: `http://192.168.1.160/tdsqlpcloud` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111611501-849027964.png) 測試tdsql連線 ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111624939-1158927368.png) ``` 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 ``` ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111652692-491940426.png) ### 安裝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 ``` ### 自動化演練 ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111734638-977240085.png) 建立一個分散式例項: ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111841447-445027104.png) ![](https://img2020.cnblogs.com/blog/1362790/202102/1362790-20210226111900479-9684712