作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。
我们经过前面的介绍,虽然介绍了很功能,但是还是有不少的功能需要借助第三方模块,而其中有一个模块:ngx_http_lua_module,我们可以通过他实现很多功能,因为他一门脚本语言。
Lua这个模块通过yum安装默认是不包含在内,如果需要则需要通过编译安装或者通过动态加载方式加载进去(我原本打算写一篇文章来介绍如何动态加载Lua模块的,结果尝试好几天晚上都失败)。所以本小节我们介绍了一个集成了Lua的Nginx版本:OpenResty。
Lua介绍
Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
OpenResty介绍
OpenResty® 是一个基于 Nginx 与 LuaJIT 的高性能 Web 平台,由中国人章亦春(Agentzh)创建。它集成了大量的 Lua 库、第三方模块以及大多数依赖项,使得开发者可以方便地构建高性能的 Web 应用程序和服务。以下是 OpenResty 的一些主要特点和组成部分:
主要特点
-
基于 Nginx: OpenResty 基于 Nginx,继承了 Nginx 的高性能、高并发和低资源消耗的特点。
-
LuaJIT 集成: OpenResty 集成了 LuaJIT,这是一个高性能的 Lua VM,它提供了快速的 Lua 脚本执行能力。
-
丰富的 Lua 库: OpenResty 提供了大量的 Lua 库,这些库可以直接在 Nginx 配置文件中使用,用于处理 HTTP 请求、访问数据库、缓存等。
-
高度可扩展: 开发者可以使用 Lua 脚本编写业务逻辑,这使得 OpenResty 非常灵活和可扩展。
-
非阻塞 I/O: OpenResty 支持非阻塞 I/O,可以处理成千上万的并发连接,适合构建高性能的 Web 服务。
-
负载均衡和反向代理: 继承了 Nginx 的负载均衡和反向代理功能,可以用于构建高可用的服务架构。
OpenResty部署
#官方网站
https://openresty.org/cn/
# add the yum repo:
wget https://openresty.org/package/rhel/openresty.repo
mv openresty.repo /etc/yum.repos.d/openresty.repo
# update the yum index:
yum check-update
#安装openresty
yum install -y openresty
#启动openrestry
systemctl start openresty
systemctl enable openresty
可以看出来这个启动命令实际还是Nginx,只是他封装成了openresty。Nginx目录里面的内容和编译安装Nginx基本一样,上层目录基本上就是Lua及相关信息。
添加Lua测试
#由于默认配置没有conf.d 的目录以下内容添加在nginx.conf
#重启以后测试访问
server {
listen 8080;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("<p>hello, world</p>")
}
}
}
[root@localhost conf]# vi nginx.conf
[root@localhost conf]# openresty -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful
[root@localhost conf]# openresty -s reload
[root@localhost conf]# curl localhost:8080
<p>hello, world</p>
[root@localhost conf]#
由于我并没有Lua编写经验,所以我这里就不演示具体的应用,这里只是提供介绍,让大家知道有这样一个产品,可以实现哪些功能。有应用需求,可以自己研究。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。