高性能软件负载OpenResty介绍和安装

这篇具有很好参考价值的文章主要介绍了高性能软件负载OpenResty介绍和安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1 OpenResty介绍

高性能软件负载OpenResty介绍和安装

OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项

	用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关

	OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台,这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

	OpenResty的目标是让你的Web服务直接跑在Nginx服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

1.1 Nginx 的流程定义

	nginx实际把请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,各阶段按照处理时机定义了清晰的执行语义,开发者可以很容易分辨自己需要开发的模块应该定义在什么阶段。

高性能软件负载OpenResty介绍和安装

  1. 当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作
  2. Identity 寻找匹配哪个Location*
  3. Apply Rate Limits 是否要对该请求限制
  4. Preform Authertication 权限验证
  5. Generate Content 生成给用户的响应内容
  6. 如果配置了反向代理 那么将要和上游服务器通信 Upstream Services
  7. 当返回给用户请求的时候要经过过滤模块 Response Filter
  8. 发送给用户的同时 记录一个Log日志

1.1.1 流程详解

阶段 描述
post-read 接收到完整的http头部后处理的阶段,在uri重写之前,一般跳过
server-rewrite location匹配前,修改uri的阶段,用于重定向,location块外的重写指令(多次执行)
find-config uri寻找匹配的location块配置项(多次执行)
rewrite 找到location块后再修改uri,location级别的uri重写阶段(多次执行)
post-rewrite 防死循环,跳转到对应阶段
preaccess 权限预处理
access 判断是否允许这个请求进入
post-access 向用户发送拒绝服务的错误码,用来响应上一阶段的拒绝
try-files 访问静态文件资源
content 内容生成阶段,该阶段产生响应,并发送到客户端
log 记录访问日志

1.1.2 OpenResty处理流程

由于 Nginx 把一个请求分成了很多阶段,第三方模块就可以根据自己的行为,挂载到不同阶段处理达到目的,OpenResty 也应用了同样的特性

	不同的阶段,有不同的处理行为,这是 OpenResty 的一大特色,OpenResty 处理一个请求的流程参考下图

高性能软件负载OpenResty介绍和安装

指令 描述
init_by_lua,init_by_lua_block 运行在Nginx loading-config 阶段,注册Nginx Lua全局变量,和一些预加载模块。是Nginx master进程在加载Nginx配置时执行
init_worker_by_lua 在Nginx starting-worker阶段,即每个nginx worker启动时会调用,通常用来hook worker进程,并创建worker进行的计时器,用来健康检查,或者设置熔断记时窗口等等。
access_by_lua 在access tail阶段,用来对每次请求做访问控制,权限校验等等,能拿到很多相关变量。例如:请求体中的值,header中的值,可以将值添加到ngx.ctx, 在其他模块进行相应的控制
balancer_by_lua 通过Lua设置不同的负载均衡策略, 具体可以参考lua-resty-balancer
content_by_lua 在content阶段,即content handler的角色,即对于每个api请求进行处理,注意不能与proxy_pass放在同一个location下
proxy_pass 真正发送请求的一部分, 通常介于access_by_lua和log_by_lua之间
header_filter_by_lua 在output-header-filter阶段,通常用来重新响应头部,设置cookie等,也可以用来作熔断触发标记
body_filter_by_lua 对于响应体的content进行过滤处理
log_by_lua 记录日志即,记录一下整个请求的耗时,状态码等

2 Openresty安装

2.1 yum安装

你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令)

2.1.1 添加OpenResty仓库

运行下面的命令就可以添加我们的仓库:

sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2.1.2 安装OpenResty

然后就可以像下面这样安装软件包,比如 openresty


sudo yum install openresty

2.2 源代码编译安装

OpenResty插件分为自带插件以及第三方插件,如果是自带插件直接激活就可以,如果是第三方插件需要手动下载插件添加进去,这里我们以本地缓存插件安装举例

2.2.1 安装编译环境


yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel lua-devel readline-devel curl wget

2.2.2下载最新版源码


mkdir /usr/local/openresty
wget https://openresty.org/download/openresty-1.21.4.1.tar.gz
tar -zxvf openresty-1.21.4.1.tar.gz # 解压openresty

2.2.3下载缓存插件

到 缓存插件地址 下载最新版 缓存插件


mkdir /usr/local/openresty/modules&& cd /usr/local/openresty/modules
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz #解压缓存插件

2.2.4 编译OpenResty

选择需要的插件启用, –with-Components 激活组件,–without 则是禁止组件 ,–add-module是安装第三方模块


./configure --prefix=/usr/local/openresty --with-luajit --without-http_redis2_module --with-http_stub_status_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/usr/local/openresty/modules/ngx_cache_purge-2.3 #配置缓存插件的源码路径

这里禁用了 redis组件 并且 安装了第三方缓存组件

出现如下界面表示编译成功

高性能软件负载OpenResty介绍和安装

2.2.5 安装OpenResty


gmake && gmake install

出现如下界面表示安装成功

高性能软件负载OpenResty介绍和安装

2.2.6 环境设置


vi /etc/profile ##加入path路径
export PATH=$PATH:/usr/local/openresty/nginx/sbin
source /etc/profile ##生效配置

2.2.7 查看环境


nginx -v
nginx version: openresty/1.17.8.2

查看安装的组件


nginx -V

