
OpenObserve HA模式安装配置
前面我们了解到 OpenObserve 的架构支持单节点和 HA 两种模式,接下来我们来了解下 OpenObserve 的 HA 模式是如何使用的。
OpenObserve 可以在裸机服务器、虚拟机、Kubernetes 和其他平台上以 HA 模式安装和运行,但目前官方提供的使用 Helm Chart 的安装方式,所以需要提前准备一个可用的 Kubernetes 集群。
由于 HA 模式不支持本地磁盘存储,因此必须配置对象存储(例如 s3、minio、gcs 等等),这里我们就以 minio 为例进行说明。
首先添加 openobserve 的 helm 仓库:
然后可以使用下面的命令来获取 helm chat 包:
整个包里面还包括 etcd 和 minio 两个依赖的 helm chart 包,创建一个 oo-values.yaml
文件,然后添加如下内容:
在这个文件中我们指定了管理员的邮箱和密码,还有对象存储的相关配置,然后指定了 etcd 和 minio 的相关配置,要注意 auth
和 config
部分的配置,如果启用了 minio,那么 ZO_S3_ACCESS_KEY
、ZO_S3_SECRET_KEY
、ZO_S3_SERVER_URL
这些配置都可以省略,因为这些配置项会自动设置,包括如果启用了 etcd,ZO_ETCD_ADDR
参数也会自动配置。
另外我们可以看到 ingester
组件我们配置了数据持久化,这主要是为了对 WAL 日志数据的持久化,关于 WAL 主要有两种模式:
-
ZO_WAL_MEMORY_MODE_ENABLED
: 内存模式,开启后不再写入本地文件,wal 的数据直接在内存中,然后从内存转存到对象存储,为了解决某些云服务器,本地磁盘性能很差的问题,但是需要大内存。 -
ZO_WAL_LINE_MODE_ENABLED
: WAL 的写入模式,默认开启,一般写入数据的时候都会批量写入,但是这有个潜在的风险。比如你一次写入了 10k 数据,如果我一次性写入 wal,有可能遇到系统崩溃,掉电,这一批数据不知道断在哪儿,wal 文件会出错。可能写入了一半。如果开启 line 模式,就是虽然你是一次给了我 10k 数据,我写入 wal 的时候,一行行的调用 write 接口,这样 wal 损坏的可能性小一些,但是性能稍微差一些。
所以如果我们使用内存模式的话理论上可以不用持久化数据目录,但有一种情况会落盘,就是当内存中还有数据的时候程序接收到关闭指令,会把内存中的数据 dump 到磁盘,下次启动的时候再转移到对象存储中去。
更多配置可以参考官方文档关于环境变量的说明:https://openobserve.ai/docs/environment-variables/。
然后使用如下命令即可一件安装 OpenObserve:
安装后我们可以查看一下 OpenObserve 的 Pod 状态:
可以看到 OpenObserve 的几个组件 Router、Querier、Ingester、Alertmanager、Compactor、Minio、Etcd 都已经正常运行了,此外我们为 MinIO 和 OpenObserve 都添加了 Ingress,只需要将 oo.k8s.local
和 minio.k8s.local
映射到 Ingress 控制器即可访问。
比如现在我们可以通过 minio.k8s.local
来访问 MINIO 的 UI 界面:
使用用户名 rootuser
和密码 rootpass123
即可登录成功。
可以看到指定的 openobserve
bucket 也已经创建成功了:
同样我们也可以通过 oo.k8s.local
来访问 OpenObserve 的 UI 界面:
只是现在还没有任何数据:
接下来我们只需要将前面日志、指标、链路追踪的数据发送到新的 OpenObserve 地址 http://openobserve-router.openobserve.svc.cluster.local:5080
即可,比如前面我们已经部署的 Fluentd,只需要将日志输出地址修改即可:
然后重启 fluentd 即可,隔一会儿就可以在 OpenObserve 的 UI 界面中看到日志数据了:
同样对于 Prometheus 也是一样的,只需要修改 Prometheus 的配置文件中的远程写入地址即可:
对于链路追踪数据也是一样的,只需要修改 OpenTelemetry Collector 的配置文件中的远程写入地址即可。
最后我们可以去 MINIO 中验证下数据是否已经写入到对象存储中了:
不过需要注意的是数据并不是实时上传到对象存储中的,默认 10 分钟或者 WAL 达到 32MB 后会上传一次。
到这里 OpenObserve 的 HA 模式就部署完成了,我们可以根据需要设置各个组件的副本数量进行横向扩展,也可以启用 HPA 来自动扩缩容。
其他更多功能请参考官方文档 https://openobserve.ai/docs/
以了解更多相关信息。
文章转载自公众号:k8s技术圈
