[TSDB] Opengemini 安装指南

1 安装指南:一键安装方式(Gemix)

使用Gemix工具一键安装部署,目前只能用于集群,支持在一台或多台虚拟机或者物理机上部署openGemini集群,具体使用方式参考: Gemix使用指南
使用openGemini-operator一键容器化部署,目前只能用于集群,支持K8s容器化部署,具体使用方式参考openGemini-operator使用指南

Gemix 概览 (了解即可)

  • 在各种系统软件和应用软件的安装管理中,包管理器有着广泛的应用,包管理工具的出现大大简化了软件的安装和升级维护工作。

例如,几乎所有使用 RPM 的 Linux 都会使用 yum 来进行包管理,而 Anaconda 则可以非常方便地管理 Python 的环境和相关软件包。

  • 在早期的 openGemini 生态中,没有专门的包管理工具,使用者只能通过相应的配置文件和文件夹命名来手动管理,由于openGemini组件多,配置参数多,配置问题是社区收到反馈最多的问题,为此我们希望开发一款工具,帮助大家更容易安装和运维openGemini。

  • 在业界,我们看到Tiup工具做的非常好,参考之下,社区开发了Gemix,它是一款openGemini运维工具,第一阶段主要完成了openGemini集群安装集群启停集群卸载集群监控(自带Grafana的监控模板)等功能,您只需规划好集群的各组件分布,无需再配置繁杂的集群配置文件,就可以实现一键安装部署

Step0 部署架构

  • 版本规划
  • go : 1.23.0
  • opengemini : v1.2.0

机器列表

192.168.100.102 vmw-b.servers.com 
	cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20g
	os = centos7.9
192.168.100.103 vmw-c.servers.com 
	cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20g
	os = centos7.9
192.168.100.104 vmw-d.servers.com 
	cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20g
	os = centos7.9
192.168.100.105 vmw-e.servers.com 
	cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20g
	os = centos7.9

部署架构

ts-sql: 主要端口`8086:*`
   vmw-b / vmw-c / vmw-d

ts-store: 主要端口`8401:*`
   vmw-b / vmw-c / vmw-d

ts-meta: 主要端口`8091:*`
   vmw-b / vmw-c / vmw-d

ts-monitor: 主要端口`*:8086`
   vmw-b / vmw-c / vmw-d / vmw-e

ts-server: 使用端口`8186:*`
    vmw-e

拓扑配置文件(topology.yaml)

  • 拓扑配置文件(topology.yaml):

/usr/local/opengemini/topology.yaml

# reference-doc: 
## https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#%E9%85%8D%E7%BD%AE%E7%A4%BA%E4%BE%8B
## https://github.com/openGemini/gemix/blob/v1.0.1/embed/examples/cluster/topology.example.yaml
## https://github.com/openGemini/gemix/blob/v1.0.0/embed/examples/cluster/topology.example.yaml


## 特别注意: 亲测,不支持配置域名方式,如: "vwc-d.servers.com"


### Global variables are applied to all deployments and used as the default value of
### the deployments if a specific deployment value is missing.
global:
  ### SSH port of servers in the managed cluster.
  ssh_port: 22
  ### The user who runs the openGemini cluster.
  user: "root"
  ### group is used to specify the group name the user belong to if it's not the same as user.
  # group: "root"
  ### Storage directory for cluster deployment files, startup scripts, and configuration files.
  # deploy_dir: "/usr/local/openGemini" # [官方文档的默认路径]
  # deploy_dir: "/gemini-deploy" # [v1.0.1/template 的默认路径]
  deploy_dir: "/usr/local/opengemini/gemini-deploy/"
  ### openGemini Cluster data storage directory
  # data_dir: "/gemini-data" # [v1.0.1/template 的默认路径] 完全注释掉、不配置的原因:下面各组件有具体的路径配置
  #log_dir: "/var/openGemini/logs" # [官方文档的默认路径]
  log_dir: "/usr/local/opengemini/gemini-log/logs"
  ### operating system, linux/darwin.
  os: "linux"
  ### Supported values: "amd64", "arm64" (default: "amd64").
  arch: "amd64"
  ### Resource Control is used to limit the resource of an instance.
  ### See: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
  ### Supports using instance-level `resource_control` to override global `resource_control`.
  # resource_control:
    ### See: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#MemoryLimit=bytes
    # memory_limit: "2G"
    ### See: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#CPUQuota=
    ### The percentage specifies how much CPU time the unit shall get at maximum, relative to the total CPU time available on one CPU. Use values > 100% for allotting CPU time on more than one CPU.
    ### Example: CPUQuota=200% ensures that the executed processes will never get more than two CPU time.
    # cpu_quota: "200%"
    ### See: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#IOReadBandwidthMax=device%20bytes
    # io_read_bandwidth_max: "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 100M"
    # io_write_bandwidth_max: "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 100M"


### Monitored variables are applied to all the machines.
monitored: # 被监控的节点(推送监控数据)
  ### Enable ts-monitor instance for all the machines
  ts_monitor_enabled: true
  ### Storage directory for deployment files, startup scripts, and configuration files of monitoring components.
  # deploy_dir: "/gemini-deploy/ts-monitor" # [v1.0.1/template 的默认路径]
  deploy_dir: "/usr/local/opengemini/gemini-deploy/ts-monitor/" #自定义路径
  ### Log storage directory of the ts-monitor component.
  # log_dir: "/gemini-deploy/ts-monitor/logs" # [v1.0.1/template 的默认路径]
  log_dir: "/usr/local/opengemini/gemini-log/logs/ts-monitor/" #自定义路径
  ### Server configs are used to specify the runtime configuration of openGemini components.
  ### All configuration items can be found in openGemini docs:
  ### - ts-meta: https://docs.opengemini.org/
  ### - ts-sql: https://docs.opengemini.org/
  ### - ts-store: https://docs.opengemini.org/
  ###
  ### All configuration items use points to represent the hierarchy, e.g:
  ###   common.ha-policy
  ###         ^
  ### - example: https://github.com/openGemini/openGemini-UP/blob/main/embed/examples/cluster/topology.example.yaml
  ### You can overwrite this configuration via the instance-level `config` field.
  # server_configs:
    # ts-meta:
    # ts-sql:
    # ts-store:


### Server configs are used to specify the configuration of ts-server Server.
monitoring_servers: # 被监控的节点(接收监控数据)
  ### The ip address of the Monitoring Server.
  - host: 192.168.101.105
    ### SSH port of the server.
    # ssh_port: 22
    ### ts-server Service communication port.
    # port: 8186
    ### Access the ts-meta cluster port. (for devops)
    # client_port: 8191
    # peer_port: 8192
    # raft_port: 8188
    # ingest_port: 8410
    # select_port: 8411
    ### ts-server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/gemini-deploy/ts-server-8186" # [v1.0.1/template 的默认路径] 
    ### ts-server log file storage directory.
    # log_dir: "/gemini-deploy/ts-server-8186/logs" # [v1.0.1/template 的默认路径] 
    ### ts-server data storage directory.
    # data_dir: "/gemini-data/ts-server-8186" # [v1.0.1/template 的默认路径] 


