#!/bin/bash # ${ClickHouseVersion} 1 # ${ClickHouseNodeCount} 2 # ${RootStackName} 3 # ${AWS::Region} 4 # http://s3.${AWS::Region}.${AWS::URLSuffix}/${ClickHouseBucketName}/quickstart-clickhouse-data/ 5 # S3VPCEndpoint # ${MoveFactor} 6 # ${ClickHouseTimezone} 7 # ${ZookeeperPrivateIp1} 8 # ${ZookeeperPrivateIp2} 9 # ${ZookeeperPrivateIp3} 10 # ${DBPassword} 11 # ${MaxThreads} 12 # ${MaxInsertThreads} 13 # ${DistributedProductMode} 14 # ${MaxMemoryUsage} 15 # ${LoadBalancing} 16 # ${MaxDataPartSize} 17 # "01" 18 # ShardNumber # "01" 19 # ReplicaNumber sudo adduser clickhouse sudo usermod -G clickhouse clickhouse # If one disk only, use root disk sudo mkdir -p /home/clickhouse/data sudo mkdir /home/clickhouse/data/format_schemas/ sudo mkdir /home/clickhouse/data/access/ sudo mkdir /home/clickhouse/data/user_files/ sudo mkdir /home/clickhouse/data/tmp/ sudo mkdir /home/clickhouse/data/log/ sudo mkdir /home/clickhouse/data/clickhouse-data/ sudo chown -R clickhouse.clickhouse /home/clickhouse/ rm -rf /var/log/clickhouse-server/ ln -s /home/clickhouse/data/log/ /var/log/clickhouse-server yum install yum-utils rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 yum install clickhouse-server-$1 clickhouse-client-$1 -y if [ ! -d "/etc/clickhouse-server" ]; then rpm --import https://mirrors.aliyun.com/clickhouse/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://mirrors.aliyun.com/clickhouse/rpm/stable/ yum install clickhouse-server-$1 clickhouse-client-$1 -y fi echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " true" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode1" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode2" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml if [ $2 -ge 4 ] then echo " " >> /etc/clickhouse-server/metrika.xml echo " true" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode3" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode4" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml fi if [ $2 -ge 6 ] then echo " " >> /etc/clickhouse-server/metrika.xml echo " true" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode5" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode6" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml fi if [ $2 -ge 8 ] then echo " " >> /etc/clickhouse-server/metrika.xml echo " true" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode7" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ClickHouseNode8" >> /etc/clickhouse-server/metrika.xml echo " 9000" >> /etc/clickhouse-server/metrika.xml echo " default" >> /etc/clickhouse-server/metrika.xml echo " ${11}" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml fi echo " " >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " $8" >> /etc/clickhouse-server/metrika.xml echo " 2181" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " $9" >> /etc/clickhouse-server/metrika.xml echo " 2181" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo " ${10}" >> /etc/clickhouse-server/metrika.xml echo " 2181" >> /etc/clickhouse-server/metrika.xml echo " " >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo " ::/0" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo " 10000000000" >> /etc/clickhouse-server/metrika.xml echo " 0.01" >> /etc/clickhouse-server/metrika.xml echo " lz4" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml echo "" >> /etc/clickhouse-server/metrika.xml flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard01-replica01 --region $4` > instancelist-1 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-1` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-1 result-1 node1=`sed -n '1p' result-1` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode1|${node1}|g" break fi echo $flag let flag-- sleep 1 done flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard01-replica02 --region $4` > instancelist-2 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-2` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-2 result-2 node2=`sed -n '1p' result-2` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode2|${node2}|g" break fi echo $flag let flag-- sleep 1 done if (( $2 >= 4)) then flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard02-replica01 --region $4` > instancelist-3 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-3` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-3 result-3 node3=`sed -n '1p' result-3` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode3|${node3}|g" break fi let flag-- sleep 1 done flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard02-replica02 --region $4` > instancelist-4 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-4` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-4 result-4 node4=`sed -n '1p' result-4` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode4|${node4}|g" break fi let flag-- sleep 1 done fi if (( $2 >= 6)) then flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard03-replica01 --region $4` > instancelist-5 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-5` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-5 result-5 node5=`sed -n '1p' result-5` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode5|${node5}|g" break fi let flag-- sleep 1 done flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard03-replica02 --region $4` > instancelist-6 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-6` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-6 result-6 node6=`sed -n '1p' result-6` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode6|${node6}|g" break fi let flag-- sleep 1 done fi if (( $2 >= 8)) then flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard04-replica01 --region $4` > instancelist-7 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-7` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-7 result-7 node7=`sed -n '1p' result-7` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode7|${node7}|g" break fi let flag-- sleep 1 done flag=600 while((flag > 0)) do echo `aws ec2 describe-tags --filters Name=key,Values=$3-clickhouse-shard04-replica02 --region $4` > instancelist-8 count=`awk -v RS="@#$j" '{print gsub(/instance/,"&")}' instancelist-8` if (( $count >= 1 )) then python3 find-clickhouse-node.py instancelist-8 result-8 node8=`sed -n '1p' result-8` find /etc/clickhouse-server/ -name 'metrika.xml' | xargs perl -pi -e "s|ClickHouseNode8|${node8}|g" break fi let flag-- sleep 1 done fi # if [ $1 = 21.4.5.46-2 ]; then if [ $1 = 21.4.7.3-2 ]; then echo "Update the config.xml of $1" sed -i '508, 617d' /etc/clickhouse-server/config.xml # elif [ $1 = 21.5.5.12-2 ]; then elif [ $1 = 21.5.9.4-2 ]; then echo "Update the config.xml of $1" sed -i '520, 630d' /etc/clickhouse-server/config.xml fi find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e 's||/etc/clickhouse-server/metrika.xml|g' #find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e 's||/etc/clickhouse-server/metrika.xml|g' find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s|trace|information|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s|/var/log/clickhouse-server/clickhouse-server.log|/home/clickhouse/data/log/clickhouse-server.log|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s|/var/log/clickhouse-server/clickhouse-server.err.log|/home/clickhouse/data/log/clickhouse-server.err.log|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s|/var/lib/clickhouse/|/home/clickhouse/data/clickhouse-data/|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s|/var/lib/clickhouse/|/home/clickhouse/data/|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s||$7|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s||0.0.0.0|g" find /etc/clickhouse-server/ -name 'config.xml' | xargs perl -pi -e "s||/etc/pki/tls/certs/ca-bundle.crt|g" find /etc/clickhouse-server/ -name 'users.xml' | xargs perl -pi -e "s||${11}|g" sudo sed -i "9a ${12}" /etc/clickhouse-server/users.xml sudo sed -i "9a ${13}" /etc/clickhouse-server/users.xml sudo sed -i "9a ${14}" /etc/clickhouse-server/users.xml sudo sed -i "s|10000000000|${15}|" /etc/clickhouse-server/users.xml sudo sed -i "s|random|${16}|" /etc/clickhouse-server/users.xml sudo sed -i 's||1|' /etc/clickhouse-server/users.xml echo "" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " s3" >> /etc/clickhouse-server/config.d/storage.xml echo " $5" >> /etc/clickhouse-server/config.d/storage.xml echo " true" >> /etc/clickhouse-server/config.d/storage.xml echo " 10000" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " default" >> /etc/clickhouse-server/config.d/storage.xml #echo " ${17}" >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " s3" >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " " >> /etc/clickhouse-server/config.d/storage.xml #echo " $6" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo " default" >> /etc/clickhouse-server/config.d/storage.xml echo " ${17}" >> /etc/clickhouse-server/config.d/storage.xml echo " false" >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " s3" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo " ${6}" >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " s3" >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo " " >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo "
" >> /etc/clickhouse-server/config.d/storage.xml echo "" >> /etc/clickhouse-server/config.d/macros.xml echo " " >> /etc/clickhouse-server/config.d/macros.xml echo " cluster01-${18}-${19}" >> /etc/clickhouse-server/config.d/macros.xml echo " ${18}" >> /etc/clickhouse-server/config.d/macros.xml echo " 01" >> /etc/clickhouse-server/config.d/macros.xml echo " " >> /etc/clickhouse-server/config.d/macros.xml echo "" >> /etc/clickhouse-server/config.d/macros.xml chown -R clickhouse.clickhouse /home/clickhouse/ chown -R clickhouse.clickhouse /etc/clickhouse-server/ echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf echo "* soft nproc 131072" >> /etc/security/limits.conf echo "* hard nproc 131072" >> /etc/security/limits.conf systemctl stop clickhouse-server systemctl start clickhouse-server systemctl status clickhouse-server # Restart ClickHouse sleep 5 systemctl stop clickhouse-server systemctl start clickhouse-server systemctl status clickhouse-server sleep 1