clickhouse高可用&可拓展部署
1.部署架构
1.1高可用架构
1.2硬件资源
部署服务 |
节点名称 |
节点ip |
核数 |
内存 |
磁盘 |
zookeeper |
zk-01 |
/ |
4c |
8G |
100G |
zk-02 |
/ |
4c |
8G |
100G |
|
zk-03 |
/ |
4c |
8G |
100G |
|
clikehouse |
ck-01 |
/ |
32c |
128G |
2T |
ck-02 |
/ |
32c |
128G |
2T |
|
ck-03 |
/ |
32c |
128G |
2T |
|
ck-04 |
/ |
32c |
128G |
2T |
1.3扩容
1.3.1节点扩容
新增一个分片,2个副本,扩容后的架构图如下:
1.3.2资源扩容
Cpu和内存直接在云平台上扩容,磁盘使用lvm扩容数据目录大小
1.4 混合部署
1.5 负载均衡&读写分离
采用chproxy来做负载均衡和读写分离,具体架构如下:
2.安装部署
2.1部署规划
采用1.4混合部署方式,3台虚拟机,每个节点部署2个clickhouse实例和一个zookeeper。另外增加一台虚拟机用来部署chproxy,用做负载均衡和读写分离。具体部署规划如下:
部署服务 |
实例名称 |
节点ip |
端口 |
备注 |
zookeeper |
zk-01 |
10.9.135.37 |
2181 |
|
zk-02 |
10.9.135.133 |
2181 |
||
zk-03 |
10.9.135.36 |
2181 |
||
clikehouse |
ck-01 |
10.9.135.37 |
8123 |
分片1副本1 |
ck-02 |
10.9.135.133 |
8123 |
分片2副本1 |
|
ck-03 |
10.9.135.36 |
8123 |
分片3副本1 |
|
ck-04 |
10.9.135.133 |
8223 |
分片1副本2 |
|
ck-05 |
10.9.135.36 |
8223 |
分片2副本2 |
|
ck-06 |
10.9.135.37 |
8223 |
分片3副本2 |
|
chproxy |
chproxy |
10.9.135.60 |
9090 |
2.2准备工作
- --修改hostname
- sudo hostnamectl set-hostname ck01
- sudo hostnamectl set-hostname ck02
- sudo hostnamectl set-hostname ck03
- --hosts配置
- 10.9.135.37 ck01
- 10.9.135.133 ck02
- 10.9.135.36 ck03
- --关闭防火墙
- # 1.关闭防火墙
- service iptables stop
- chkconfig iptables off
- chkconfig ip6tables off
- # 2.关闭selinux
- vi /etc/sysconfig/selinux
- 修改内容:【SELINUX=disabled】
- --免密登录
- 1、在原机器生成RSA密钥和公钥
- ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa
- 2、然后将~/.ssh/id_rsa.pub内容粘贴到目标机器的~/.ssh/authorized_keys
2.3jdk安装部署
- --安装包解压并修改配置文件:
- export JAVA_HOME=/usr/java/jdk1.8
- export JRE_HOME=$JAVA_HOME/jre
- export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
2.4zookeeper安装部署
- --安装zk
- wget http://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
- mv /data/apache-zookeeper-3.6.0-bin /usr/local/zookeeper
- --创建目录:
- mkdir -p /data/zookeeper/data
- mkdir -p /data/zookeeper/logs
- 机器1指定节点号1,以此类推:
- echo '1' > /data/zookeeper/data/myid
- 修改zoo.cfg文件,内容如下:
- --------------------------------------------------
- # 基本时间单位, 毫秒值
- tickTime=2000
- # tickTime的倍数,follower和leader之间的最长心跳时间
- initLimit=30000
- # tickTime的倍数,leader和follower之间发送消息, 请求和应答的最大时间
- syncLimit=10
- # 数据目录
- dataDir=/data/zookeeper/data
- # 日志目录,如果没设定,默认和dataDir相同
- dataLogDir=/data/zookeeper/logs
- # 监听client连接的端口号
- clientPort=2181
- # zookeeper最大连接
- maxClientCnxns=2000
- # 最大的会话超时时间
- maxSessionTimeout=60000000
- # 保留的文件数目,默认3个
- autopurge.snapRetainCount=10
- # 自动清理snapshot和事务日志,清理频率,单位是小时
- autopurge.purgeInterval=1
- # 等待处理的最大请求数量
- globalOutstandingLimit=200
- # 日志文件大小Kb,切换快照生成日志
- preAllocSize=131072
- #两次事务快照之间可执行事务的次数,默认的配置值为100000
- snapCount=3000000
- # leader是否接受client请求,默认为yes即leader可以接受client的连接,当节点数为>3