# Server configs are used to specify the configuration of ts-meta Servers.
ts_meta_servers:
  ### The ip address of the ts-meta Server.
  - host: 192.168.101.102
    ### SSH port of the server.
    # ssh_port: 22
    ### Access the ts-meta cluster port. (for devops)
    # client_port: 8091
    ### communication port among ts-meta Server nodes.
    # peer_port: 8092
    ### communication raft port among ts-meta Server nodes.
    # raft_port: 8088
    ### communication gossip port among ts-meta and ts-store Server nodes.
    # gossip_port: 8010
    ### ts-meta Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/gemini-deploy/ts-meta-8091"
    ### ts-meta Server logs storage directory.
    # log_dir: "/gemini-deploy/ts-meta-8091/logs"
    ### ts-meta Server meta data storage directory.
    # data_dir: "/gemini-data/ts-meta-8091" # [v1.0.1/template 的默认路径]
    # data_dir: "/var/openGemini/data/meta" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/meta"
    # config:
    #   logging.level: warn
  - host: 192.168.101.103
    # data_dir: "/var/openGemini/data/meta" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/meta"
  - host: 192.168.101.104
    # data_dir: "/var/openGemini/data/meta" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/meta"

### Server configs are used to specify the configuration of ts-sql Servers.
ts_sql_servers:
  ### The ip address of the ts-sql Server.
  - host: 192.168.101.102
    ### SSH port of the server.
    # ssh_port: 22
    ### Access the openGemini cluster port.
    # port: 8086
    ### ts-sql Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/gemini-deploy/ts-sql-8086" # [v1.0.1/template 的默认路径] 
    # 此处(deploy_dir)不配置时,默认按: ${global.deploy_dir}/ts-sql-8086 部署
    ### ts-sql Server logs storage directory.
    # log_dir: "/gemini-deploy/ts-sql-8086/logs" # [v1.0.1/template 的默认路径]
    # config:
    #   logging.level: warn
  - host: 192.168.101.103
  - host: 192.168.101.104


### Server configs are used to specify the configuration of ts-store Servers.
ts_store_servers:
  ### The ip address of the ts-store Server.
  - host: 192.168.101.102
    ### SSH port of the server.
    # ssh_port: 22
    ### ingest data port
    # ingest_port: 8400
    ### select data port
    # select_port: 8401
    ### communication gossip port among ts-meta and ts-store Server nodes.
    # gossip_port: 8011
    ### ts-store Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/gemini-deploy/ts-store-8401"
    ### ts-store Server logs storage directory.
    # log_dir: "/gemini-deploy/ts-store-8401/logs"
    ### ts-store Server meta data storage directory.
    # data_dir: "/gemini-data/ts-store-8401" # [v1.0.1/template 的默认路径] 
    # data_dir: "/var/openGemini/data/data" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/data"
    # config:
    #   logging.level: warn
  - host: 192.168.101.103
    # data_dir: "/var/openGemini/data/data" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/data"
  - host: 192.168.101.104
    # data_dir: "/var/openGemini/data/data" # [官方文档的默认路径]
    data_dir: "/data/gemini-data/data"


### Server configs are used to specify the configuration of Grafana Servers.
grafana_servers:
  ### The ip address of the Grafana Server.
  - host: 192.168.101.105
    ### Grafana Web monitoring service client (browser) access port
    # port: 3000
    ### Grafana deployment file, startup script, configuration file storage directory.
    # deploy_dir: /gemini-deploy/grafana-3000  [v1.0.1/template 的默认路径] 
    ### grafana dashboard dir on gemix machine
    # dashboard_dir: /home/gemini/dashboards  [v1.0.1/template 的默认路径] 
    # config:
    #   log.file.level: warning


### server_configs 用于配置具体的openGemini内核组件,生成各组件的配置文件
server_configs:
  ts-sql:
    # 修改鉴权配置
    # http.auth-enabled: false # 官方文档的默认配置
    http.auth-enabled: true
  ts-store:
    # 修改 ts-store 的wal文件目录
    # data.store-wal-dir: "/var/openGemini/data/wal" # 官方文档的默认配置
    data.store-wal-dir: "/data/gemini-data/data/wal"
  ts-monitor:
    # 修改存储监控数据的库名,默认为集群名
    report.database: "_internal"
    # 监控数据默认被写入当前集群的目标数据库中,如果需要将监控数据写入单独节点上的openGemini,可修改地址
    report.address: "192.168.101.105:8086"

Step1 安装|采购 CENTOS7 服务器 : 略

  • 推荐文献
  • CENTOS7服务器 x 4 台
  • vmw-b.servers.com
  • vmw-c.servers.com
  • vmw-d.servers.com
  • vmw-e.servers.com

Step2 安装 Go:略

  • 推荐文献
  • GO的安装版本及安装包:

vmw-b 节点 : /usr/local/go1.23.0.linux-amd64.tar.gz
下载URL: https://go.dev/dl/go1.23.0.linux-amd64.tar.gz

  • 重要的环境变量 : at /etc/profile
# GO的环境变量及GO语言二进制可执行程序的路径
export PATH=$PATH:/usr/local/go/bin

export GOPROXY=https://goproxy.cn

Step3 安装 Gemix

  • 提前主动配置OpenGemini项目的GOPATH环境变量:
vim /etc/profile
    export GOPATH=/opt/go-projects/opengemini
source /etc/profile

如果是国内用户,go install安装失败,建议配置GOPROXY

> export GOPROXY=https://goproxy.cn
  • 执行如下命令安装 gemix 工具
> go install github.com/openGemini/gemix@latest
# 或: go install github.com/openGemini/gemix@v1.0.1
 # 释出时间: 2024.09.12
# 或: go install github.com/openGemini/gemix@v1.0.0
 # 释出时间: 2024.06.28 

> ls -la $GOPATH
查看详情
//友情感谢 : 博客园 markdown 折叠代码块(summary下多空一行) : https://www.cnblogs.com/yebaoer/p/14981034.html

[root@vmw-b ~]# go install github.com/openGemini/gemix@latest
go: downloading github.com/olekukonko/tablewriter v0.0.5
go: downloading github.com/spf13/cobra v1.8.0
go: downloading github.com/mattn/go-runewidth v0.0.15
go: downloading github.com/fatih/color v1.16.0
go: downloading github.com/pkg/errors v0.9.1
go: downloading go.uber.org/zap v1.26.0
go: downloading golang.org/x/crypto v0.15.0
go: downloading golang.org/x/sync v0.3.0
go: downloading golang.org/x/text v0.14.0
go: downloading github.com/pkg/sftp v1.13.6
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/rivo/uniseg v0.4.4
go: downloading github.com/mattn/go-colorable v0.1.13
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading github.com/joomcode/errorx v1.1.1
go: downloading github.com/BurntSushi/toml v1.3.2
go: downloading github.com/creasty/defaults v1.7.0
go: downloading github.com/google/uuid v1.3.0
go: downloading gopkg.in/ini.v1 v1.67.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/AstroProfundis/tabby v1.1.1
go: downloading golang.org/x/term v0.14.0
go: downloading go.uber.org/atomic v1.11.0
go: downloading github.com/otiai10/copy v1.14.0
go: downloading golang.org/x/mod v0.14.0
go: downloading go.uber.org/multierr v1.11.0
go: downloading github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef
go: downloading github.com/appleboy/easyssh-proxy v1.3.10-0.20211209134747-6671f69d85f5
go: downloading github.com/charmbracelet/bubbles v0.16.1
go: downloading github.com/charmbracelet/bubbletea v0.24.2
go: downloading github.com/charmbracelet/lipgloss v0.9.1
go: downloading github.com/kr/fs v0.1.0
go: downloading golang.org/x/sys v0.14.0
go: downloading github.com/ScaleFT/sshkeys v1.2.0
go: downloading github.com/charmbracelet/harmonica v0.2.0
go: downloading github.com/lucasb-eyer/go-colorful v1.2.0
go: downloading github.com/muesli/reflow v0.3.0
go: downloading github.com/muesli/termenv v0.15.2
go: downloading github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81
go: downloading github.com/mattn/go-localereader v0.0.1
go: downloading github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b
go: downloading github.com/muesli/cancelreader v0.2.2
go: downloading github.com/sethvargo/go-password v0.2.0
go: downloading github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a
go: downloading github.com/aymanbagabas/go-osc52/v2 v2.0.1

