Eclipse Hono技术咨询:消息存储、数据库切换及文件位置
Eclipse Hono 常见问题解答
1. 消息的存储位置及数据访问查看方式
- 遥测/事件消息:Hono默认不持久化这类消息,它们会被直接路由到下游业务系统(通过AMQP 1.0北向网关)。如果需要持久化,需在下游消费端自行实现(比如转发到Kafka后存储),或配置Hono集成持久化组件。
- 元数据(租户、设备注册、凭证等):默认Helm安装使用JDBC后端+H2数据库,数据默认存储在device-registry-jdbc容器内的
/opt/hono/data/hono.mv.db文件中(若未配置持久化,Pod重启后数据会丢失)。访问方式:- 进入目标Pod:
kubectl exec -it <device-registry-jdbc-pod-name> -- /bin/sh - 启动H2控制台:
java -cp /opt/hono/lib/h2*.jar org.h2.tools.Console -url jdbc:h2:./data/hono -user sa - 本地端口转发:
kubectl port-forward <pod-name> 8082:8082,然后访问http://localhost:8082,用上述JDBC URL连接即可查看数据。
- 进入目标Pod:
2. 如何将Hono的数据库切换为PostgreSQL
- 部署PostgreSQL实例:在K8s集群中部署PostgreSQL(可通过Helm安装官方PostgreSQL chart),创建名为
hono的数据库及对应账号。 - 修改Hono Helm配置:安装或升级Hono时,通过values配置指定PostgreSQL连接信息:
或直接用命令行参数安装:deviceRegistry: jdbc: enabled: true database: type: postgresql host: <postgresql-service-name> # 集群内PostgreSQL服务名 port: 5432 name: hono user: <db-username> password: <db-password> ssl: false # 根据实际需求开启SSLhelm install hono eclipse-iot/hono \ --set deviceRegistry.jdbc.database.type=postgresql \ --set deviceRegistry.jdbc.database.host=postgres-service \ --set deviceRegistry.jdbc.database.user=postgres \ --set deviceRegistry.jdbc.database.password=your-db-password - 验证切换:重启device-registry-jdbc Pod,查看日志确认数据库连接成功,同时检查PostgreSQL中是否自动创建了
tenants、devices等Hono相关表。
3. Eclipse Hono文件的存储位置
在K8s环境下:
- 容器内路径:
- 服务配置文件:
/opt/hono/config - 默认日志:输出到容器stdout/stderr,可通过
kubectl logs <pod-name>查看;若配置了日志持久化,会挂载到指定K8s卷。 - 默认H2数据库文件:
/opt/hono/data/hono.mv.db(仅当使用JDBC+H2时存在)。
- 服务配置文件:
- 持久化存储:若Helm配置了PersistentVolumeClaim(PVC),相关数据文件会存储在K8s PV对应的后端存储(如本地磁盘、云存储服务等,取决于PV配置)。
- 本地Helm Chart文件:若通过
helm pull下载了Hono chart,文件存储在执行命令的目录下;若直接从仓库安装,chart缓存于本地Helm目录(如~/.cache/helm/repository)。
内容的提问来源于stack exchange,提问作者nenavath krishna
相关产品推荐
相关产品推荐

