暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【YashanDB认证】安装部署YCM

Kubee 2024-07-19
445

YashanDB Cloud Manager(YCM)

崖山数据库云管平台(YCM)是一款针对YashanDB的云管理平台,提供了可视化部署、管理和运维YashanDB,以及监控预警等功能。默认使用SQLite作为后端数据库

功能

  • 支持数据库全生命周期管理(安装部署、数据库巡检、数据库日常管理、监控告警等)
  • 备份恢复
  • 数据库诊断优化

架构

image-20240718160803395

  • Cod_domor和Cod_agent是服务端和客户端的核心进程。
  • 服务端通过RPC或者SSH方式对客户端进行管理。
  • Monit进程监视本机各个模块运行状态。
  • YashanDB expor ter远程收集数据库信息并返回给Prometheus。
  • node_exporter采集主机监控指标并返回给Prometheus。
  • Promtail收集日志信息并返回给Loki。

组件

YCM服务端主要组件
  • cod-domor

    • 是整个YCM的后台服务,前端通过对接其所提供的API接口完成交互。
    • 除了cod-domor自己的API外,cod-domor会代理prometheus、loki、docker-manager等服务提供的相应
      的API,前端不和这些服务直接交互,而是访问cod-domor的代理。
  • monit

    • 负责监控以及自动拉起服务端的进程。
  • prometheus

    • 采集汇总所有监控指标
    • 提供监控查询API
    • 提供指标告警能力
  • yashandb_exporter

    • 通过SQL远程采集YashanDB相关指标
  • loki

    • 接收汇总日志推送
    • 提供日志查询API
    • 提供日志告警能力
  • Promtail

    • 采集服务端的相关日志
    • 推送相关日志到loki
YCM客户端组件
  • cod-agent
    • 是YCM的客户端进程,远程调度的基础。
    • cod-domor可以通过RPC远程连接cod-agent,执行指定任务
  • monit
    • 负责监控以及自动拉起客户端的进程
  • node_exporter
    • 负责采集主机相关监控指标(开源自带)
    • 负责采集监控相关监控指标(获取Monit的指标,暴露到指标采集接口)
    • 负责主机网络相关监控指标(读取网络配置,执行Ping操作获取连通性指标,获取主机IP是否存在指标,并将结果暴露到采集接口)
  • Promtail
    • 采集客户端的相关日志
    • 推送相关日志到loki

安装部署

软件下载地址

https://download.yashandb.com/download

环境说明

所需资源

管理数据库实例数量 最低服务器配置规格
低于10实例 双核,2G内存,50G硬盘
10-100实例 双核,4G内存,100G硬盘
100实例以上 双核,8G内存,500G硬盘

网络端口

  • YCM 服务器需9060至9064端口可用
  • 数据库需9070和9071端口可用

系统环境配置

安装操作系统依赖包

# 安装 libnsl 包 yum install libnsl #检查确认 ldconfig -p | grep libnsl

创建软件目录

mkdir -p /ups/app/yashandb/ycm/{server,agent} #mkdir -p /ups/data/yashandb/ycmdata chown -R yashan:yashan /ups/app/yashandb/ycm

修改rc.local文件可执行权限

chmod u+x /etc/rc.local

否则,部署时抛出以下异常信息ERROR execer/exec.go:31 exec /usr/bin/test wait failed, exit status 1,而终止部署ycm

image-20240719093625518

执行安装

1. root用户登陆

2.解压软件

cd /ups/soft tar -xf yashandb-cloud-manager-23.2.1.103-linux-x86_64.tar.gz --no-same-owner --owner=yashan --group=yashan cd ./ycm

3.运行安装工具ycm-init

# 运行 安装工具ycm-init ]# ./ycm-init --help usage: ycm-init [<flags>] <command> [<args> ...] init ycm or ycm-agent tools Flags: --help Show context-sensitive help (also try --help-long and --help-man). -F, --force force deploy ycm, when residual data existed Commands: help [<command>...] Show help. web [<flags>] run as web server deploy [<flags>] deploy server agent deploy --ycp-addr=YCP-ADDR [<flags>] agent deploy

部署ycm server

用法
# 部署ycm ]# ./ycm-init deploy --help usage: ycm-init deploy [<flags>] deploy server Flags: --help Show context-sensitive help (also try --help-long and --help-man). -F, --force force deploy ycm, when residual data existed --conf="etc/deploy.yml" ycm deploy config path
配置文件(deploy.yml)
server: # 可以配置以下名称 ycm_name: 崖山监控运维平台 # 产品名称 ycm_name_en: YashanDB Cloud Manager # 产品英文名称 product_short_name: 管理平台 # 产品简称,不推荐修改 product_short_name_en: Management platform # 产品英文简称,不推荐修改 # ycm server 安装路径 install_path: /ups/app/yashandb/ycm/server # 运行ycm server 相关服务的用户 system_user: yashan # ycm server监听端口 ycm_port: 9060 # ycm 监控端监听端口 prometheus_port: 9061 # 日志分析http服务端口 loki_http_port: 9062 # 日志分析grpc服务端口 loki_grpc_port: 9063 # 数据库信息采集端口 yasdb_exporter_port: 9064 # ycm 监控采集频率,范围1~43200 prometheus_collect_interval: 10 # ycm 监控数据保存天数,范围1~360 prometheus_data_expired: 180 # ycm server是否开启monit monit_enable: true # ycm server与主机通信使用tls grpc_tls_enable: true # ycm server使用https监听 http_tls_enable: false # ycm的弹性ip,vpc间网络不通时需要配置该值 manage_ip: "" # ycm后端数据库信息 dbconfig: driver: "sqlite3" # 后端数据库类型,可填参数:sqlite3或yashandb,默认是sqlite3 url: "" # driver为yashandb时,该参数必填。单IP:ip:port,HA多IP:ip:port,ip:port,ip:port 或者 primary:ip:port,ip:port,ip:port。支持使用远端YashanDB作为后端数据库,即IP地址可以不是本机 libPath: "" # driver为yashandb时,默认为{YCM_INSTALL_PATH}/ycm/tool/yashandb-client/lib # 以下参数为添加新主机时被应用的默认参数,可在添加时重新修改 client: # ycm agent 默认安装路径 install_path: /ups/app/yashandb/ycm/agent # ycm agent 默认运行用户,添加新主机时应用,可修改 system_user: yashan # ycm agent 默认运行用户组,添加新主机时应用,可修改 system_group: yashan # ycm agent 默认端口 agent_port: 9070 # ycm 采集器 默认端口 export_port: 9071 user: # 配置超级管理员信息 superadmin: # 用户和密码为admin,以下为加密后的密文,建议在部署成功后修改密码 password: "17521182513677377011312139512002239872235871971452391332822116097549121243198103" nickname: superman email: phone: # 生成登录token时的加密串,用于混淆加密。 token_key: "cod-base-yasom-auth-token-key1" # token非活跃过期时间,单位为分钟,范围1~1440 token_expired: 30 # 密码有效期,单位为天。到期后强制修改密码,范围1~365 password_expired: 60 # 密码输入错误后可重试的次数,范围5~30 retry_times: 5 # 输入错误被锁定后等待时间,单位为分钟,范围3~10080 lock_expired: 3 log: # 日志打印 console: true # 日志级别含有:DEBUG, INFO, WARN, ERROR level: "INFO" # 日志保存时间,单位:天,小于等于0表示不过期 rotationTime: 7 # 每个日志文件最大大小,单位:M,最小值为10 rotationSize: 10 # 日志备份最多保存数量,小于等于0表示不限个数 maxBackupNum: 30
执行部署
默认使用sqlite作为后端数据库
sudo ./ycm-init deploy --conf etc/deploy.yml
]# ./ycm-init deploy --conf etc/deploy.yml
2024-07-19 09:33:03	INFO	deploy/manage.go:36	conf manager starting...
2024-07-19 09:33:03	INFO	execer/exec.go:29	exec: test -x /etc/rc.local starting
2024-07-19 09:33:03	INFO	execer/exec.go:29	exec: bash -c cat /etc/rc.local | grep '^#!\/' starting
2024-07-19 09:33:03	INFO	filectl/filectl.go:210	get dir owner uid: 54334 success
2024-07-19 09:33:03	INFO	execer/exec.go:29	exec: bash -c id -u yashan starting
2024-07-19 09:33:03	INFO	filectl/filectl.go:220	get agent uid: 54334 success
2024-07-19 09:33:03	INFO	deploy/deploy.go:114	check residual data success, progress:17

2024-07-19 09:33:03	INFO	deploy/deploy.go:114	mkdir installpath success, progress:20

