准备工作
下载安装包:
java:
jdk-8u333-linux-aarch64.tar.gz
下载链接:
https://www.oracle.com/java/technologies/downloads/#java8
zookeeper:
zookeeper-3.4.13.tar.gz
下载链接:
https://zookeeper.apache.org/releases.html#download
http://archive.apache.org/dist/zookeeper/
clickhouse:
clickhouse-common-static-22.7.3.5-arm64.tgz
clickhouse-common-static-dbg-22.7.3.5-arm64.tgz
clickhouse-server-22.7.3.5-arm64.tgz
clickhouse-client-22.7.3.5-arm64.tgz
下载链接:
https://packages.clickhouse.com/tgz/stable/
ansible配置文件:
hosts_40_1:
[hosts_40]
***.***.***.*** shard_id=1 myid=1
***.***.***.*** shard_id=2 myid=2
***.***.***.*** shard_id=3 myid=3
***.***.***.*** shard_id=4 myid=4
***.***.***.*** shard_id=5 myid=5
***.***.***.*** shard_id=6 myid=6
***.***.***.*** shard_id=7 myid=7
***.***.***.*** shard_id=8 myid=8
***.***.***.*** shard_id=9 myid=9
***.***.***.*** shard_id=10 myid=10
[hosts_40:vars]
ansible_ssh_user=xxx
ansible_ssh_pass='***'
ansible_sudo_pass='***'
一.磁盘挂载
1.创建/data目录
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls /data"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls /data"
2.格式化磁盘
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkfs.xfs -f /dev/sdb"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkfs.xfs -f /dev/sdb"
3.记录
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "cat << EOF >> /etc/fstab
/dev/sdb /data xfs defaults 0 0
EOF"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "cat << EOF >> /etc/fstab
/dev/sdb /data xfs defaults 0 0
EOF"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "cat /etc/fstab"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "cat /etc/fstab"
4.挂载
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mount -a"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mount -a"
5.查看磁盘挂载是否成功
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "df -h"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "df -h"
二.防火墙
1.查看防火墙
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "systemctl status firewalld.service"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "systemctl status firewalld.service"
2.如果没关防火墙需要关闭防火墙
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "systemctl stop firewalld.service"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "systemctl stop firewalld.service"
三.添加hosts
1.查看ip
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "hostname -i | cut -d ' ' -f3"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "hostname -i | cut -d ' ' -f3"
2.查询hosts
get_hosts.sh脚本:
#!/bin/bash
host=`hostname`
ip=`hostname -i | cut -d ' ' -f3`
echo $ip $host
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m script -a '/home/deployer/get_hosts.sh'
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m script -a '/home/deployer/get_hosts.sh'
3.整理好hosts后将hosts分发
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/home/deployer/hosts.txt dest=/home/deployer/ owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/home/deployer/hosts.txt dest=/home/deployer/ owner=deployer group=deployer mode=0777"
4.检查是否分发成功
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /home/deployer"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /home/deployer"
5.将分发后的hosts添加到每台机器
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "cat /home/deployer/hosts.txt >> /etc/hosts"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "cat /home/deployer/hosts.txt >> /etc/hosts"
6.检查是否添加成功
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "cat /etc/hosts"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "cat /etc/hosts"
四.创建目录
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/clickhouse"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/clickhouse"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/clickhouse/data"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/clickhouse/data"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/clickhouse/data/tmp"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/clickhouse/data/tmp"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chmod -R 777 /data/clickhouse"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chmod -R 777 /data/clickhouse"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chown -R deployer:deployer /data/clickhouse"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chown -R deployer:deployer /data/clickhouse"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/zookeeper"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/zookeeper"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/zookeeper/data"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/zookeeper/data"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/zookeeper/log"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/zookeeper/log"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chmod -R 777 /data/zookeeper"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chmod -R 777 /data/zookeeper"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chown -R deployer:deployer /data/zookeeper"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chown -R deployer:deployer /data/zookeeper"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/java"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/java"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mkdir /data/java/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mkdir /data/java/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/java/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/java/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chmod -R 777 /data/java"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chmod -R 777 /data/java"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "chown -R deployer:deployer /data/java"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "chown -R deployer:deployer /data/java"
五.传文件
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/data/zookeeper/package/ dest=/data/zookeeper/package/ owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/data/zookeeper/package/ dest=/data/zookeeper/package/ owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/data/clickhouse/package/ dest=/data/clickhouse/package/ owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/data/clickhouse/package/ dest=/data/clickhouse/package/ owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/data/java/package/jdk-8u333-linux-aarch64.tar.gz dest=/data/java/package/jdk-8u333-linux-aarch64.tar.gz owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/data/java/package/jdk-8u333-linux-aarch64.tar.gz dest=/data/java/package/jdk-8u333-linux-aarch64.tar.gz owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/java/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/java/package"
六.安装java
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "tar -zxvf /data/java/package/jdk-8u333-linux-aarch64.tar.gz -C /data/java/package/"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "tar -zxvf /data/java/package/jdk-8u333-linux-aarch64.tar.gz -C /data/java/package/"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "mv /data/java/package/jdk1.8.0_333 /data/java/package/jdk1.8.0_141"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "mv /data/java/package/jdk1.8.0_333 /data/java/package/jdk1.8.0_141"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/java/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/java/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "echo 'export JAVA_HOME=/data/java/package/jdk1.8.0_141' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "echo 'export JAVA_HOME=/data/java/package/jdk1.8.0_141' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "echo 'export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "echo 'export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$JAVA_HOME/bin' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$JAVA_HOME/bin' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "more /etc/profile"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "more /etc/profile"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "source /etc/profile"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "source /etc/profile"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "java -version"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "java -version"
七.安装zookeeper
1.解压zookeeper
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "tar -zxvf /data/zookeeper/package/zookeeper-3.4.13.tar.gz -C /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "tar -zxvf /data/zookeeper/package/zookeeper-3.4.13.tar.gz -C /data/zookeeper/package"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "ls -al /data/zookeeper/package/zookeeper-3.4.13"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "ls -al /data/zookeeper/package/zookeeper-3.4.13"
2.创建myid myid值在hosts文件中预先设置好
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "touch /data/zookeeper/data/myid"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "touch /data/zookeeper/data/myid"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "echo -e '{{myid}}' >> /data/zookeeper/data/myid"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "echo -e '{{myid}}' >> /data/zookeeper/data/myid"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "cat /data/zookeeper/data/myid"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "cat /data/zookeeper/data/myid"
3.修改配置文件
3.1查看2181端口是否占用
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "netstat -tunlp|grep 2181"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "netstat -tunlp|grep 2181"
将/data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg配置文件进行两处修改
3.2将dataDir位置修改为
/data/zookeeper/data
3.3在配置文件zoo.cfg最后添加集群信息
###############cluster###############
server.1=***.***.***.***:2888:3888
server.2=***.***.***.***:2888:3888
server.3=***.***.***.***:2888:3888
server.4=***.***.***.***:2888:3888
server.5=***.***.***.***:2888:3888
server.6=***.***.***.***:2888:3888
server.7=***.***.***.***:2888:3888
server.8=***.***.***.***:2888:3888
server.9=***.***.***.***:2888:3888
3.4将zoo.cfg配置文件分发到集群中其他机器
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m copy -a "src=/data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg dest=/data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg owner=deployer group=deployer mode=0777"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m copy -a "src=/data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg dest=/data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg owner=deployer group=deployer mode=0777"
3.5查看通过是否成功
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "tail -n 100 /data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "tail -n 100 /data/zookeeper/package/zookeeper-3.4.13/conf/zoo.cfg"
4.添加环境变量并刷新配置
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "echo 'export ZOOKEEPER=/data/zookeeper/package/zookeeper-3.4.13' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "echo 'export ZOOKEEPER=/data/zookeeper/package/zookeeper-3.4.13' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$ZOOKEEPER/bin' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$ZOOKEEPER/bin' >> /etc/profile"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$ZOOKEEPER/bin' >> /home/deployer/.bash_profile"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "echo -e 'export PATH=\$PATH:\$ZOOKEEPER/bin' >> /home/deployer/.bash_profile"
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "source /etc/profile"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "source /etc/profile"
5.启动zookeeper集群
启动
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "source /etc/profile && zkServer.sh start"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "source /etc/profile && zkServer.sh start"
停止
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "source /etc/profile && zkServer.sh stop"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "source /etc/profile && zkServer.sh stop"
查看节点状态
ansible -i /etc/ansible/hosts_40_zk1 hosts_40 -m shell -a "source /etc/profile && zkServer.sh status"
ansible -i /etc/ansible/hosts_40_zk2 hosts_40 -m shell -a "source /etc/profile && zkServer.sh status"
注意:
zookeeper相关的目录及目录下的文件都必须属于deployer,不然会出现运行失败的情况。
八.安装clickhouse
1.安装clickhouse-common-static
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-common-static-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-common-static-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-common-static-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-common-static-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-common-static-22.7.3.5/install/doinst.sh"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-common-static-22.7.3.5/install/doinst.sh"
2.安装clickhouse-common-static-dbg
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5/install/doinst.sh"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-common-static-dbg-22.7.3.5/install/doinst.sh"
3.安装clickhouse-server
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-server-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-server-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-server-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-server-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-server-22.7.3.5/install/doinst.sh"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-server-22.7.3.5/install/doinst.sh"
4.安装clickhouse-client
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-client-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "tar -zxvf /data/clickhouse/package/clickhouse-client-22.7.3.5-arm64.tgz -C /data/clickhouse/package"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-client-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ls -al /data/clickhouse/package/clickhouse-client-22.7.3.5/install"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-client-22.7.3.5/install/doinst.sh"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "sh /data/clickhouse/package/clickhouse-client-22.7.3.5/install/doinst.sh"
5.修改配置文件
5.1修改/etc/clickhouse-server/config.xml
<listen_host>0.0.0.0</listen_host> <!-- 开放监听 -->
<path>/data/clickhouse/data/</path> <!-- 数据目录 -->
<tmp_path>/data/clickhouse/data/tmp/</tmp_path> <!-- 临时数据目录 -->
添加
<remote_servers incl="clickhouse_remote_servers" />
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<compression incl="clickhouse_compression" optional="true" />
注释
<!-- <remote_servers> -->
<!-- </remote_servers> -->
5.2查看端口是否占用-8123、9000、9004、9005、9009
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "netstat -tunlp|grep 8123"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "netstat -tunlp|grep 8123"
5.3修改/etc/clickhouse-server/config.d/data-paths.xml文件
<path>/data/clickhouse/data</path>
<tmp_path>/data/clickhouse/data/tmp</tmp_path>
5.4添加/etc/metrika.xml
其中/etc/metrika.xml中的<macros>因为每台机器不一样,因此配置如下模板,其它配置信息每台机器都一样:
<macros>
<shard>shard_id</shard>
<replica>macros_ip</replica>
</macros>
5.5修改/etc/clickhouse-server/users.xml中default用户的密码:
echo -n password | openssl dgst -sha256
生成加密的password
(stdin)= newpassword
修改/etc/clickhouse-server/users.xml
<!-- <password></password> -->
<password_sha256_hex>newpassword</password_sha256_hex>
5.6修改配置文件后统一分发:
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/etc/clickhouse-server/users.xml dest=/etc/clickhouse-server/users.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/etc/clickhouse-server/users.xml dest=/etc/clickhouse-server/users.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/etc/clickhouse-server/config.d/data-paths.xml dest=/etc/clickhouse-server/config.d/data-paths.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/etc/clickhouse-server/config.d/data-paths.xml dest=/etc/clickhouse-server/config.d/data-paths.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/etc/clickhouse-server/config.xml dest=/etc/clickhouse-server/config.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/etc/clickhouse-server/config.xml dest=/etc/clickhouse-server/config.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m copy -a "src=/etc/metrika.xml dest=/etc/metrika.xml owner=clickhouse group=clickhouse mode=0777"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m copy -a "src=/etc/metrika.xml dest=/etc/metrika.xml owner=clickhouse group=clickhouse mode=0777"
5.7查看ip
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "hostname -i | cut -d ' ' -f3"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "hostname -i | cut -d ' ' -f3"
5.8替换/etc/metrika.xml中<macros>的shard_id
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "sed -i 's/shard_id/{{shard_id}}/g' /etc/metrika.xml"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "sed -i 's/shard_id/{{shard_id}}/g' /etc/metrika.xml"
5.9替换/etc/metrika.xml中<macros>的macros_ip
update_file.sh脚本:
#!/bin/bash
ip=`hostname -i | cut -d ' ' -f3`
sed -i 's/macros_ip/'$ip'/g' /etc/metrika.xml
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m script -a '/data/clickhouse/update_file.sh'
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m script -a '/data/clickhouse/update_file.sh'
6.启动服务
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "clickhouse start"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "clickhouse start"
7.查看进程
ansible -i /etc/ansible/hosts_40_1 hosts_40 -m shell -a "ps -ef | grep clickhouse"
ansible -i /etc/ansible/hosts_40_2 hosts_40 -m shell -a "ps -ef | grep clickhouse"
8.效果
页面查询
http://***.***.***.***:8123/play
通过系统表查询remote_servers的配置是否生效
SELECT * FROM system.clusters;
查看path是否配置正确
SELECT
name,
path,
formatReadableSize(free_space) AS free,
formatReadableSize(total_space) AS total,
formatReadableSize(keep_free_space) AS reserved
FROM system.disks;
测试单表:
CREATE TABLE default.test (
id Int16,
name String
) ENGINE = MergeTree()
ORDER BY id;
测试分布式表:
#先创建本地表
CREATE TABLE default.test_local on cluster perftest_20shards_2replicas (
id Int16,
name String
) ENGINE = MergeTree()
ORDER BY id;
#创建分布式表
CREATE TABLE IF NOT EXISTS default.test_distribute ON CLUSTER perftest_20shards_2replicas AS default.test_local
ENGINE = Distributed(perftest_20shards_2replicas, default, test_local, rand());
欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^