# 一键安装
在Linux机器上一键安装运行FizzGate:
wget https://gitee.com/fizzgate/fizz-gateway-node/raw/master/install.sh && bash install.sh
一键安装使用docker-compose集成了fizz-gateway-node、fizz-manager-professional、MySQL、Redis,其中:
fizz-gateway-node:日志映射目录为:./docker_volumes/fizz-gateway-node/logs:/opt/fizz-gateway-node/logs
fizz-manager-professional:日志映射目录为:./docker_volumes/fizz-manager-professional/logs:/opt/fizz-manager-professional/logs
MySQL:root账号密码为root123456,数据映射目录为:./docker_volumes/mysql:/var/lib/mysql
Redis默认不设置密码
服务启动后访问管理后台 http://{部署机器IP地址}:8000/#/login,使用超级管理员账户admin
密码Aa123!
登录
网关地址格式:
http://127.0.0.1:8600/[服务名]/[API Path]
# 手动安装
# 安装依赖
安装以下依赖软件:
- Redis 2.8或以上版本
- MySQL 5.7或以上版本
- Apollo配置中心 (可选)
- Eureka v1.10.17或Nacos v2.0.4或以上版本(可选)
# 安装MySQL
- 操作系统 CentOS 6.5
- MySQL 5.7.30
- 下载MySQL
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-1.el6.x86_64.rpm-bundle.tar
- 解压
tar -xvf mysql-5.7.30-1.el6.x86_64.rpm-bundle.tar
- 安装
sudo yum install mysql-community-{server,client,common,libs}-*
- 启动
sudo service mysqld start
启动成功会显示以下信息:
[root@localhost ~]# sudo service mysqld start
Initializing MySQL database: [ OK ]
Starting mysqld: [ OK ]
- 初始密码
sudo grep 'temporary password' /var/log/mysqld.log
- 使用初始密码登录
mysql -uroot -p
- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
- 退出登录
quit
# 安装Redis 6.0.8
- 下载解压并编译
$ wget http://download.redis.io/releases/redis-6.0.8.tar.gz
$ tar xzf redis-6.0.8.tar.gz
$ cd redis-6.0.8
$ make
- 启动redis
运行编译后的文件:
$ src/redis-server
- 客户端连接
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
# 安装Apollo配置中心
说明: apollo是可选组件(如何启用请看安装fizz-gateway-node社区版说明),如果不使用apollo可使用本地配置文件(application.yml), 如果不使用apollo可跳过此步骤。
安装步骤详见apollo官方文档: (opens new window)
# 安装Eureka服务注册中心
环境要求:
- JDK 1.8 或以上版本
- Tomcat 6.0.10 或以上版本 (如使用spring cloud已内置)
- 安装JDK 1.8
1)下载JDK,如: jdk-8u192-linux-x64.tar.gz
tar -zxvf jdk-8u192-linux-x64.tar.gz
mv jdk1.8.0_192 /usr/local/
2)设置JDK环境变量,将下面内容追回到/etc/profile文件后面
JAVA_HOME=/usr/local/jdk/jdk1.8.0_192
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar
export JAVA_HOME JRE_HOME PATH CLASSPATH
3)执行以下命令全环境变量生效:
source /etc/profile
4)查看是否安装成功
java -version
- 安装eureka
1)使用IDE创建一个spring boot项目,如:sc-eureka-server
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>we</groupId>
<artifactId>sc-eureka-server</artifactId>
<version>1.0.0</version>
<name>sc-eureka-server</name>
<description>eureka server</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在启动类上添加@EnableEurekaServer注解来启用Euerka注册中心功能:
@SpringBootApplication
@EnableEurekaServer
public class ScEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(ScEurekaServerApplication.class, args);
}
}
application.properties配置文件:
spring.application.name=sc-eureka-server
server.port=8761
eureka.instance.hostname=localhost
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.server.enableSelfPreservation=false
2) maven构建并运行sc-eureka-server应用, 启动后访问地址http://localhost:8761/可以看到Eureka注册中心的界面
3)把target/sc-eureka-server-1.0.0.jar传到linux服务器上运行. (仅以单机部署为例)
nohup java -jar sc-eureka-server-1.0.0.jar &
4)eureka客户端的注册地址为:http://localhost:8761/eureka/ (替换localhost为服务器的IP)
eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka/
# 安装FizzGate
# 管理后台(fizz-manager-professional)
从gitee的releases(https://gitee.com/fizzgate/fizz-gateway-node/releases) 下载 fizz-manager-professional 安装包
说明:
- 以下安装步骤出现的
{version}
表示所使用管理后台的版本号,例如1.3.0
。
安装方式一:二进制安装包
- 解压
fizz-manager-professional-{version}.zip
安装包 - 首次安装执行
fizz-manager-professional-{version}-mysql.sql
数据库脚本,从低版本升级至高版本选择执行update目录下对应升级脚本 - 修改
application-prod.yml
文件,将相关配置修改成部署环境的配置 - Linux启动 执行
chmod +x boot.sh
命令给boot.sh
增加执行权限;执行./boot.sh start
命令启动服务,支持 start/stop/restart/status命令 - Windows启动 执行
.\boot.cmd start
命令启动服务,支持 start/stop/restart/status命令
安装方式二(v2.0.0或以上版本):docker:
下载SQL脚本页:https://gitee.com/fizzgate/fizz-gateway-node/releases/tag/{version} (把{version}替换为对应版本号)
首次安装执行fizz-manager-professional-{version}-mysql.sql
数据库脚本,从低版本升级至高版本选择执行update目录下对应升级脚本(如有脚本则执行)
- 下载对应版本的镜像:docker pull fizzgate/fizz-manager-professional:{version}
- 通过环境变量方式修改redis配置、database配置(其它配置同理)并运行镜像
docker run --rm -d -p 8000:8000 \
-e "spring.redis.host={your redis host IP}" \
-e "spring.redis.port={your redis port}" \
-e "spring.redis.password={your redis password}" \
-e "spring.redis.database={your redis database}" \
-e "spring.datasource.url=jdbc:mysql://{your MySQL database host IP}:3306/fizz_manager?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true" \
-e "spring.datasource.username={your MySQL database username}" \
-e "spring.datasource.password={your MySQL database password}" \
fizzgate/fizz-manager-professional:{version}
或通过映射目录方式使用外部配置文件和输出日志到宿主机, 配置文件可从安装包里获取,在宿主机创建fizz-manager-professional/config和fizz-manager-professional/logs目录,把application-prod.yml配置文件放置config下,在fizz-manager-professional目录下运行镜像
cd fizz-manager-professional
docker run --rm -d -p 8000:8000 \
-v $PWD/config:/opt/fizz-manager-professional/config \
-v $PWD/logs:/opt/fizz-manager-professional/logs fizzgate/fizz-manager-professional:{version}
服务启动后访问 http://{部署机器IP地址}:8000/#/login,使用超级管理员账户admin
密码Aa123!
登录
# 集群部署
集群部署时只需部署一个管理后台服务实例。
# 网关节点(fizz-gateway-node)
说明:
- 支持配置中心:apollo、nacos,支持注册中心:eureka、nacos,详细配置方法查看application.yml文件。
- 如果使用apollo配置中心,可把application.yml文件内容迁到配置中心(apollo上应用名为:fizz-gateway);如果不使用apollo可去掉下面启动命令里的apollo参数。
- 以下安装步骤出现的
{version}
表示所使用网关的版本号,例如1.3.0
。
安装方式一:二进制安装包
- 下载fizz-gateway-node的二进制安装包,解压修改application.yml配置文件里配置中心、注册中心、redis(redis配置需与管理后台一致)的配置
- 根据需要修改boot.sh脚本的apollo连接,不使用apollo配置中心可跳过
#修改为Apollo Meta Server的实际地址
APOLLO_META_SERVER=${APOLLO_META_SERVER:-http://localhost:66}
- 执行
./boot.sh start
命令启动服务,支持 start/stop/restart/status命令
安装方式二:源码安装:
- 本地clone仓库上的最新代码,修改application.yml配置文件里配置中心、注册中心、redis(redis配置需与管理后台一致)的配置
- 在项目根目录fizz-gateway-node下执行Maven命令
mvn clean package install -DskipTests=true
- 在项目目录fizz-gateway-node/fizz-bootstrap下执行Maven命令
mvn clean package -DskipTests=true
- 进入fizz-gateway-node/fizz-bootstrap/target/fizz-gateway-node目录,执行
./boot.sh start
命令启动服务,支持 start/stop/restart/status命令
安装方式三(v2.0.0或以上版本):docker:
- 下载对应版本的镜像:docker pull fizzgate/fizz-gateway-node:{version}
- 通过环境变量方式修改redis配置(其它配置同理)并运行镜像
docker run --rm -d -p 8600:8600 \
-e "aggregate.redis.host={your redis host IP}" \
-e "aggregate.redis.port={your redis port}" \
-e "aggregate.redis.password={your redis password}" \
-e "aggregate.redis.database={your redis database}" \
fizzgate/fizz-gateway-node
或通过映射目录方式使用外部配置文件和输出日志到宿主机, 配置文件可从安装包或源码里获取,在宿主机创建fizz-gateway-node/config和fizz-gateway-node/logs目录,把application.yml和log4j2-spring.xml配置文件放置config下,在fizz-gateway-node目录下运行镜像
cd fizz-gateway-node
docker run --rm -d -p 8600:8600 --privileged \
-v $PWD/config:/opt/fizz-gateway-node/config \
-v $PWD/logs:/opt/fizz-gateway-node/logs fizzgate/fizz-gateway-node:{version}
网关的默认服务端口为8600,网关地址格式:
http://127.0.0.1:8600/[服务名]/[API Path]
网关的默认上下文为/, 可以通过修改以下步骤修改, 可配置为其它值如:/proxy;(v2.7.0及以下版本默认上下文为/proxy)
- 修改fizz-manager-professional的application.yml配置
gateway:
prefix: /proxy
- 修改fizz-gateway-node的application.yml配置
gateway:
prefix: /proxy
服务编排测试地址:
http://127.0.0.1:8600/_proxytest/[服务名]/[API Path],其中/_proxytest为测试目录不要对公网开放。
# 集群部署
网关节点服务支持多实例部署,如果网关部署了多个节点可配置通过nginx做负载均衡
# nginx配置
如果网关部署了多个节点可配置通过nginx做负载均衡,参考配置如下:
修改nginx.conf文件,在http下添加upstream
http {
upstream fizzgate {
server 10.10.1.1:8600;
server 10.10.1.2:8600;
server 10.10.1.3:8600;
}
# 您的server配置
# server {
# 省略...
# }
}
然后在 location中添加
server {
#
# 您的其他配置
# 省略...
#
location / {
# 省略...
proxy_pass http://fizzgate;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
这里的fizzgate 跟 upstream后面的名字对应。第2行的请求头X-Forwarded-For是记录代理过程做的配置,通过配置此请求头fizzgate可获取到调用方的IP。第3行表示在转发时同时转发Host请求头,用于按Host统计流量。
CORS跨域配置:nginx不用配置CORS相关信息,可在FizzGate管理后台的网关管理->设置管理页面一键开启CORS
管理端支持HTTPS配置:如果管理后台开启了HTTPS,需要在后台设置:
server{
#
# 您的其他配置
# 省略...
#
# 添加两行配置
add_header Strict-Transport-Security max-age=0;
add_header Content-Security-Policy upgrade-insecure-requests;
#
# 您的其他配置
# location / {
#
# }
# 省略...
}
# 网关内部管理接口
/admin/**
这个path对应网关内部的管理接口,用于健康、缓存、聚合配置等的检查,亦需在 nginx 中配置对应的 location:
location /admin/ {
proxy_pass http://fizzgate;
}
注意:内部管理接口不能对公网开放。
# 版本升级
说明:以下步骤出现的{version}
表示所使用的版本号,例如1.3.0
。
# 管理后台
安装方式一:二进制安装包
从gitee的releases(https://gitee.com/fizzgate/fizz-gateway-node/releases) 下载 fizz-manager-professional 安装包
1、执行SQL脚本
从低版本升级至高版本选择执行update目录下对应升级脚本,如果跨多个版本则执行当前版本和目标版本间的所有升级脚本。
2、拷贝安装包里除application-prod.yml外的文件或文件夹到安装目录覆盖对应文件,用文本对比工具对比新旧版本的配置文件application-prod.yml进行相关配置项的合并。
3、重启服务
boot.sh restart
安装方式二(v2.0.0或以上版本):docker
1、执行SQL脚本
下载SQL脚本页:https://gitee.com/fizzgate/fizz-gateway-node/releases/tag/{version} (把{version}替换为对应版本号)
从低版本升级至高版本选择执行update目录下对应升级脚本,如果跨多个版本则执行当前版本和目标版本间的所有升级脚本。
下载对应版本的镜像:docker pull fizzgate/fizz-manager-professional:{version}
通过环境变量方式修改redis配置、database配置(其它配置同理)并运行镜像,运行前先停掉原镜像。
docker run --rm -d -p 8000:8000 \
-e "spring.redis.host={your redis host IP}" \
-e "spring.redis.port={your redis port}" \
-e "spring.redis.password={your redis password}" \
-e "spring.redis.database={your redis database}" \
-e "spring.datasource.url=jdbc:mysql://{your MySQL database host IP}:3306/fizz_manager?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true" \
-e "spring.datasource.username={your MySQL database username}" \
-e "spring.datasource.password={your MySQL database password}" \
fizzgate/fizz-manager-professional:{version}
或通过映射目录方式使用外部配置文件和输出日志到宿主机, 配置文件可从fizz-manager-professional安装包(https://gitee.com/fizzgate/fizz-gateway-node/releases)里获取,在宿主机创建fizz-manager-professional/config和fizz-manager-professional/logs目录,修改配置文件里的修改redis配置、database配置(其它配置同理),把application-prod.yml配置文件放置config下,在fizz-manager-professional目录下运行镜像
cd fizz-manager-professional
docker run --rm -d -p 8000:8000 \
-v $PWD/config:/opt/fizz-manager-professional/config \
-v $PWD/logs:/opt/fizz-manager-professional/logs fizzgate/fizz-manager-professional:{version}
服务启动后访问 http://{部署机器IP地址}:8000/#/login
# 网关节点
安装方式一:二进制安装包
从gitee的releases(https://gitee.com/fizzgate/fizz-gateway-node/releases) 下载 fizz-gateway-node 安装包
1、拷贝安装包里除application.yml和log4j2-spring.xml外的文件或文件夹到安装目录覆盖掉对应文件,用文本对比工具对比新旧版本的配置文件application.yml和log4j2-spring.xml进行相关配置项的合并。
2、重启服务 boot.sh restart
安装方式二(v2.0.0或以上版本):docker
- 下载对应版本的镜像:docker pull fizzgate/fizz-gateway-node:{version}
- 通过环境变量方式修改redis配置(其它配置同理)并运行镜像,运行前先把旧镜像停掉
docker run --rm -d -p 8600:8600 \
-e "aggregate.redis.host={your redis host IP}" \
-e "aggregate.redis.port={your redis port}" \
-e "aggregate.redis.password={your redis password}" \
-e "aggregate.redis.database={your redis database}" \
fizzgate/fizz-gateway-node
或通过映射目录方式使用外部配置文件和输出日志到宿主机, 配置文件可从安装包或源码里获取,在宿主机创建fizz-gateway-node/config和fizz-gateway-node/logs目录,修改application.yml和log4j2-spring.xml配置文件并放置config下,在fizz-gateway-node目录下运行镜像
cd fizz-gateway-node
docker run --rm -d -p 8600:8600 --privileged \
-v $PWD/config:/opt/fizz-gateway-node/config \
-v $PWD/logs:/opt/fizz-gateway-node/logs fizzgate/fizz-gateway-node:{version}
← 什么是FizzGate集成平台 路由管理 →