openresty适配华为云

举报
yd_282553764 发表于 2024/12/05 14:54:33 2024/12/05
【摘要】 文章介绍Openresty适配华为云的步骤和问题

OpenResty 简介

OpenResty 是一个基于 Nginx 的高性能 Web 平台,集成了 LuaJIT 和大量 Lua 模块,专为动态 Web 应用程序、微服务、API 网关和高并发环境设计。它允许在 Nginx 中嵌入 Lua 脚本,从而提供了灵活的编程能力,可以轻松实现自定义业务逻辑,如动态路由、缓存、认证和负载均衡。

OpenResty 的特点

1. 高性能:继承了 Nginx 的高性能、高并发特点,适合高流量场景。

2. 灵活的 Lua 扩展:通过 LuaJIT 提供快速的动态脚本执行,支持 Lua 脚本编写业务逻辑。

3. 丰富的模块支持:集成了大量开箱即用的 Lua 库和 Nginx 模块,如 Redis、MySQL、HTTP 库等。

4. 异步非阻塞架构:利用 Nginx 事件驱动模型,支持高并发处理而不阻塞。

5. 动态重载:无需重启服务即可动态更新配置或业务逻辑。

OpenResty 的主要用途

1. Web 应用服务器:处理动态内容和静态资源请求。

2. API 网关:用于代理、路由、聚合、认证等功能。

3. 负载均衡器:支持灵活的负载均衡策略,包括轮询、权重和健康检查。

4. 缓存服务器:支持基于内存或分布式缓存,减少后端服务器压力。

5. 微服务网关:作为微服务架构的入口,实现服务注册、路由和限流等功能。

6. 静态资源服务器:快速、高效地提供静态资源,如图片、CSS、JavaScript 等。

OpenResty 的架构

OpenResty 的核心由以下几部分组成:

1. Nginx 核心:负责处理 HTTP 请求、反向代理、负载均衡等。

2. LuaJIT:高性能的 Lua 解释器,提供了极高的执行效率。

3. Lua 模块:如 ngx_lua 模块,提供对 Nginx 各种功能的 Lua 接口。

4. 第三方库集成:内置 Redis、MySQL、Memcached、CJSON 等流行库的支持。

启动 OpenResty:

sudo openresty

测试:

1. 访问 /hello

curl http://localhost:8080/hello

输出:

Hello, OpenResty!

2. 访问 /time

curl http://localhost:8080/time

输出示例:

Current Time: 2024-12-05 14:30:00

OpenResty 的优缺点

优点

高性能:结合 Nginx 和 LuaJIT,适用于高并发场景。

扩展性强:通过 Lua 可快速编写自定义逻辑,灵活处理各种需求。

内置支持多种第三方库:如 Redis、MySQL 等,便于集成外部服务。

配置热重载:可在不重启服务的情况下动态加载 Lua 代码。

缺点

学习曲线:需要掌握 Lua 编程语言,对 Nginx 配置也需要深入了解。

生态圈较小:相比于其他 Web 框架,社区生态相对较小。

调试工具有限:Lua 代码的调试支持不如 Java、Python 等主流语言。

使用场景

1. 高并发 API 服务:如电商平台、社交应用的 API 网关。

2. 动态路由和请求处理:按需动态修改请求路由、参数或响应内容。

3. 内容分发网络(CDN):缓存静态资源并减少后端负载。

4. 数据聚合:将多个后端服务的结果聚合为一个 API 响应。

总结

OpenResty 是一个功能强大、扩展性极高的 Web 平台,适用于需要高性能和灵活处理逻辑的场景。它通过将 Lua 脚本与 Nginx 的高效处理结合,实现了动态、轻量级的 Web 服务,是微服务、API 网关和高并发应用的理想选择。

步骤1:fork 仓库

本次任务是看Openresty在欧拉os上是否适配。需要在欧拉os上部署一个Openresty和一个微服务demo,并且Openresty进行负载均衡

fork demo的仓库,demo中有基于servicecomb实现的完整的微服务脚实例,仓库信息如下:

https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview

步骤2:本地编译并运行

主要步骤:

  • 执行mvn clean install -DskipTests

过程比较顺利。

步骤3:适配思路

通过Openresty进行转发到两个业务网关,在由业务网关,转发到后台server。整体逻辑比较简单

步骤3:安装Openresty过程的问题

问题1:无法获取下载的repo

解决:在github上找到release包,源码安装

问题2:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

ERROR: failed to run command: sh ./configure --prefix=/usr/local/openresty/nginx \...

解决:

sudo dnf install pcre pcre-devel

问题3:

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

解决:

sudo dnf install openssl openssl-devel

步骤4:安装Openresty

1. 下载release包并解压

2. 进入解压后的文件夹,执行./configure

3. 执行make 

4. 执行make install

步骤5:修改demo

添加一个接口,能够在不同实例上返回不同的值。

@RestSchema(schemaId = "PropertyEndpoint", schemaInterface = PropertyService.class)
public class PropertyEndpoint implements PropertyService {

  @Autowired
  private Environment environment;

  @Override
  public String getProperty() {
    return environment.getProperty("property");
  }
}

步骤6:购买华为云Gaussdb和ECS,上云测试

购买华为云Gaussdb,并且购买公网IP,不然无法访问。配置如下:

产品名称

产品类型

数据库引擎版本

性能规格

实例类型

部署形态

备注

云数据库 GaussDB

基础版

8.201

独享型1:4

集中式

1主2备

推荐


产品名称 CPU架构 实例类型 公共镜像 镜像版本 备注
弹性云服务器 鲲鹏计算 鲲鹏通用计算增强型 Huawei Cloud EulerOS Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) 推荐

步骤7:部署并访问

结果如下:



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。