秦皇岛网站开发多少钱,制造做网站,2023年8月份新冠,揭阳企业建站系统熟悉流程并且有真正部署需求可以看一下我的另一篇简化部署的文章#xff0c;因为多节点配置还是比较麻烦的先要jdk、zookeeper#xff0c;再ck#xff0c;还有各种配置文件登录不同机器上手动改配置文件还挺容易出错的。 clickhouse运维篇#xff08;三#xff09;#x… 熟悉流程并且有真正部署需求可以看一下我的另一篇简化部署的文章因为多节点配置还是比较麻烦的先要jdk、zookeeper再ck还有各种配置文件登录不同机器上手动改配置文件还挺容易出错的。 clickhouse运维篇三生产环境一键生成配置并快速部署ck集群 多机器手动部署ck集群 1、 安装jdk2、 zookeeper集群搭建选举机制奇数节点部署3、 clickhouse集群规划4、 clickhouse集群搭建5、 配置nginx代理6、 集群验证7、 分布式本地表测试 1、 安装jdk
上传jdk安装包到各节点
1、解压安装包 这里举例解压到/opt/jdk8u333
2、 执行 sh setup.sh install
3、 修改环境变量
vi /etc/profilevi /etc/profile
在文件末尾加
#java
export JAVA_HOME/opt/jdk8u333
export CLASSPATH.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}
export PATH$PATH:${JAVA_HOME}/bin4、 执行指令生效
source /etc/profile2、 zookeeper集群搭建选举机制奇数节点部署
举例三个节点
172.168.1.206
172.168.1.207
172.168.1.208
上传安装包到各节点
解压安装包这里举例解压到/opt/app/zookeeper-3.7.2
1、创建目录
mkdir /opt/app/zookeeper-3.7.2/zkData
2、 复制zoo_sample.cfg文件命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
3、 在各个节点创建一个id距离下边在206、207、208三个节点的zkData目录下分别创建
echo 1 /opt/app/zookeeper-3.7.2/zkData/myid
echo 2 /opt/app/zookeeper-3.7.2/zkData/myid
echo 3 /opt/app/zookeeper-3.7.2/zkData/myid
4、修改zoo.cfg文件
vi zoo.cfg
clientPort为16871
dataDir为上边创建的zkData
server.后边的1、2、3为机器节点id
server.1172.168.1.206:2888:3888
server.2172.168.1.207:2888:3888
server.3172.168.1.208:2888:3888
tickTime2000
initLimit10
syncLimit5
dataDir/opt/app/zookeeper-3.7.2/zkData
clientPort16871
server.1172.168.1.206:2888:3888
server.2172.168.1.207:2888:3888
server.3172.168.1.208:2888:3888
5、 在其余节点重复以上操作在bin目录下执行启动脚本
sh zkServer.sh start
6、 查看集群状态
./zkServer.sh status说明集群搭建完成172.168.1.208是主节点
3、 clickhouse集群规划 根据集群部署分配的服务器进行预先考虑
a. 需要多少个分片 【多少台机器多少个分片最好一个机器不要多分片会导致查询的负载不平衡导致短筒效应 (保证分片数机器数最佳)】
b. 每个分片多少个副本 【默认同一个分片的副本不要在同一个机器上不能起到容灾作用一般情况一个分片内两个实例即可一主一副】 同一个实例不能既是主分片又是副本分片想要部署m分片每个分片内n个实例的集群就需要部署 m*n 个clickhouse实例。 例如所以如果只有三台机器想部署3分片每个分片2实例的集群就需要3*26个 实例【遵循上面1.a中 分片数机器数】。 如果机器1上有了shard1的分片副本实例就最好启动在机器2或者机器3上【遵循上面1.b中 同一分片副本不在相同机器】
4、 clickhouse集群搭建
举例三个节点
172.168.1.206
172.168.1.207
172.168.1.208
上传安装包到各节点
1、解压安装包 这里举例解压到/opt/app/clickhouse-23.4.2.9)
2、 修改配置文件打开config目录
cd config
vi config.xml
3、 修改config.xml文件
设置clickhouse端口16860
打开所有地址监听
tcp端口默认9000可以按需修改
http_port16860/http_port
listen_host::/listen_host
tcp_port9000/tcp_port添加集群节点信息 【三机器两分片、每个分片两个实例的配置文件】
// clickhose xml需要修改的内容remote_servers!-- 可自定义clickhouse集群名 --ck_cluster!-- 数据分片1 --shardinternal_replicationtrue/internal_replication!-- 副本1 --replicahost172.168.1.206/hostport9000/portuserdefault/userpasswordmy_password/password/replica!-- 副本2 --replicahost172.168.1.207/hostport9000/portuserdefault/userpasswordmy_password/password/replica/shard!-- 数据分片2 --shardinternal_replicationtrue/internal_replicationreplicahost172.168.1.207/hostport9001/portuserdefault/userpasswordmy_password/password/replicareplicahost172.168.1.208/hostport9000/portuserdefault/userpasswordmy_password/password/replica/shard/ck_cluster/remote_serversmacrosshard02/shardreplicareplica_208/replica/macroszookeeper!-- index内容为server.id --node index1host172.168.1.206/hostport16871/port/nodenode index2host172.168.1.207/hostport16871/port/nodenode index3host172.168.1.208/hostport16871/port/node/zookeeper!-- 如果一个机器上部署多个实例这几个端口不要冲突 --http_port16860/http_porttcp_port9000/tcp_portinterserver_http_host172.168.1.208/interserver_http_hostinterserver_http_port9009/interserver_http_porthttpmax_connections1024/max_connectionsasync_insert1/async_insert !-- 启用异步插入 --/http!-- vim下输入 /clickhouse-23.4 查找path相关tag是否配置正确 -- path/opt/app/my_app-2.4/clickhouse-23.4.2.9/data//pathformat_schema_path/opt/app/my_app-2.4/clickhouse-23.4.2.9/data/format_schemas//format_schema_pathlog/opt/app/my_app-2.4/clickhouse-23.4.2.9/log/clickhouse-server/clickhouse-server.log/logerrorlog/opt/app/my_app-2.4/clickhouse-23.4.2.9/log/clickhouse-server/clickhouse-server.err.log/errorlogtmp_path/opt/app/my_app-2.4/clickhouse-23.4.2.9/tmp//tmp_pathuser_files_path/opt/app/my_app-2.4/clickhouse-23.4.2.9/data/user_files//user_files_path
4、修改users.xml文件
设置default账号的密码
passwordmy_password/password5、其余节点重复以上步骤然后启动服务注意修改config.xml中的值
/opt/app/my_app-2.4/clickhouse-23.4.2.9/bin/clickhouse server --config-file /opt/app/my_app-2.4/clickhouse-23.4.2.9/config/config.xml --pid-file /opt/app/my_app-2.4/clickhouse-23.4.2.9/clickhouse.pid --daemon5、 配置nginx代理
编辑nginx配置文件底部加入clickhouse反向代理供web服务调用
$ vim /opt/app/my_app-2.4/nginx/conf/my_app.confupstream clickhouse_cluster {server 172.168.1.206:16860;server 172.168.1.207:16860;server 172.168.1.207:16861; server 172.168.1.208:16860;
}# 新增的 ClickHouse 反向代理并配置相应的黑白名单策略 入的流量应该是访问ck集群的流量
# 所以应该是访问源的网段也就是my_app对应的网段或者ip
server {listen 1442;allow localhost;allow 192.168.13.0/24;allow 10.1.5.0/16; deny all;location / {proxy_pass http://clickhouse_cluster;}
}● nginx反向代理验证
[rootlocalhost ~]# curl localhost:1442
Ok.6、 集群验证
这里使用dbever工具验证
1、执行sql查看ck集群节点状态
SELECT * from system.clusters;2、执行sql查看zookeeper中/clickhouse的节点是否存在
SELECT * FROM system.zookeeper WHERE path /clickhouse;如果截图如上则表示分布式集群部署成功 查看各个节点状态关注最后一列可以看出各个节点的与集群的连接状况【比如第三行数字22就是实例与cluster连接有问题】
7、 分布式本地表测试
语句加on cluster ck_cluster 就是在所有实例上执行
创建一个表
-- 删除本地表
DROP TABLE IF EXISTS test_table_local on cluster ck_cluster SYNC;-- 创建本地表
CREATE TABLE test_table_local ON CLUSTER ck_cluster
(tenantId UInt64 CODEC (Delta(8), ZSTD(1)),alarmId String,grade Int32,
) ENGINE ReplicatedMergeTree(/clickhouse/tables/{uuid}/{shard}/audit_log_local, {replica});-- 删除分布式表
DROP TABLE IF EXISTS test_table_all on cluster ck_cluster SYNC;
-- 创建分布式表
CREATE TABLE test_table_all ON CLUSTER ck_cluster as test_table_local ENGINE Distributed(ck_cluster, default, test_table_local, rand());分布式表测试
SELECT count(*) FROM test_table_all;本地表测试
INSERT INTO test_table_local (id, name, grade) VALUES (1,jack,60);