寫(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
可以看到三個(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í)例。
使用體驗(yàn)
在Apinto和Dashboard都啟動(dòng)后,在瀏覽器端打開(kāi)dashboard,IP:18080
界面真好看~
各個(gè)模塊先待我慢慢研究,之后再寫(xiě)多幾篇。
下一篇來(lái)講解怎么使用控制臺(tái)去連接上面創(chuàng)建好的單節(jié)點(diǎn)Apinto。