美文网首页
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