SIA

SIA-GATEWAY是基于SpringCloud微服务生态体系下开发的一个分布式微服务网关系统。具备简单易用、可视化、高可扩展、高可用性等特征,提供云原生、完整及成熟的接入服务解决方案。本文介绍API网关的安装部署。

一、环境

1.1 编译环境

  • Maven3+
  • nodejs
  • Jdk1.8+

1.2 运行时第三方依赖

  • Mysql5.6+
  • elasticsearch 5.5.2
  • kibana-5.5.2
  • kafka 2.12-2.0.0
  • redis 3.2.11
  • eureka-server

1.3 运行环境

  • 64bit OS,Linux/Mac/Windows/docker
  • JDK1.8+

二、源码下载

git clone https://github.com/siaorg/sia-gateway.git

2.1 源码结构如下:

1. 2├── sia-gateway-admin-buildcomponent 网关admin组件集合 3│   ├── sia-gateway-admin 网关admin监控系统组件 4│   ├── sia-gateway-synchspeed 网关对下游服务实时感知组件 5│   ├── sia-gateway-stream 网关日志组件 6│   ├── sia-gateway-service 网关系统辅助组件 7│   ├── sia-gateway-monitor 网关监控、日志组件 8│ │    ├── sia-gateway-reactive 9│ │   ├── sia-gateway-messaging 基础依赖 10│ │    ├── sia-gateway-sink 11│ │    ├── sia-gateway-esclient 12│ │   ├── sia-gateway-base 13├── sia-gateway-admin-display 网关系统前端代码 14├── sia-gateway-buildcomponent 网关core-buildcomponent 15│   ├── sia-gateway-core 网关Core节点 16│ │   ├── sia-gateway-base 17│ │   ├── sia-gateway-messaging 基础依赖 18│ │   ├── sia-gateway-reactive 19│ │   ├── sia-gateway-template

三、初始化“API网关数据库”

1)MySQL的安装和配置详见MySQL官方文档

2)请下载项目源码并解压,获取 "API网关数据库初始化SQL脚本" 并执行即可。

"API网关数据库初始化SQL脚本" 位置为:

/sia-gateway/sia-gateway-admin/src/main/resources/db/gateway_admin.sql

四、配置“网关系统”

4.1 网关配置文件地址

1# 网关admin中心conf 2/sia-gateway/sia-gateway-admin-buildcomponent/config/gateway_admin_test.yml 3 4# 网关监控服务conf 5/sia-gateway/sia-gateway-admin-buildcomponent/config/gateway_monitor_test.yml 6 7# 网关辅助节点conf 8/sia-gateway/sia-gateway-admin-buildcomponent/config/gateway_service_test.yml 9 10# 网关日志服务conf 11/sia-gateway/sia-gateway-admin-buildcomponent/config/gateway_stream_test.yml 12 13# 网关实时感知服务conf 14/sia-gateway/sia-gateway-admin-buildcomponent/config/gateway_synchspeed_test.yml 15 16# 网关核心节点conf 17/sia-gateway/sia-gateway-buildcomponent/config/gateway_test.yml 18

1)gateway_admin_test.yml

2)gateway_service_test.yml

3)gateway_stream_test.yml

4)gateway_synchspeed_test.yml

5)gateway_monitor_test.yml

6)gateway_test.yml

说明:spring.application.name为网关组名称,开发者可以修改此属性,搭建新的网关组

4.2 maven 仓库地址配置

1 <mirrors> 2 <mirror> 3 <id>alimaven</id> 4 <name>aliyun maven</name> 5 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 6 <mirrorOf>central</mirrorOf> 7 </mirror> 8 </mirrors> 9 <profiles> 10 <profile> 11 <id>jdk-1.8</id> 12 <activation> 13 <activeByDefault>true</activeByDefault> 14 <jdk>1.8</jdk> 15 </activation> 16 <properties> 17 <maven.compiler.source>1.8</maven.compiler.source> 18 <maven.compiler.target>1.8</maven.compiler.target> 19 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> 20 </properties> 21 </profile> 22 23 <profile> 24 <id>downloadSources</id> 25 <properties> 26 <downloadSources>true</downloadSources> 27 <downloadJavadocs>true</downloadJavadocs> 28 </properties> 29 </profile> 30 <profile> 31 <id>spring plugins</id> 32 <activation> 33 <jdk>spring plugins</jdk> 34 </activation> 35 <pluginRepositories> 36 <pluginRepository> 37 <id>spring plugins</id> 38 <name>Spring plugins</name> 39 <url>https://maven.aliyun.com/repository/spring-plugin</url> 40 <layout>default</layout> 41 <snapshotPolicy>always</snapshotPolicy> 42 </pluginRepository> 43 </pluginRepositories> 44 </profile> 45 </profiles> 46 47 <activeProfiles> 48 <activeProfile>downloadSources</activeProfile> 49 </activeProfiles> 50

五、构建部署项目

5.1 编译项目

1)如果已经正确进行上述配置,可将项目编译打包部署。

2)操作步骤:

1 cd sia-gateway 2 3 chmod +x *.sh 4 5 sh build.sh

