基于Consul+Upsync+Nginx实现动态负载均衡
基于Consul+Upsync+Nginx实现动态负载均衡
1、Consul环境搭建
下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录
cd /usr/local/src
wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
解压consul_0.7.5_linux_amd64.zip
需要先确认是否安装了unzip,如果没有安装先安装zip unzip
yum install -y zip unzip
mkdir /usr/local/consul
unzip consul_0..5_linux_amd64.zip -d /usr/local/consul
启动consul
/usr/local/consul/consul agent -dev -ui -node=consul-dev -client=192.168.100.121
(此ip为当前服务器的局域网ip,请勿配置公网ip)
临时关闭防火墙
systemctl stop firewalld
测试:浏览器访问192.168.100.121:8500
2、安装nginx1.9.10以上版本,并且安装nginx-upsync-module模块
nginx-upsync-module是新浪微博开源插件,在此作用为:
拉取 consul 的后端 KV的列表,并更新 Nginx 的路由信息。此模块不依赖于任何第三方模块。
consul 作为 Nginx 的 db,利用 consul 的 KV 服务,每个 Nginx work 进程独立的去拉取各个upstream 的配置,并更新各自的路由信息从而达到动态负载均衡,不去重启nginx。
下载nginx:
wget http://nginx.org/download/nginx-1.9.10.tar.gz
下载nginx-upsync-module:
wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip
解压nginx-upsync-module
unzip master.zip
解压nginx
tar -zxvf nginx-1.9..tar.gz
配置nginx前置环境目录
groupadd nginx useradd -g nginx -s /sbin/nologin nginx mkdir -p /var/tmp/nginx/client mkdir -p /usr/local/nginx
编译Nginx
cd /usr/local/src/nginx-1.9. ./configure --prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_flv_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-http_realip_module
--http-client-body-temp-path=/var/tmp/nginx/client/
--http-proxy-temp-path=/var/tmp/nginx/proxy/
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--http-scgi-temp-path=/var/tmp/nginx/scgi
--with-pcre
--add-module=/usr/local/src/nginx-upsync-module-master 编译的是报错
./configure: error: SSL modules require the OpenSSL library.
解决办法
yum -y install openssl openssl-devel make && make instal
创建持久化日志目录:
mkdir -p /usr/local/nginx/conf/servers/
配置nginx.conf文件:
http {
include mime.types;
default_type application/octet-stream; sendfile on; #keepalive_timeout ;
keepalive_timeout ; #gzip on;
upstream product{
#用于心跳检测
server 127.0.0.1:;
#去consul的KV拉取上游服务器信息
upsync 192.168.100.121:/v1/kv/upstreams/itchao
upsync_timeout=6m upsync_interval=500ms
upsync_type=consul strong_dependency=off;
#存放拉取到的上游服务器信息,/usr/local/nginx/conf/servers 这个目录需要创建
upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;
}
server {
listen ;
server_name localhost;
location / {
# root html;
#反向代理配置
proxy_pass http://product;
index index.html index.htm;
}
}
}
进入consul管理端创建KV服务信息
也可以通过postman添加集群服务器信息:
PUT 请求:
http://192.168.199.10:8500/v1/kv/upstreams/product/192.168.100.1:8080 .使用linux命令方式发送put请求
curl -X PUT http://192.168.199.10:8500/v1/kv/upstreams/product/192.168.100.1:8080
curl -X PUT http://192.168.199.10:8500/v1/kv/upstreams/product/192.168.100.1:8081 .使用postmen 发送put请求
http://192.168.199.10:8500/v1/kv/upstreams/product/192.168.100.1:8080
http://192.168.199.10:8500/v1/kv/upstreams/product/192.168.100.1:8081 192.168.100.1: 代表需要负载的上游服务器地址以及端
查看从consul拉取的上游服务器信息:
cat /usr/local/nginx/conf/servers/servers_test.conf
基于Consul+Upsync+Nginx实现动态负载均衡的更多相关文章
- 【Nginx】基于Consul+Upsync+Nginx实现动态负载均衡
一.Http动态负载均衡 什么是动态负载均衡 动态负载均衡实现方案 常用服务器注册与发现框架 二.Consul快速入门 Consul环境搭建 三.nginx-upsync-module nginx-u ...
- Consul+upsync+Nginx实现动态负载均衡 摘自https://blog.csdn.net/qq_29247945/article/details/80787014
传统感念:每次修改完nginx配置文件,要重启nginx 动态感念:每次修改完nginx配置信息,不需要重启,nginx实时读取配置信息. Nginx: 反向代理和负载均衡 Consul:是用go编写 ...
- Consul+upsync+Nginx实现动态负载均衡
上一篇文章 <C# HttpClient 使用 Consul 发现服务> 解决了内部服务之间的调用问题, 对外提供网关服务还没有解决, 最后我选择了 nginx-upsync-module ...
- Nginx 实现动态负载均衡(Nginx-1.10.1 + Consul v0.6.4)
一直也没有找到合适的类似Socat + Haproxy 的组合能用在Nginx,后来发现了Nginx的几个模块,但是也存在各种不足. 而且Nginx 在大流量的情况下nginx -s reload 是 ...
- 《nginx 三》实现nginx的动态负载均衡——实战
Http动态负载均衡 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件, 因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upst ...
- Consul+upsync+Nginx 动态负载均衡
1,动态负载均衡 传统的负载均衡,如果修改了nginx.conf 的配置,必须需要重启nginx 服务,效率不高.动态负载均衡,就是可配置化,动态化的去配置负载均衡. 2,实现方案 1. Consul ...
- 通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布
前提 前段时间顺利地把整个服务集群和中间件全部从UCloud迁移到阿里云,笔者担任了架构和半个运维的角色.这里详细记录一下通过Nginx.Consul.Upsync实现动态负载均衡和服务平滑发布的核心 ...
- 动态负载均衡(Nginx+Consul+UpSync)环境搭建
首先 安装好 Consul upsync 然后: 1.配置安装Nginx 需要做配置,包括分组之类的,创建目录,有些插件是需要存放在这些目录的 groupadd nginx useradd -g ng ...
- 动态负载均衡(Nginx+Consul+UpSync)
Http动态负载均衡 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件, 因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upst ...
随机推荐
- unity, 导出对象到另一个项目
----更新(2015-6-26): 今天又试了一下,有时候prefabs不用导出直接拷贝过去也能用,但有时候不行.还不太清楚原因. ----旧帖: 一,正确做法: 一个对象包括资源和Hierarch ...
- linux下C++的man文件安装
GCC提供了一份c++的man文档,地址:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/ 下载最新版的文档,比如:libstdc++-api.20140403 ...
- 判断是否是IE浏览器和是否是IE11
判断是否是IE浏览器用下面这个函数, function isIE() { //ie? 是ie返回true,否则返回false if (!!window.ActiveXObject || "A ...
- spring 发布 Jax-Ws Service (二)
Service import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import ja ...
- 03、Windows Phone 套接字(Socket)实战之WP客户端设计
因为 PC 端和 WP 端进行通信时,采用的自定义的协议,所以也需要定义 DataType 类来判断 通信数据的类型,并且把数据的描述信息(head) 和数据的实际内容(body)进行拼接和反转,所以 ...
- Django接受ajax传过来的数组
$.ajax({ cache: false, type: "POST", url: "/userdelete/", traditional:true, //加上 ...
- CSS学习笔记(5)--导航ul,li浮动问题
为什么只给li设置浮动,没有给ul设置浮动,ul后的元素div也会跟着浮动? 添加评论 分享 默认排序按时间排序 3 个回答 张思远 程序员 2 人赞同 代码是不是这样的啊?<ul& ...
- hdu 5384 Danganronpa(字典树)
题意: f(A,B)表示:B在A中作为子串出现的次数. 题目给出n个证据,m个子弹 Ai是证据.Bi是子弹.题目问:全部Bi对每一个Ai造成的伤害是多少,即每一个Bi在Ai中出现的次数总和. 解析: ...
- 记一次线上Kafka消息堆积踩坑总结
2018年05月31日 13:26:59 xiaoguozi0218 阅读数:2018更多 个人分类: 大数据 年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka.由于是 ...
- 关于Aspose强大的应用--EXECL
protected void btnConfirg_Click(object sender, EventArgs e) { genExcel(); } //设置内容文字色 表中有一个蓝色文字列和绿色文 ...