非root用户安装clickhouse集群


官方中文文档:https://clickhouse.tech/docs/zh/

1. 环境要求

检查当前CPU是否支持SSE 4.2的命令,咱也不知道为什么,官方这样说的

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

官方安装包下载地址:https://github.com/ClickHouse/ClickHouse/releases

2. 安装脚本

安装用户名:clickhouse
home目录:/home/clickhouse

编辑安装脚本

vim install.sh

内容如下,可以根据实际情况修改脚本

#默认用户密码
PLAIN_PASSWORD=123123
HOUSE_VERSION=v21.5.6.6-stable
LATEST_VERSION=21.5.6.6
wget https://github.com//ClickHouse/ClickHouse/releases/download/$HOUSE_VERSION/clickhouse-common-static-$LATEST_VERSION.tgz
wget https://github.com//ClickHouse/ClickHouse/releases/download/$HOUSE_VERSION/clickhouse-server-$LATEST_VERSION.tgz

#解压
tar -zxvf clickhouse-common-static-$LATEST_VERSION.tgz
tar -zxvf clickhouse-server-$LATEST_VERSION.tgz


#修改配置文件路径
CONFIG_DIR=/home/clickhouse/clickhouse-server/conf
mkdir -p $CONFIG_DIR
mkdir -p /home/clickhouse/clickhouse-server/logs

cp /home/clickhouse/clickhouse-server-$LATEST_VERSION/etc/clickhouse-server/config.xml $CONFIG_DIR/config.xml
cp /home/clickhouse/clickhouse-server-$LATEST_VERSION/etc/clickhouse-server/users.xml $CONFIG_DIR/users.xml


#配置环境变量
echo "CLICK_HOUSE_HOME=/home/clickhouse/clickhouse-common-static-$LATEST_VERSION/usr/bin" >> ~/.bash_profile
echo 'export PATH=$PATH:$CLICK_HOUSE_HOME' >> ~/.bash_profile
source ~/.bash_profile

# 脚本修改配置文件路径 
# sed -i 's/源字符串/新字符串/g'
SERVER_CONFIG_PATH=$CONFIG_DIR/config.xml
#修改日志存储
sed -i 's/\/var\/log\/clickhouse-server\/clickhouse-server.log/\/home\/clickhouse\/clickhouse-server\/logs\/clickhouse-server.log/g' $SERVER_CONFIG_PATH 

sed -i 's/\/var\/log\/clickhouse-server\/clickhouse-server.err.log/\/home\/clickhouse\/clickhouse-server\/logs\/clickhouse-server.err.log/g' $SERVER_CONFIG_PATH 
#修改数据存储
sed -i 's/\/var\/lib\/clickhouse\//\/home\/clickhouse\/data\//g' $SERVER_CONFIG_PATH
#修改ddl存储路径
sed -i 's/\/clickhouse\/task_queue\/ddl/\/home\/clickhouse\/task_queue\/ddl/g' $SERVER_CONFIG_PATH 

echo "修改监听host 所有客户端都可以访问"
sed -r -i "/<listen_host>::<\/listen_host>/ s/.*/<listen_host>::<\/listen_host>/" $SERVER_CONFIG_PATH

# 修改默认用户脚本
echo 生成sha256 密码
PASSWORD=$(printf "%s" $(printf "%s" "$PLAIN_PASSWORD"|sha256sum| tr -d '-')| sed 's/ //g')

echo "设置hash密码 : $PASSWORD"
sed -r -i "/<password><\/password>/ s/.*/<password_sha256_hex>$PASSWORD<\/password_sha256_hex>/" $CONFIG_DIR/users.xml

echo "修改用户访问权限"
sed -r -i "/<access_management>1<\/access_management>/ s/.*/<access_management>1<\/access_management>/" $CONFIG_DIR/users.xml

echo "执行完成!"

执行安装脚本

sh install.sh

3. 配置说明

配置文件:clickhouse-server/conf/config.xml

