前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HAProxy实现HiveServer2负载均衡

HAProxy实现HiveServer2负载均衡

原创
作者头像
hallelujah
修改2018-10-17 15:52:41
2.5K0
修改2018-10-17 15:52:41
举报
文章被收录于专栏:大数据技术分享

1. 安装 HAProxy

代码语言:javascript
复制
[root@master ~]# yum -y install haproxy

2. 设置HAProxy配置

代码语言:javascript
复制
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 hive 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 #--------------------------------------------------------------------- # 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

3. 开启HAProxy代理服务

代码语言:javascript
复制
[root@master ~]# Service haproxy start

开启: service haproxy start 或 systemctl start haproxy

关闭: service haproxy stop 或 systemctl stop haproxy

重启: service haproxy restart 或 systemctl restart haproxy

开机自启动: chkconfig haproxy on

4. Hive中设置代理地址与端口,重启相关服务

5. Hue中设置HiveServer2的负载均衡,重启相关服务

hive_server_host:HAProxy服务的HOSTNAME或IP

hive_server_port:HAProxy中配置监听的Hive端口

注: 在配置Hive的HAProxy时,需要将负载均衡策略指定为 "balance source",否则在Hue中执行SQL时会提示 "Results have expired, return query ifneeded"。

6. 测试

- 开启两个节点的HiveServer2实例,访问Hue并执行Hive SQL,查看是否正常。

- 开启master节点的HiveServer2实例,关闭nns节点的HiveServer2,访问Hue并执行Hive SQL,查看是否正常。

- 开启nns节点的HiveServer2实例,关闭master节点的HiveServer2,访问Hue并执行Hive SQL,查看是否正常。

7. beeline测试

使用多个终端同时访问,并执行SQL,查看是否会通过HAProxy服务自动负载均衡到其他HiveServer2节点。

如下所示,多个终端执行的SQL不在同一个HiveServer2节点上,说明已实现HiveServer2负载均衡。

8.HiveJDBC测试

在此注明: 测试环境我测试连接成功了,线上环境始终连接不成功,正在找问题, 待解决后更新。

9. 开启Kerberos安全认证后HiveServer2的负载均衡

haproxy配置如上第2步骤不变,仅改如下配置

由原来的 0.0.0.0:25005 改成 master:25005

10. 开启Kerberos下,用beeline 测试 HiveServer2的负载均衡

使用多个终端同时访问,并执行SQL,查看是否会通过HAProxy服务自动负载均衡到其他HiveServer2节点。

在此本人用test用户进行测试,首先对test用户进行身份验证

打开一个终端,进行如下

如下图此时我链接的是hiveServer2的链接

再打开另一个终端,进行相同操作,此时链接的是hiveServer1链接

10.开启Kerberos下 HiveJDBC测试

在此注明: 测试环境我测试连接成功了,线上环境始终连接不成功,正在找问题, 待解决后更新。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档