目录

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 负载均衡相关推荐

  1. 物联网架构-Nginx负载均衡

    物联网架构-Nginx负载均衡 0. 前言 关于Nginx负载均衡的简单配置,我以前博客配置过基于HTTP的负载均衡.这次的负载均衡有点不一样,就是基于TCP的负载均衡.基于HTTP负载均衡是默认的N ...

  2. Nginx负载均衡原理与实战

    Nginx 负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx 负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩 ...

  3. Nginx负载均衡的详细配置及使用案例

    Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结.  ...

  4. Nginx负载均衡集群介绍

    第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...

  5. [ 总结 ] nginx 负载均衡 及 缓存

    操作系统:centos6.4 x64 前端使用nginx做反向代理,后端服务器为:apache + php + mysql 1. nginx负载均衡. nginx编译安装(编译安装前面的文章已经写过) ...

  6. docker初体验:docker部署nginx负载均衡集群

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...

  7. 【CentOS 7LNMP架构33】,nginx负载均衡#180109

    2019独角兽企业重金招聘Python工程师标准>>> hellopasswd nginx负载均衡 多台代理服务器 vi /usr/local/nginx/conf/vhost/lo ...

  8. Keepalived+LVS+Nginx负载均衡之高可用

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致 ...

  9. Nginx负载均衡+tomcat+session共享

    为什么80%的码农都做不了架构师?>>>    本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来.第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种bug,各种 ...

最新文章

  1. envoy实现_网络通信与治理,谁更在行?Envoy 和 Nginx 对比 | 本月送书活动来啦
  2. LSTM为何如此有效?
  3. 升级SUSE Linux内核的完整步骤!
  4. LaTex 插入数学公式
  5. SAP中国招聘内部顾问,工作职责是做客户项目,ABAP开发
  6. 鲁九的六人小聚:夏吕吕岳倪兴
  7. 一文教你轻松搞定ANR异常捕获与分析方法
  8. ios12关闭设置角标_iOS 12.4.2为停产的设备带来了安全修复程序
  9. Docker上部署MySQLCluster(基于mysql/mysql-cluster镜像)
  10. 1.2w星!火爆GitHub的Python学习100天刷爆朋友圈!
  11. docker容易内部怎么编辑_在Docker的工作流中常见问题及最终方案
  12. 赛尔原创 | ACL20 用于多领域端到端任务型对话系统的动态融合网络
  13. 浪潮n系列服务器指示灯_中国服务器市场,浪潮跑出,联想和华为出现衰退
  14. 如何使用MOQ进行单元测试
  15. PHP/PHPStudy所需的VC9-VC14的运行库
  16. react-native6.0版本xcode11.2版本ios报错Unrecognized font family 'Ionicons'
  17. web留言板整蛊网站愚人节
  18. 渗透测试中遇到的Adminer任意文件读取漏洞
  19. ES根据日期查询数据
  20. 每周读书#14 - 彷徨之刃

热门文章

  1. python复数类型及其特点_二级Python语言程序设计分类模拟4
  2. Linux的实际操作:文件目录类的实用指令(init运行级别和找回root密码)
  3. JAVA入门级教学之(方法重写/方法重载)
  4. c语言编写两个矩阵的乘积,如何用c语言编写两个模糊矩阵相乘的程序?
  5. 查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度
  6. 数据结构与算法(基于C++语法实现)
  7. matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)
  8. wind 下装mysql,windows 下安装MySQL
  9. mr图像翻转的原因_MRI图像常见问题及对策
  10. java电脑类的接口_java 一个类实现两个接口的案例