Press ESC to close

ClickHouse chproxy

ClickHouse Cluster a Client lar bağlantı kurarken bir Proxy mekanizması üzerinden veya bunun işlevini yapacak bir konfigürasyona ihtiyaç duyulmaktadır. Bunu sağlayan Thrid-Part bir çok uygulama mevcuttur. Bunlardan en kapsamlısı ise chproxy olarak görünmektedir Bazıları aşağıda verilmiştir.

KittenHouse

     Features:

  • •In-memory and on-disk data buffering.
  • •Per-table routing.
  • •Load-balancing and health checking.

ClickHouse-Bulk

     Features:

  • •Group requests and send by threshold or interval.
  • •Multiple remote servers.
  • •Basic authentication.

Aşağıdaki şekide uygulamaların cluster içerisindeki node lara doğrudan bağlantı yapması sağlandığı durum görünmektedir, böyle bir konfigürasyon için herbir application için uygun konfigürasyonun yapılması gerekmektedir.

Bir Proxy kullanıldığında ise aşağıdaki gibi bir bağlantı gerçekleşecektir.

chproxy bize neleri sağlamaktadır;

Burada ilgili konfigürasyonlar için chprox ve chproxy binary dosyası için aşağıdaki linki kullanabailir siniz;

https://www.chproxy.org/

  • kullanıcısına bağlı olarak birden fazla farklı kümeye proxy istekleri gönderilebilir .
  •  Cluster başına kullanıcıları eşleyebilir. Bu, clusterda kullanılan gerçek kullanıcı adlarının ve şifrelerin açığa çıkmasını önler, ayrıca birden fazla farklı kullanıcının bir kullanıcıya eşlenmesini sağlayabilir.
  • HTTP ve HTTPS yoluyla gelen istekleri kabul edebilir. 
  • IP/IP maskesi listeleriyle HTTP ve HTTPS erişimini sınırlayabilir.
  • Kullanıcı başına erişimi IP/IP maskesi listeleriyle sınırlayabilir.
  • Kullanıcı başına sorgu süresini sınırlayabilir. Zaman aşımına uğramış veya iptal edilen sorgular KILL QUERY aracılığıyla zorla sonlandırılır 
  • Kullanıcı başına request oranını sınırlayabilir.
  • Kullanıcı başına concurrent requests sayısını sınırlayabilir
  • Tüm sınırlar kullanıcı başına veya cluster başına kullanıcılar için ayrı ayrı ayarlanabilir.,
  • Kullanıcı başına sınırlara uyana kadar isteğin yürütülmesini geciktirebilir.
  • Kullanıcı başına cache mekanizması ayarlanabilir.
  • least-loaded tekniği ile Raund Robin olarak load balance gerçekleştirir
  • Cluster üzerindeki node ların sağlık durumlarını izler ve normal çalışmayan cluster node larında istek gönderilmesini engeller.
  •  HTTPS sertifikası verilmesini ve yenilenmesini destekler

En basit config.yml dosyası aşağıdaki gibidir;

server:
  http:
    listen_addr: ":9090"
    allowed_networks: ["127.0.0.0/24"]

users:
  - name: "default"
    to_cluster: "default"
    to_user: "default"

# by default each cluster has `default` user which can be overridden by section `users`
clusters:
  - name: "default"
    nodes: ["127.0.0.1:8123"]

Aşağıda bir konfigürasyo senaryosu bulunmakta , adım adım senaryoyu görseller üzerinde yukarıdaki özellikleri nasıl sağladığını inceleyelim; Aşağıdaki senaryoda 2 adet cluster mevcut bu clusterlara chproxy üzerinden bağlantı sağlanmaktadır;

İki farklı cluster mevcut bu cluster lara bağlanma için aşağıdaki gibi bir configurasyon yapılmıştır;

Application A ClickHouse Session Cluster a gidecektir;

chproxy ile cache mekanizması tanımlanabilmektedir; Aşağıdaki görsellerde config.yml örnekleri ile cache mekanizmasına uygulama bazlı

Cache mekanizması ile aynısorguların yeniden yeniden çalışmasını önüne geçilebilmektedir;

•Birden fazla chproxy kullanarak HA sağlanabilir, fakat bu durumda Cache mekanizması için duplikate query ler cacheden dönmeyecek ve aynı sorgular clustera gitmeye devam edecektir.

Bunu engellemek için Distrubuted Cache Mekanizması kullanılabilir (REDIS), bu durumda duplicate query lerin sürekli sunuculara gitmesi engellnecektir;

Aşağıda Distrubuted cache için örnek config verilmiştir;

chproxy yi user bazında konfigüre etmemek user şifresini açık olarak config dosyasına yazmak istmezsek, aşağıdaki gibi bir wildcard kullammamız gerekmektedir;

server:
  http:
      listen_addr: ":9090"
      allowed_networks: ["10.222.9.0/24","10.222.7.0/24"]
users:
  - name: "*"
    to_cluster: "my"
    to_user: "*"
    is_wildcarded: true
  - name: "admin"
    password: "Parola12345"
    to_cluster: "my"
    to_user: "clickadmin"


# by default each cluster has `default` user which can be overridden by section `users`
clusters:
  - name: my
    nodes: ["clicknde01.frkcvk.tgc:8123","clicknde02.frkcvk.tgc:8123","clicknde03.frkcvk.tgc:8123","clicknde04.frkcvk.tgc:8123"]
    users:
      - name: "*"
      - name: "clickadmin"
        password : "Parola123"

chproxy çalıştırmak için;

./chproxy config=/etc/clickhouse-server/chporxy/simple.yml

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir