Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. Установка пакетов

    1. Добавить репозиторий Яндекса в список репозиториев:

      Блок кода
      languagebash
      themeRDark
      sudo -s
      apt-get update
      echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" > /etc/apt/sources.list.d/clickhouse.list


    2. Установите пакеты:

      Блок кода
      languagebash
      themeRDark
      sudo apt-get install dirmngr    # optional
      sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4    # optional
      sudo apt-get update
      sudo apt-get install clickhouse-client clickhouse-server

      При установке пакета clickhouse-server запрашивается пароль для пользователя default, при пропуске этого пункта будет установлен пустой пароль.

  2. Настройка конфигурации

    1.  Настройка tcp-порта, по которому будет идти подключение клиента командной строки, , так как порт по умолчанию (9000/tcp) занят Eltex Portal
      1. Замена порта сервера. Создать в /etc/clickhouse-server/config.d/ файл listen.xml

        Блок кода
        themeRDark
        titlelisten.xml
        <?xml version="1.0"?>
         
        <yandex>
            <tcp_port>9003</tcp_port>
            <!-- <listen_host>::</listen_host> -->
        </yandex>


        Для доступа до БД с другого хоста необходимо так же изменить значение listen_host
      2. Замена порта по умолчанию клиента командной строки. Создать в /etc/clickhouse-client/conf.d/ файл port.xml



        Блок кода
        themeRDark
        titleport.xml
        <config>
            <port>9003</port>
        </config>


    2. Добавление пользователя для сервисов Eltex. Создать в /etc/clickhouse-server/users.d/ файл eltex_user.xml



      Блок кода
      themeRDark
      titleeltex_user.xml
      <?xml version="1.0"?>
      <yandex>
          <!-- Profiles of settings. -->
          <profiles>
              <eltex>
                  <!-- Maximum memory usage for processing single query, in bytes. (default 10Gb) -->
                  <max_memory_usage>10000000000</max_memory_usage>
                  <!-- Maximum execution time for query, in seconds. -->
                  <max_execution_time>60</max_execution_time>
                  <timeout_overflow_mode>throw</timeout_overflow_mode>
              </eltex>
          </profiles>
       
          <users>
              <javauser>
                  <password_sha256_hex>ce1710d7149c4daf1b38e20f4884d25660bf7da9e3ac61f1247a1a04bf50d779</password_sha256_hex>
                  <profile>eltex</profile>
       
                  <networks incl="networks" replace="replace">
                      <ip>::/0</ip>
                  </networks>
       
                  <quota>default</quota>
              </javauser>
          </users>
      </yandex>



      В профиле задаются ограничения для запросов, исходящих от пользователя с данным профилем.
    3. Для создания собственного пользователя можно в директории /etc/clickhouse-server/users.d/ создать файл user_name.xml. Добавление пользователя отдельным файлом позволит создать его на другой ноде просто скопировав файл.
      Настройка пользователя имеет следующий вид:

      Блок кода
      themeRDark
      titleuser_name.xml
      <?xml version="1.0"?>
      <yandex>
          <users>
          <!-- If user name was not specified, 'default' user is used. -->
          <user_name>
              <password></password>
              <!-- Or -->
              <password_sha256_hex></password_sha256_hex>
       
              <networks incl="networks" replace="replace">
              </networks>
       
              <profile>profile_name</profile>
       
              <quota>default</quota>
       
              <databases>
                  <database_name>
                      <table_name>
                          <filter>expression</filter>
                      <table_name>
                  </database_name>
              </databases>
          </user_name>
          <!-- Other users settings -->
      </users>
       
      </yandex>


      Пароль можно указать в текстовом виде или в виде SHA256 (шестнадцатеричный формат).
      Чтобы назначить пароль в текстовом виде (не рекомендуется), поместите его в элемент password. Можно оставить пустым. Например:

      Блок кода
      themeRDark
      <password>qwerty</password>

      Чтобы назначить пароль в виде SHA256, поместите хэш в элемент password_sha256_hex. НапрмерНапример

      Блок кода
      themeRDark
      <password_sha256_hex>d7fa342d4ec19b431ece9eea4a67fbb88ff0f72b2f332b7384de7981129e3190</password_sha256_hex>

      Пример создания пароля в командной строке:

      Блок кода
      languagebash
      themeRDark
      PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'

      Первая строка результата — пароль. Вторая строка — соответствующий ему хэш SHA256.

      В блоке networks указывается список сетей, из которых пользователь может подключиться к серверу ClickHouse.
      Каждый элемент списка имеет одну из следующих форм:

      1. <ip> — IP-адрес или маска подсети. 

        Блок кода
        Примеры: `213.180.204.3`, `10.0.0.1/8`, `10.0.0.1/255.255.255.0`, `2a02:6b8::3`, `2a02:6b8::3/64`, `2a02:6b8::3/ffff:ffff:ffff:ffff::`.


      2. <host> — Имя хоста. 

        Блок кода
        Пример: `example01.host.ru`.


        Для проверки доступа выполняется DNS-запрос, и все возвращенные IP-адреса сравниваются с адресом клиента.
      3. <host_regexp> — Регулярное выражение для имен хостов.

        Подробнее про настройку пользователя: https://clickhouse.tech/docs/ru/operations/settings/settings-users/

    4. Добавление настроек для репликации. Создать файл /etc/metrika.xml 

      Блок кода
      themeRDark
      titlemetrika.xml
      <?xml version="1.0"?>
      <yandex>
          <zookeeper-servers>
              <node index="1">
                  <host>example1</host>
                  <port>2181</port>
              </node>
              <node index="2">
                  <host>example2</host>
                  <port>2181</port>
              </node>
              <node index="3">
                  <host>example3</host>
                  <port>2181</port>
              </node>
          </zookeeper-servers>
          <macros>
              <shard>1</shard>
              <replica>replica_name</replica>
          </macros>
      </yandex>

      В zookeeper-servers  указывается Zookeeper-кластер или один сервер. В macros указывается идентификатор реплики, который будет указан в конфигурации zookeeper'а. Shard - номер шарда при использовании шардирования (разделение данных по серверам, не используется), replica - уникальное имя реплики. 

      Если в конфигурационном файле не настроен ZooKeeper, то вы не сможете создать реплицируемые таблицы, а уже имеющиеся реплицируемые таблицы будут доступны в режиме только на чтение.

    5. Добавить хосты ZooKeeper'а и нод ClickHouse'а в /etc/hosts.

  3. Запуск сервиса

    Блок кода
    languagebash
    themeRDark
    sudo service clickhouse-server start


  4. Создание БД radius и таблицы radacct

    1. Подключиться к серверу через клиент командной строки. Для входа под дефолтным пользователем можно воспользоваться следующей командой:

      Блок кода
      languagebash
      themeRDark
      clickhouse-client

      Если установлен пароль, то нужно добавить аргумент командной строки:

      Блок кода
      languagebash
      themeRDark
      clickhouse-client --password password

      Если используется не пользователь по умолчанию, то подключиться к клиенту командной строки можно так:

      Блок кода
      languagebash
      themeRDark
      clickhouse-client --user username --password password

      Можно подключаться с удаленного хоста, если там установлен клиент командной строки, с помощью аргумента командной строки -h или --host

    2. Cоздать базу данных:

      Блок кода
      languagesql
      themeRDark
      CREATE DATABASE IF NOT EXISTS radius


    3. Создать таблицу для записи аккаунтинга:

      Блок кода
      languagesql
      themeRDark
      CREATE TABLE IF NOT EXISTS radius.radacct
          (
                  acctsessionid        String,
                  acctuniqueid         String,
                  username             String,
                  groupname            String DEFAULT '',
                  domain               String,
                  realm                String DEFAULT '',
                  nasipaddress         String DEFAULT '',
                  nasportid            String DEFAULT '',
                  nasporttype          String DEFAULT '',
                  acctstarttime        DateTime,
                  acctupdatetime       DateTime,
                  acctstoptime         DateTime,
                  acctinterval         UInt32,
                  acctsessiontime      UInt32,
                  acctauthentic        String DEFAULT '',
                  connectinfo_start    String DEFAULT '',
                  connectinfo_stop     String DEFAULT '',
                  acctinputoctets      UInt64,
                  acctoutputoctets     UInt64,
                  calledstationid      String,
                  callingstationid     FixedString(17),
                  acctterminatecause   String DEFAULT '',
                  servicetype          String DEFAULT '',
                  framedprotocol       String DEFAULT '',
                  framedipaddress      String DEFAULT '',
                  acctstartdelay       UInt32 DEFAULT CAST(0, 'UInt32'),
                  acctstopdelay        UInt32 DEFAULT CAST(0, 'UInt32'),
                  xascendsessionsvrkey String DEFAULT '',
                  inputpacketsdrop     UInt64,
                  outputpacketsdrop    UInt64,
                  inputbytesdrop       UInt64,
                  outputbytesdrop      UInt64,
                  outputpacketlost     UInt64,
                  acctl2interface      String DEFAULT '',
                  acctapdomain         String,
                  acctapid             String DEFAULT '',
                  acctssid             String,
                  security             UInt8 DEFAULT 1,
                  ssidtype             UInt8 DEFAULT 0
          ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/radacct', '{replica}')
              PARTITION BY (toYYYYMM(acctstarttime), ssidtype)
              ORDER BY (acctstarttime)
              SETTINGS index_granularity = 8192;

      Если не получается создать таблицу с помощью команды выше, то можно использовать команду на создание без табуляций и переносов:

      Блок кода
      languagesql
      themeRDark
      CREATE TABLE IF NOT EXISTS radius.radacct (acctsessionid String, acctuniqueid String, username String, groupname String DEFAULT '', domain String, realm String DEFAULT '', nasipaddress String DEFAULT '', nasportid String DEFAULT '', nasporttype String DEFAULT '', acctstarttime DateTime, acctupdatetime DateTime, acctstoptime DateTime, acctinterval UInt32, acctsessiontime UInt32, acctauthentic String DEFAULT '', connectinfo_start String DEFAULT '', connectinfo_stop String DEFAULT '', acctinputoctets UInt64, acctoutputoctets UInt64, calledstationid String, callingstationid FixedString(17), acctterminatecause String DEFAULT '', servicetype String DEFAULT '', framedprotocol String DEFAULT '', framedipaddress String DEFAULT '', acctstartdelay UInt32 DEFAULT CAST(0, 'UInt32'), acctstopdelay UInt32 DEFAULT CAST(0, 'UInt32'), xascendsessionsvrkey String DEFAULT '', inputpacketsdrop UInt64, outputpacketsdrop UInt64, inputbytesdrop UInt64, outputbytesdrop UInt64, outputpacketlost UInt64, acctl2interface String DEFAULT '', acctapdomain String, acctapid String DEFAULT '', acctssid String, security UInt8 DEFAULT 1, ssidtype UInt8 DEFAULT 0) ENGINE =  ReplicatedMergeTree('/clickhouse/tables/{shard}/radacct', '{replica}') PARTITION BY (toYYYYMM(acctstarttime), ssidtype) ORDER BY (acctstarttime) SETTINGS index_granularity = 8192;


...

Выгрузка представляет собой архивы с именем, соответствущим соответствующим дате,  за которую были выгружены данные. 

...