韩式摄影网站源码,wordpress 支持小工具,一个网站做多少个关键词比较好,手机 网站 模板ClickHouse部署 一、ClickHouse部署一、单节点部署1. 安装准备2. 目录规划3. 核心配置4. 启动服务 二、集群部署方案1. 集群拓扑设计2. 分布式配置3. 表引擎选择 三、安全加固1. 认证配置2. SSL加密 四、性能优化1. 核心参数调优2. 资源隔离 五、监控与维护1. Prometheus 集成2… ClickHouse部署 一、ClickHouse部署一、单节点部署1. 安装准备2. 目录规划3. 核心配置4. 启动服务 二、集群部署方案1. 集群拓扑设计2. 分布式配置3. 表引擎选择 三、安全加固1. 认证配置2. SSL加密 四、性能优化1. 核心参数调优2. 资源隔离 五、监控与维护1. Prometheus 集成2. 关键监控指标 六、备份与恢复1. 冷备份方案2. 跨集群同步 七、最佳实践 二、ClickHouse跨机房集群部署方案1. 架构设计2. 网络优化配置3. 数据同步策略4. 容灾切换方案5. 性能优化参数6. 监控指标体系7. 运维管理规范8. 成本优化建议 关联知识 一、ClickHouse部署
以下为 ClickHouse 生产级集群部署的完整步骤及配置指南涵盖单节点、分布式集群、安全加固及性能优化
一、单节点部署
1. 安装准备
系统要求 • 64位 Linux推荐 CentOS 7/Ubuntu 18.04
• 至少 4 核 CPU 8GB 内存
• SSD 存储推荐 NVMe
安装步骤
# Ubuntu/Debian
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
echo deb https://packages.clickhouse.com/deb stable main | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client# CentOS/RHEL
sudo yum install -y yum-utils
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client2. 目录规划
sudo mkdir -p /data/clickhouse/{data,metadata,logs,conf}
sudo chown -R clickhouse:clickhouse /data/clickhouse配置文件迁移
sudo mv /etc/clickhouse-server/config.xml /data/clickhouse/conf/
sudo ln -s /data/clickhouse/conf/config.xml /etc/clickhouse-server/config.xml3. 核心配置
config.xml 关键参数
yandexpath/data/clickhouse/data//pathtmp_path/data/clickhouse/tmp//tmp_pathuser_files_path/data/clickhouse/user_files//user_files_pathformat_schema_path/data/clickhouse/format_schemas//format_schema_path!-- 网络配置 --listen_host0.0.0.0/listen_hosthttp_port8123/http_porttcp_port9000/tcp_port!-- 资源限制 --max_memory_usage10000000000/max_memory_usagemax_concurrent_queries100/max_concurrent_queries!-- 日志配置 --loggerlevelinformation/levellog/data/clickhouse/logs/clickhouse-server.log/logerrorlog/data/clickhouse/logs/clickhouse-server.err.log/errorlogsize1000M/sizecount10/count/logger
/yandex4. 启动服务
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server二、集群部署方案
1. 集群拓扑设计
3分片2副本架构
节点IP地址角色硬件配置ch-node1192.168.1.10分片1主 分片2副本32C128G NVMech-node2192.168.1.11分片2主 分片3副本32C128G NVMech-node3192.168.1.12分片3主 分片1副本32C128G NVMe
2. 分布式配置
remote_servers 配置
remote_serverscluster_3s2rshardweight1/weightinternal_replicationtrue/internal_replicationreplicahostch-node1/hostport9000/portuseradmin/userpasswordSecurePass123!/password/replicareplicahostch-node2/hostport9000/portuseradmin/userpasswordSecurePass123!/password/replica/shard!-- 其他分片类似配置 --/cluster_3s2r
/remote_serversZooKeeper 集成
zookeepernodehostzk1.cluster/hostport2181/port/nodenodehostzk2.cluster/hostport2181/port/nodenodehostzk3.cluster/hostport2181/port/nodesession_timeout_ms30000/session_timeout_msoperation_timeout_ms10000/operation_timeout_ms
/zookeeper3. 表引擎选择
分布式表创建示例
CREATE TABLE db1.metrics_local ON CLUSTER cluster_3s2r
(event_time DateTime,metric_name String,value Float64
)
ENGINE ReplicatedMergeTree(/clickhouse/tables/{shard}/metrics_local, {replica})
PARTITION BY toYYYYMM(event_time)
ORDER BY (metric_name, event_time)
TTL event_time INTERVAL 30 DAY;CREATE TABLE db1.metrics_distributed ON CLUSTER cluster_3s2r
AS db1.metrics_local
ENGINE Distributed(cluster_3s2r, db1, metrics_local, rand());三、安全加固
1. 认证配置
users.xml 示例
usersadminpasswordsha256:abcd1234...使用openssl passwd生成/passwordnetworksip::/0/ip/networksprofiledefault/profilequotadefault/quotaaccess_management1/access_management/adminreadonlypasswordsha256:def5678.../passwordnetworksip192.168.1.0/24/ip/networksprofilereadonly/profilequotadefault/quota/readonly
/users2. SSL加密
配置步骤
# 生成证书
openssl req -x509 -newkey rsa:2048 -nodes -days 365 \-keyout /etc/clickhouse-server/server.key \-out /etc/clickhouse-server/server.crt# 修改配置
https_port8443/https_port
openSSLservercertificateFile/etc/clickhouse-server/server.crt/certificateFileprivateKeyFile/etc/clickhouse-server/server.key/privateKeyFile/server
/openSSL四、性能优化
1. 核心参数调优
!-- config.xml --
merge_treemax_suspicious_broken_parts5/max_suspicious_broken_partsparts_to_delay_insert300/parts_to_delay_insertparts_to_throw_insert600/parts_to_throw_insert
/merge_treecompressioncasemethodzstd/methodlevel3/level/case
/compression2. 资源隔离
资源队列配置
profilesdefaultmax_threads16/max_threadsmax_memory_usage_for_all_queries100000000000/max_memory_usage_for_all_queries/defaultbatchmax_threads32/max_threadspriority10/priority/batch
/profiles五、监控与维护
1. Prometheus 集成
exporter 配置
docker run -d -p 9116:9116 \-e CLICKHOUSE_USERmonitor \-e CLICKHOUSE_PASSWORDMonitorPass123! \prom/clickhouse-exporter \-scrape_urihttp://ch-node1:8123/2. 关键监控指标
指标名称告警阈值监控频率QueryDurationMilliseconds 5000ms15sReplicasMaxQueueSize 10001mMemoryUsage 90%10sZooKeeperRequestLatency 2000ms30s
六、备份与恢复
1. 冷备份方案
# 全量备份
clickhouse-backup create full_backup_$(date %Y%m%d)# 增量备份
clickhouse-backup create incremental_backup_$(date %Y%m%d) --diff-fromfull_backup_20230801# 恢复数据
clickhouse-backup restore full_backup_202308012. 跨集群同步
CREATE TABLE db1.metrics_restore AS db1.metrics_local
ENGINE Distributed(backup_cluster, db1, metrics_local, rand());INSERT INTO db1.metrics_restore
SELECT * FROM remote(backup_node, db1.metrics_local);七、最佳实践
分片键选择优先选择高基数字段如用户ID数据预热启动后执行 SYSTEM DROP MARK CACHE版本管理使用 ALTER TABLE ... UPDATE 谨慎处理表结构变更慢查询分析开启 log_queries1 并定期分析 query_log
通过以上步骤可建立支持每秒百万级写入、亚秒级查询响应的 ClickHouse 生产集群适用于实时分析、时序数据处理等场景。建议每月进行全链路压测持续优化配置参数。
二、ClickHouse跨机房集群部署方案
1. 架构设计
目标实现高可用、低延迟、数据地理冗余
拓扑结构 • 3个机房北京、上海、广州每个机房部署完整ClickHouse分片
• 分片策略每个分片包含3副本跨机房部署
• ZooKeeper集群每个机房独立部署3节点ZooKeeper组成跨机房集群 #mermaid-svg-JTVM8XP7o3UNyJrD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .error-icon{fill:#552222;}#mermaid-svg-JTVM8XP7o3UNyJrD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JTVM8XP7o3UNyJrD .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-JTVM8XP7o3UNyJrD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JTVM8XP7o3UNyJrD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JTVM8XP7o3UNyJrD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JTVM8XP7o3UNyJrD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JTVM8XP7o3UNyJrD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JTVM8XP7o3UNyJrD .marker.cross{stroke:#333333;}#mermaid-svg-JTVM8XP7o3UNyJrD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JTVM8XP7o3UNyJrD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .cluster-label text{fill:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .cluster-label span{color:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .label text,#mermaid-svg-JTVM8XP7o3UNyJrD span{fill:#333;color:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .node rect,#mermaid-svg-JTVM8XP7o3UNyJrD .node circle,#mermaid-svg-JTVM8XP7o3UNyJrD .node ellipse,#mermaid-svg-JTVM8XP7o3UNyJrD .node polygon,#mermaid-svg-JTVM8XP7o3UNyJrD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JTVM8XP7o3UNyJrD .node .label{text-align:center;}#mermaid-svg-JTVM8XP7o3UNyJrD .node.clickable{cursor:pointer;}#mermaid-svg-JTVM8XP7o3UNyJrD .arrowheadPath{fill:#333333;}#mermaid-svg-JTVM8XP7o3UNyJrD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JTVM8XP7o3UNyJrD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JTVM8XP7o3UNyJrD .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-JTVM8XP7o3UNyJrD .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-JTVM8XP7o3UNyJrD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JTVM8XP7o3UNyJrD .cluster text{fill:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD .cluster span{color:#333;}#mermaid-svg-JTVM8XP7o3UNyJrD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JTVM8XP7o3UNyJrD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 广州机房 上海机房 北京机房 分片1-副本 分片2-副本 分片3-主 ZooKeeper ZooKeeper ZooKeeper 分片1-副本 分片2-主 分片3-副本 ZooKeeper ZooKeeper ZooKeeper 分片1-主 分片2-副本 分片3-副本 ZooKeeper ZooKeeper ZooKeeper 2. 网络优化配置
关键参数
!-- config.xml --
yandexinterserver_http_port9009/interserver_http_portinterserver_http_hostbj01-node1/interserver_http_hostlisten_host0.0.0.0/listen_host!-- 跨机房专线配置 --remote_serverscluster1shardweight1/weightinternal_replicationtrue/internal_replicationreplicahostbj01-node1/hostport9000/portinterserver_http_port9009/interserver_http_portzonebj/zone/replicareplicahostsh01-node1/hostport9000/portinterserver_http_port9009/interserver_http_portzonesh/zone/replica/shard!-- 其他分片配置 --/cluster1/remote_servers!-- 网络QoS策略 --networkcompressiontrue/compressionsend_timeout300/send_timeoutreceive_timeout300/receive_timeoutkeep_alive_timeout600/keep_alive_timeout/network
/yandex3. 数据同步策略
三级数据同步机制
层级同步方式延迟要求数据一致性1级本地机房同步10ms强一致2级跨机房异步复制500ms最终一致3级全局备份同步每天1次延迟一致
副本配置示例
CREATE TABLE metrics
(event_date Date,metric_id UInt32,value Float64
)
ENGINE ReplicatedMergeTree(/clickhouse/tables/{shard}/metrics, {replica})
PARTITION BY toYYYYMM(event_date)
ORDER BY (metric_id, event_date)
SETTINGSmax_replicated_mutations_in_queue1000,replicated_can_become_leader1,replicated_max_parallel_fetches16;4. 容灾切换方案
故障检测矩阵
故障类型检测方式切换阈值恢复策略节点宕机ZooKeeper watcher30秒自动切换副本机房断网BGP监测3次/5分钟DNS切流数据损坏Checksum校验立即副本重建磁盘故障SMART监控立即热备盘替换
切换命令示例
# 强制副本切换
echo SYSTEM RESTART REPLICA metrics | clickhouse-client -h standby-node# 机房级切换VIP转移
keepalivedctl switchover --new-master sh02-node15. 性能优化参数
核心配置调整
!-- users.xml --
yandexprofilesdefaultmax_memory_usage10000000000/max_memory_usagemax_execution_time300/max_execution_timedistributed_product_modelocal/distributed_product_mode!-- 跨机房查询优化 --prefer_localhost_replica0/prefer_localhost_replicause_hedged_requests1/use_hedged_requestsasync_socket_for_remote1/async_socket_for_remote!-- 副本选择策略 --load_balancingfirst_or_random/load_balancingprioritybj3/bjsh2/shgz1/gz/priority/default/profiles
/yandex6. 监控指标体系
关键监控项
类别指标阈值采集频率网络跨机房延迟150ms10秒存储副本差异量10万行1分钟查询跨区查询比例30%实时资源CPU利用率70%5秒ZooKeeper事务延迟500ms1秒
Prometheus配置示例
scrape_configs:- job_name: clickhousestatic_configs:- targets:- bj01-node1:9363- sh01-node1:9363- gz01-node1:9363metrics_path: /metrics- job_name: zkstatic_configs:- targets:- zk-bj1:7000- zk-sh1:7000- zk-gz1:70007. 运维管理规范
变更管理流程 灰度发布新配置先在1个机房生效观察24小时 滚动升级分3个批次进行间隔2小时 数据迁移使用ALTER TABLE MOVE PARTITION命令 备份策略 • 每日增量备份保留7天 • 每周全量备份保留4周 • 异地冷备保留1年
自动化脚本示例
#!/bin/bash
# 跨机房数据均衡脚本
for shard in {1..3}
doclickhouse-client --query SYSTEM SYNC REPLICA metrics_shard${shard}OPTIMIZE TABLE metrics_shard${shard} FINALALTER TABLE metrics_shard${shard} MOVE PARTITION 202308 TO SHARD /bj0${shard}
done8. 成本优化建议
资源分配策略
机房数据热度存储类型计算规格北京热数据SSD32C128G上海温数据ESSD16C64G广州冷数据HDD8C32G
存储分层配置
ALTER TABLE metrics MODIFY TTL event_date INTERVAL 3 MONTH TO VOLUME hot,event_date INTERVAL 6 MONTH TO VOLUME warm,event_date INTERVAL 12 MONTH TO VOLUME cold该方案通过多层次冗余、智能路由和分级存储实现RTO5分钟、RPO10秒的容灾能力同时跨机房查询延迟控制在150ms以内。建议根据实际业务流量进行压力测试优化分片数量和副本分布策略。
关联知识
【大数据知识】ClickHouse入门 【运维工具】Ansible一款好用的自动化工具 【数据库知识】行式存储与列式存储 【ClickHouse官网文档地址】