美文网首页
kylin-kylin平台Job engine HA及Query

kylin-kylin平台Job engine HA及Query

作者: 李小李的路 | 来源:发表于2020-02-18 11:09 被阅读0次
  • 基于kylin-3.0

背景

  • 对于 kylin平台进行job engine HA和Query 的负载均衡;
  • kylin平台共三台机器,例如:41:job,42:query,43:all

HA配置

  • 修改kylin.properties
# 任务引擎高可用
kylin.job.scheduler.default=2
kylin.job.lock=org.apache.kylin.storage.hbase.util.ZookeeperJobLock
#
  • 需要修改kylin集群所有节点的配置
  • 测试环境
    • 43 : kylin.server.mode=all
    • 41 : kylin.server.mode=job

HA测试环境测试

  • 测试project:learn_kylin
  • 执行 refresh,可以看到 bulid engine为41,详见下图;


    41-机器build
  • 混沌测试,对41机器进行stop操作;
41-机器-stop
  • 再次执行refresh操作;可以看到build engine为43,详见下图:
43-机器build

Query负载均衡

  • 部署nginx-1.16.1 (部署过程略)
  • nginx负载均衡:
nginx支持以下负载均衡机制(或方法):
    循环 - 对应用程序服务器的请求以循环方式分发,
    最少连接 - 下一个请求被分配给活动连接数最少的服务器,
    ip-hash - 哈希函数用于确定下一个请求(基于客户端的IP地址)应该选择哪个服务器。
  • 针对于kylin query的负载均衡,采用会话持久性 即ip-hash的方式,理由如下:
    • 避免用户频繁登陆kylin web,手动输入密码;
    • 使用ip-hash,将客户端的IP地址用作散列键,以确定应该为客户端的请求选择服务器组中的哪个服务器。此方法可确保来自同一客户端的请求将始终定向到同一服务器,除非此服务器不可用。
  • 在域名解析的机器上配置比较好;
  • 测试环境:
    • 43 : kylin.server.mode=all
    • 42 : kylin.server.mode=query
  • nginx 配置文件:
    • 43:/data1/nginx_flume/server/nginx
    • nginx_kylin.conf
  • url:http://172.18.10.43:7077/kylin/login (配置过负载均衡的url,在nginx中已经将监听端口修改成了7077,所以这里的访问端口也是7077,需要注意一下)
  • 正式环境需要根据域名进行配置;
user root;
worker_processes 4;

error_log   "/data1/nginx_flume/server/nginx/logs/error.log"   notice;
pid         "/data1/nginx_flume/server/nginx/logs/nginx.pid";

events {
    use epoll;
    worker_connections  204800; 
}

http {
    include       mime.types;
    server_tokens off;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
    # 配置 request_body 大小 1m
    client_max_body_size 1M; 
    # 配置request_body 大小 1024k
    client_body_buffer_size 1024k;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    fastcgi_connect_timeout 5;
    fastcgi_send_timeout 10;
    fastcgi_read_timeout 10;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    fastcgi_intercept_errors on;

    keepalive_timeout  0;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    proxy_connect_timeout 15s;
    proxy_read_timeout 24s;
    proxy_send_timeout 10s;
    proxy_buffer_size 64k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_set_header Host $http_host;
    uninitialized_variable_warn off;


    upstream kylin_request {
        ip_hash;
        server  172.18.10.43:7070;  # query或者all节点
        server  172.18.10.42:7070;  # query或者all节点
   }
   server {
    listen              7077;
    server_name         172.18.10.43;
    location ~ ^/kylin/(.*)$ {
            proxy_pass  http://kylin_request;
     }
  }
}

  • 登陆测试(未配置域名解析下):
login
  • 查看kylin的log日志,43机器如下:


    43机器日志
  • 将43 kylin实例stop,仍进行请求,查看42机器日志;


    42机器日志

review意见

  • 有使用 AWS 服务的同学可以使用ELB进行负载均衡,因为kylin的负载均衡是HTTP层面的;
  • nginx层的负载均衡方式有很多种,可以尝试其他的链接方式进行;适合自己业务的就是最好的;

相关文章

网友评论

      本文标题:kylin-kylin平台Job engine HA及Query

      本文链接:https://www.haomeiwen.com/subject/uxtgfhtx.html