暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

高性价比OLAP列式数据库—Clickhouse(手动安装 和 依赖ckman管理工具安装)

原创 迷三张 2025-02-11
228
Clickhouse分为以下部署方式:
  1. 快速部署易于下载的二进制文件,用于使用 ClickHouse 进行测试和开发。
  2. 生产部署可选择DEB软件包、rpm包、Tgz包在任何具有 x86-64、现代 ARM(ARMv8.2-A 以上)或 PowerPC64LE CPU 架构的 Linux、FreeBSD 或 macOS 上运行。
  3. 容器部署使用 Docker Hub 中的官方 Docker 镜像。

    快速部署适用刚了解学习ck的新同学,属于本地部署后自测自玩。我们主要介绍生产部署—rpm包部署。当然我个人主张如何快捷方便且能够提高工作效率就怎么来,所以我推荐一款ck的管理工具—ckman用来管理和监控ClickHouse
集群的可视化运维工具

rpm包部署

  • 添加rpm官方存储库:
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
    • 对于带有包管理器的系统zypper
      (openSUSE、SLES):
      sudo zypper addrepo -r https://packages.clickhouse.com/rpm/clickhouse.repo -g
      sudo zypper --gpg-auto-import-keys refresh clickhouse-stable

           稍后 yum install 
      可以替换为 zypper install;
      要指定特定版本,请将其添加-$VERSION 
      到包名称末尾,例如 clickhouse-client-22.2.2.22


      • 安装 ClickHouse服务端和客户端


        在线安装:

        sudo yum install -y clickhouse-server clickhouse-client

            

            

            离线安装:
          1、rpm离线包下载地址:包含LTS 和 Stable 
          https://packages.clickhouse.com/rpm/
          2、进入下载目录安装
          rpm -ivh *.rpm
          • 修改配置文件
              vim etc/clickhouse-server/config.xml
              把<listen_host>::< listen_host><="" font="">的注释打开,这样的话才能让ClickHouse被除本机以外的服务器访问
            • 启动服务

              sudo systemctl enable clickhouse-server
              sudo systemctl start clickhouse-server
              sudo systemctl status clickhouse-server
              clickhouse-client # or "clickhouse-client --password" if you set up a password.
                  如果想要部署集群,需要在所有ClickHouse
              节点上安装ClickHouse
              rpm
              包,然后,需要修改配置文件,包括但不限于config.xml[集群信息、zk节点]
              users.xml[用户和权限]
              metrika.xml
              。注意,是所有节点上都要修改,修改完成后需要依次启动各个节点。
                  但是当集群规模不大,这些操作手动去完成可能不觉得有什么,但是如果集群规模比较大,单个集群的节点达到了上百台甚至上千台,这时候要手工去每台机器上去操作,显然变得不太现实。

                  如果需要往集群增加或者删除一个节点需要我们逐一节点进行修改各个配置文件,繁琐复杂还容易出问题,所以ClickHouse的集群运维,如果靠人工去做,不仅繁琐,容易出现各种问题,当集群规模变大后,也变得不切实际。但是ckman完美的解决了这些问题,把clickhouse的运维变得简单易操作,只需要界面点击配置。

              无需关注其他细节,也减少了出错的可能。


              ckman介绍

                  ckman
              主要的功能是管理和监控ClickHouse
              集群。因此,它的操作对象只能是ClickHouse
              集群,而不是单个ClickHouse
              节点。

              管理ClickHouse集群

              • 部署ClickHouse
                集群
              • 导入ClickHouse
                集群
              • 升级ClickHouse
                集群
              • 增加或删除集群节点
              • 对集群(或节点)进行启停
              • 实现数据再均衡
              • 存储策略配置
              • 用户权限配额控制
              • 集群配置文件最佳实践及定制化能力
              • 简单SQL
                查询能力

              监控ClickHouse集群

              • 监控ClickHouse Query
              • 监控节点系统性能指标(CPU
                Memory
                , IO
                等)
              • 监控Zookeeper
                相关指标
              • 监控集群分布式表相关指标
              • 监控副本状态相关指标
              • 监控慢SQL
                等相关指标


              ckman部署

              • 下载安装包
              在此链接中选择合适版本、合适包类型进行下载https://github.com/housepower/ckman/releases
              • 下面介绍tar.gz包安装
                解压
                  # tar -xvf ckman-v2.2.7-220715.Linux.amd64.tar.gz -C /data01/
                  ckman/
                  ckman/bin/
                  ckman/bin/ckman
                  ckman/bin/ckmanpasswd
                  ckman/bin/rebalancer
                  ckman/bin/schemer
                  ckman/bin/exporter
                  ckman/bin/purger
                  ckman/bin/migrate
                  ckman/bin/start
                  ckman/bin/stop
                  ckman/conf/
                  ckman/conf/ckman.yaml
                  ckman/conf/migrate.yaml
                  ckman/conf/password
                  ckman/conf/server.key
                  ckman/conf/server.crt
                  ckman/run/
                  ckman/logs/
                  ckman/package/
                  ckman/dbscript/
                  ckman/dbscript/postgres.sql
                  ckman/README.md
                  • 修改配置文件ckman.yaml

                    # cd /data01/ckman/conf
                    # cat ckman.hjson 
                    // ckman config file
                    // All password can be encrypt by ENC(xxxxxxxxx),
                    // you can get encrypt password by using: ./ckman --encrypt 123456 to get password like: E310E892E56801CED9ED98AA177F18E6
                    // If password not including by ENC(), that means it's a plaintext.
                    // hjson(https://hjson.github.io/)  is easy for humans to read and write.


                    {
                      "server":{
                        "id": 1,  # 第二台ckman写2
                        "port": 8808,
                        "https": false,
                        certfile:
                        keyfile:
                        "pprof": true,
                        "session_timeout": 3600,
                        support local, mysql, postgres
                        "persistent_policy": "mysql",  # ckman多节点部署,选择mysql
                        "task_interval": 5
                        "public_key": MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9IARaXJGPLOLsVqHVCI9xLSna4EaKWU6nHEUOHFvYG9LbLMm9h6DY8XJsC/ieO4wRZcqQnUObuhm42Ss7lDf1Wvs9cUZaUlznt6+iby0ehwj/ikp67p3R7Njyg0LCxAbnJJYK98/cFuKm1h5x64iUb5gYvUL0Yr9zSFw2g+7Z8QIDAQAB
                      },


                      "log":{
                        "level": "INFO",
                        "max_count": 5,
                        megabyte
                        "max_size": 10,
                        day
                        "max_age": 10
                      },


                      / clickhouse connect pool options
                      "clickhouse":{
                        //sets the maximum number of open connections to the database
                        "max_open_conns": 10,
                        //sets the maximum number of connections in the idle
                        "max_idle_conns": 2,
                        //sets the maximum amount of time a connection may be idle.
                        "conn_max_idle_time": 10
                      },


                      // cron job task
                      "cron":{
                        "sync_logic_schema": "0 * * * * ?",
                        "watch_cluster_status": "0 */3 * * * ?",
                        "sync_dist_schema": "30 */10 * * * ?"
                      },


                      "persistent_config":{ 
                        // if peristent_policy is mysql, must config this
                        "mysql":{
                          "host": "10.235.9.183",
                          "port": 3306,
                          "user": "root",
                          // you can use ./ckman --encrypt 123456 to get password like: E310E892E56801CED9ED98AA177F18E6
                          "password": "ENC(727889C6518DEBEAF7A9B78ECFBBF454)",
                          // database must be created before start ckman
                          "database": "ckman_db"
                        },
                      //  "local":{
                      //    "format": "json"
                      //    "config_dir": "/etc/ckman/conf"
                      //    "config_file": "clusters"
                      //  }
                      },


                      "nacos":{
                        "enabled": true,
                        "hosts":[
                          "10.235.9.183"
                          "10.235.9.184"
                          "10.235.9.185"
                        ],
                        "port": 8848,
                        "user_name": "nacos",
                        // you can use './ckman --encrypt nacos' to get password like: A7561228101CB07938FAFF00C4444546
                        "password": "ENC(8C260900DAC9905504FBFBBF0A742EA9FF5F76996D715E66008304B933E82B81C50E7C9EF4B85140BE2FDA06E8C11F86)",
                        //namespace:
                      }
                    }
                    • 选择mysql进行持久化
                      • 配置mysql 和 注册到nacos中
                        • mysql创建ckman 数据库

                          # mysql -uroot -pMySQL@123
                          create database ckman_db;
                          • 启动ckman

                            # sh bin/start 
                            ckman is used to manager and monitor clickhouse
                            ckman-v2.2.7 is running...
                            See more information in /data01/ckman/logs/ckman.log


                            # netstat -lntup | grep 8808
                            tcp6       0      0 :::8808                 :::*                    LISTEN      31275/ckman  
                            • 访问ckman,默认账号 ckman/Ckman123456!


                            到此安装完了ckman~~~~~下面我们通过ckman安装ClickHouse集群!



                            ClickHouse安装


                            • 上传ClickHouse 数据库安装包【在我上述提到的下载离线包地址中提前下载


                            如果此步骤报错

                            原因:认证方法使用的是root账号,认证方式使用的公钥,需要把ClickHouse安装服务器的公钥拷贝到/data01/ckman/conf目录下。

                            • 创建集群配置步骤

                            • 开始创建
                            • 集群查看

                            • 点击进入集群





                            ClickHouse官网地址:
                            https://clickhouse.tech/
                            ckman开源地址:
                            https://github.com/housepower/ckman

                            更多想了解的其他信息,大家伙也可以到官网查看~~~~~


                            欢迎微信扫描二维码,关注我的公众号~~


                            最后修改时间:2025-02-17 13:17:16
                            文章转载自迷三张,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论