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 |
(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 |
保存配置,并重启受影响的服务。
方法二: 开源上给出的配置方式(较麻烦,尤其是考虑后续扩容,贴出来供参考):
(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)haproxy的keytab 和impalad的keytab进行合并,在所有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
- 点赞
- 收藏
- 关注作者
评论(0)