鲲鹏920上面 Docker 部署 clickhouse 的方式方法

发布时间 2023-11-17 10:57:17作者: 济南小老虎

鲲鹏920上面 Docker 部署 clickhouse 的方式方法


背景

最近有一套鲲鹏920的测试环境, 研发同事想纯Dcoker部署一套环境.
其中就包括了 Clickhouse
之前发现Clickhouse 23.x的版本部署二进制会有问题
但是没有深究, 今天发现docker run latest时也报错,所以想研究一下. 

entrypoint.sh: line 40:    24 Illegal instruction     (core dumped) clickhouse extract-from-config --config-file "$CLICKHOUSE_CONFIG" --key='storage_configuration.disks.*.path'
/entrypoint.sh: line 41:    26 Illegal instruction     (core dumped) clickhouse extract-from-config --config-file "$CLICKHOUSE_CONFIG" --key='storage_configuration.disks.*.metadata_path'

最终脚本

mkdir -p /data/clickhouse/data
docker run \
-p 8124:8123 \
-p 9001:9000 \
--name ckserver \
--ulimit nofile=262144:262144 \
-e CLICKHOUSE_DB=default \
-e CLICKHOUSE_USER=root \
-e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
-e TZ=Asia/Shanghai \
-e CLICKHOUSE_PASSWORD=xxxx \
--restart=always \
-v /data/clickhouse/data:/var/lib/clickhouse \
-d clickhouse/clickhouse-server:23.3.9.55

解决过程

一开始看到错误, 以为是缺少配置
但是一番google/baidu 发现根本无法解决. 
所以感觉比较奇怪, 直接上hub.docker.com 查看官方镜像的说法. 
https://hub.docker.com/r/clickhouse/clickhouse-server

Compatibility
The amd64 image requires support for SSE3 instructions. Virtually all x86 CPUs after 2005 support SSE3.
The arm64 image requires support for the ARMv8.2-A architecture. Most ARM CPUs after 2017 support ARMv8.2-A. A notable exception is Raspberry Pi 4 from 2019 whose CPU only supports ARMv8.0-A.

这里立马就进入了困惑. 

之前学习过 鲲鹏920 其实就是ARMv8.2架构的服务器
不明白为啥最新版的不支持. 
https://www.hisilicon.com/cn/products/kunpeng/huawei-kunpeng/huawei-kunpeng-920


鲲鹏920 的关键特性

关键特性
Architecture           • ARM v8.2
Core                   • up to 64
Typical Frequency      • 2.6 GHz / 3.0 GHz
Memory                 • 8 DDR4 Channels
Coherent Interconnect  • 2S&4S
I O                    • PCIe 4.0, CCIX, 100G, SAS/SATA 3.0
Max Power              • 180W
Process                • 7nm

问题猜测

怀疑clickhouse 使用了更新版本的ARM特性, 但是这个特性在鲲鹏920里面是被阉割的
导致最新版本的 clickhouse运行会出现 core dump的错误.

当初在进行TiDB的 海光服务器安装时遇到过类似的问题. 
当时的解决方法是 修改海光虚拟机的CPU指令模式为直通来解决
这次鲲鹏的物理机和虚拟都存在问题
所以使用二进制安装时一样的 降级进行验证. 

验证结果

clickhouse 23.5 是可以在鲲鹏920上面运行的
但是
clickhouse 23.6 就无法在鲲鹏920上面运行. 

然后查看 clickhouse的官方发布历史
发现LTS版本为:
https://packages.clickhouse.com/rpm/lts/

截止 2023.11.4 左右
最新的可以使用的版本是  23.3.9.55 
发布时间是  2023.8.21 左右 

验证时可以运行的. 

结论

可以使用chat2db的工具进行连接测试

可能部分官方文档并不是很完整
鲲鹏920 自2019年发布以来 架构其实一直没有升级
已经是五年前的架构了.

最新的都已经是ARMv9了
怀疑国外的很多软件其实使用了更新的文档里面没有描述的特性. 
兼容性验证其实是一个很漫长的过程. 需要仔细进行.