高性能软件负载OpenResty介绍和安装

2.8 环境配置

2.8.1 配置文件修改

基于我们上节课的内容改造nginx.conf

x

user  root;
worker_processes  2;

error_log  logs/error.log  info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    include conf.d/*.conf;
}

2.8.2 创建配置目录

创建配置文件目录


mkdir /usr/local/openresty/nginx/conf/conf.d

2.8.3 创建Nginx配置文件

我们创建的conf.d目录中创建一个测试的配置文件


server {
    server_name www.itcast.com;
    charset   utf-8;
    location /{
        default_type text/html;
        content_by_lua '
            ngx.say("<p>Hello, World!</p>")
            ';
    }
}

如果你熟悉 nginx 的配置,应该对以上代码就很熟悉。这里我们将 html 代码直接写在了配置文件中。

2.8.4启动OpenResty


nginx -c /usr/local/openresty/nginx/conf/nginx.conf

接下来我们可以使用 curl 来测试是否能够正常范围


curl http://127.0.0.1/
<p>Hello, World!</p>

我们在配置文件写的 html 已正常输出。文章来源地址https://www.toymoban.com/news/detail-472827.html

到了这里,关于高性能软件负载OpenResty介绍和安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 架构篇20:高性能负载均衡-分类及架构

    单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。 高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力。由于计算本身存在一个特点:

    2024年01月25日
    浏览(48)
  • Lvs+KeepAlived高可用高性能负载均衡

    目录 1.环境介绍 2.配置keepalived  3.测试 1.测试负载均衡 2.测试RS高可用 3.测试LVS高可用 3.1测试lvs主服务宕机 3.2.测试lvs主服务器恢复 4.我在实验中遇到的错误 环境:centos7 RS1---RIP1:192.168.163.145            VIP 192.168.163.200 RS2---RIP2:192.168.163.146            VIP 192.168.163.200 LVS_MAST

    2024年02月10日
    浏览(52)
  • Keepalived+Lvs高可用高性能负载配置

    环境准备 IP 配置 VIP node1 192.168.134.170 LVS+Keepalived 192.168.134.100 node3 192.168.134.172 LVS+Keepalived 192.168.134.100 node2 192.168.134.171 做web服务器使用 node4 192.168.134.173 做web服务器使用 1、准备node1与node3环境(安装LVS与Keepalived)==由于只是简单的模拟测试,故环境安装使用yum即可。(LVS使用

    2024年02月13日
    浏览(50)
  • keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群

    一、环境准备 1. 我这里准备了三台centos7 虚拟机 主机名 主机地址 软件 node-01 192.168.157.133 rabbitmq、erlang、haproxy、keepalived node-02 192.168.157.134 rabbitmq、erlang、haproxy、keepalived node-03 192.168.157.135 rabbitmq、erlang 2. 关闭三台机器的防火墙 3. 三台主机的host和hostname配置 4. erlang与rabbitmq版

    2024年02月11日
    浏览(54)
  • Nginx搭配负载均衡和动静分离:构建高性能Web应用的完美组合

    目录 前言 一、Nginx简介 1.Nginx是什么 2.Nginx的特点 3.Nginx在哪使用 4.如何使用Nginx 5.Nginx的优缺点 6.Nginx的应用场景 二、负载均衡和动静分离 1.负载均衡 2.动静分离 三、Nginx搭载负载均衡并提供前后端分离后台接口数据 1.Nginx安装 2.tomcat负载均衡 3.负载均衡后台项目发布 四、前

    2024年02月06日
    浏览(52)
  • 高性能API网关Kong介绍

    本文:高性能、API网关、Kong、微服务 ​​​​​​​         API网关是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(All in one)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规

    2024年02月03日
    浏览(45)
  • 高性能的全文检索库Apache Lucene 介绍

            Apache Lucene 是一个高性能的全文检索库,由 Apache Software Foundation 维护。Lucene 提供了丰富的 API,用于实现快速、准确的全文搜索。本文将详细介绍 Apache Lucene 的技术特点、应用场景和优势。         Apache Lucene 的历史和发展         Apache Lucene 起源于 1999 年

    2024年03月27日
    浏览(53)
  • IBM Spectrum LSF Explorer 为要求苛刻的分布式和任务关键型高性能技术计算环境提供强大的工作负载管理

    适用于 IBM Spectrum LSF 集群的强大、轻量级报告解决方案 ●         允许不同的业务和技术用户使用单一解决方案快速创建和查看报表和仪表板 ●       利用可扩展的库提供预构建的报告 ●       自定义并生成性能、工作负载和资源使用情况的报 您的 IBM® Spectrum LSF 集

    2024年02月10日
    浏览(60)
  • 高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

    更多技术交流、求职机会,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群 物化视图是指将视图的计算结果存储在数据库中的一种技术。当用户执行查询时,数据库会直接从已经预计算好的结果中获取数据,而不需要重新计算视图。具体来说,物化视图是

    2023年04月27日
    浏览(45)
  • 【高性能计算】opencl安装及相关概念

    异构计算是一种利用多种不同类型的计算资源来协同解决计算问题的方法。它的核心思想是将不同特性和能力的计算设备(例如CPU、GPU、FPGA等)组合在一起,以充分发挥它们在不同类型的工作负载和任务中的优势。 传统的计算模型通常依赖于单一类型的处理器,如中央处理

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包