共計 14371 個字符,預計需要花費 36 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 TDSQL 怎么安裝部署附圖,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
分布式數據庫(Tencent Distributed SQL,TDSQL)是騰訊打造的一款分布式數據庫產品,具備強一致高可用、全球部署架構、分布式水平擴展、高性能、企業級安全等特性,同時提供智能 DBA、自動化運營、監控告警等配套設施,為客戶提供完整的分布式數據庫解決方案。
TDSQL 按照官方要求配置相對較高,現通過 4 臺虛擬機演示 TDSQL 的全套部署。如有不對的地方請指證 wx:moonstar00
** 機器數量規劃:**
tdsql 規劃機器如下:4 臺 (CPU:2core/MEM:8G/HDD:50G),內存至少 5G 以上 ,CPU 至少 2C 以上,否則檢查通不過
#######################
TDSQL 安裝部署
#######################
1. 設主機名
hostnamectl set-hostname huyidb01
hostnamectl set-hostname huyidb02
hostnamectl set-hostname huyidb03
hostnamectl set-hostname huyidb04
2. 配置主機名
vim /etc/hosts
10.85.10.51 huyidb01
10.85.10.52 huyidb02
10.85.10.53 huyidb03
10.85.10.54 huyidb04
3. 設置時間同步
以 huyidb01 為主時鐘
mount /dev/cdrom /mnt
yum -y install ntp*
[root@huyidb01 ~]# vim /etc/ntp.conf
#同步地址
server 127.127.1.0 iburst
systemctl restart ntpd.service
[root@huyidb02 ~]# vim /etc/ntp.conf
server 10.85.10.51
restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap
systemctl restart ntpd.service
ntpdate -u 10.85.10.51
[root@huyidb03 ~]# vim /etc/ntp.conf
server 10.85.10.51
restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap
systemctl restart ntpd.service
ntpdate -u 10.85.10.51
[root@huyidb04 ~]# vim /etc/ntp.conf
server 10.85.10.51
restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap
systemctl restart ntpd.service
ntpdate -u 10.85.10.51
4. 配置免密登錄 (管理機 110.85.10.54 上操作)
ssh-keygen -t rsa -- 這里不用輸入密碼,免密碼登錄
ssh-copy-id 10.85.10.51 -- 下面要輸入遠程主機的密碼
ssh-copy-id 10.85.10.52
ssh-copy-id 10.85.10.53
ssh-copy-id 10.85.10.54
#這里是通過 IP copy 的 ,測試的時候也只要用 IP 例: ssh 10.85.10.51
5. 準備數據目錄路徑 (所有機器)
mkdir -p /mysql/data
mkdir -p /mysql/log
# 安裝 ANSIBLE
unzip tdsql_full_install_ansible.zip
cd tdsql_full_install_ansible
python settings/install_ansible.py
# 配置 tdsql_hosts
vi /soft/tdsql_full_install_ansible/tdsql_hosts
[envcheck]
tdsql_huyidb01 ansible_ssh_host=10.85.10.51
tdsql_huyidb02 ansible_ssh_host=10.85.10.52
tdsql_huyidb03 ansible_ssh_host=10.85.10.53
tdsql_huyidb04 ansible_ssh_host=10.85.10.54
tdsql_zk1 ansible_ssh_host=10.85.10.51
tdsql_zk2 ansible_ssh_host=10.85.10.52
tdsql_zk3 ansible_ssh_host=10.85.10.53
[scheduler]
tdsql_scheduler1 ansible_ssh_host=10.85.10.52
tdsql_scheduler2 ansible_ssh_host=10.85.10.53
[oss]
tdsql_oss1 ansible_ssh_host=10.85.10.52
tdsql_oss2 ansible_ssh_host=10.85.10.53
[chitu]
tdsql_chitu1 ansible_ssh_host=10.85.10.52
tdsql_chitu2 ansible_ssh_host=10.85.10.53
[monitor]
tdsql_monitor1 ansible_ssh_host=10.85.10.52
tdsql_monitor1 ansible_ssh_host=10.85.10.53
tdsql_db1 ansible_ssh_host=10.85.10.51
tdsql_db2 ansible_ssh_host=10.85.10.52
tdsql_db3 ansible_ssh_host=10.85.10.53
[proxy]
tdsql_proxy1 ansible_ssh_host=10.85.10.51
tdsql_proxy2 ansible_ssh_host=10.85.10.52
tdsql_proxy3 ansible_ssh_host=10.85.10.53
[hdfs]
tdsql_hdfs1 ansible_ssh_host=10.85.10.54
[lvs]
tdsql_lvs1 ansible_ssh_host=10.85.10.52
tdsql_lvs2 ansible_ssh_host=10.85.10.53
[kafka]
tdsql_kafka1 ansible_ssh_host=10.85.10.51
tdsql_kafka2 ansible_ssh_host=10.85.10.52
tdsql_kafka3 ansible_ssh_host=10.85.10.53
[consumer]
tdsql_consumer1 ansible_ssh_host=10.85.10.54
tdsql_es1 ansible_ssh_host=10.85.10.54
[newdb]
tdsql_newdb1 ansible_ssh_host=1.1.1.1
tdsql_newdb2 ansible_ssh_host=2.2.2.2
tdsql_newdb3 ansible_ssh_host=3.3.3.3
修改 ansible 變量
vi /soft/tdsql_full_install_ansible/group_vars/all
zk_num: 3
netif_name: ens38 # —填入 scheduler(ifconfig 看到的)網卡的名稱
tdsql_pass: a+complex+password
zk_rootdir: /tdsqlzk
#下面參數后面安裝相關模塊時在調整
metadb_ip: 10.120.109.204
metadb_port: 15001
metadb_ip_bak: 10.120.109.205
metadb_port_bak: 15001
metadb_user: hanlon
metadb_password: hanlon
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: K2JatUv5llBbMrske/k2YbqC
oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I
clouddba_metadb_pass: h6Wyg2Xy
# 執行安裝 part1_site.yml
sh encrypt.sh --------- 必須執行,更新密文密碼
ansible-playbook -i tdsql_hosts part1_site.yml
執行了近 20 多分鐘 ,執行完成要無 failed=0
PLAY RECAP ********************************************************************************************************************************************************
chitu1 : ok=20 changed=19 unreachable=0 failed=0
chitu2 : ok=20 changed=19 unreachable=0 failed=0
db1 : ok=13 changed=12 unreachable=0 failed=0
db2 : ok=13 changed=12 unreachable=0 failed=0
db3 : ok=13 changed=12 unreachable=0 failed=0
huyidb01 : ok=30 changed=19 unreachable=0 failed=0
huyidb02 : ok=27 changed=16 unreachable=0 failed=0
huyidb03 : ok=27 changed=16 unreachable=0 failed=0
huyidb04 : ok=27 changed=17 unreachable=0 failed=0
oss1 : ok=14 changed=11 unreachable=0 failed=0
oss2 : ok=14 changed=11 unreachable=0 failed=0
proxy1 : ok=13 changed=10 unreachable=0 failed=0
proxy2 : ok=13 changed=10 unreachable=0 failed=0
proxy3 : ok=13 changed=10 unreachable=0 failed=0
scheduler1 : ok=25 changed=23 unreachable=0 failed=0
scheduler2 : ok=22 changed=20 unreachable=0 failed=0
zk1 : ok=19 changed=17 unreachable=0 failed=0
zk2 : ok=19 changed=17 unreachable=0 failed=0
zk3 : ok=19 changed=17 unreachable=0 failed=0
# 錯誤:
TASK [zk_cluster : upload the template file zk_configure.py to the dst host] ************************************************************************************************************************************************************
fatal: [tdsql_zk1]: FAILED! = {“changed”: false,“msg”:“AnsibleUndefinedVariable:“hostvars[‘zk1]”is undefined”}
fatal: [tdsql_zk2]: FAILED! = {“changed”: false,“msg”:“AnsibleUndefinedVariable:“hostvars[‘zk1]”is undefined”}
fatal: [tdsql_zk3]: FAILED! = {“changed”: false,“msg”:“AnsibleUndefinedVariable:“hostvars[‘zk1]”is undefined”}
to retry, use: –limit @/soft/tdsql_full_install_ansible/part1_site.retry
原因:tdsql_hosts 配置標簽不規范 , 版本不同,標簽有所不同. 具體的參考模板,只改 IP)
解決辦法: tdsql_zk1 改為 zk1
# 初始化 chitu
http://10.85.10.52/tdsqlpcloud
注意這里的 OSS IP ,可能不是實際 IP
可以查看 cat /data/application/OSS/conf/scheduler.xml
或 netstat 查看
[root@huyidb02 ~]# netstat -an | grep 8080
tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN
注意這里的 OSS IP ,可能不是實際 IP
可以查看 cat /data/application/OSS/conf/scheduler.xml
或 netstat 查看
[root@huyidb02 ~]# netstat -an | grep 8080
tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN
機型查看:[root@huyidb02 data]# dmidecode | grep “Product Name”Product Name: VMware Virtual Platform
Product Name: 440BX Desktop Reference Platform
#DB 機型 這里填 440BX
注意:不同 DB 要在不同的 IDC
同一個網關組的要在同一個 IDC 中
登錄運營管理平臺: 帳號密碼 admin/123456
測試登錄
[root@huyidb02 data]# mysql -utdsqlpcloud -h20.85.10.52 -P15001 -p tdsqlpcloud
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3171
Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distribution
Copyright copy; 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help; or ‘\h for help. Type ‘\c to clear the current input statement.
MySQL [(none)]
在管理庫修改
vi /soft/tdsql_full_install_ansible/group_vars/all
metadb_ip: 10.85.10.52
metadb_port: 15001
metadb_ip_bak: 10.85.10.53
metadb_port_bak: 15001
metadb_user: tdsqlpcloud
metadb_password: tdsqlpcloud
執行安裝 part2_site.yml
sh encrypt.sh --------- 必須執行,更新密文密碼
ansible-playbook -i tdsql_hosts part2_site.yml
注意:failed=0
PLAY RECAP ********************************************************************************************************************************************************
chitu1 : ok=19 changed=16 unreachable=0 failed=0
chitu2 : ok=5 changed=4 unreachable=0 failed=0
huyidb01 : ok=18 changed=11 unreachable=0 failed=0
huyidb02 : ok=18 changed=11 unreachable=0 failed=0
huyidb03 : ok=18 changed=11 unreachable=0 failed=0
huyidb04 : ok=18 changed=11 unreachable=0 failed=0
monitor1 : ok=12 changed=12 unreachable=0 failed=0
oss1 : ok=14 changed=9 unreachable=0 failed=0
oss2 : ok=14 changed=9 unreachable=0 failed=0
scheduler1 : ok=31 changed=26 unreachable=0 failed=0
scheduler2 : ok=22 changed=18 unreachable=0 failed=0
#在任意一臺 scheduler 機器上執行下面的命令: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
# 安裝備用赤兔(如果有另一個未初始化的 chitu)將已初始化的 chitu 機器上拷貝 2 個文件到未初始化的 chitu 機器上,并刪除未初始化 chitu 機器上的 crontab,如下:10.85.10.52 已初始化 chitu
10.85.10.53 未初始化 chitu(1)在 52 機器上,拷貝文件到 53 機器上
scp -p /data/website/tdsqlpcloud/www/config/database.php 10.85.10.53:/data/website/tdsqlpcloud/www/config/
scp -p /data/website/tdsqlpcloud/www/config/install.lock 10.85.10.53:/data/website/tdsqlpcloud/www/config/(2)刪除 53 機器上 nginx 用戶的 crontab
cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak
rm -f /var/spool/cron/nginx(3)測試,登錄 53 的 chitu
http://10.85.10.53/tdsqlpcloud
至此 TDSQL 的基本模塊已安裝完成。
安裝其它模塊(可選)
安裝以下模塊之前要確保 TDSQL 核心模塊安裝無誤后再進行。
如果需要使用 hdfs 異地冷備存儲 binlog 和鏡像文件,用于數據回檔恢復,安裝 hdfs。
如果需要使用 tdsql 默認提供的接入層 lvs,安裝 lvs。
如果需要使用多源同步功能,安裝 kafka 和 consumer。
如果需要使用網關日志分析及 sql 審計功能,安裝 es。
# 安裝 hdfs(1)準備 hdfs 的數據目錄的路徑
首先用 lsblk 查看磁盤信息
格式化為 xfs 文件系統
mkfs.xfs -f /dev/sdg
mkdir -p /mysql/backup
修改 /etc/fstab 文件,設置自動掛載到指定路徑
/dev/sdg /mysql/backup xfs defaults,noatime 0 0
mount -a(2)設置主機名
在 hdfs 機器上設置主機名,hdfs 集群中主機名不能重復,不能有下劃線、中劃線等特殊字符,hostnamectl set-hostname huyidb04(3)檢查 tdsql_hosts 文件
vim tdsql_hosts
[hdfs] —填入 hdfs 機器地址,hdfs 的數量只能是 1 或 3
hdfs1 ansible_ssh_host=10.85.10.54(4)修改 hdfs 變量
修改 group_vars/all 中下面的相關變量
vim group_vars/all
ssh_port: 36000 ---- 實際的 ssh 通信端口
hdfs_datadir: /mysql/backup ---- 多個迪特 一個磁盤一個路徑,逗號分隔
注意這些數據文件路徑的權限要是 tdsql,如下:chown -R tdsql:users /mysql/backup(5)# 安裝 hdfs 單點 (我的是單點 HDFS)
ansible-playbook -i tdsql_hosts hdfs_single.yml
su - tdsql
hdfs namenode -format —格式化 namenode
啟動 namenode 和 datanode :
hdfs --daemon start namenode
hdfs --daemon start datanode
附:用 tdsql 用戶關閉 hdfs 進程 :
hdfs --daemon stop datanode
hdfs --daemon stop namenode(6)# 安裝 hdfs 高可用架構 (如果是高可用 用下面的方式安裝)
3 個節點,并且 zk 集群不能是單點。執行安裝 hdfs
ansible-playbook -i tdsql_hosts hdfs.yml
su - tdsql
用 tdsql 用戶初始化 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
用 tdsql 用戶啟動 hdfs 集群,啟動順序如下,已經啟動的進程就不用重復再啟動了,查看啟動的進程”jps”在所有 hdfs 機器上啟動 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
附:用 tdsql 用戶關閉 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(7)在 hdfs 集群下查看 /tdsqlbackup 路徑
用 tdsql 用戶執行以下命令
#查看 /tdsqlbackup 目錄是否已經被自動創建,權限是否如下
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(8)管理 hdfs 集群
用 tdsql 用戶執行以下命令
查看所有 namenode 節點狀態,及主備情況(只適用于高可用 3 節點架構)hdfs haadmin -getAllServiceState
查看所有 datanode 節點的狀態,及上報的容量情況
hdfs dfsadmin -report(9)注意
用 tdsql 用戶執行 jps 命令,可以看到 hdfs 的進程名稱(只適用于高可用 3 節點架構)hdfs1 和 hdfs2 機器上應該看到 NameNode、JournalNode、DataNode、DFSZKFailoverController
hdfs3 機器上應該看到 DataNode、JournalNode(10)配置 hdfs 監控
如果有 HDFS,但是沒有配置 HDFS 監控,到“集群管理 - 集群配置”中設置“HDFS 服務列表”,注意:如上圖所示填寫 namenode 節點(一般 2 個)的 50070 端口
生產環境不能用單節點 hdfs,單節點架構的 hdfs 的端口號是 9870
# 安裝 lvs
lvs 機器建議單獨部署,不建議和別人復用(最多只能和 zk 復用)。(1)檢查 tdsql_hosts 文件
vim tdsql_hosts
[lvs] —填入 lvs 地址,lvs 的數量固定為 2
lvs1 ansible_ssh_host=10.85.10.52
lvs2 ansible_ssh_host=10.85.10.53(2)安裝 lvs
ansible-playbook -i tdsql_hosts lvs.yml(3)赤兔前臺操作 lvs 接入層管理 - LVS 設備資源管理 - 上報 LVS 設備資源
上報 lvs 機器信息(2 臺 lvs 機器信息都要上報)設備 IP:填入 LVS 機器的通信 ip 地址。網卡名字:通信網卡設備名。子網掩碼:填入實際的子網掩碼。IDC:lvs 機器需要劃分到同一個 IDC 中,比如這里的“IDC_SZ_YDGL_0401_000001”。
創建 VIP(不能選取部署的機器 IP 作為 VIP,需要另選之外一個)
VIP:規劃一個 vip 的地址,vip 的地址要和 lvs 機器的通信 ip 地址在同一個網段內。
設備 IP 列表:填入 lvs 機器的通信 ip 地址,一行一個。
創建 VIPGroup
VIPGroup 名:新建一個 vipgroup,取一個有意義的名字。
# 安裝 kafka(1)檢查 tdsql_hosts 文件
vim tdsql_hosts
[kafka] ---- 填入 kafka 集群的地址,kafka 的數量固定為 3
kafka1 ansible_ssh_host=10.85.10.51 ----kafka 機器的 java 虛擬機占用 3 個 g 以上內存
kafka2 ansible_ssh_host=10.85.10.52
kafka3 ansible_ssh_host=10.85.10.53(2)修改多源同步變量
修改 group_vars/all 中下面的相關變量
vim group_vars/all
kafka_logdir: /mysql/log/kafka # 日志要創建 kafka 目錄(3)執行安裝多源同步
ansible-playbook -i tdsql_hosts kafka.yml(4)驗證是否安裝成功
cd /data/application/kafka_2.12-2.3.1/logs
vim server.log ---- 查看 kafka 啟動信息
#安裝 consumer(1) 查看 tdsql_hosts 文件
[consumer] —填入消費者的地址,數量固定為 1
consumer1 ansible_ssh_host=10.240.139.35(2)執行安裝 consumer
ansible-playbook -i tdsql_hosts consumer.yml(3)啟動消費者服務
在 consumer 的機器上,使用下面命令啟動消費者服務
cd /data/application/consumer/bin/
./binlogconsumermgn --zklist 10.240.139.35:2181 --zkrootpath /noshard1 --kafkazklist 10.240.139.35:2181 --kafkazkrootpath /kafka --dev eth2
參數說明:–zklist ZK 的 ip:port,可以寫多個 ZK ip:port,多個之間用英文逗號分隔
–zkrootpath 注意整理 zk 根節點與部署的時候 group_vars/all 下的” zk_rootdir”一致
–kafkazklist kafka 所在 zk,通常與–zklist 一樣
–kafkazkrootpath kafka 在 ZK 上的根節點,固定是 /kafka
–dev consumer 的網卡名稱
./binlogconsumermgn --zklist 10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --zkrootpath /tdsqlzk --kafkazklist 10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --kafkazkrootpath /kafka --dev ens38
# 安裝 es(1) 查看 tdsql_hosts 文件(不能與 chitu 同一臺機器)[es] —填入 es 的地址,數量固定為 1
es1 ansible_ssh_host=10.85.10.54
修改變量文件 vim group_vars/all
es_mem: 8 ----- 內存占用,如果這里寫 8 則至少占用 8*2=16G 內存
es_log_days: 7 ----- 日志保留天數
es_base_path: /data/application/es-install/es -----es 數據存放路徑
es_mem: 2
es_log_days: 7
es_base_path: /mysql/data/es-install/es(2)執行安裝 es
ansible-playbook -i tdsql_hosts es_single.yml(3)啟停命令 (在 es 機器上操作):# stop
ps -ef |grep elasticsearch | grep -v ‘grep | awk ‘{print $2} | xargs kill -9
ps -ef |grep logstash | grep -v ‘grep | awk ‘{print $2} | xargs kill -9
ps -ef |grep es-cleaner | grep -v ‘grep | awk ‘{print $2} | xargs kill -9
ps -ef |grep ‘node/bin/node | grep -v ‘grep | awk ‘{print $2} | xargs kill -9
# start
tdsql 用戶啟動:cd /data/application/es-install/es/master/tools
./start-elasticsearch.sh
cd /data/application/es-install/es/data/tools
./start-elasticsearch.sh
root 用戶啟動:cd /data/application/es-install/logstash/tools
./start-logstash.sh
cd /data/application/es-install/es-cleaner
./start-es-cleaner.sh
cd /data/application/es-install/kibana-5.6.4-linux-x86_64/bin/
nohup ./kibana
# 檢測是否正常啟動
ps -ef |grep elasticsearch | grep -v ‘grep |wc -l
輸出為:4 -------- 我的單個 ES 個數為 0
ps -ef |grep logstash | grep -v ‘grep |wc -l
輸出為:2
ps -ef |grep es-cleaner | grep -v ‘grep |wc -l
輸出為:1
ps -ef |grep ‘node/bin/node | grep -v ‘grep |wc -l
輸出為:1(3)es 的驗證及相關配置
輸入 es IP 地址,打開 es 前臺頁面。啟動 es 后,需要把實例詳情中的“網關審計數據是否入庫”打開,選擇“是”。只有在打開這個開關后的日志才會入 es,為了可以定位問題,需要的話一定要盡早打開。
至此,TDSQL 所有模塊已部署完成,后期可以直接使用和測試了。
關于“TDSQL 怎么安裝部署附圖”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節