基于GO的云原生API網(wǎng)關(guān)Apinto網(wǎng)關(guān)系列文章(一)-部署

寫(xiě)文出發(fā)點(diǎn)

最近在調(diào)研基于GO語(yǔ)言的開(kāi)源網(wǎng)關(guān),想找個(gè)性能不錯(cuò),擴(kuò)展性強(qiáng),還有免費(fèi)控制臺(tái)的網(wǎng)關(guān)。

然后在github上發(fā)現(xiàn)一個(gè)不錯(cuò)的項(xiàng)目,APINTO網(wǎng)關(guān),項(xiàng)目首頁(yè)是https://github.com/eolinker/apinto ,順便點(diǎn)了個(gè)star

最近他們把控制臺(tái)2.0開(kāi)源出來(lái)了,頁(yè)面好看,操作方便,所以想寫(xiě)個(gè)使用系列記錄一下~

APINTO簡(jiǎn)介

Apinto是一款高性能、可擴(kuò)展、易維護(hù)的云原生API網(wǎng)關(guān)。

Apinto網(wǎng)關(guān)基于GO語(yǔ)言模塊化開(kāi)發(fā),5分鐘極速部署,配置簡(jiǎn)單、易于維護(hù),支持集群與動(dòng)態(tài)擴(kuò)容,并且提供幾十款網(wǎng)關(guān)插件和實(shí)用的企業(yè)級(jí)插件,讓用戶開(kāi)箱即用。

Apinto API 網(wǎng)關(guān)以出色的用戶體驗(yàn)和適用于各種企業(yè)級(jí)業(yè)務(wù)場(chǎng)景的控制臺(tái)為特色。控制臺(tái)具有四大亮點(diǎn)功能:集群管理、應(yīng)用管理、精細(xì)服務(wù)治理和企業(yè)插件,能夠滿足企業(yè)對(duì) API 網(wǎng)關(guān)更高級(jí)場(chǎng)景化需求的要求。

功能簡(jiǎn)介

Apinto網(wǎng)關(guān)可以作為業(yè)務(wù)流量的入口,可以對(duì)業(yè)務(wù)流量進(jìn)行處理,如動(dòng)態(tài)路由、負(fù)載均衡、服務(wù)發(fā)現(xiàn)、熔斷降級(jí)、身份認(rèn)證、監(jiān)控與告警等。 Apinto網(wǎng)關(guān)不受云平臺(tái)限制,也能在Kubernetes運(yùn)行。

APINTO部署

Apinto沒(méi)有其它依賴,但不支持Windows系統(tǒng)。接下來(lái)在Linux環(huán)境下部署,用官方提供的安裝包進(jìn)行安裝, 教程地址

1.下載安裝包并解壓

wget https://github.com/eolinker/apinto/releases/download/v0.12.4/apinto_v0.12.4_linux_amd64.tar.gz && tar -zxvf apinto_v0.12.4_linux_amd64.tar.gz && cd apinto

下載版本是0.12.4,最新版本參考github上的release
2.安裝網(wǎng)關(guān):

./install.sh install

3.修改網(wǎng)關(guān)配置文件

vi /etc/apinto/config.yml

修改客戶端和服務(wù)監(jiān)聽(tīng)的廣播地址, ip使用宿主機(jī)的ip。
(以下內(nèi)容從官方教程復(fù)制過(guò)來(lái))

version: 2
#certificate: # 證書(shū)存放根目錄
#  dir: /etc/apinto/cert
client:
  advertise_urls: # open api 服務(wù)的廣播地址
  - http://172.25.45.30:9400
  listen_urls: # open api 服務(wù)的監(jiān)聽(tīng)地址
    - http://0.0.0.0:9400
  #certificate:  # 證書(shū)配置,允許使用ip的自簽證書(shū)
  #  - cert: server.pem
  #    key: server.key
gateway:
  advertise_urls: # 轉(zhuǎn)發(fā)服務(wù)的廣播地址
  - http://172.25.45.30:9400
  listen_urls: # 轉(zhuǎn)發(fā)服務(wù)的監(jiān)聽(tīng)地址
    - https://0.0.0.0:8099
    - http://0.0.0.0:8099
peer: # 集群間節(jié)點(diǎn)通信配置信息
  listen_urls: # 節(jié)點(diǎn)監(jiān)聽(tīng)地址
    - http://0.0.0.0:9401
  advertise_urls: # 節(jié)點(diǎn)通信廣播地址
   - http://172.25.45.30:9401
  #certificate:  # 證書(shū)配置,允許使用ip的自簽證書(shū)
  #  - cert: server.pem
  #    key: server.key

4.啟動(dòng)

apinto start

5.查看apinto是否啟動(dòng)成功

ps aux | grep apinto
image.png

可以看到三個(gè)進(jìn)程已啟動(dòng)成功

其它部署方法,docker

dashboard控制臺(tái)使用Docker-Compose一鍵部署

dashboard2.0依賴mysql和redis。

接下來(lái)在Linux環(huán)境下用docker-compose去部署控制臺(tái),官方有提供部署教程

1、編輯docker-compose.yml文件

vi docker-compose.yml

2、修改文件配置
模板

