前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache APISIX网关部署

Apache APISIX网关部署

作者头像
行 者
发布2023-10-20 14:41:34
7980
发布2023-10-20 14:41:34
举报
文章被收录于专栏:运维技术迷

概述

Apache APISIX is a dynamic, real-time, high-performance API gateway. APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

APISIX 是一个云原生、高性能、可扩展的微服务 API 开源网关,基于OpenResty(Nginx+Lua)和etcd来实现,对比传统的API网关,具有动态路由和热插件加载的特点。系统本身自带前端,可以手动配置路由、负载均衡、限速限流、身份验证等插件,操作方便。APISIX是用Lua语言开发,语言相对简单,容易上手,同时可以按自己的需求进行系统的二次开发以及开发自己的插件。

APISIX架构

功能

APISIX的功能有很多,包括动态路由、url重写、动态上游、IP黑白名单、A/B测试、灰度发布、限速限流、监控报警、健康检查等等,本文只介绍几个比较常用的功能,其他功能具体可以查看APISIX的官方文档说明。

服务热启动功能

使用过Nginx的同学都会遇到过这种情况,在修改nginx.conf后需要重启nginx服务修改才会生效,重启时间虽然短暂,但难免会有一段服务不可用时间。当然,可以通过其他方式进行规避服务不可用。APISIX的服务热启动通过在路由、Service、Upstreams等插件中动态的修改配置即可,并不需要再重启APISIX服务来使修改生效。

热插件功能

不再需要在nginx.conf文件中编写复杂的规则代码来实现需求,通过使用自带的路由、Upstreams等插件,在前端页面中添加所需要的规则即可实现。下文应用会详细介绍。目前通过插件可以实现uri重写、根据请求信息中的内容实现路由跳转等等。也可以根据自己的需求开发符合自己需求的插件。

动态负载均衡

通过Upstreams插件,可以实现基于权重的roundrobin和chash负载均衡。

数据集群

APISIX支持etcd集群,通过etcd集群增强了系统的可用性,大大减小了故障损失。

监控

APISIX外接第三方prometheus监控系统,提供符合prometheus数据格式的监控指标数据。Prometheus 是由 SoundCloud 开源监控告警解决方案,已经比较成熟完善。

安装

官网的How to build Apache APISIX中说明了可以使用 RPM Repository, RPM package, Docker, Helm Chart, and source release package.等方式来构建安装APISIX。本次我使用RPM和YUM方式来构建部署APISIX。

ETCD

代码语言:javascript
复制
[root@LWS-NODE-JP software]# yum -y install golang
[root@LWS-NODE-JP software]#  wget https://github.com/etcd-io/etcd/releases/download/v3.5.1/etcd-v3.5.1-linux-amd64.tar.gz
[root@LWS-NODE-JP software]# unzip v3.5.0.zip
[root@LWS-NODE-JP software]# mv etcd-3.5.0/ /usr/local/etcd
[root@LWS-NODE-JP software]# vim /usr/lib/systemd/system/etcd.service 
[Unit]
Description=Etcd Server
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=-/usr/local/etcd/etcd.conf
WorkingDirectory=/usr/local/etcd/
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

[root@LWS-NODE-JP software]# systemctl daemon-reload
[root@LWS-NODE-JP software]# systemctl restart etcd

Openresty

Openresty可以使用yum也可以使用source code安装,我本地已经编译安装好Openresty了。 (注:不要diy nginx的版本名,否则apisix会报错找不到openresty。)

编译安装

代码语言:javascript
复制
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
tar -zxvf openresty-1.19.9.1.tar.gz
cd openresty-1.19.9.1/ && ./configure --user=www --group=www --prefix=/usr/local --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-http_geoip_module --with-openssl=/data/software/openssl-1.1.1l  --with-openssl-opt='enable-weak-ssl-ciphers' --add-module=/data/software/ngx_brotli --add-module=/data/software/ngx_cache_purge && gmake && gmake install

APISIX

代码语言:javascript
复制
yum-config-manager --add-repo https://repos.apiseven.com/packages/centos/apache-apisix.repo
yum info -y apisix
yum --showduplicates list apisix
yum install apisix
apisix init
apisix start
````

如果尚未安装 OpenResty 的官方 RPM 仓库,以下命令可以帮助您自动安装 OpenResty 和 Apache APISIX 的 RPM 仓库。

yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm

代码语言:javascript
复制
### Dashboard

[root@LWS-NODE-JP software]# yum install -y https://github.com/apache/apisix-dashboard/releases/download/v2.10.0/apisix-dashboard-2.10.0-0.el7.x86_64.rpm [root@LWS-NODE-JP software]# vim /usr/local/apisix/dashboard/conf/conf.yaml

yamllint disable rule:comments-indentation

conf: listen:

代码语言:javascript
复制
# host: 127.0.0.1     # the address on which the `Manager API` should listen.
                      # The default value is 0.0.0.0, if want to specify, please enable it.
host: 0.0.0.0  # 设置成0.0.0.0允许所有,生产环境慎用。  # This value accepts IPv4, IPv6, and hostname.
port: 8888   # 自定义端口        # The port on which the `Manager API` should listen.

# ssl: # host: 127.0.0.1 # the address on which the Manager API should listen for HTTPS.

代码语言:javascript
复制
                      # The default value is 0.0.0.0, if want to specify, please enable it.

# port: 9001 # The port on which the Manager API should listen for HTTPS. # cert: "/tmp/cert/example.crt" # Path of your SSL cert. # key: "/tmp/cert/example.key" # Path of your SSL key.

#allow_list: # If we don't set any IP list, then any IP access is allowed by default.

代码语言:javascript
复制
#- 127.0.0.1           # The rules are checked in sequence until the first match is found.
#- ::1               # In this example, access is allowed only for IPv4 network 127.0.0.1, and for IPv6 network ::1.
#- all                # It also support CIDR like 192.168.1.0/24 and 2001:0db8::/32

[root@LWS-NODE-JP software]# nohup manager-api -p /usr/local/apisix/dashboard/ & # 生产环境建议注册到systemctl管理

代码语言:javascript
复制
使用http://YOU-IP-ADDRESS:PORT,账密:admin/admin就可以进入到APISIX的Dashboard了。

![APISIX Dashboard][2]


# 参考资料

[ETCD](https://etcd.io/docs/v3.5/install/)
[ETCD-github](https://github.com/etcd-io/etcd/releases/)
[APISIX-github](https://github.com/apache/apisix-dashboard/releases/tag/v2.9.0)
[openresty-download](http://openresty.org/en/download.html)
[APISIX](https://apisix.apache.org/zh/docs/apisix/getting-started)


  [1]: https://static.lianjiale.com//wp-content/uploads/2021/12/14/apixis-jiagou.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 功能
    • 服务热启动功能
      • 热插件功能
        • 动态负载均衡
          • 数据集群
            • 监控
            • 安装
              • ETCD
                • Openresty
                  • 编译安装
                • APISIX
                • yamllint disable rule:comments-indentation
                相关产品与服务
                负载均衡
                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档