前面一篇文章提到了使用nginx来对kylin集群进行反向代理,
kylin集群使用nginx反向代理-CSDN博客文章浏览阅读349次,点赞8次,收藏9次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用scp的方式发送到其他节点即可。说明一下,192.168.200.12是我nginx的安装的节点,192.168.200.11、192.168.200.12、192.168.200.13是我3台kylin安装的节点,7070是kylin端口。对于多个节点的查询,我需要进行一下优化,所以我最终选用了nginx,对3台kylin进行了反向代理。分别运行这段代码3次,发现两次成功,成功访问到了kylin的数据,一次失败。https://blog.csdn.net/qq_40209679/article/details/135526638
我3个节点,有一个是不能查询的,通过查阅资料,有两种处理方式。
- 健康检查
- 故障转移
通过自己实际情况,我选择了节点健康检查的方式。通过查阅资料,网上说有现成的插件。所以,我直接在github上搜:nginx健康检查。出现了:
这里,我选择了Star多的一个,来进行了下载。下载后,将包放在我得nginx节点上任意一个目录,怎么安装在那里面都写好了,只需要运行下面红色的部分。
要注意的是,红色部分里面要选择和自己nginx对应的版本的patch。
下面进入nginx目录,运行:
./configure --prefix=/usr/local/nginx-1.16 --with-stream --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/ngx_healthcheck_module-master
接下来编译:
make && make install
成功后,我的nginx配置如下(我只截取修改部分):
server {
listen 81;
server_name localhost;
location /status {
healthcheck_status json;
}
location / {
proxy_pass http://192.168.200.12;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
upstream 192.168.200.12 {
server 192.168.200.11:7070;
server 192.168.200.12:7070;
server 192.168.200.13:7070;
check interval=3000 rise=2 fall=5 timeout=5000 type=tcp;
}
打开网页,输入
http://192.168.200.12:81/status?format=html
发现了:
健康状态检成功。下面进行测试,我去关闭那台设置为job的kylin(第一台)。
再次刷新网页,发现了:
那么再次回答上一章的问题,使用相同命令进行测试呢:
curl -X POST -H "Content-Type: application/json" -u admin:KYLIN -d '{"project": "test1","sql": "select * from ods.KKTEST2;"}' http://192.168.200.12:81/kylin/api/query
结果如下:
可以看到无论测试几次都成功。任务完成。