详细配置说明请参考官方文档:https://clickhouse.tech/docs/zh/operations/server-configuration-parameters/settings/

4. 编写启停脚本

vim server.sh

配置请根据实际情况配置,内容如下:

#进程id地址
CH_PID_FILE=$HOME/clickhouse-server/clickhouse_server.pid
#启动的配置地址
CH_CONFIG_PATH=$HOME/clickhouse-server/conf/config.xml
#nohup 输出log 地址
CH_DAEMON_OUT=$HOME/clickhouse_server.log
case $1 in
start)
     echo  -n "Starting clickhouse sever ... "
     if [ -f "$CH_PID_FILE" ]; then
       if kill -0 `cat "$CH_PID_FILE"` > /dev/null 2>&1; then
          echo $command already running as process `cat "$CH_PID_FILE"`.
          exit 1
       fi
     fi
     . ~/.bash_profile
     clickhouse server -P=$CH_PID_FILE -C=$CH_CONFIG_PATH --daemon
     sleep 2
     pid=$(cat "${CH_PID_FILE}")
    if ps -p "${pid}" > /dev/null 2>&1; then
      echo STARTED
    else
      echo FAILED TO START Please check the logs
      exit 1
    fi
;;

stop)
        echo -n "stopping clickhouse server ..."
        if [ ! -f "$CH_PID_FILE" ]
        then
          echo "no clickhouse sever to stop (could not find file $CH_PID_FILE)"
        else
          kill $(cat "$CH_PID_FILE")
          sleep 1
          echo STOPPED
        fi
        exit 0

;;

*)
        echo "Usage: $0 {start|stop}"
;;
esac


1. 执行启动

sh server.sh start

2. 执行停止

sh server.sh stop

3. 连接服务

clickhouse client --password=123123

5. 集群搭建

clickhouse集群=zookeeper集群+clickhouse集群配置

zookeeper集群搭建

1.环境准备

  1. 需要安装java运行环境,我这里安装的是1.8,略。

  2. 下载zookeeper包

    wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
    

2. 安装zookeeper

  1. 解压tar包

     tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
    
  2. 进入

    cd apache-zookeeper-3.6.3-bin/conf
    
  3. 复制配置文件

    cp zoo_sample.cfg zoo.cfg
    
  4. 修改配置文件如下

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/data/zookeeper/
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    
    ## Metrics Providers
    #
    # https://prometheus.io Metrics Exporter
    #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
    #metricsProvider.httpPort=7000
    #metricsProvider.exportJvmInfo=true
    server.0=192.168.2.2:2888:3888
    server.1=192.168.2.3:2888:3888
    server.2=192.168.2.4:2888:3888
    
    
  5. 在对应机器上设置myid

    #假设当前机器是server.0,需要在$dataDir目录下写一个myid文件。其他机器myid的值也是与配置对应的。
    echo "0" > /data/zookeeper/myid
    
  6. 配置说明

参数名说明
tickTime默认值:3000(ms),不支持系统属性方式配置。用于配置zookeeper集群中节点之间维持心跳的时间间隔,同时,它也是zookeeper中最小的时间长度单元,很多运行时的时间间隔都是使用它的倍数来表示的。
initLimitZookeeper集群中的Leader 节点接收其他Follower节点初始化连接等待的最大时间(10*tickTime),如果Leader 节点在这段时间内还未接收到Follower节点的返回信息,则连接失败。
syncLimitZookeeper集群中的Leader 节点和其他Follower节点通信的最大等待时间(5*tickTime)。
dataDir无默认值,必须配置。服务器存储快照文件目录。默认情况下,如果没有配置dataLogDir,那么事务日志也会存储在这个目录中。建议将事务日志目录独立配置。
clientPort无默认值,必须配置,不支持系统属性方式配置。当前服务器对外提供服务端口,客户通过此端口与服务器建立连接,一般设置为2181。集群中不需要统一端口,可任意配置端口。
server.A=B:C:DA:节点在集群中的唯一ID,需要与dataDir/myid文件中的内容保持一致,取值范围为1~255
B:节点的服务器IP地址。
C:集群中Follower节点与Leader 节点之间通信的端口。
D:当集群中的Follower节点宕机或出现故障时,集群进行重新选举Leader时所使用的端口。

3.启动

  1. 进入zookeeper的 bin目录依次启动上面的集群

    ./zkServer.sh start
    
  2. 全部启动完毕后,查看节点状态

    ./zkServer.sh status
    

clickhouse集群配置

推荐一个帮助理解的数据分片、备份文章:https://tianjinsong.blog.csdn.net/article/details/83011794

1. 创建一个metrika.xml

vim /home/clickhouse/clickhouse-server/conf/metrika.xml

内容如下:

<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
	<!-- 集群名称dev -->
    <dev>
        <!-- 数据分片1  -->
        <shard>
            <!-- 开启表自身同步建议生产开启 -->
            <internal_replication>true</internal_replication>
            <!-- 副本 s1r1 -->
            <replica>
                <host>ck31.xxxx.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
            <!-- 副本 s1r2-->
            <replica>
                <host>ck31.xxxx.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
        </shard>

        <!-- 数据分片2  -->
        <shard>
            <internal_replication>true</internal_replication>
            <!-- 副本 s2r1-->
            <replica>
                <host>ck32.xxxx.sina.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
            <!-- 副本 s2r2-->
            <replica>
                <host>ck31.xxxx.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
        </shard>

        <!-- 数据分片3  -->
        <shard>
            <internal_replication>true</internal_replication>
             <!-- 副本 s3r1-->
            <replica>
                <host>ck33.xxxxa.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
            <!-- 副本 s3r2-->
            <replica>
                <host>ck33.xxxxa.com.cn</host>
                <port>9000</port>
                <user>default</user>
                <password>123123</password>
            </replica>
        </shard>
    </dev>
</clickhouse_remote_servers>

<!-- 本节点分片id+ 副本id -->
<macros>
    <shard>01</shard>
    <replica>01</replica>
</macros>
<!-- 监听网络(貌似重复) -->
<networks>
   <ip>::/0</ip>
</networks>
<!-- ZK  -->
<zookeeper-servers>
  <node index="1">
    <host>1.xxxx.sina.com.cn</host>
    <port>2181</port>
  </node>
  <node index="2">
    <host>2.xxxx.sina.com.cn</host>
    <port>2181</port>
  </node>
  <node index="3">
    <host>3.xxxxp.sina.com.cn</host>
    <port>2181</port>
  </node>
</zookeeper-servers>
<!-- 数据压缩算法  -->
<clickhouse_compression>
    <case>
      <min_part_size>10000000000</min_part_size>
      <min_part_size_ratio>0.01</min_part_size_ratio>
      <method>lz4</method>
    </case>
</clickhouse_compression>
</yandex>

2.引入merika.xml

在config.xml文件中的yandex 标签内 修改对应标签如下 没有则添加。

<!-- incl 指定配置标签 对应metrika的标签配置 -->
<!-- 集群配置 -->
<remote_servers incl="clickhouse_remote_servers" />
<!-- zookeeper配置 -->
<zookeeper incl="zookeeper-servers" optional="true" />
<!-- macros配置,复制表的参数替换,如果不使用复制表,则可以省略 -->
<macros incl="macros" optional="true" />
<!-- 压缩算法配置 -->
<compression incl="clickhouse_compression" />
<!-- 引入上面的配置文件 -->
<include_from>/home/clickhouse/clickhouse-server/conf/metrika.xml</include_from>

config.xml 如果是正确修改,那么服务会自动加载,无需重启。


6. 问题整理

  1. 因为8123端口被其他应用占用,我修改为<http_port>8122</http_port>,启动报错:
DB::Exception: Listen [::]:8122 failed: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = DNS error: EAI: Address family for hostname not supported

解决办法:修改config.xml文件

<listen_host>0.0.0.0</listen_host>

记录一小步,成长一大步。有问题欢迎大家在评论区讨论。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值