安裝 API 網關 APISIX

前言

Apache APISIX 是國人開源的微服務 API 網關,目前發展勢頭旺盛,性能強勁,不知道此爲何物的可以去 GITHUB 官方倉庫文檔裏看看詳細介紹。

系統版本

[root@fjr-ofckv-73-94 supdev]# cat /etc/issue
CentOS release 6.10 (Final)

安裝套件

注:這裏源碼安裝的目錄都在 /www/down 內

  1. OpenResty
  2. Etcd
  3. luarocks
  4. Apache APISIX
  5. nodejs
  6. yarn
  7. incubator-apisix-dashboard

OpenResty

因爲 APISIX 是基於 OpenResty 開發,因此這個是必須安裝的,而且最好安裝二進制版本,否則會出現一些稀奇古怪的問題,比如 OpenSSL 版本低,但升級 OpenSSL 後,又出現相關 lua 模塊少打開控制參數之類的費時費力的問題。

去官網下載二進制版本即可,不用滿網絡搜索。

cd /etc/yum.repos.d/
wget https://openresty.org/package/centos/openresty.repo
yum -y install openresty

安裝成功後,會把相關的文件放入 /usr/local/openresty/ 目錄內,這時看一看下安裝版本。

[root@fjr-ofckv-73-94 openresty]# openresty -v
nginx version: openresty/1.15.8.3

Etcd

Etcd 在 APISIX 中用來存儲相關配置,並且 Etcd 天然支持分佈式,二者搭配可謂是強強聯合。

這個直接去官方下,除非有梯子,否則那叫一個慢,這裏推薦一個華爲開源鏡像站,搜索 etcd,選擇最新版本,下載安裝即可。

wget https://mirrors.huaweicloud.com/etcd/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz
tar xf etcd-v3.4.7-linux-amd64.tar.gz
cd etcd-v3.4.7-linux-amd64
cp -r etcd etcdctl /usr/bin

由於 APISIX 目前使用的是 V2 版本的信息,而新版本默認是 V3 的信息,因此需要在啓動的時候知道 V2 版本。

nohup etcd --enable-v2=true &

注:Etcd v3 的客戶端使用 gRPC 與 server 進行通信,通信的消息協議使用 protobuf 進行約定,代替了 v2 版本的 HTTP-json 格式,使用二進制替代文 本,更加節省空間。同時 gRPC 使用的是 HTTP/2 協議,同一個連接可以同時處理多個請求,不必像 HTTP1.1 協議中,多個請求需要建立多個連接 。同時,HTTP/2 會對請求的 Header 和請求數據進行壓縮編碼,常見的有 Header 幀,用於傳輸 Header 內容,另外就是 Data 幀,來傳輸正文實體 。客戶端可以將多個請求放到不同的流中,然後將這些流拆分成幀的形式進行二進制傳輸,傳輸的幀也會有一個編號,因此在一個連接中客 戶端可以發送多個請求,減少了連接數,降低了對服務器的壓力,二進制的數據傳輸格式也會是傳輸速度更快。

luarocks

由於 APISIX 使用的是 Lua 語言開發的,這就勢必用到 lua 相關庫,因此要用到 luarocks 來安裝三方庫。一句話,luarocks 之於 Lua,就像 Composer 之於 PHP,Go Modules 之於 Go, Maven 之於 Java。

yum install -y luarocks lua-devel

Apache APISIX

wget https://downloads.apache.org/incubator/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz
tar xf apache-apisix-1.2-incubating-src.tar.gz
cd apache-apisix-1.2-incubating-src

然後依次執行以下命令

# 安裝 Lua 模塊依賴,這一步耗時最長
make deps

# 初始化運行環境
make init

# 啓動
make run

也可以運行 make help 查看相關命令幫助。

[root@fjr-ofckv-73-94 apache-apisix-1.2-incubating]# make help
Makefile rules:

    help:             Show Makefile rules.
    deps:             Installation dependencies
    utils:            Installation tools
    lint:             Lint Lua source code
    init:             Initialize the runtime environment
    run:              Start the apisix server
    stop:             Stop the apisix server
    verify:           Verify the configuration of apisix server
    clean:            Remove generated files
    reload:           Reload the apisix server
    install:          Install the apisix
    test:             Run the test case
    license-check:    Check Lua source code for Apache License

