Openresty Nginx 负载均衡
目录
OpenResty
Openresty 服务配置文件
启动Openresty服务
测试调用接口
Nginx 负载均衡服务
nginx 配置文件
启动服务
实现功能
测试结果
这里实现个简单的负载均衡,只做功能展示(实际业务比这复杂高,单台服务器无法满足需求的情况下,才会进行负载均衡)
OpenResty
用Openresty实现日志功能
Openresty 服务配置文件
lua 文件
-- 引入lua json库
local cjson = require "cjson"
-- 获取请求参数
local request_args_tab = ngx.req.get_uri_args()
-- 获取系统时间
local time = os.date("%Y%m%d",unixtime)
-- 创建file对象
local file = io.open("ho-data/ho-".. time ..".log","a")
-- 创建json对象
local log_json = {}
-- 将请求参数转为json
for k,v in pairs(request_args_tab) do log_json[k] = v
end
-- json数据写入文件,并\n换行
file:write(cjson.encode(log_json),"\n")
file:flush()
nginx.conf 文件
worker_processes 1;
error_log logs/error.log;
events {worker_connections 1024;
}
http {server {client_header_buffer_size 512m;large_client_header_buffers 4 512m; lua_need_request_body on;lua_code_cache off;listen 12199;location /log.gif {#internal;default_type image/gif;access_log off;log_by_lua_file 'conf/log_conf.lua';empty_gif;}location /jast {log_by_lua_file conf/jast_conf.lua;content_by_lua '#用三台服务器做测试,调用接口后使用jast_conf.lua处理数据,处理完成并返回对应服务器标识ngx.say("hello,89") #ngx.say("hello,44") #ngx.say("hello,121") '; }}
}
启动Openresty服务
/usr/local/openresty/nginx/sbin/nginx -p /root/openresty/openresty-1.15.8.2/jast_log -c conf/nginx.conf
测试调用接口
[root@ecs-001 jast]# curl 172.16.0.89:12199/jast?userid=123&action=read&date=160000000
hello,89
[root@ecs-002 jast]# curl 172.16.0.121:12199/jast?userid=123&action=read&date=160000000
hello,121
[root@ecs-002 jast]# curl 172.16.0.44:12199/jast?userid=123&action=read&date=160000000
hello,44
Nginx 负载均衡服务
nginx 配置文件
worker_processes 4;
error_log logs/error.log;
events {worker_connections 1024;
}
http {upstream jast.loadBalance{server 172.16.0.44:12199 weight=1;server 172.16.0.121:12199 weight=1;server 172.16.0.89:12199 weight=1;}server {client_header_buffer_size 512k;large_client_header_buffers 4 512k;lua_need_request_body on;lua_code_cache off;listen 2199;location / {proxy_pass http://jast.loadBalance;}}
}
启动服务
/usr/local/openresty/nginx/sbin/nginx -p /root/openresty/openresty-1.15.8.2/jast -c conf/nginx.conf
实现功能
调用2199端口,自动负载均衡到44:12199,121:12199,89:12199三台服务器的服务中
测试结果
测试调用2199端口,我们只有2199开通了外网端口
返回结果如下,说明我们自动将请求分发了
第1次请求 Hello,121第2次请求 Hello,44第3次请求 hello,89第4次请求 Hello,121第5次请求 Hello,44第6次请求 hello,89第7次请求 Hello,121第8次请求 Hello,44第9次请求 hello,89第10次请求 Hello,121第11次请求 Hello,44第12次请求 hello,89第13次请求 Hello,121第14次请求 Hello,44第15次请求 hello,89第16次请求 Hello,121第17次请求 Hello,44第18次请求 hello,89第19次请求 Hello,121第20次请求 Hello,44
这个网站有些基本介绍:https://moonbingbing.gitbooks.io/openresty-best-practices
Openresty Nginx 负载均衡相关推荐
- 物联网架构-Nginx负载均衡
物联网架构-Nginx负载均衡 0. 前言 关于Nginx负载均衡的简单配置,我以前博客配置过基于HTTP的负载均衡.这次的负载均衡有点不一样,就是基于TCP的负载均衡.基于HTTP负载均衡是默认的N ...
- Nginx负载均衡原理与实战
Nginx 负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx 负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩 ...
- Nginx负载均衡的详细配置及使用案例
Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. ...
- Nginx负载均衡集群介绍
第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...
- [ 总结 ] nginx 负载均衡 及 缓存
操作系统:centos6.4 x64 前端使用nginx做反向代理,后端服务器为:apache + php + mysql 1. nginx负载均衡. nginx编译安装(编译安装前面的文章已经写过) ...
- docker初体验:docker部署nginx负载均衡集群
Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...
- 【CentOS 7LNMP架构33】,nginx负载均衡#180109
2019独角兽企业重金招聘Python工程师标准>>> hellopasswd nginx负载均衡 多台代理服务器 vi /usr/local/nginx/conf/vhost/lo ...
- Keepalived+LVS+Nginx负载均衡之高可用
2019独角兽企业重金招聘Python工程师标准>>> 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致 ...
- Nginx负载均衡+tomcat+session共享
为什么80%的码农都做不了架构师?>>> 本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来.第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种bug,各种 ...
最新文章
- envoy实现_网络通信与治理,谁更在行?Envoy 和 Nginx 对比 | 本月送书活动来啦
- LSTM为何如此有效?
- 升级SUSE Linux内核的完整步骤!
- LaTex 插入数学公式
- SAP中国招聘内部顾问,工作职责是做客户项目,ABAP开发
- 鲁九的六人小聚:夏吕吕岳倪兴
- 一文教你轻松搞定ANR异常捕获与分析方法
- ios12关闭设置角标_iOS 12.4.2为停产的设备带来了安全修复程序
- Docker上部署MySQLCluster(基于mysql/mysql-cluster镜像)
- 1.2w星!火爆GitHub的Python学习100天刷爆朋友圈!
- docker容易内部怎么编辑_在Docker的工作流中常见问题及最终方案
- 赛尔原创 | ACL20 用于多领域端到端任务型对话系统的动态融合网络
- 浪潮n系列服务器指示灯_中国服务器市场,浪潮跑出,联想和华为出现衰退
- 如何使用MOQ进行单元测试
- PHP/PHPStudy所需的VC9-VC14的运行库
- react-native6.0版本xcode11.2版本ios报错Unrecognized font family 'Ionicons'
- web留言板整蛊网站愚人节
- 渗透测试中遇到的Adminer任意文件读取漏洞
- ES根据日期查询数据
- 每周读书#14 - 彷徨之刃
热门文章
- python复数类型及其特点_二级Python语言程序设计分类模拟4
- Linux的实际操作:文件目录类的实用指令(init运行级别和找回root密码)
- JAVA入门级教学之(方法重写/方法重载)
- c语言编写两个矩阵的乘积,如何用c语言编写两个模糊矩阵相乘的程序?
- 查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度
- 数据结构与算法(基于C++语法实现)
- matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)
- wind 下装mysql,windows 下安装MySQL
- mr图像翻转的原因_MRI图像常见问题及对策
- java电脑类的接口_java 一个类实现两个接口的案例