MRS impala 对接haproxy,实现负载均衡

举报
kevin_chen 发表于 2020/08/19 21:55:33 2020/08/19
【摘要】 MRS impala 对接haproxy,实现负载均衡

haproxy对接impalad有以下两种模式,本质上的原理一致: 

(1)每个impalad即作为coordinator也作为worker

(2)将impalad分成两个角色,coordinator和worker, haproxy将请求转发给coordinator,由coordinator协调worker工作   




安装haproxy

入口机ECS上操作:

ECS上安装搭建:

yum install haproxy

 

修改配置文件 /etc/haproxy/haproxy.cfg

将文件中的impala-host-1.example.com等换成实际impalad节点的主机名(所有MRS Core节点)

global
    # To have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local0
    log         127.0.0.1 local1 notice
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    # turn on stats unix socket
    #stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#
# You might need to adjust timing values to prevent timeouts.
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    maxconn                 3000
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000
 
#
# This sets up the admin page for HA Proxy at port 25002.
#
listen stats :25002
    balance
    mode http
    stats enable
    stats authusername:password
 
# This is the setup for Impala. Impala client connect to load_balancer_host:25003.
# HAProxy will balance connections among the list of servers listed below.
# The list of Impalad is listening at port 21000 for beeswax (impala-shell) or original ODBC driver.
# For JDBC or ODBC version 2.x driver, use port 21050 instead of 21000.
listen impala :25003
    mode tcp
    option tcplog
    balance leastconn
 
    serversymbolic_name_1impala-host-1.example.com:21000
    serversymbolic_name_2impala-host-2.example.com:21000
    serversymbolic_name_3impala-host-3.example.com:21000
    serversymbolic_name_4impala-host-4.example.com:21000
 
# Setup for Hue or other JDBC-enabled applications.
# In particular, Hue requires sticky sessions.
# The application connects to load_balancer_host:21051, and HAProxy balances
# connections to the associated hosts, where Impala listens for JDBC
# requests on port 21050.
listen impalajdbc :21051
    mode tcp
    option tcplog
    balance source
    serversymbolic_name_5impala-host-1.example.com:21050
    serversymbolic_name_6impala-host-2.example.com:21050
    serversymbolic_name_7impala-host-3.example.com:21050
    serversymbolic_name_8impala-host-4.example.com:21050




 

启动haproxy

/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg

 

对接kerberos认证(非kerberos集群无需该操作)

方法一: 取巧方式,借助MRS内置的一个principle,MRS内置了一个haproxyfloatname名字的principle在keytab文件中

(1) 在客户端机器上

机上配置机器的FQDN haproxyfloatname    

127.0.0.1         haproxyfloatname          impala-client

image.png

(2)修改MRS Manager Impalad服务的配置

备注: 96983958_0866_4920_8A6B_8DFAD964BADD.COM要换成实际集群的域,在KDC的配置中可以看到

  服务 Impala –> 服务配置  -> Impalad自定义

impalad.customized.configs



--be_principal     impala/${HOST_NAME}@0074DEDB_2EA7_41CB_9DED_DC2780D4DD60.COM

--principal        impala/haproxyfloatname@0074DEDB_2EA7_41CB_9DED_DC2780D4DD60.COM

image.png


保存配置,并重启受影响的服务。


方法二: 开源上给出的配置方式(较麻烦,尤其是考虑后续扩容,贴出来供参考):

(1)kerberos集群需要创建一个kdc账号,并导出keytab文件,

#MRS MASTER节点上登录kdc

kadmin –p kadmin/admin 

#${HOST_NAME_HA} 需要用haproxy所在节点的主机名替代

addprinc –randkey impala/${HOST_NAME_HA}@96983958_0866_4920_8A6B_8DFAD964BADD.COM

#导出keytab

ktadd -k   /root/impala_proxy.keytab impala/${HOST_NAME}

 


(2)haproxykeytab impaladkeytab进行合并,在所有impalad节点操作:

impala/${HOST_NAME_HA}keytab拷贝到所有impalad节点/root/路径下。并和每个节点的impalad keytab进行合并。

 

#执行ktutil

ktutil

ktutil : read_kt /root/impala_proxy.keytab

ktutil: read_kt /opt/Bigdata/MRS_2.1.0/1_13_Impalad/etc/impala.keytab

#输出合并keytab的指定路径需要替换成实际路径${impala_path}

ktutil: write_kt ${impala_path}/merged_impala.keytab

ktutil: quit

 

chmod 755 ${impala_path}/merged_impala.keytab

 

3)修改MRS Manager Impalad服务的配置

备注: 96983958_0866_4920_8A6B_8DFAD964BADD.COM要换成实际集群的域,在KDC的配置中可以看到

  服务 Impala –> 服务配置  -> Impalad自定义

impalad.customized.configs


--be_principal = impala/${HOST_NAME}@96983958_0866_4920_8A6B_8DFAD964BADD.COM

--keytab_file = ${impala_path}/merged_impala.keytab

--principal= impala/${HOST_NAME_HA}.96983958_0866_4920_8a6b_8dfad964badd.com@96983958_0866_4920_8A6B_8DFAD964BADD.COM

 

保存配置,并重启受影响的服务。

 

测试

在Impala 入口机上执行(kerberos集群需要通过-b指定haproxy的域,非kerberos集群无需指定-b)

impala-shell  -i haproxyIp:25003 -k  -b ${HOST_NAME}.96983958_0866_4920_8a6b_8dfad964badd.com@96983958_0866_4920_8A6B_8DFAD964BADD.COM


测试方式二


在用户的home路径下创建.impalarc文件

[impala]

impalad= impala-client:25003

use_kerberos=true

kerberos_host_fqdn=haproxyfloatname


执行impala-shell 

 

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。