首页 > 其他分享 >apisix安装详解(版本2.7)

apisix安装详解(版本2.7)

时间:2023-02-19 17:56:23浏览次数:55  
标签:etcd 2.7 详解 dashboard https apache 安装 apisix

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软件包。

# install epel, `luarocks` need it.
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
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 && \
    cp -a etcd etcdctl /usr/bin/

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

# install OpenResty and some compilation tools
yum install -y openresty-1.19.3.1-1.el7 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'

 

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

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

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

2.2 安装apisix

2.2.1 安装

安装2.7版本:

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都注释掉即可。

问题二: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

标签:etcd,2.7,详解,dashboard,https,apache,安装,apisix
From: https://www.cnblogs.com/liuys635/p/17135207.html

相关文章

  • threadlocal 原理详解
    ThreadLocal的基本概念在多线程并发中,我们需要保证共享变量(临界区)的安全性,因此在前面说起过synchronized和Lock锁,其中synchronized锁可以修饰方法或代码块,Lock锁可以修饰......
  • kubectl命令详解
    一、kubectl基本命令1、陈述式资源管理方法:1、kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口2、kubectl是官方的CLI命令行工具,用于与a......
  • K8S的kubectl命令详解
    一、kubectl基本命令1、陈述式资源管理方法:1、kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口2、kubectl是官方的CLI命令行工具,用于与a......
  • K8SYaml文件详解
    一、K8S支持的文件格式kubernetes支持YAML和JSON文件格式管理资源对象。JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内......
  • https的工作流程详解
    在了解https之前,我们先看下http的协议有哪些不足,加密、证书,签名这些概念,以便于我们更全面的掌握https的原理以及工作流程。   HTTP协议的不足 不验证身份,导致身份......
  • nginx 配置 详解
    2.nginx.conf配置文件Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和location(URL匹配特定位置......
  • solon框架AopContext 接口详解
    AopContext接口beanMake(Class<?>clz)使用场景:在开发插件(或在一些特殊条件下),自动扫描组件没有被扫描到,一般是因为要注册的组件没有在启动类的包下。//启动类所在包为......
  • 从零入门Vue.js!六步学习路线和知识体系盘点详解!
    Vue.js是一款流行的JavaScript前端框架,它允许开发者轻松地构建交互性强的用户界面。学习这个阶段的时候有一定门槛,并不是属于零基础就能入门学习的,在学习vue.js的时候可以......
  • 【云原生kubernetes】k8s service使用详解
    一、什么是服务service?在k8s里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,重启pod的ip地址会发生变化,此时客户如果访问原先的ip地址则会报错;S......
  • 伸展树(Splay)详解
    引入在一条链中,二叉查找树的时间复杂度就会退化成\(O(n)\),这时我们就需要平衡树来解决这个问题。\(Splay\)(伸展树)是平衡树的一种,它的每一步插入、查找和删除的平摊时间......