2024-07-19 09:33:03	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/install/ycm/scripts/install.sh ycm yashan /ups/app/yashandb/ycm/server/ycm starting
2024-07-19 09:33:08	INFO	deploy/deploy.go:127	unzip packages success, progress:35

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate ycm.yaml success, progress:45

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate config.ini success, progress:47

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate prometheus.yml success, progress:48

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate loki-local-config.yaml success, progress:49

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate promtail-local-config.yaml success, progress:51

2024-07-19 09:33:08	INFO	deploy/deploy.go:114	generate yasdbpasswd.ini success, progress:53

2024-07-19 09:33:09	INFO	model/auto_migrate.go:232	auto migrate all of 82 tables success
2024-07-19 09:33:09	WARN	alarm/add_default.go:332	query alarm notify strategy is incorrect, just add default, allns: [], err: <nil>
2024-07-19 09:33:09	INFO	execer/exec.go:29	exec: cp -f /ups/app/yashandb/ycm/server/ycm/loki/rules/fake/loki-rules.yaml /ups/app/yashandb/ycm/server/ycm/loki/loki-rules.yaml.bak starting
2024-07-19 09:33:09	INFO	execer/exec.go:29	exec: cp -f /ups/app/yashandb/ycm/server/ycm/prometheus-2.28.1/rules.yml /ups/app/yashandb/ycm/server/ycm/prometheus-2.28.1/rules.yml.bak starting
2024-07-19 09:33:09	INFO	deploy/deploy.go:114	set conf success, progress:64

2024-07-19 09:33:09	INFO	deploy/deploy.go:114	set conf success, progress:65

2024-07-19 09:33:09	INFO	deploy/deploy.go:114	init db success, progress:70

2024-07-19 09:33:09	INFO	deploy/deploy.go:114	mkdir cert path success, progress:75

2024-07-19 09:33:09	INFO	deploy/deploy.go:114	generate self signed cert key success, progress:76

2024-07-19 09:33:09	INFO	execer/exec.go:29	exec: chown -R yashan:yashan /ups/app/yashandb/ycm/server/ycm starting
2024-07-19 09:33:09	INFO	deploy/deploy.go:127	chown path success, progress:70

2024-07-19 09:33:09	INFO	execer/exec.go:29	exec: chmod 0755 /ups/app/yashandb/ycm/server starting
2024-07-19 09:33:09	INFO	deploy/deploy.go:127	chmod path success, progress:75

2024-07-19 09:33:09	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/ycm.sh start starting
2024-07-19 09:33:10	INFO	deploy/deploy.go:127	start server success, progress:80

2024-07-19 09:33:10	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/yashandb_exporter.sh start starting
2024-07-19 09:33:11	INFO	deploy/deploy.go:127	start yashandb_exporter success, progress:85

2024-07-19 09:33:11	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/prometheus.sh start starting
2024-07-19 09:33:12	INFO	deploy/deploy.go:127	start monitor success, progress:88

2024-07-19 09:33:12	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/loki.sh start starting
2024-07-19 09:33:13	INFO	deploy/deploy.go:127	start loki success, progress:90

2024-07-19 09:33:13	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/promtail.sh start starting
2024-07-19 09:33:15	INFO	deploy/deploy.go:127	start promtail success, progress:91

2024-07-19 09:33:15	INFO	execer/exec.go:29	exec: bash /ups/app/yashandb/ycm/server/ycm/monit/monitctl reload starting
2024-07-19 09:33:15	INFO	deploy/deploy.go:127	reload monit success, progress:95

2024-07-19 09:33:15	INFO	deploy/deploy.go:312	success, progress:100

使用单机部署模式yashandb作为后端数据库

修改部署配置文件./etc/deploy.yml,设置后端数据库为yashandb相关配置

dbconfig: driver: "yashandb" # 可填参数:sqlite3,yashandb。默认是sqlite3 url: "192.168.10.180:1688" # driver为yashandb时,该参数必填。单IP:user/password@ip:port,HA多ip:user/password@ip:port,ip:port,ip:port libPath: "/ups/app/yashandb/yashandb/23.2.1.100/lib" # driver为yashandb时,默认为{YCM_INSTALL_PATH}/YCM/tool/yashandb-client/lib autoMigrate: true maxOpenConns: 1

部署ycm

# 后端数据库为yashandb sudo ./ycm-init deploy --conf ./etc/deploy.yml --username sys --password sys

部署ycm agent