[root@vmw-b ~]# 
[root@vmw-b ~]# ll /root
总用量 12
-rw-------. 1 root root 2995 12月 17 19:52 anaconda-ks.cfg
-rw-r--r--. 1 root root   83 12月 19 00:14 hello-world.go
-rw-------. 1 root root 2094 12月 17 19:52 original-ks.cfg
[root@vmw-b ~]# ll $GOPATH
总用量 0
drwxr-xr-x. 2 root root 19 12月 19 10:10 bin
drwxr-xr-x. 4 root root 30 12月 19 09:59 pkg
[root@vmw-b ~]# echo $GOPATH
/opt/go-projects/opengemini

安装成功后,gemix二进制保存在$GOPATH/bin目录。

# ll /opt/go-projects/opengemini/bin
总用量 17628
-rwxr-xr-x. 1 root root 18048840 12月 19 10:10 gemix
# ls -la $GOPATH/bin
总用量 17628
drwxr-xr-x. 2 root root       19 12月 19 10:10 .
drwxr-xr-x. 4 root root       28 12月 19 10:10 ..
-rwxr-xr-x. 1 root root 18048840 12月 19 10:10 gemix
  • 配置gemix可执行程序为可直接使用的指令

以便后面步骤使用上更方便,便于可直接调用gemix cluster等指令

ln -s $GOPATH/bin/gemix /usr/local/bin/gemix

或: ln -s /opt/go-projects/opengemini/bin/gemix /usr/local/bin/gemix
  • 查验 gemix 是否可用
gemix --version

或: gemix -h

Step4 使用Gemix部署openGemini集群

安装好gemix后,就可以使用gemix部署openGemini集群了

Step4.1 初始化集群拓扑文件(topology.yaml)

  • [vmw-b] 执行如下命令,生成集群初始化配置文件
> mkdir -p /usr/local/opengemini
> gemix cluster template > /usr/local/opengemini/topology.yaml

Step4.2 配置集群拓扑文件(topology.yaml)

  • 打开配置文件
vim topology.yaml

实际的具体配置,参见本文档: OpenGemini集群的拓扑配置文件(/usr/local/opengemini/topology.yaml)

【特别解释】配置文件topology.yaml分为如下7个部分,主要是为了告诉gemix工具:

  • 在哪些机器部署哪些组件
  • 每个组件需要安装到目标机器什么位置
  • 各组件的数据和日志存放到机器什么位置
  • 是否需要部署集群监控和监控面板
  • ... 等
global: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#global
	...
monitored: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#monitored
	...
ts_meta_servers: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#ts_meta_servers
	...
ts_sql_servers: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#ts_sql_servers
	...
ts_store_servers: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#ts_store_servers
	...
grafana_servers: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#grafana_servers
	...
server_configs: # 参见: https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#server_configs
	...

部署ts-meta组件,openGemini要求ts-meta要部署三个节点,以确保元数据的可靠性。
一般建议部署在三台不同的虚拟机或物理机上,ts-meta可以与ts-store,ts-sql合部在一台机器上。
如果希望两个及以上ts-meta要部署在同一台机器上,需要参考【openGemini端口矩阵】对ts-meta的相关端口进行调整,避免出现端口冲突。

Step5 部署集群

Step5.1 配置集群节点内用户ssh免密登录 (可选步骤)

  • step5.1.1 在主服务器(vmw-b)上,为需要免密登录的服务器,分别生成公钥和私钥对 | at vmw-b for vmw-c/vmw-d/vmw-e

ssh-keygen命令用于生成RSA或DSA类型的密钥
-b参数指定密钥长度,-t指定密钥类型,-C用于添加注释,-f指定密钥保存位置

[root@vmw-b opengemini]# ssh-keygen -t rsa -f ~/.ssh/id_rsa.vmw-b -C "vmw-b key"
  # 注:gemix 所在的本机(vmw-b) 也需要配置免密登录,为防止gemix cluster install 时报:
  ...
	+ Download openGemini components
	+ Generate SSH keys ... Done
	  - Download openGemini:v1.2.0 (linux/amd64) ... Done
	  - Download grafana:v1.2.0 (linux/amd64) ... Done
	  - Download openGemini:v1.2.0 (linux/amd64) ⣽  Doing...
	  - Download openGemini:v1.2.0 (linux/amd64) ... Done
	  - Prepare vmw-b.servers.com:22 ... Done
	  - Prepare vmw-c.servers.com:22 ... Done
	  - Prepare vmw-d.servers.com:22 ... Done
	  - Prepare vmw-e.servers.com:22 ⣽  Doing...

	Error: task.env_init.failed: Failed to initialize openGemini environment on remote host 'vmw-b.servers.com', cause: task.env_init.sub_command_failed: Failed to create '~/.ssh' directory for user 'root', cause: executor.ssh.execute_failed: Failed to execute command over SSH for 'root@vmw-b.servers.com:22' {ssh_stderr: , ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin /usr/bin/sudo -H bash -c "su - root -c 'mkdir -p ~/.ssh && chmod 700 ~/.ssh'"}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
	Verbose debug logs has been written to /root/.gemix/logs/gemix-cluster-debug-2024-12-20-16-32-56.log.


[root@vmw-b opengemini]# ssh-keygen -t rsa -f ~/.ssh/id_rsa.vmw-c -C "vmw-c key"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.vmw-c.
Your public key has been saved in /root/.ssh/id_rsa.vmw-c.pub.
The key fingerprint is:
SHA256:3O5Isb16rPyxiGU6ZysyNbfRpJvbP/lD/MLnJHWjsAw vmw-c key
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|       . ..      |
|        SE.. . .o|
|      o +=+ o +.o|
|     . o=*+o =...|
|    o oB*=o+o +oo|
|     oo=OB*..o.=.|
+----[SHA256]-----+

[root@vmw-b opengemini]# ssh-keygen -t rsa -f ~/.ssh/id_rsa.vmw-d -C "vmw-d key"
...

[root@vmw-b opengemini]# ssh-keygen -t rsa -f ~/.ssh/id_rsa.vmw-e -C "vmw-e key"
...
  • step5.1.2 配置SSH客户端 (可选步骤) | at vmw-b

在本地机器上,你可以编辑~/.ssh/config文件来为不同的服务器配置不同的密钥

[root@vmw-b opengemini]# vim ~/.ssh/config 

编辑内容:
#Host coding.net
#    HostName coding.net
#    User your_username
#    IdentityFile ~/.ssh/id_rsa.coding

#Host github.com
#    HostName github.com
#    User your_username
#    IdentityFile ~/.ssh/id_rsa.github

Host vmw-b.servers.com
    HostName vmw-b.servers.com
    User root
    IdentityFile ~/.ssh/id_rsa.vmw-b