version: '3'
services:
  mysql:
    image: mysql:5.7.21
    privileged: true
    restart: always
    container_name: apinto_mysql
    hostname: apinto_mysql
    ports:
      - "33306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD={MYSQL_PWD}
      - MYSQL_DATABASE=apinto
    volumes:
      - /var/lib/apinto/mysql:/var/lib/mysql
    networks:
      - apinto
  apinto-dashboard:
    image: eolinker/apinto-dashboard
    container_name: apinto-dashboard
    privileged: true
    restart: always
    networks:
      - apinto
    ports:
      - "18080:8080"
    depends_on:
      - mysql
      - redis_cluster
    environment:
      - MYSQL_USER_NAME=root
      - MYSQL_PWD={MYSQL_PWD}
      - MYSQL_IP=apinto_mysql
      - MYSQL_PORT=3306                 #mysql端口
      - MYSQL_DB="apinto"
      - ERROR_DIR=/apinto-dashboard/work/logs  # 日志放置目錄
      - ERROR_FILE_NAME=error.log          # 錯(cuò)誤日志文件名
      - ERROR_LOG_LEVEL=info               # 錯(cuò)誤日志等級(jí),可選:panic,fatal,error,warning,info,debug,trace 不填或者非法則為info
      - ERROR_EXPIRE=7d                    # 錯(cuò)誤日志過(guò)期時(shí)間,默認(rèn)單位為天,d|天,h|小時(shí), 不合法配置默認(rèn)為7d
      - ERROR_PERIOD=day                  # 錯(cuò)誤日志切割周期,僅支持day、hour
      - REDIS_ADDR=172.100.0.1:7201,172.100.0.1:7202,172.100.0.1:7203,172.100.0.1:7204,172.100.0.1:7205,172.100.0.1:7206 #Redis集群地址 多個(gè)用,隔開(kāi)
      - REDIS_PWD={REDIS_PWD}                         # Redis密碼
    volumes:
      - /var/log/apinto/apinto-dashboard/work:/apinto-dashboard/work   #掛載log到主機(jī)目錄
  redis_cluster:
    container_name: redis_cluster
    image: eolinker/cluster-redis:6.2.7
    hostname: redis_cluster
    privileged: true
    restart: always
    environment:
      - REDIS_PWD={REDIS_PWD}
      - PORT=7201
      - HOST={HOST}
    volumes: 
      - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/data
    network_mode: host
networks:
  apinto:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.100.0.0/24

上面模板變量如下

  • MYSQL_PWD:mysql數(shù)據(jù)庫(kù)root用戶初始化密碼

  • REDIS_PWD:redis密碼

  • HOST:Redis廣播IP,可設(shè)置宿主機(jī)的局域網(wǎng)IP/外網(wǎng)IP,建議此處設(shè)置宿主機(jī)的局域網(wǎng)IP。

將mysql和redis密碼均設(shè)為123456,redis的host設(shè)置為本機(jī)ip

version: '3'
services:
  mysql:
    image: mysql:5.7.21
    privileged: true
    restart: always
    container_name: apinto_mysql
    hostname: apinto_mysql
    ports:
      - "33306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=apinto
    volumes:
      - /var/lib/apinto/mysql:/var/lib/mysql
    networks:
      - apinto
  apinto-dashboard:
    image: eolinker/apinto-dashboard
    container_name: apinto-dashboard
    privileged: true
    restart: always
    networks:
      - apinto
    ports:
      - "18080:8080"
    depends_on:
      - mysql
      - redis_cluster
    environment:
      - MYSQL_USER_NAME=root
      - MYSQL_PWD=123456
      - MYSQL_IP=apinto_mysql
      - MYSQL_PORT=3306                 #mysql端口
      - MYSQL_DB="apinto"
      - ERROR_DIR=/apinto-dashboard/work/logs  # 日志放置目錄
      - ERROR_FILE_NAME=error.log          # 錯(cuò)誤日志文件名
      - ERROR_LOG_LEVEL=info               # 錯(cuò)誤日志等級(jí),可選:panic,fatal,error,warning,info,debug,trace 不填或者非法則為info
      - ERROR_EXPIRE=7d                    # 錯(cuò)誤日志過(guò)期時(shí)間,默認(rèn)單位為天,d|天,h|小時(shí), 不合法配置默認(rèn)為7d
      - ERROR_PERIOD=day                  # 錯(cuò)誤日志切割周期,僅支持day、hour
      - REDIS_ADDR=172.100.0.1:7201 #Redis集群地址 多個(gè)用,隔開(kāi)
      - REDIS_PWD=123456                         # Redis密碼
    volumes:
      - /var/log/apinto/apinto-dashboard/work:/apinto-dashboard/work   #掛載log到主機(jī)目錄
  redis_cluster:
    container_name: redis_cluster
    image: eolinker/cluster-redis:6.2.7
    hostname: redis_cluster
    privileged: true
    restart: always
    environment:
      - REDIS_PWD=123456
      - PORT=7201
      - HOST=172.25.45.30
    volumes: 
      - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/data
    network_mode: host
networks:
  apinto:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.100.0.0/24

3、啟動(dòng)程序

docker-compose up -d

查看docker容器,可以看到成功生成了dashboard、mysql,redis容器實(shí)例。


image.png

使用體驗(yàn)

在Apinto和Dashboard都啟動(dòng)后,在瀏覽器端打開(kāi)dashboard,IP:18080

image.png

界面真好看~

各個(gè)模塊先待我慢慢研究,之后再寫(xiě)多幾篇。

下一篇來(lái)講解怎么使用控制臺(tái)去連接上面創(chuàng)建好的單節(jié)點(diǎn)Apinto。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容