用法
./ycm-init agent deploy --help
配置文件(deploy-agent.yml)
# agent 服务配置 agent_server: # 安装用户名 system_user: yashan # 安装用户组 system_group: yashan # 安装路径 install_path: /ups/app/yashandb/ycm/agent # ycm-agent服务端口 agent_port: 9070 # node_exporter服务端口 node_exporter_port: 9071 # 指定当前主机IP,可以不填,不填则自动获取 host_ip: "" # 目标YCM配置 target_YCM: # YCM交互密钥,不用修改 YCM_secret: TH1TkOFuUVrjlMBVeB28bsO9JLiFafY5 # YCM是否开启tls,默认不开启 http_tls_enable: false
执行部署
# ./ycm-init agent deploy --conf etc/deploy-agent.yml -a <YCM_ip>:9060 -u <dba_user> -p <dba_pwd> -c yashandb ./ycm-init agent deploy --conf etc/deploy-agent.yml -a 192.168.10.181:9060 -u sys -p sys -c yashandb
  • 可选参数 --conf,根据配置文件初始化YCM-AGENT服务,默认为etc/deploy-agent.yml
  • 必传参数 -a,–YCM-addr,目标YCM地址,格式为 “{IP地址}:{端口号}”
  • 可选参数 -u,–dba-user,当前主机yashandb的dba权限用户名
  • 可选参数 -p,–dba-pwd,当前主机yashandb的dba权限用户密码
  • 可选参数 -c,–cluster,指定yashandb名称,当前主机有多个yashandb时可指定某一个
  • 可选参数 --skip-create-user,跳过创建yasom用户,当指定该参数时可以不传–dba-user以及–dba-pwd

后期配置

开机自启动服务

chmod +x /etr/rc.local # su {安装用户} -c '{安装路径}/ycm/monit/bin/monit -c {安装路径}/ycm/monit/data/monitrc' su yashan -c '/ups/app/yashandb/ycm/server/ycm/monit/bin/monit -c /ups/app/yashandb/ycm/server/ycm/monit/data/monitrc'

服务管理

检查服务状态

su - yashan # 检查YCM的进程 /ups/app/yashandb/ycm/server/ycm/monit/monitctl run /ups/app/yashandb/ycm/server/ycm/monit/monitctl # 检查ycm-agent的进程 /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run

image-20240719093853388

启动ycm

su - yashan # 在服务端执行以下命令, ${ycm安装路径}默认为/opt/ycm/ycm /ups/app/yashandb/ycm/server/ycm/monit/monitctl start /ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g ycm /ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g prometheus /ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g loki /ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g promtail /ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g yashandb_exporter # 在客户端执行以下命令,${ycm管理的主机安装路径}默认为/opt/ycm/ycm-agent /ups/app/yashandb/ycm/agent/ycm/monit/monitctl start /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g ycm-agent /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g node_exporter /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g promtail

停止ycm

su - yashan # 在服务端执行以下命令, ${ycm安装路径}默认为/opt/ycm/ycm /ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g ycm /ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g prometheus /ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g loki /ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g promtail /ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g yashandb_exporter /ups/app/yashandb/ycm/server/ycm/monit/monitctl stop # 在客户端执行以下命令,${ycm管理的主机安装路径}默认为/opt/ycm/ycm-agent /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g ycm-agent /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g node_exporter /ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g promtail /ups/app/yashandb/ycm/agent/ycm/monit/monitctl stop

登陆web UI界面

浏览器打开YCM的Web页面(默认9060端口),如:192.168.10.181:9060。初始管理员账户密码:admin/admin

如果开启了http_tls_enable为true,则需要访问https://IP:9060

image-20240719094131039

首次登陆后,需修改账户密码(kube#1356)

image-20240719094228610

修改账户密码后,就可以看到如下页面

image-20240719094259806

纳管主机

输入ip,账户,密码后扫描

image-20240719094458093

image-20240719094548386

image-20240719094612894

这样,就完成。

纳管YashanDB数据库实例

image-20240719101228480

卸载清理YCM环境

移除管理的数据库

# 使用工具yasadm的yasadm yasdb remove命令将YCM管理的数据库进行解除托管 yasadm yasdb remove

移除主机

以root登陆并执行卸载命令集

su - root cd /ups/app/yashandb/ycm/server/ycm/scripts # 根据提示,确认是否卸载,确需卸载输入yes sh ./clean.sh rm -rf cd /ups/app/yashandb/ycm/server/ycm

附录

YCA官方报名链接:https://www.yashandb.com/YCA_courses

参考文档

https://doc.yashandb.com/ycm/23.2/zh/%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E4%B8%8E%E5%8D%B8%E8%BD%BD.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论