Apisix 安装配置使用

1、项目所需组件

  • OpenResty:apisis底层
  • Etcd:Apisix数据库
  • Apisix:服务主程序
  • Apisix-Dashboard:UI界面
  • Prometheus:采集监控apisix数据
  • Grafana:展示Prometheus采集到的数据
  • Nginx:用于代理Grafana页面

2、安装Openresty

#如采用离线安装方式,可以不用单独安装OpenResty,会在下载apisix及其依赖rpm包时自动下载OpenResty rpm包进行安装
yum install -y yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install -y openresty curl git gcc luarocks lua-devel

3、安装Etcd服务

关于Etcd服务的详细介绍及安装参考ETCD基础

ETCD_VERSION='3.5.4'
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
#如果采用离线安装的方式,那么需要将下载的包拷贝到目标主机上进行解压安装
tar -zxvf etcd-v3.5.4-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin etcd-v3.5.4-linux-amd64/etcd{,ctl}

# start etcd server,这个只能在自己的设备上登录,其他设备无法进行连接
nohup etcd &

# 使用这个命令启动,外网可以访问登录
etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'

#创建service
vim /usr/lib/systemd/system/etcd.service
[Unit]
Description=EtcdService
Documentation=https://coreos.com/etcd/docs/latest/
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Alias=etcd3.service

systemctl daemon-reload && systemctl enable --now etcd

4、安装Apisix服务

在具有互联网访问能力的服务器上面下载相关rpm包

yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
yum clean all && yum makecache
mkdir apisix
yum install -y --downloadonly --downloaddir=./apisix apisix

ls apisix/
apisix-2.14.1-0.el7.x86_64.rpm
apisix-base-1.21.4.1.0-0.el7.x86_64.rpm
cyrus-sasl-2.1.26-24.el7_9.x86_64.rpm
cyrus-sasl-devel-2.1.26-24.el7_9.x86_64.rpm
cyrus-sasl-lib-2.1.26-24.el7_9.x86_64.rpm
openldap-2.4.44-25.el7_9.x86_64.rpm
openldap-devel-2.4.44-25.el7_9.x86_64.rpm
openresty-openssl111-1.1.1n-1.el7.x86_64.rpm
openresty-pcre-8.45-1.el7.x86_64.rpm
openresty-zlib-1.2.12-1.el7.x86_64.rpm

将整个apisix目录拷贝到需要安装apisix的目标主机上后执行如下命令

yum install ./apisix/*.rpm

初始化apisix及etcd

# 系统优化
vim /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
*    soft nofile 65535
*    hard nofile 65535

ulimit -n 65535
# 修改apisix配置如下
cat /usr/local/apisix/conf/config.yaml
apisix:
  node_listen: 9080
  allow_admin:
    - 0.0.0.0/0
  admin_key:
    - name: admin
      key: confickertest  # using fixed API token has security risk, please update it when you deploy to production environment
      role: admin
etcd:
  host:
    - "http://127.0.0.1:2379"
  prefix: "/apisix"
  timeout: 30

# 初始化
apisix init
#启动服务
systemctl start apisix

5、安装Apisix-Dashboard服务

#具有外网访问能力的主机下载rpm包
wget https://github.com/apache/apisix-dashboard/releases/download/v2.13/apisix-dashboard-2.13-0.el7.x86_64.rpm
#拷贝到目标主机执行如下命令:
yum localinstall apisix-dashboard-2.13-0.el7.x86_64.rpm -y
#修改apisix-dashboard配置
cat /usr/local/apisix/dashboard/conf/conf.yaml | grep -A 2 allow_list
  allow_list:             # If we don't set any IP list, then any IP access is allowed by default.
    - 127.0.0.1           # The rules are checked in sequence until the first match is found.
    - 0.0.0.0/0                 # In this example, access is allowed only for IPv4 network 127.0.0.1, and for IPv6 network ::1.
#启动服务
systemctl start apisix-dashboard

6、安装Promtheus服务

#配置apisix,开启prometheus插件,可以通过dashboard进行开启,也可以通过修改apisix的config.yaml文件开启
#开启后可以通过如下命令查看是否又metrics暴露,默认端口为9091
#此处需要注意修改的ip对于访问具有限制性,推荐使用本机ip左右参数值
curl -i http://127.0.0.1:9091/apisix/prometheus/metrics

#安装prometheus,此处不再重复,参考其它文章
#prometheus配置监控apisix数据,修改Prometheus配置文件
scrape_configs:
  - job_name: 'apisix'
    scrape_interval: 10s
    metrics_path: "/apisix/prometheus/metrics"
    static_configs:
      - targets: ['127.0.0.1:9091']
#重新加载Prometheus配置:
curl -XPOST http://127.0.0.1:9190/-/reload
#访问Prometheus web界面查看是否具有对应target

7、安装Grafana服务

#安装过程不再赘述
#官方有提供apisix的dashboard可以导入进行查看

8、安装Nginx服务

使用Nginx的原因:

在Apixis中配置仪表盘嵌入grafana后登录不会成功,所以需要开启grafana的匿名登录功能,但是此操作会造成grafana安全性存在问题。所以通过在grafana中创建apikey,然后使用nginx反代grafana并配置apikey即可达到不登录/不匿名嵌入grafana页面。

经过测试,配置的grafana页面可以自行选择对应的grafana-dashboard,所以推荐单独使用一个grafana服务提供apisix的监控数据

Nginx的安装参考Nginx安装

星霜荏苒 居诸不息