3)打包成功后,会出现以下标注文件。

  • /sia-gateway/sia-gateway-admin-buildcomponent/target/gateway_admin_1.0.zip

  • /sia-gateway/sia-gateway-buildcomponent/target/gateway_1.0.zip

  • /sia-gateway/sia-gateway-admin-display/dist/

注:前端打包需要用到nodeJs,如未安装,可请参考 nodejs安装文档

5.2 部署项目

  • API网关系统的部署方式为分布式部署集中式管理模式,即网关Core节点可以按业务线划分为不同的网关组,网关管理端作为网关的管理中心,供统一的管理界面,用户可在此进行 API、组件、系统基础信息的设置和维护,收集监控日志、生成各种运维管理报表、自动告警等。
  • sia-gateway-admin-buildcomponent是网关管理端组件集,包括:admin、stream、service、synchspeed、monitor;管理端部署单个节点即可(目前不支持集群)。
  • sia-gateway-buildcomponent为网关Core组件,可以按业务线分组,组内以单节点或集群方式部署。

5.3 Vmware方式部署

1)后端部署

1unzip gateway_admin_1.0.zip 2 3cd /gatewayadmin/bin 4 5chmod +x *.sh 6 7#启动网关管理服务,包括:admin、stream、service、synchspeed、monitor。 8sh onekey_start.sh 9 10--------------------------------------------------- 11unzip gateway_1.0.zip 12 13cd /gateway/bin 14 15chmod +x *.sh 16 17#启动网关Core服务 18sh start_gateway_test.sh

2)前端部署

  • 修改前端site-map.js

  • nginx的代理配置,进入nginx的目录下nginx.conf,添加如下配置:

    1 upstream apigateway.open.location1 { 2 #### sia-gateway-admin服务IP 3 server *******:8090 ; 4 } 5 server { 6 # nginx 监听端口 7 listen 18086; 8 server_name localhost; 9 access_log logs/host.access.log main; 10 #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; 11 location / { 12 #root html; 13 #index index.html index.htm; 14 root /app/jar/ROOT/dist; 15 index index.html index.htm; 16 } 17 # 后端服务location 18 location ^~ /vv1/ { 19 proxy_pass http://apigateway.open.location1/; 20 proxy_set_header Host $host; 21 proxy_set_header X-Real-IP $http_x_forwarded_for; 22 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 23 proxy_http_version 1.1; 24 } 25 error_page 500 502 503 504 /50xcn.html; 26 location = /50xcn.html { 27 root html/error_page; 28 index 50xcn.html; 29 } 30 location /check_status { 31 vhost_traffic_status_display; 32 vhost_traffic_status_display_format json; 33 } 34 }
  • 重启nginx

    1 #校验配置是否正确 2 ./nginx -t 3 4 # 重新启动 5 ./nginx -s reload 6

5.4 Docker 镜像方式部署

说明:如果docker环境和编译环境是在同一个操作系统上,可直接执行以下步骤;反之,需要先将以下文件按原目录结构上传docker环境所在服务器。

  • /sia-gateway/sia-gateway-admin-buildcomponent/target/gateway_admin_1.0.zip
  • /sia-gateway/sia-gateway-buildcomponent/target/gateway_1.0.zip
  • /sia-gateway/sia-gateway-admin-display/dist/
  • /sia-gateway/third-libary
  • /sia-gateway/build.sh
  • /sia-gateway/docker-start.sh
  • /sia-gateway/docker-run.sh
  • /sia-gateway/Dockerfile

步骤:

1)配置:修改site-map.js,位置:/dist/static/site-map.js

1 /** 2 * vmware部署: 127.0.0.1 ----> nginx的ip地址 3 * docker镜像部署: 127.0.0.1 ----> docker容器的宿主机ip 4 */ 5 'CESHI_API_HOST': '127.0.0.1:18086/vv1', 6 7 /** 8 * 127.0.0.1 ----> kibana的ip地址 9 */ 10 'CESHI_API_HOST_LOG': '127.0.0.1:5601'

2)下载centos基础镜像,如果已经下载,此步忽略。

3)修改Dockerfile,FROM <font color='red'>镜像名 : 版本号</font>

4)配置yum源,如果部署机器能够使用阿里yum源,此步忽略。

将yum源文件名称修改成 CentOS-Base.repo,并替换到/sia-gateway/third-libary/下

5)构建镜像,并启动容器和服务

1 # 构建镜像 2 cd /sia-gateway/ 3 4 # 授权 5 chmod +x *.sh 6 7 # 构建镜像 8 sh docker-build.sh 9 10 # 启动容器和服务 11 sh docker-run.sh 12 13 # 查看容器是否启动成功 14 docker ps 15 16 # 进入容器查看服务运行情况 17 docker exec -it gateway-test:v1 bash 18

访问地址: http://宿主机IP:18086/

说明:

  • Docker镜像部署方式是我们为方便开发者简单、快速地基于docker环境搭建网关系统而提供的一种ALL-IN-ONE形式的网关部署Demo,即网关监控服务、预警、网关核心节点等都构建在一个docker镜像中;开发者可以根据开发环境条件来灵活选择部署方案,推荐使用vmware+docker镜像部署方式,即将网关管理端服务部署在vmware上,网关核心节点部署在docker环境中。

SIA相关开源产品链接

来源:宜信技术学院

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )