1. 安装 HAProxy
[root@master ~]# yum -y install haproxy
复制
2. 设置HAProxy配置
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
vim /etc/haproxy/haproxy.cfg
复制
#--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global log 127.0.0.1 local2 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 #--------------------------------------------------------------------- defaults mode http#mode { tcp|http|health },tcp 表示4层,http表示7层,health仅作为健康检查使用 log global option httplog option dontlognull #option http-server-close #option forwardfor except 127.0.0.0/8 #option abortonclose##连接数过大自动关闭 option redispatch#如果失效则强制转换其他服务器 retries 3#尝试3次失败则从集群摘除 timeout http-request 10s timeout queue 1m #timeout connect 10s #timeout client 1m #timeout server 1m timeout connect 1d#连接超时时间,重要,hive查询数据能返回结果的保证 timeout client 1d#同上 timeout server 1d#同上 timeout http-keep-alive 10s timeout check 10s#健康检查时间 maxconn 3000#最大连接数 listen status#定义管理界面 bind 0.0.0.0:1080#管理界面访问IP和端口 mode http#管理界面所使用的协议 option httplog maxconn 5000#最大连接数 stats refresh 30s#30秒自动刷新 stats uri /stats listen jdbchive bind 0.0.0.0:25005#ha作为proxy所绑定的IP和端口 mode tcp#以4层方式代理,重要 option tcplog balance source#调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分 server hiveServer1 master:10000 check server hiveServer2 nns:10000 check listen impalashell bind 0.0.0.0:25003#ha作为proxy所绑定的IP和端口 mode tcp#以4层方式代理,重要 option tcplog balance leastconn#调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分 server impalashell_dn1 dn1:21000 check server impalashell_dn2 dn2:21000 check server impalashell_dn3 dn3:21000 check server impalashell_dn4 dn4:21000 check server impalashell_dn5 dn5:21000 check listen impalajdbc bind 0.0.0.0:25004#ha作为proxy所绑定的IP和端口 mode tcp#以4层方式代理,重要 option tcplog balance source#调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分 server impalajdbc_dn1 dn1:21050 check server impalajdbc_dn2 dn2:21050 check server impalajdbc_dn3 dn3:21050 check server impalajdbc_dn4 dn4:21050 check server impalajdbc_dn5 dn5:21050 check #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main *:5000 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static default_backend app #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static balance roundrobin server static 127.0.0.1:4331 check #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app balance roundrobin server app1 127.0.0.1:5001 check server app2 127.0.0.1:5002 check server app3 127.0.0.1:5003 check server app4 127.0.0.1:5004 check |
---|
注: Impala守护进程Beeswax端口21000映射到haproxy 25003
Impala守护进程HiveServer2端口21050映射到haproxy 25004
3. 开启HAProxy代理服务
[root@master ~]# Service haproxy start
复制
开启: service haproxy start
关闭: service haproxy stop
重启: service haproxy restart
开机自启动: chkconfig haproxy on
访问 http://{hostname}:1080/stats
表示在Haproxy中已正常配置Impala服务。
以上HAProxy实现Impala的负载均衡。
4.Hue中设置Impala的负载均衡,重启相关服务
server_host:HAProxy服务的HOSTNAME或IP
server_port:HAProxy中配置监听的Impala的端口
5. Impala shell 测试
使用多个终端同时访问,并执行SQL语句,查看是否会通过HAProxy服务自动负载到其它Impala Daemon节点。
打开第一个终端访问并执行SQL
打开第一个终端访问并执行SQL
通过以上测试可以看到,两个终端执行的SQL不在同一个Impala Daemon,这样就实现了Impala Daemon服务的负载均衡。
6. ImpalaJDBC测试
在此注明: 测试环境我测试连接成功了,线上环境始终连接不成功,正在找问题, 待解决后更新。
7. Kerberos 环境下 Impala 负载均衡
在此,我的Haproxy服务安装在了master节点上,所以此处填写master:25003
8. Kerberos环境下 Impala shell 测试
使用多个终端同时访问,并执行SQL语句,查看是否会通过HAProxy服务自动负载到其它Impala Daemon节点。
在此本人用test用户进行测试,首先对test用户进行身份验证
第一个终端:
第二个终端:
通过以上测试可以看到,两个终端执行的SQL不在同一个Impala Daemon,这样就实现了Impala Daemon服务的负载均衡。
问题1: 集群启用Kerberos后,应用impala-shell 进行全表查询或这count查询,报错。待查找原因。
9. Kerberos 环境下 ImpalaJDBC测试
在此注明: 待解决后更新。