暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 openGemini 2023-02-23
416

我们知道,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 共创新,赢未来!

最后修改时间:2023-02-23 11:42:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论