您当前的位置: 首页 >  http

Nginx系列教程(11) - HTTP动态负载均衡(一)

杨林伟 发布时间:2019-11-14 14:24:22 ,浏览量:3

引言

传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf,类似分布式的配置中心。

  • Consul+Consul-template 每次发现配置更改需要raload nginx,重启Nginx。
  • Consul+OpenResty 实现无需raload动态负载均衡
  • Consul+upsync+Nginx 实现无需raload动态负载均衡
1.常用服务注册与发现框架

常见服务发现框架 Consul、Eureka、 ZooKeeper以及Etcd ZooKeeper是这种类型的项目中历史最悠久的之一,它起源于Hadoop。它非常成熟、可靠,被许多大公司(YouTube、eBay、雅虎等)使用。

etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。

知识补充:

在之前的《分布式电商项目》中有讲过Dubbo,可以参考下(或直接绕过这一部分):

  • 分布式电商项目 - Dubbox 简介
  • 分布式电商项目 - 注册中心 Zookeeper
  • 分布式电商项目 - Dubbox 本地 JAR 包部署与安装
  • 分布式电商项目 - 管理中心的部署

另附一篇文章: 《为什么要用dubbo,dubbo和zookeeper关系,简单的dubbo搭建》

2.Consul快速入门

Consul是一款开源的分布式服务注册与发现系统,通过HTTP API可以使得服务注册、发现实现起来非常简单,它支持如下特性。

  • 服务注册:服务实现者可以通过HTTP API或DNS方式,将服务注册到Consul。
  • 服务发现:服务消费者可以通过HTTP API或DNS方式,从Consul获取服务的IP和PORT。
  • 故障检测:支持如TCP、HTTP等方式的健康检查机制,从而当服务有故障时自动摘除。
  • K/V存储:使用K/V存储实现动态配置中心,其使用HTTP长轮询实现变更触发和配置更改。
  • 多数据中心:支持多数据中心,可以按照数据中心注册和发现服务,即支持只消费本地机房服务,使用多数据中心集群还可以避免单数据中心的单点故障。
  • Raft算法:Consul使用Raft算法实现集群数据一致性。

通过Consul可以管理服务注册与发现,接下来需要有一个与Nginx部署在同一台机器的Agent来实现Nginx配置更改和Nginx重启功能。我们有Confd或者Consul-template两个选择,而Consul-template是Consul官方提供的,我们就选择它了。其使用HTTP长轮询实现变更触发和配置更改(使用Consul的watch命令实现)。也就是说,我们使用Consul-template实现配置模板,然后拉取Consul配置渲染模板来生成Nginx实际配置。

2.1 Consul环境搭建

1.下载consul_0.7.5_linux_amd64.zip

wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip

在这里插入图片描述 2.解压consul_0.7.5_linux_amd64.zip 在这里插入图片描述 3. 执行以下 ./consul出现以下信息就说明安装成功 在这里插入图片描述 4.启动consul(我的linux Ip地址192.168.162.130)

./consul agent -dev -ui -node=consul-dev -client=192.168.162.130

在这里插入图片描述 5.新开窗口,关闭防火墙(不知道如何关闭的可以百度:关闭防火墙)

systemctl stop firewalld

6.浏览器访问http://192.168.162.130:8500 在这里插入图片描述

2.2 注册与发现服务

1.使用PostMan 注册Http服务,请求参数如下:

{"Datacenter": "dc1",
 "Node":"tomcat", 
 "Address":"192.168.5.165",
 "Service": {
	"Id" :"192.168.5.165:8080", 
	"Service": "item_jd_tomcat",
	"tags": ["dev"], 
	"Port": 8080
  }
}

在这里插入图片描述 2.发现服务,http://192.168.162.130:8500/v1/catalog/service/item_jd_tomcat 在这里插入图片描述 同时,我们也能在consul控制台可以看到页面有所改变,注册的服务多了一个。 在这里插入图片描述

总结

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 3浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0811s