Host vmw-c.servers.com
    HostName vmw-c.servers.com
    User root
    IdentityFile ~/.ssh/id_rsa.vmw-c

Host vmw-d.servers.com
    HostName vmw-d.servers.com
    User root
    IdentityFile ~/.ssh/id_rsa.vmw-d

Host vmw-e.servers.com
    HostName vmw-e.servers.com
    User root
    IdentityFile ~/.ssh/id_rsa.vmw-e

这样,你就可以使用ssh coding.netssh github.com来分别连接到不同的服务器,而SSH客户端会自动使用对应的私钥进行认证。

[root@vmw-b ~]# ls -la ~/.ssh/
总用量 48
drwx------. 2 root root  238 12月 20 17:22 .
dr-xr-x---. 8 root root 4096 12月 20 17:22 ..
-rw-------. 1 root root  391 12月 20 17:22 authorized_keys
-rw-r--r--. 1 root root  423 12月 20 17:22 config
-rw-------. 1 root root 1679 12月 20 17:14 id_rsa.vmw-b
-rw-r--r--. 1 root root  391 12月 20 17:14 id_rsa.vmw-b.pub
-rw-------. 1 root root 1671 12月 19 14:58 id_rsa.vmw-c
-rw-r--r--. 1 root root  391 12月 19 14:58 id_rsa.vmw-c.pub
-rw-------. 1 root root 1679 12月 19 14:59 id_rsa.vmw-d
-rw-r--r--. 1 root root  391 12月 19 14:59 id_rsa.vmw-d.pub
-rw-------. 1 root root 1675 12月 19 15:00 id_rsa.vmw-e
-rw-r--r--. 1 root root  391 12月 19 15:00 id_rsa.vmw-e.pub
-rw-r--r--. 1 root root 1098 12月 20 17:22 known_hosts
  • step5.1.3 将SSH公钥从客户端服务器分别分发到远程的目标服务器
[root@vmw-b .ssh]# cat ~/.ssh/id_rsa.vmw-b.pub | ssh root@vmw-b.servers.com 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'

[root@vmw-b .ssh]# cat ~/.ssh/id_rsa.vmw-c.pub | ssh root@vmw-c.servers.com 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
The authenticity of host 'vmw-c.servers.com (192.168.100.103)' can't be established.
ECDSA key fingerprint is SHA256:ek330AQTVpEWkx0nJsQlhPo3W670CDxvJiDi/dAFrS0.
ECDSA key fingerprint is MD5:dc:81:b8:6c:2a:9c:36:ac:56:38:41:3b:13:9c:20:b6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vmw-c.servers.com,192.168.100.103' (ECDSA) to the list of known hosts.
root@vmw-c.servers.com's password: 

[root@vmw-b .ssh]# cat ~/.ssh/id_rsa.vmw-d.pub | ssh root@vmw-d.servers.com 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
(略)...

[root@vmw-b .ssh]# cat ~/.ssh/id_rsa.vmw-e.pub | ssh root@vmw-e.servers.com 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
(略)...
  • step5.1.4 [测试] ssh命令行方式直连远程linux

vmw-b节点服务器,免密访问vmw-c节点服务器为例

[root@vmw-b .ssh]# ssh root@vmw-c.servers.com
Last login: Thu Dec 19 14:48:03 2024 from 192.168.101.235

[root@vmw-c ~]# exit
登出
Connection to vmw-c.servers.com closed.
[root@vmw-b .ssh]# 

[root@vmw-b .ssh]# ssh root@vmw-d.servers.com
...

[root@vmw-b .ssh]# ssh root@vmw-e.servers.com
...

Step5.2 基于Gemix部署Gemini集群

  • 上述配置文件准备好之后,就可以执行如下命令开始部署openGemini集群
> cd /usr/local/opengemini/
> gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user

这条命令会部署一个名为gemini-testopenGemini集群
部署的openGemini版本为v1.2.0,集群部署的拓扑文件是topology.yaml
部署时访问机器的方式是用户名+密码,用户名为root
--skip-create-user: 跳过对root用户的创建

  • 国内用户如果访问github存在网络问题,可以执行如下命令进行安装
> cd /usr/local/opengemini/
> GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p

GEMIX_MIRRORS_REPO=gitee.com环境变量将指定从国内Gitee上下载openGemini的二进制版本。

值得注意的是,选择从Gitee下载版本,只能安装v1.1.1及以上版本。

  • 如果使用密钥方式
> cd /usr/local/opengemini/
> gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -k /home/root/.ssh/id_rsa
  • 如果配置了免密登录 【推荐】
> cd /usr/local/opengemini/
> GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root

一般情况下 gemix 会在目标机器上创建 topology.yaml 中约定的用户和组,以下情况例外:

  • topology.yaml 中设置的用户名在目标机器上已存在。
  • 在命令行上使用了参数 --skip-create-user 明确指定跳过创建用户的步骤。

笔者使用此方式:

cd /usr/local/opengemini/
GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user
查看详情(DEPLOY LOG)
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user
Input SSH password: 
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host             Ports                          OS/Arch      Directories
----       ----             -----                          -------      -----------
ts-meta    192.168.101.102  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    192.168.101.103  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    192.168.101.104  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-store   192.168.101.102  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   192.168.101.103  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   192.168.101.104  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-sql     192.168.101.102  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     192.168.101.103  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     192.168.101.104  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-server  192.168.101.105  8186/8188/8191/8192/8410/8411  linux/amd64  /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/ts-server-8186/data
grafana    192.168.101.105  3000                           linux/amd64  /usr/local/opengemini/gemini-deploy/grafana-3000
Attention:
    1. If the topology is not what you expected, check your yaml file.
    2. Please confirm there is no port/directory conflicts in same host.
Do you want to continue? [y/N]: (default=N) y
+ Download openGemini components
+ Generate SSH keys ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⡿  Doing...
  - Download grafana:v1.2.0 (linux/amd64) ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⡿  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Prepare 192.168.101.105:22 ... Done
  - Prepare 192.168.101.102:22 ... Done
  - Prepare 192.168.101.103:22 ... Done
  - Prepare 192.168.101.104:22 ⢿  Doing...
  - Prepare 192.168.101.104:22 ... Done
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini-deploy/gr
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini-deploy/gr
  - Copy required components -> 192.168.101.103 ⣷  Doing...
  - Copy required components -> 192.168.101.104 ... Done
  - Copy required components -> 192.168.101.105 ... Done
  - Copy required components -> 192.168.101.102 ... Done
  - Deploy openGemini -> 192.168.101.102 ... Done
  - Deploy openGemini -> 192.168.101.103 ... Done
  - Deploy openGemini -> 192.168.101.104 ... Done
  - Deploy openGemini -> 192.168.101.105 ⣯  Doing...
  - Deploy openGemini -> 192.168.101.105 ... Done
  - Generate config ts-meta -> 192.168.101.102:8091 ... Done
  - Generate config ts-meta -> 192.168.101.103:8091 ... Done
  - Generate config ts-meta -> 192.168.101.104:8091 ... Done
  - Generate config ts-store -> 192.168.101.102:8401 ... Done
  - Generate config ts-store -> 192.168.101.103:8401 ... Done
  - Generate config ts-store -> 192.168.101.104:8401 ... Done
  - Generate config ts-sql -> 192.168.101.102:8086 ... Done
  - Generate config ts-sql -> 192.168.101.103:8086 ... Done
  - Generate config ts-sql -> 192.168.101.104:8086 ... Done
  - Generate config ts-server -> 192.168.101.105:8186 ... Done
  - Generate config grafana -> 192.168.101.105:3000 ⣯  Doing...
  - Generate config grafana -> 192.168.101.105:3000 ... Done
  - Generate config ts-monitor -> 192.168.101.104 ... Done
  - Generate config ts-monitor -> 192.168.101.105 ... Done
  - Generate config ts-monitor -> 192.168.101.102 ... Done
  - Generate config ts-monitor -> 192.168.101.103 ⡿  Doing...
