千家信息网

怎么用Consul-template+Nginx实现Thrift Consul负载均衡

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下怎么用Consul-template+Nginx实现Thrift Consul负载均衡的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
千家信息网最后更新 2026年11月02日怎么用Consul-template+Nginx实现Thrift Consul负载均衡

今天小编给大家分享一下怎么用Consul-template+Nginx实现Thrift Consul负载均衡的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

整体架构

我们先看下整个框架的架构是什么样子的,这里我们有三个服务提供者和三个服务调用者,它们通过 Consul 和 Nginx,以及 Consul-template 来实现负载均衡。

说明 本例子是进行 RPC 的负载均衡,RPC 是 tcp协议,所以 Nginx 要配置 tcp 模块,支持 tcp 负载均衡。

  1. Consul 集群 用于服务注册,注册多个服务实例,对外提供 RPC 服务。

  2. Consul-template 用于实时监测 Consul 中服务的状态,配合自身一个模板文件,生成 Nginx 的配置文件。

  3. Nginx 使用自身的配置文件和第二步生成的配置文件,进行负载均衡。

Nginx安装

  1. 安装最新版 Nginx,保证 Nginx 版本在 1.9.0 以上

  2. 1.9.0 版本以上才支持 TCP 转发,据说不是默认安装了该模块,安装完成可以查询一下,如果有--with-stream参数,表示已经支持TCP。如果没有就重新编译增加参数安装。


  3. 我的 Nginx 安装在/etc/nginx目录下

  4. 安装完成使用nginx -t监测一下是否成功。

Consul-template

本文旨在负载均衡,Consul 集群搭建不作介绍。

1.下载对应系统版本文件

2.解压,并复制到PATH路径下

[silence@centos145 ~]$ tar xzvf consul-template_0.19.4_linux_amd64.tgz[silence@centos145 ~]$ mv ./consul-template /usr/sbin/consul-template

3.找个地方新建个文件夹,并创建三个文件

4.config.hcl主要用来配置consul-template的启动参数项,包括consul服务器的地址,模板文件的位置,生成的配置文件的位置等等。除了consul和template块,其他参数可选。

5.Consul块配置Consul服务器地址和端口

consul {  auth {    enabled  = false    username = "test"    password = "test"  }  address = "172.20.132.196:8500"  retry {    enabled = true    attempts = 12    backoff = "250ms"    max_backoff = "1m"  }}

6.template块配置模板的路径和生成文件的位置,以及生成文件后需要执行的命令。在我们这里我们需要nginx重新加载配置文件,所以设置的命令为nginx -s reload

template {  source = "/etc/nginx/consul-template/template.ctmpl"  destination = "/etc/nginx/consul-template/nginx.conf"  create_dest_dirs = true  command = "/usr/sbin/nginx -s reload"  command_timeout = "30s"  error_on_missing_key = false  perms = 0600  backup = true  left_delimiter  = "{{"  right_delimiter = "}}"  wait {    min = "2s"    max = "10s"  }}

7.template.ctmpl编写,因为这里只需要服务器地址和端口号就可以,所以模板文件如下:

[root@centos145 consul-template]# cat template.ctmplstream {    log_format main '$remote_addr - [$time_local] '      '$status';    access_log /var/log/nginx/tcp_access.log main;    upstream cloudsocket { \{\{range service "ad-rpc-device-server"}}server \{\{.Address}}:\{\{.Port}};{{end}}    }    server { listen 8888; proxy_pass cloudsocket;    }}

8.启动consul-template consul-template -config=./config.hcl

使用config.hcl配置文件是为了简化命令 consul-template -consul-addr=172.20.132.196:8500 -template=./template.ctmpl:./nginx.conf

9.初始的nignx.conf文件为空的,在启动后内容为

[root@centos145 consul-template]# cat nginx.confstream {    log_format main '$remote_addr - [$time_local] '      '$status';    access_log /var/log/nginx/tcp_access.log main;    upstream cloudsocket { server 172.20.139.77:8183;    }    server { listen 8888; proxy_pass cloudsocket;    }}

确保服务已经成功注册到Consul中,即可以看到服务器地址和端口已经配置进去了。

10.在nginx的安装目录的nginx.conf中引入consul-template生成的配置文件 include /etc/nginx/consul-template/nginx.conf;

注意生成的配置文件不能喝nginx本身的配置文件中内容重复!!!

11.启动一个服务实例,查看生成的nginx.conf文件会发现在upstream cloudsocket{}中会动态增加服务列表,并且随着服务的加入和离开,动态变化。

[root@centos145 consul-template]# cat nginx.confstream {    log_format main '$remote_addr - [$time_local] '      '$status';    access_log /var/log/nginx/tcp_access.log main;    upstream cloudsocket { server 172.20.139.77:8183;    }    server { listen 8888; proxy_pass cloudsocket;    }}

再启动一个,服务列表变成两个了

[root@centos145 consul-template]# cat nginx.confstream {    log_format main '$remote_addr - [$time_local] '      '$status';    access_log /var/log/nginx/tcp_access.log main;    upstream cloudsocket { server 172.20.139.77:8183;server 172.20.139.77:8184;    }    server { listen 8888; proxy_pass cloudsocket;    }}

12.thrift客户端在调用的时候只需要配置Nginx的地址和端口就可以了,不需要配置服务的地址和端口了,Nginx会自动做转发。

以上就是"怎么用Consul-template+Nginx实现Thrift Consul负载均衡"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

文件 服务 配置 生成 均衡 地址 内容 参数 服务器 模板 知识 端口 篇文章 三个 位置 命令 版本 支持 成功 动态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智能科技公司是互联网公司吗 北京互联网科技有限公司 互联网金融 科技金融 睿民互联网科技 沃里互联网科技 互联网科技的未来发展 衡水科技产业互联网平台 深圳互联网科技怎么样 互联网之后的科技是什么 昭通云南众福互联网科技有限公司 国大互联网教育科技有限公司工作 深圳艾果互联网通讯科技 科技大学互联网 世界互联网领先科技成果获奖 锡山区互联网智能科技产品供应 伍佰万互联网科技怎么赚钱 南京一网一红互联网科技有限公司 互联网领先科技活动 科技互联网专业工作会议发言稿 平安好医生打造互联网科技医疗 互联网科技海报 港股互联网科技股 科技互联网公司logo 火传媒上海互联网科技 玖二柒互联网科技公司待遇 央行互联网金融科技公司 厦门千工互联网科技有限公司 互联网科技的全部知识 杭州披云加互联网科技有限公司 前海云享互联网科技
0