部署高可用 TEM
TEM 支持高可用部署,对于⾼可⽤部署的⽅式,可以将 TEM 服务部署到最多 3 个节点上。在部署之前,请确保⽤于部署 TEM 的主机和 3 台⽬标主机先做好部署⽤户的双向互信且 3 台 TEM 主机公私钥⼀致之后,⽤户根据需要修改 template 生成的 yaml 文件 metadb_topology_template.yaml 和 template.yaml ⽂件内容,就可以通过运⾏ tiup tem deploy 完成整个部署过程。
为了避免部署时出现异常,请确保部署 TEM 的所有主机上没有被部署其他的 TiUP 软件。
步骤一:建立互信
下⾯以 IP1, IP2, IP3 三台机器为例,假设三台机器上均有⼀个具有 sudo 权限的 tem ⽤户,执⾏以下命令建⽴双向互信
[tem@IP1 ~] ssh-keygen -t rsa -b 2048 -f /home/tem/.ssh/id_rsa -N ""
[tem@IP1 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP2
[tem@IP1 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP3
[tem@IP2 ~] ssh-keygen -t rsa -b 2048 -f /home/tem/.ssh/id_rsa -N ""
[tem@IP2 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP1
[tem@IP2 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP3
[tem@IP3 ~] ssh-keygen -t rsa -b 2048 -f /home/tem/.ssh/id_rsa -N ""
[tem@IP3 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP1
[tem@IP3 ~] ssh-copy-id -i /home/tem/.ssh/id_rsa.pub tem@IP2步骤二:解压 TEM 安装包并进入目录内
tar xvf tidb-server-v9.0.0-linux-amd64.tar.gz
cd tidb-server-v9.0.0-linux-amd64步骤三:初始化环境变量
bash local_install.sh
source /root/.bashrc步骤四:准备元数据库部署配置⽂件
由于 TEM 使用平凯数据库作为元数据库,因此需要先准备好部署平凯数据库的配置⽂件。所谓“元数据库”就是指 TEM 自己运行时所需要的“系统配置数据库”。
具体步骤如下:
-
执行 template 命令,生成配置文件
topology.yamlmetadb_topology.yamltiup tem template -
编辑元数据库配置文件
metadb_topology.yaml,该⽂件本质为部署平凯数据库的配置⽂件,具体编辑过程可按如下操作打开
metadb_topology.yaml文件:vim metadb_topology.yaml按
i进入编辑模式,配置下面注释的地方:global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidb-data" arch: "amd64" pd_servers: - host: {IP1} # 更换成部署 TEM 的主机 IP tidb_servers: - host: {IP1} # 同上 port: 4000 tikv_servers: - host: {IP1} # 同上配置完成后,按
ESC退出编辑模式,输入:wq后按Enter保存并关闭编辑器。 -
编辑
template.yaml⽂件中相应的配置,指定与 TEM 和元数据库相关的各个参数,编辑过程与前文相同,此处不再赘述。重点需要关注下面注释的地方server_configs: tem_servers: # TEM元数据库地址,默认:当前机器IP:4000 db_addresses: "10.233.90.77:4000" # TEM元数据库用户名,默认:root # 我们推荐具有root权限的数据库⽤户,请确保该⽤户具有以下的权限 # grant select, update, insert, delete on *.* to <⽤户名>; grant references on *.* to <⽤户名>; # grant create, drop on *.* to <⽤户名>; grant alter on *.* to <⽤户名>; # grant show databases, show view on *.* to <⽤户名>; grant create view on *.* to <⽤户名>; # grant create, drop, index on *.* to <⽤户名>; grant create user on *.* to <⽤户名>; # grant config on *.* to <⽤户名>; db_u: "root" # TEM元数据库密码,默认:空 db_pwd: "" # TEM元数据库名称(如果不存在会自动创建),默认:tem db_name: "tem" # TEM敏感数据加密密钥,长度为16/24/32。默认:空,采用Base64加密 secret: "" # TEM单个日志文件大小,单位:M,默认:300 log_max_size: 300 # TEM日志最长保留天数,默认:0(不限制) log_max_days: 30 # # TEM日志最大备份数量,默认:0(不限制) # log_max_backups: 0 # # 开启TLS后被外部访问的单向验证证书文件路径 # external_tls_cert: "" # # 开启TLS后被外部访问的单向验证密钥文件路径 # external_tls_key: "" # # 开启TLS后内部节点间双向验证的CA证书文件路径 # internal_tls_ca_cert: "" # # 开启TLS后内部节点间双向验证的证书文件路径 # internal_tls_cert: "" # # 开启TLS后内部节点间双向验证的密钥文件路径 # internal_tls_key: "" # TEM服务实例信息 tem_servers: - host: "10.233.90.77" # 服务监听端口,默认:8080 port: 8080 # 是否开启镜像仓库,多个TEM节点时,有且仅有一个节点开启,默认:true mirror_repo: true # 是否开启最小运行时环境,多个TEM节点时,有且仅有 TiUP 所在节点开启,默认:true minimal_runtime_env: true # # TEM高可用部署 - host: "127.0.0.2" # # 服务监听端口,默认:8080 # port: 8080 # # 是否开启镜像仓库,多个TEM节点时,有且仅有一个节点开启,默认:true # mirror_repo: false开关 TLS 只能在部署时选择,部署后不可更改,如果 TEM 开启 TLS 则需要元数据库也同步开启 TLS。
步骤五:执行部署
tiup tem deploy <topology> [flags]