Cluster `gemini-test` installed successfully, you can start it with command: `gemix cluster start gemini-test`

[root@vmw-b opengemini]# 

Step6 启动集群

将所有实例节点的相关进程启动:

gemix cluster start gemini-test

预期结果输出 Started cluster gemini-test successfully,表示启动成功。

Next Step: OpenGemini 运维指南

FAQ : OpenGemini 安装部署

Q: 基于Gemix和topology.yaml一键安装失败,报Grafana安装包下载失败:Error: receiving status of 404 for url: https://dl.grafana.com/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz

问题描述

# [root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host               Ports                          OS/Arch      Directories
----       ----               -----                          -------      -----------
...
...
Do you want to continue? [y/N]: (default=N) y
+ Download openGemini components
+ Generate SSH keys ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Download grafana:v1.2.0 (linux/amd64) ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⣽  Doing...

Error: receiving status of 404 for url: https://dl.grafana.com/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz
Verbose debug logs has been written to /root/.gemix/logs/gemix-cluster-debug-2024-12-19-15-35-31.log.

问题分析

  • grafana 的(grafana-enterprise-7.5.17.linux-amd64.tar.gz)安装包,停止了该老版本的安装包的提供了。

https://dl.grafana.com/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz

  • 现在不知道可以从gemix的哪里修改这个下载地址或版本。

解决方法 (尝试无效)

  • 思路:自己搭建一个 http 服务器,结合修改自建http服务器的hosts,完全模拟该安装包的路径。(前提:从别处能找到该版本的安装包)

  • step1 [vmw-e] 安装 nginx,作为 http web 服务器

  • 安装 docker
...

[root@vmw-e ~]# yum -y install docker-ce-25.0.5-1.el7

