openGemini+Nginx:集群访问负载均衡

原创
2023/08/25 17:31
阅读数 147

我们知道,openGemini集群由ts-sql, ts-store和ts-meta三个组件组成,其中ts-sql负责处理客户端请求,在并发量比较大的业务场景中,通常需要部署多个ts-sql,以分担压力,如下图所示:

这种情况下,客户端需要同时管理多个与ts-sql的连接,以及维护多ts-sql之间的负载均衡,稍显复杂。那么有没有更好的办法?

答案是肯定的。如果在客户端和集群之间设置一个反向代理,那么事情就变得简单多了,客户端仅需要维护与反向代理的连接,其余的工作交由反向代理来完成。如下图所示:

什么是反向代理?

简单来说,反向代理是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

Nginx反向代理

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。除此之外,Nginx作为反向代理服务器,包含多种负载均衡算法(如轮询、最少连接数、IP Hash、Generic Hash、最小时延以及随机算法),可通过设置某个ts-sql权重以此改变其负载,还提供连接数限制,达到流量控制的目的,同时,Nginx具有链路健康自动监测,持续测试ts-sql是否发生故障,一旦发现有ts-sql节点故障,会将失败的ts-sql地址从负载均衡组中移除,待节点被重新拉起后,再自动重新加入。

openGemini搭配Nginx反向代理,非常高效解决了openGemini集群的负载均衡问题,接下来以下图所示部署场景为例,对Nginx的反向代理配置进行详细说明。

环境准备

Nginx安装

https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/

openGemini安装

https://github.com/openGemini/community

Nginx反向代理配置

Nginx的关键配置如下所示:


{
  # 设置Nginx并发处理的worker数量,可以为具体数值,也可以设置为auto
  # 通常建议为节点CPU的核数
  worker_processes auto;
  
  events {
    # Nginx处理的最大连接数(这里可以进行数据库流控),默认为1024
    # 需根据业务实际运行情况进行调整。
    worker_connections  1024;
  }
  http {
    
    # 负载均衡默认采用轮询方法
    upstream openGemini {
      server 192.168.0.1:8086;
      server 192.168.0.2:8086;
      server 192.168.0.3:8086;
    }
    server {
      # 可按IP:Port形式指定Nginx监听地址和端口,默认是在所有地址监听
      # 8086是openGemini ts-sql组件默认的服务监听端口,这里可以修改为其他
      listen 8086;
      # location 后面的斜线‘/’不能少
      location / {
        # 这里的openGemini(可修改)与upstream 后面配置的名称(openGemini)
        # 需保持一致,否则无法转发
        proxy_pass http://openGemini;
      }
    }
  }
}

配置修改后,需要重启Nginx才能生效

测试验证

客户端连接Nginx反向代理

客户端写入数据和查询

总结

至此我们介绍完如何配置Nginx反向代理解决openGemini集群中多个ts-sql节点的负载均衡问题,您可以了解到 Nginx丰富的反向代理功能与 openGemini强大的横向扩展能力。一些更实用的功能(比如动态配置)仅在Nginx Plux(收费)版本提供。需要提醒的是,这套搭配中,Nginx可能成为风险瓶颈,一旦故障,应用将会受到影响,用户可以进一步研究虚拟IP+keeplalived+nginx的方案来实现Nginx的高可靠。

关注openGemini,我们将为您带来更多实用解决方案,同时我们期待与更多伙伴携手,打造更多行业解决方案,共同推动技术创新。


openGemini 官网:http://www.openGemini.org

openGemini 开源地址:https://github.com/openGemini

openGemini 公众号:

欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部