我是靠谱客的博主 单薄白昼,最近开发中收集的这篇文章主要介绍apisix安装详解(版本2.7),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、api网关介绍

api网关现在使用的是一个开源项目(apisix),然后在其上进行的二次开发(修改配置和增加插件),api网关本身相当于是代理服务器,或者说其本质就是一个代理服务器。

  • apisix的github网址:https://github.com/apache/apisix
  • 使用java编写apisix插件:https://apisix.apache.org/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins
  • 中文官网地址:https://apisix.apache.org/zh/docs/apisix/getting-started/
  • Apache APISIX 是什么?(最下面有视频教程链接和用户实例):https://www.bookstack.cn/read/apache-apisix-1.5-zh/a24c9ed98214f2f0.md

2、apisix安装

2.1 安装依赖

因为apisix是基于OpenResty和etcd实现的,所以需要先安装OpenResty和etcd软件包。

方法一(推荐,理由是安装版本不一致)

先使用yum安装,这个最方便,同时会配好系统环境

# 安装 OpenResty, etcd 和 编译工具
sudo yum install -y etcd openresty curl git gcc luarocks lua-devel

# 开启 etcd server
sudo service etcd start

使用该方法安装完后,发现etcd版本与apisix2.7需求的版本不一致,yum库里面的etcd版本是3.3(已经是最新了),但是apisix(版本是2.7的)需要3.4版本,没办法,只能用yum卸载etcd,然后去GitHub下载最新的3.4。

安装方法参考下面的etcd安装方法。

方法二(推荐)

安装前需要安装相关依赖:OpenResty ,etcd。若已安装,可忽略。

# install epel, `luarocks` need it.
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm

# install etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz
tar -xvf etcd-v3.4.13-linux-amd64.tar.gz && 
    cd etcd-v3.4.13-linux-amd64 && 
    sudo cp -a etcd etcdctl /usr/bin/

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

# install OpenResty and some compilation tools
sudo yum install -y openresty curl git gcc luarocks lua-devel

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

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

问题一:wget命令未找到

在这里插入图片描述

使用wget命令时,提示为找到命令,安装wget命令:

yum -y install wget

问题二:ssl链接未建立

在使用wget下载etcd时,因为是在GitHub上下载,建链经常出现问题,可以参考:https://www.shuzhiduo.com/A/q4zVyXp7dK/