至此 APISIX 已成功安裝並啓動,但官方同時爲了易用,基於 vue 開發了個管理界面,需要安裝 nodejs、yarn、dashboard。

nodejs

這一步得注意了,別直接用系統提供的 node,版本太低,以致下一步安裝 yarn 後,提示 nodejs 版本低。同時也別使用高版本,因爲高版本使用的是 gcc 新版本編譯的,一旦下載下來,運行 ./bin/node 會出現類似於這種的 Requires: libc.so.6(GLIBC_2.14) 提示。

當然了,升級 gcc 也是一種嘗試。

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

mv /usr/bin/gcc /usr/bin/gcc-4.4.7
mv /usr/bin/g++ /usr/bin/g++-4.4.7
mv /usr/bin/c++ /usr/bin/c++-4.4.7
ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++
ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++
gcc --version

下面來安裝 nodejs 二進制版本

wget https://nodejs.org/download/release/v11.0.0/node-v11.0.0-linux-arm64.tar.gz
tar xf node-v11.0.0-linux-arm64.tar.gz
ln -sf /www/down/node-v11.0.0-linux-arm64/bin/node /usr/bin/node

查看版本

[root@fjr-ofckv-73-94 node-v11.0.0-linux-x64]# node -v
v11.0.0

yarn

wget https://github.com/yarnpkg/yarn/releases/download/v1.22.4/yarn-v1.22.4.tar.gz
tar xf yarn-v1.22.4.tar.gz
ln -sf /www/down/yarn-v1.22.4/bin/yarn /usr/bin/yarn

查看版本

[root@fjr-ofckv-73-94 node-v11.0.0-linux-x64]# yarn -v
1.22.4

dashboard

git clone https://github.com/apache/incubator-apisix-dashboard.git
cd incubator-apisix-dashboard.git
git submodule update --init --recursive
yarn && yarn build:prod # 這一步較耗時

cp -r ./dist/* /www/down/apache-apisix-1.2-incubating/dashboard

至此就完成了安裝,在瀏覽器上輸入 http://IP:9080/apisix/dashboard,就能看到如下界面

在這裏插入圖片描述
無需輸入密碼,進入後展示

在這裏插入圖片描述
最後再嘮叨下,若是登陸後,頁面彈出 401 unauthorized,也別慌,就差臨門一腳了,別放棄,重新刪掉 dashboard,再安裝下載個,再停掉 APISIX,再開啓,再試試,應該就成了。

牛刀小試

安裝好後,來個 demo 體驗把。

動態 Upstream

使用過 Nginx 配置過 upstream 都曉得,每在 upstream 裏添加或摘取個服務地址,都需要重啓下,很不方便,若是能動態添加就便利多了,也就是通過心跳檢測 upstream 裏那組服務,若有服務故障,摘取掉,若流量增加,那麼就添加。這在 APISIX 都不叫事,依次點擊左側 Upstream 菜單,點擊添加按鈕,進入配置頁面。
在這裏插入圖片描述
其中,Type 對應的 roundrobin 爲輪詢模式,待會兒設置好後,在瀏覽器上便會把請求依次轉發到 80 和 8081 端口。

當然,前提是在服務器上啓動相關配置。這裏使用在 openresty 裏添加,默認啓動 openresty 服務,80 端口就可以訪問,這裏只需添加 8081 端口的配置。

server {
    listen 8081;
    location / {
        default_type text/html;
        content_by_lua_block {
             ngx.say("Hello World")
        }
    }
}

啓動 openresty,訪問 8081 端口,便會返回 Hello World

[root@fjr-ofckv-73-94 dashboard]# curl 127.0.0.1:8081
Hello World

添加路由

好了,動態路由配置好了,現在需要在路由那應用了。點擊左側的 Routes 菜單,再點擊添加按鈕進入配置頁面。

在這裏插入圖片描述
其中 URIs 裏的 index.html 爲對外暴露的訪問地址,Methods 默認爲 get 訪問。

好了,動態 Upstream 和 路由都配置好了,這時只需在瀏覽器地址欄裏輸入 http://ip:8090/index.html,每刷新一次,內容就會變一次,因爲後臺設置了輪詢模式。

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章