[root@vmw-e ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

[root@vmw-e ~]# systemctl start docker
[root@vmw-e ~]# systemctl enable docker
[root@vmw-e ~]# systemctl status docker
  • 安装 nginx
...

docker pull nginx:1.24.0

...

# 配置文件存放在宿主机
/data/nginx/conf
/data/nginx/conf/conf.d
  /etc/nginx/nginx.conf => /data/nginx/conf/nginx.conf
/data/nginx/html
/data/nginx/log

# 容器
docker run \
-p 80:80 \
-p 443:443 \
-p 81:81 \
--add-host host.docker.internal:host-gateway \
--name nginx \
-v /data/nginx/conf/:/etc/nginx/ \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx:1.24.0

# 查看容器及日志
docker ps -a
docker logs nginx
  • step2 [vmw-e] 使 nginx 支持 https 协议
# 生成自签发SSL证书 | https://www.cnblogs.com/johnnyzen/p/18081630#_label5
/root/nginx-certs


mkdir -p /data/nginx/conf/cert
cp /root/nginx-certs/* /data/nginx/conf/cert/
ls -la /data/nginx/conf/cert/



vim /data/nginx/conf/conf.d/default.conf

server {
    listen 443 ssl;
    server_name dl.grafana.com localhost;

    ssl_certificate /etc/nginx/cert/server.pem;
    ssl_certificate_key /etc/nginx/cert/server.key;

    # 重定向所有HTTPS请求到HTTP
    # return 301 http://$server_name$request_uri;
	
	ssl_session_cache    shared:SSL:1m;
	ssl_session_timeout  5m;

	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;

	location / {
	    # root /www/nginx/html/yyyy-web/;
        root /usr/share/nginx/html;
		# root   /www/wwwroot/xxx/;
		# index  index.html index.htm;
	}
}



docker stop nginx

docker rm nginx

docker run \
-p 80:80 \
-p 443:443 \
--add-host host.docker.internal:host-gateway \
--name nginx \
-v /data/nginx/conf/:/etc/nginx/ \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx:1.24.0


docker logs nginx
docker logs -f --tail 20 nginx
docker exec -it nginx bash

访问: 
https://vmw-e.servers.com
https://vmw-e.servers.com/oss/release/grafana-7.5.17.linux-amd64.tar.gz
https://dl.grafana.com/oss/release/grafana-7.5.17.linux-amd64.tar.gz
  • step3 [vmw-e] 上传 garafana 安装包到 nginx 指定目录:

/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz

  • step4 [vmw-b] 修改主安装服务器(vmw-b)的 host(/etc/hosts)

vmw-b : 自建 dns 服务器 / 修改网卡的 dns
vmw-e : 自建 nginx 作为 替代 dl.grafana.com 的web网站

# @reference-doc : [[计算机网络/Linux] 基于CENTOS7自建DNS服务 - 博客园/千千寰宇](https://www.cnblogs.com/johnnyzen/p/18618171)

yum install -y bind

...

vim /etc/named.conf
	options {
			#listen-on port 53 { 127.0.0.1; };
			listen-on port 53 { any; };
			
			#allow-query { localhost; };
			allow-query { any; };

			# dnssec-enable yes;
			dnssec-enable no;

			#dnssec-validation yes;
			dnssec-validation no;

			#dnssec-lookaside yes;
			dnssec-lookaside no;
			
			...
	}
	
	zone "servers.com" IN {
		type master;
		# file "servers.com.zone";
		file "/var/named/servers.com.zone";
		allow-update { none; };
	};

	zone "grafana.com" IN {
		type master;
		# file "grafana.com.zone";
		file "/var/named/grafana.com.zone";
		allow-update { none; };
	};

vim /var/named/servers.com.zone (新建并编辑内容如下:)
@       IN SOA  dns.servers.com. root.servers.com (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.servers.com.
ns      IN A    192.168.100.102
@       IN A    192.168.100.102
www 	IN A    192.168.100.102
vmw-b   IN A    192.168.100.102
vmw-c   IN A    192.168.100.103
vmw-d   IN A    192.168.100.104
vmw-e   IN A    192.168.100.105
test    IN A    192.168.100.102 


vim /var/named/grafana.com.zone (新建并编辑内容如下:)
@       IN SOA  dns.grafana.com. root.grafana.com (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.grafana.com.
ns      IN A    192.168.100.102
@       IN A    192.168.100.102
www 	IN A    192.168.100.102
dl     IN A    192.168.100.105

注:(不可行) dl      IN CNAME vmw-e.servers.com 


chmod +755 /etc/named*
chmod +755 /var/named/
ls -la /etc/named*
ls -la /var/named/

named-checkconf
named-checkzone servers.com /var/named/servers.com.zone
named-checkzone grafana.com /var/named/grafana.com.zone

rndc reload
  # 重载 named 的配置
或 sudo systemctl restart named

sudo systemctl enable named

vim /etc/sysconfig/network-scripts/ifcfg-ens33
    ...
    DNS=192.168.100.102
    DNS1=... //其他备用的DNS服务器
    DNS2=... //其他备用的DNS服务器
    PEERDNS=no
    ...

sudo systemctl restart network
  # 即 更新网卡(ens33)的配置,刷新 dns 等

vim /etc/resolv.conf
  nameserver 192.168.100.102
  nameserver 114.114.114.114


######## 验证:
[root@vmw-b named]# nslookup servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   servers.com
Address: 192.168.100.102

[root@vmw-b named]# nslookup www.servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   www.servers.com
Address: 192.168.100.102

[root@vmw-b named]# nslookup vmw-b.servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   vmw-b.servers.com
Address: 192.168.100.102

[root@vmw-b named]# nslookup vmw-e.servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   vmw-e.servers.com
Address: 192.168.100.105

[root@vmw-b named]# nslookup grafana.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   grafana.com
Address: 192.168.100.102

[root@vmw-b named]# nslookup www.grafana.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   www.grafana.com
Address: 192.168.100.102

[root@vmw-b named]# nslookup dl.grafana.com
Server:         192.168.100.102
Address:        192.168.100.102#53

Name:   dl.grafana.com
Address: 192.168.100.105

补充:最简易的方法 (大道至简)

vim /etc/hosts
    192.168.100.105 dl.grafana.com
  • step5 [vmw-b] 基于gemix,完成后续的安装

  • 弊端:因gemix源代码写死了http://dl.grafana.com的URL,即使这种方案,仍无法解决:

[root@vmw-b ~]# cd /usr/local/opengemini/
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host               Ports                          OS/Arch      Directories
----       ----               -----                          -------      -----------
ts-meta    vmw-b.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-c.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-d.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-store   vmw-b.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-c.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-d.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-sql     vmw-b.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-c.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-d.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-server  vmw-e.servers.com  8186/8188/8191/8192/8410/8411  linux/amd64  /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/ts-server-8186/data
grafana    vmw-e.servers.com  3000                           linux/amd64  /usr/local/opengemini/gemini-deploy/grafana-3000
Attention:
    1. If the topology is not what you expected, check your yaml file.
    2. Please confirm there is no port/directory conflicts in same host.
Do you want to continue? [y/N]: (default=N) y
+ Generate SSH keys ⣾  Doing...
+ Download openGemini components
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Download grafana:v1.2.0 (linux/amd64) ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ... Done

Error: Get "https://dl.grafana.com/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz": tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match dl.grafana.com
Verbose debug logs has been written to /root/.gemix/logs/gemix-cluster-debug-2024-12-20-11-18-18.log.

解决方法2

  • 总体思路 | at vmw-b

下载 gemix 源代码
修改源码中的 url 或 grafana 的版本
重新编译 gemix

  • step0 卸载原来的 gemix at vmw-b
mv /opt/go-projects/opengemini/ /opt/go-projects/opengemini.bak/
mkdir -p /opt/go-projects/opengemini/
ls -la /opt/go-projects/opengemini

rm -f /usr/local/bin/gemix

# 注: 不移除 /etc/profile 中的 GO 相关环境变量
  • step1 安装 git | at vmw-b
yum -y install git
  • step2 下载 gemix 指定版本的源码
cd /root
git clone -b v1.0.1 https://github.com/openGemini/gemix.git
  • -b {branch | tag | commit }
  • step3 修改代码: 追加通过环境变量grafanaBaseUrlEnv配置 grafana 下载地址的5行代码
vim /root/gemix/pkg/cluster/operation/download.go
        ...
		if component == spec.ComponentGrafana {
                // FIXME: download from opengemini.org
                if nodeOS == "darwin" {
                        arch = "amd64"
                }
                fileName = fmt.Sprintf("%s-enterprise-%s.%s-%s.tar.gz", component, ver.GrafanaVersion, nodeOS, arch)
				// FIX for : https://github.com/openGemini/gemix/issues/67
                grafanaBaseUrlEnv := os.Getenv("GRAFANA_BASE_URL");
                if grafanaBaseUrlEnv == "" {
                    grafanaBaseUrlEnv = "https://dl.grafana.com/enterprise/release"; //"https://dl.grafana.com/oss/release" is Deprecated
                }
                //componentUrl = strings.Join([]string{"https://dl.grafana.com/oss/release", fileName}, "/")
				componentUrl = strings.Join([]string{ grafanaBaseUrlEnv, fileName}, "/")
        }
		...
  • step4重新 编译 gemix
  • 配置 GOPATH 为 /opt/go-projects/opengemini (略)
echo $GOPATH
  • 切换到 go 应用工程 main.go 所在目录,重新编译 gemix ,编译结果放 GOPATH/bin
cd /root/gemix/
go install

ln -s $GOPATH/bin/gemix /usr/local/bin/gemix
  • step5 重新开始安装
cd /usr/local/opengemini/
GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root

推荐文献

  • HasComponent / getGrafanaVersion
if topo.HasComponent(constant.ComponentGrafana) {
    grafanaVersion := getGrafanaVersion(clusterVersion)
    grafanaURL := fmt.Sprintf(constant.GrafanaDownloadURLTemplate, grafanaVersion)
    tasks = append(tasks, &downloadTask{
        name:     constant.ComponentGrafana,
        src:      grafanaURL,
        dest:     filepath.Join(m.workDir, constant.ComponentGrafana),
        checksum: constant.GrafanaChecksum[grafanaVersion],
    })
}

https://github.com/openGemini/gemix/blob/main/pkg/cluster/version/version.go#L18

package version

const (
	GrafanaVersion = "7.5.17"
)

https://github.com/openGemini/gemix/blob/main/pkg/cluster/operation/download.go#L46

	if component == spec.ComponentGrafana {
		// FIXME: download from opengemini.org
		if nodeOS == "darwin" {
			arch = "amd64"
		}
		fileName = fmt.Sprintf("%s-enterprise-%s.%s-%s.tar.gz", component, ver.GrafanaVersion, nodeOS, arch)
		componentUrl = strings.Join([]string{"https://dl.grafana.com/oss/release", fileName}, "/")
	}
Install
	...
	topo := metadata.GetTopology()
	
	...
	// tasks which are used to download components, download missing component
	downloadCompTasks := buildDownloadCompTasks(clusterVersion, topo, m.logger)
	...
	downloadCompTasks = append(downloadCompTasks, dlTasks...)
	...
	ParallelStep("+ Download openGemini components", false, downloadCompTasks...).
	...

Q: gemix cluster install ...时,报解压openGemini-1.2.0-linux-amd64.tar.gz包失败:Error: stderr: gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

问题描述

  • gemix cluster install ...时,报解压openGemini-1.2.0-linux-amd64.tar.gz包失败:Error: stderr: gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

  • 详细日志:

展开详细日志
[root@vmw-b opengemini]# cd /usr/local/opengemini
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user
Input SSH password: 
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host               Ports                          OS/Arch      Directories
----       ----               -----                          -------      -----------
ts-meta    vmw-b.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-c.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-d.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-store   vmw-b.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-c.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-d.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-sql     vmw-b.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-c.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-d.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-server  vmw-e.servers.com  8186/8188/8191/8192/8410/8411  linux/amd64  /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/ts-server-8186/data
grafana    vmw-e.servers.com  3000                           linux/amd64  /usr/local/opengemini/gemini-deploy/grafana-3000
Attention:
    1. If the topology is not what you expected, check your yaml file.
    2. Please confirm there is no port/directory conflicts in same host.
Do you want to continue? [y/N]: (default=N) y
+ Download openGemini components
  - Download openGemini:v1.2.0 (linux/amd64) ⣽  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Download grafana:v1.2.0 (linux/amd64) ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⣽  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Prepare vmw-b.servers.com:22 ... Done
  - Prepare vmw-c.servers.com:22 ... Done
  - Prepare vmw-d.servers.com:22 ... Done
  - Prepare vmw-e.servers.com:22 ⣾  Doing...
  - Prepare vmw-e.servers.com:22 ... Done
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-d
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-d
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-d
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-dep
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-dep
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-dep
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemi
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini
  - Copy required components -> vmw-b.servers.com ... Done
  - Copy required components -> vmw-c.servers.com ... Done
  - Copy required components -> vmw-d.servers.com ... Done
  - Copy required components -> vmw-e.servers.com ... Done
  - Deploy openGemini -> vmw-b.servers.com ... Done
  - Deploy openGemini -> vmw-c.servers.com ... Done
  - Deploy openGemini -> vmw-d.servers.com ... Done
  - Deploy openGemini -> vmw-e.servers.com ⣻  Doing...

Error: stderr: gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
: executor.ssh.execute_failed: Failed to execute command over SSH for 'root@vmw-b.servers.com:22' {ssh_stderr: gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
, ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin tar --no-same-owner -zxf /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/openGemini-1.2.0-linux-amd64.tar.gz -C /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin --wildcards '*ts-meta' && mv /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/usr/bin/ts-* /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin && rm -r /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/usr && rm /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/openGemini-1.2.0-linux-amd64.tar.gz}, cause: Process exited with status 2
Verbose debug logs has been written to /root/.gemix/logs/gemix-cluster-debug-2024-12-20-19-56-43.log.

原因分析

  • step1 尝试自己执行一下tar命令
tar --no-same-owner -zxf /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/openGemini-1.2.0-linux-amd64.tar.gz -C /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin --wildcards '*ts-meta'
或: tar --no-same-owner -zxf /usr/local/opengemini/gemini-deploy/ts-server-8186/bin/openGemini-1.2.0-linux-amd64.tar.gz -C /usr/local/opengemini/gemini-deploy/ts-server-8186/bin --wildcards '*ts-server'

或: tar --no-same-owner -zxf /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin/openGemini-1.2.0-linux-amd64.tar.gz -C /usr/local/opengemini/gemini-deploy/ts-meta-8091/bin

均报一样的错:

Error: stderr: gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

那么,猜测:要么文件损坏(文件下载不全)了,要么权限不足(但tar --no-same-owner,加上所有操作、问题目录、问题压缩包,都始终用的root用户,不应该是这方面的问题)。

  • step2 对比opengemini官网openGemini-1.2.0-linux-amd64.tar.gz包与本地下载的包的大小或md5 | at vmw-b 【根因】
[root@vmw-b gemini-deploy]#  ls -lh /usr/local/opengemini/gemini-deploy/ts-monitor/bin/openGemini-1.2.0-linux-amd64.tar.gz
-rw-r--r--. 1 root root 11M 12月 19 15:34 openGemini-1.2.0-linux-amd64.tar.gz

[root@vmw-b gemini-deploy]# ll -la /root/.gemix/storage/cluster/clusters/gemini-test/ssh/
总用量 8
drwx------. 2 root root   38 12月 19 15:16 .
drwxr-x---. 3 root root   17 12月 19 15:16 ..
-rw-------. 1 root root 3247 12月 19 15:16 id_rsa
-rw-------. 1 root root  725 12月 19 15:16 id_rsa.pub

[root@vmw-b packages]# ls -lh /root/.gemix/storage/cluster/packages/
总用量 64M
-rw-r--r--. 1 root root 511 12月 19 15:35 checksums.txt
-rw-r--r--. 1 root root 53M 12月 20 16:32 grafana-enterprise-7.5.17.linux-amd64.tar.gz
-rw-r--r--. 1 root root 11M 12月 19 15:34 openGemini-1.2.0-linux-amd64.tar.gz

解决方法

注:经验证,重新执行gemix cluster install ...这个命令,无法解决此问题。

  • step1 删除或备份原包 | at vmw-b
cd /root/.gemix/storage/cluster/packages/
mv openGemini-1.2.0-linux-amd64.tar.gz openGemini-1.2.0-linux-amd64.tar.gz.bak
  • step2 继续开始安装
[root@vmw-b opengemini]# cd /usr/local/opengemini
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user

Q:gemix cluster install ...时,报grafana-7.5.17.linux-amd64.tar.gz包找不到

问题描述

[root@vmw-b ~]# cd /usr/local/opengemini
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user
Input SSH password: 
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host               Ports                          OS/Arch      Directories
...
Do you want to continue? [y/N]: (default=N) y
+ Download openGemini components
+ Generate SSH keys ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⣷  Doing...
  - Download grafana:v1.2.0 (linux/amd64) ⣾  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ⡿  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Prepare vmw-e.servers.com:22 ⣻  Doing...
  - Prepare vmw-b.servers.com:22 ... Done
  - Prepare vmw-c.servers.com:22 ... Done
  - Prepare vmw-d.servers.com:22 ⣽  Doing...
  - Prepare vmw-d.servers.com:22 ... Done
  ...
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini-deploy/grafan
  - Copy required components -> vmw-c.servers.com ... Done
  - Copy required components -> vmw-d.servers.com ... Done
  - Copy required components -> vmw-e.servers.com ⣷  Doing...
  - Copy required components -> vmw-b.servers.com ... Done
  - Deploy openGemini -> vmw-b.servers.com ... Done
  - Deploy openGemini -> vmw-c.servers.com ... Done
  - Deploy openGemini -> vmw-d.servers.com ... Done
  - Deploy openGemini -> vmw-e.servers.com ⣷  Doing...

Error: failed to scp /root/.gemix/storage/cluster/packages/grafana-7.5.17.linux-amd64.tar.gz to vmw-e.servers.com:/usr/local/opengemini/gemini-deploy/grafana-3000/bin/grafana-7.5.17.linux-amd64.tar.gz: failed to scp /root/.gemix/storage/cluster/packages/grafana-7.5.17.linux-amd64.tar.gz to root@vmw-e.servers.com:/usr/local/opengemini/gemini-deploy/grafana-3000/bin/grafana-7.5.17.linux-amd64.tar.gz: open /root/.gemix/storage/cluster/packages/grafana-7.5.17.linux-amd64.tar.gz: no such file or directory
Verbose debug logs has been written to /root/.gemix/logs/gemix-cluster-debug-2024-12-20-20-36-11.log.

问题分析

  • 对比查看先前在其他环境grafana-7.5.17.linux-amd64.tar.gz包的内部目录结构: 一致

  • 查验先前在其他环境grafana-7.5.17.linux-amd64.tar.gz包的md5码:不一致
[root@vmw-b ~]# ll /root/.gemix/storage/cluster/packages/
总用量 190068
-rw-r--r--. 1 root root      511 12月 19 15:35 checksums.txt
-rw-r--r--. 1 root root 52227346 12月 20 20:47 grafana-7.5.17.linux-amd64.tar.gz (现在从其他环境上传上来的包,原本没有此包)
-rw-r--r--. 1 root root 55380215 12月 20 16:32 grafana-enterprise-7.5.17.linux-amd64.tar.gz
-rw-r--r--. 1 root root 75952457 12月 20 20:29 openGemini-1.2.0-linux-amd64.tar.gz
-rw-r--r--. 1 root root 11058500 12月 19 15:34 openGemini-1.2.0-linux-amd64.tar.gz.bak
[root@vmw-b ~]# cd /root/.gemix/storage/cluster/packages/
[root@vmw-b packages]# md5sum grafana-7.5.17.linux-amd64.tar.gz 
e9e36c2e9ec8a4e7ef3f2e888c81e624  grafana-7.5.17.linux-amd64.tar.gz
[root@vmw-b packages]# md5sum grafana-enterprise-7.5.17.linux-amd64.tar.gz 
df94278aeab262a7175a7951e869d1ad  grafana-enterprise-7.5.17.linux-amd64.tar.gz
  • 结论:
  • gemix在【下载阶段】下载的包:

https://dl.grafana.com/oss/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz
https://dl.grafana.com/enterprise/release/grafana-enterprise-7.5.17.linux-amd64.tar.gz
/root/.gemix/storage/cluster/packages/grafana-enterprise-7.5.17.linux-amd64.tar.gz(md5=df94278aeab262a7175a7951e869d1ad)

  • gemix在【部署阶段】需要的包:

/root/.gemix/storage/cluster/packages/grafana-7.5.17.linux-amd64.tar.gz(md5=e9e36c2e9ec8a4e7ef3f2e888c81e624)

解决方法

  • 重命名问题包,试试
[root@vmw-b packages]# cp grafana-enterprise-7.5.17.linux-amd64.tar.gz grafana-7.5.17.linux-amd64.tar.gz

Q: gemix cluster install ...成功的安装过程日志?(样例)

[root@vmw-b ~]# cd /usr/local/opengemini/
[root@vmw-b opengemini]# GEMIX_MIRRORS_REPO=gitee.com gemix cluster install gemini-test v1.2.0 ./topology.yaml --user root -p --skip-create-user
Input SSH password: 
Please confirm your topology:
Cluster name:    gemini-test
Cluster version: v1.2.0
Role       Host               Ports                          OS/Arch      Directories
----       ----               -----                          -------      -----------
ts-meta    vmw-b.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-c.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-meta    vmw-d.servers.com  8091/8092/8088/8010            linux/amd64  /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/data/gemini-data/meta
ts-store   vmw-b.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-c.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-store   vmw-d.servers.com  8400/8401/8011                 linux/amd64  /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/data/gemini-data/data
ts-sql     vmw-b.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-c.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-sql     vmw-d.servers.com  8086                           linux/amd64  /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086
ts-server  vmw-e.servers.com  8186/8188/8191/8192/8410/8411  linux/amd64  /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/ts-server-8186/data
grafana    vmw-e.servers.com  3000                           linux/amd64  /usr/local/opengemini/gemini-deploy/grafana-3000
Attention:
    1. If the topology is not what you expected, check your yaml file.
    2. Please confirm there is no port/directory conflicts in same host.
Do you want to continue? [y/N]: (default=N) y
+ Download openGemini components
+ Generate SSH keys ⣾  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ⣟  Doing...
  - Download openGemini:v1.2.0 (linux/amd64) ... Done
  - Download openGemini:v1.2.0 (linux/amd64) ⣯  Doing...
+ Initialize target host environments
  - Prepare vmw-e.servers.com:22 ... Done
  - Prepare vmw-b.servers.com:22 ... Done
  - Prepare vmw-c.servers.com:22 ... Done
  - Prepare vmw-d.servers.com:22 ⣾  Doing...
  - Prepare vmw-d.servers.com:22 ... Done
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-meta-8091,/usr/local/opengemini/gemini-log/logs/ts-meta-8091,/usr/local/opengemini/gemini-deploy/ts-m
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-store-8401,/usr/local/opengemini/gemini-log/logs/ts-store-8401,/usr/local/opengemini/gemini-deploy/ts
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql-8086/bin,/usr/local/opengemini/gemini-deploy/ts-sql-8086/conf,/usr/local/opengemini/gemini-deploy/ts-sql-8086/scripts, -> vmw-b.servers.com ⣽  Doing.
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-sql-8086,/usr/local/opengemini/gemini-log/logs/ts-sql-8086,/usr/local/opengemini/gemini-deploy/ts-sql
  - Mkdir /usr/local/opengemini/gemini-deploy/ts-server-8186,/usr/local/opengemini/gemini-log/logs/ts-server-8186,/usr/local/opengemini/gemini-deploy/
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini-deploy/gr
  - Mkdir /usr/local/opengemini/gemini-deploy/grafana-3000,/usr/local/opengemini/gemini-deploy/grafana-3000/log,/usr/local/opengemini/gemini-deploy/gr
  - Copy required components -> vmw-b.servers.com ... Done
  - Copy required components -> vmw-c.servers.com ... Done
  - Copy required components -> vmw-d.servers.com ... Done
  - Copy required components -> vmw-e.servers.com ... Done
  - Deploy openGemini -> vmw-b.servers.com ... Done
  - Deploy openGemini -> vmw-c.servers.com ... Done
  - Deploy openGemini -> vmw-d.servers.com ... Done
  - Deploy openGemini -> vmw-e.servers.com ⣯  Doing...
  - Deploy openGemini -> vmw-e.servers.com ... Done
  - Generate config ts-meta -> vmw-b.servers.com:8091 ... Done
  - Generate config ts-meta -> vmw-c.servers.com:8091 ... Done
  - Generate config ts-meta -> vmw-d.servers.com:8091 ⣻  Doing...
  - Generate config ts-store -> vmw-b.servers.com:8401 ... Done
  - Generate config ts-store -> vmw-c.servers.com:8401 ... Done
  - Generate config ts-store -> vmw-d.servers.com:8401 ... Done
  - Generate config ts-sql -> vmw-b.servers.com:8086 ... Done
  - Generate config ts-sql -> vmw-c.servers.com:8086 ... Done
  - Generate config ts-sql -> vmw-d.servers.com:8086 ... Done
  - Generate config ts-server -> vmw-e.servers.com:8186 ... Done
  - Generate config grafana -> vmw-e.servers.com:3000 ⢿  Doing...
  - Generate config grafana -> vmw-e.servers.com:3000 ... Done
  - Generate config ts-monitor -> vmw-d.servers.com ... Done
  - Generate config ts-monitor -> vmw-e.servers.com ... Done
  - Generate config ts-monitor -> vmw-b.servers.com ... Done
  - Generate config ts-monitor -> vmw-c.servers.com ⣽  Doing...
Cluster `gemini-test` installed successfully, you can start it with command: `gemix cluster start gemini-test`

[root@vmw-b opengemini]# 

X 参考文献

  • OpenGemini/官方文档

用户指南-快速上手-安装部署(一键安装) | OpenGemini
https://docs.opengemini.org/zh/guide/reference/gemix_manual.html#gemix-概览 【推荐】

openGemini安装部署 Q&A - Zhihu

  • OpenGemini

主仓: https://github.com/openGemini
备份仓: https://gitee.com/mirrors/opengemini
国内二进制下载: https://gitee.com/opengemini/Releases/releases ( 自v1.1.1版本开始支持)

  • 历史版本
  • OpenGemini/Gemix

https://github.com/openGemini/gemix/blob/main/embed/examples/cluster/topology.example.yaml
https://github.com/openGemini/gemix/blob/v1.0.1/embed/examples/cluster/topology.example.yaml
https://github.com/openGemini/gemix/blob/v1.0.0/embed/examples/cluster/topology.example.yaml

  • InfluxDBStudio

通过预置密钥对,开启SSH免密登录

posted @ 2024-12-19 09:58  千千寰宇  阅读(288)  评论(0)    收藏  举报