但是,说实话,上面的两种方法依然没有作用,只好本地下载,然后通过rz上传到服务上(不会使用rz命令,可以参考:https://www.cnblogs.com/patrick-yeh/p/12922829.html)

为什么需要etcd

etcd 是一个分布式、可靠 key-value 存储的分布式系统——也就是一个数据库。当然,它不仅仅用于存储,还提供共享配置及服务发现。

etcd是apisix的配置中心,除了存储配置,etcd还可以为apisix提供以下特性:

  1. 集群支持
  2. 事务
  3. 历史版本管理
  4. 变化通知
  5. 高性能

APISIX 需要一个配置中心,上面提到的很多功能是传统关系型数据库和 KV 数据库是无法提供的。与 etcd 同类软件还有 Consul、ZooKeeper 等,更详细比较可以参考这里:etcd why,在将来也许会支持其他配置存储方案。

2.2 安装apisix

2.2.1 安装

安装2.7版本:

sudo yum install -y https://github.com/apache/apisix/releases/download/2.7/apisix-2.7-0.x86_64.rpm

需要注意的是:

  • 上面的链接是2.7版本,随着时间流逝,老版本的链接可能会发生变化,如果你想下载其他版本的apisix,先找到:https://github.com/apache/apisix/releases,然后找到对应的版本链接,替换掉上面的即可。
  • 安装环境与执行目录无关,我在apisix-2.7目录下执行命令,执行完毕,发现该目录下什么都没有。

安装好后,检测apisix是否安装完成:

apisix version

启动apisix:

apisix start

默认会安装在/usr/local/apisix路径下,默认端口9080,可通过如下命令检查:

 curl 127.0.0.1:9080
 {"error_msg":"404 Route Not Found"}

2.2.2 配置问题

安装完成,如果使用其他设备远程发布命令给apisix,需要更改一个配置(位置/usr/local/apisix/conf/config-defualt.yaml):

在这里插入图片描述

将所有ip都注释掉即可。

2.2.3 遇到问题

问题一:apisix无法安装成功

和安装etcd一样,无法从GitHub上下载内容,暂时只能从本地下载,然后通过rz上传到服务器上。

问题二:apisix目录

使用yum安装,默认安装在/usr/local目录下:

在这里插入图片描述

2.3 APISIX dashboard(控制台)安装

APISIX早先版本中,dashboard是内置在apisix中的,只需要安装apisix就可以使用其控制台,但是新版本将其扩展成了两个项目(类似于mysql和Navicat了),所以这里需要安装一下。

2.3.1 两种安装方式

第一种方法是命令行安装:

yum -y install https://github.com/apache/apisix-dashboard/releases/download/v2.7/apisix-dashboard-2.7-0.x86_64.rpm

注意:dashboard版本需要与apisix版本一致。

因为上面的方法需要服务器从GitHub上下载,我这边下载时不断报错,连接不上GitHub,只好使用第二种方法,先本地下载,下载地址就是上面的连接:https://github.com/apache/apisix-dashboard/releases/download/v2.7/apisix-dashboard-2.7-0.x86_64.rpm

然后通过rz上传到服务器上,在上传目录运行:

yum -y install apisix-dashboard-2.7-0.x86_64.rpm

卸载控制台:

yum remove apisix

2.3.2 修改配置文件

配置文件路径:/usr/local/apisix/dashboard/conf/conf.yaml

打开以后,如果远程登录要进行配置:

在这里插入图片描述

将远程登录IP添加进去,或者将所有的注释掉,这样会默认所有的主机都可以远程访问。

运行命令:

sudo nohup manager-api -p /usr/local/apisix/dashboard/ &

2.3.3 远程登录

第一件事,就是关闭防火墙(因为这个问题困扰了半天,将配置文件改来改去就是不对,最后才发现是防火墙没有关闭,也是醉了)

# 关闭防火墙
systemctl stop firewalld

# 关闭防火墙开机自启动
systemctl disable firewalld

通过“ip addr”查询虚拟机IP地址,然后登陆:

# 部署在虚拟机上
IP:9000

# 部署在本地
127.0.0.1:9000

# 查询端口
netstat -anp |grep 9000

在这里插入图片描述

登陆账户和密码一样,均为admin。

2.4 问题

问题一:重启系统,发现无法启动apisix

在这里插入图片描述

报错:nginx: [emerg] invalid IPv6 address in resolver “[fe80::4e50:77ff:fe44:181c%enp0s3]” in /usr/local/apisix/conf/nginx.conf:82

根据报错信息,发现第82行多了几个乱码,删除之后,启动apisix,发现还是这个问题,之前删除的乱码又出现了,删除配置文件nginx.conf,启动apisix,依然报错。

后来根据nginx.conf删除,又生成,以为是etcd数据库的问题,里面存储了apisix的配置文件内容,无论你怎么删除,下次启动apisix都会去etcd查询配置,然后再次生成。

按照这个思路解决问题,删除etcd数据库里面的内容

etcdctl del --prefix ""

然,并没有效果。

最后不断看报错信息,怀疑是虚拟机网络配置问题,最终找到问题所在:

在这里插入图片描述

如上图所示,将ipv6初始化改成no即可。

问题二:

在这里插入图片描述

这个我重启了一下就成功了,不知道问题出现在哪里,当然之前将网络文件配置了一下,所有的ipv6选项都变成no。

问题三:远程登录不上去

报错信息如下:

在这里插入图片描述

这个是因为你的远程登录ip没有写入apisix的控制台运行列表中(参考2.3.2)。

问题四:登录报错The manager-api and apache apisix are mismatched.

在这里插入图片描述

GitHub上也报了这个问题:https://github.com/apache/apisix-dashboard/issues/1811

最后

以上就是单薄白昼为你收集整理的apisix安装详解(版本2.7)的全部内容,希望文章能够帮你解决apisix安装详解(版本2.7)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部