Flomesh安装指南

概述

目前支持3种安装方式:

  • RPM安装,主要用在"前置网关"和"服务网关"模式
  • Docker安装,主要用在"前置网关"和"服务网关"模式
  • Kubernetes/OpenShift/K3S安装,主要用在"服务网关"和"服务网格"模式

前置网关(Front Engine),是借鉴了互联网常见架构的说法。比如Google Front Engine。指部署在流量入口的硬件之后的软负载层,主要实现反向代理、流量清洗、流量过滤、负载均衡等功能。在企业里,这层一般部署在DMZ区,或者公有云上

服务网关(Service Gateway),是微服务和分布式架构里常见的一个组件,比如SpringCloud里边的Zuul和SpringGateway,比如Kubernetes的Ingress。主要功能是负载均衡、认证授权、限流限速、熔断、服务降级

服务网格(Service Mesh),是微服务规模化以后,通过强制所有流量经过网关的办法来管理流量、安全、服务质量,并最终实现整体的SLA

RPM安装

介质

RPM安装需要的介质如下:

  • aiur-x.x.x-yy.el7_pl.x86_64.rpm,其中x.x.x是版本号,yy是release号。这个包提供图形界面和GraphQL接口
  • fort-x.x.x-yy.el7_pl.x86_64.rpm。这个包提供对每个集群的操作代理
  • kong-x.x.x-yy.el7_pl.x86_64.rpm。这个包提供网关
  • piped-x.x.x-yy.el7_pl.x86_64.rpm。这个包提供实时流量统计功能
  • nodejs-10.tar.gz。这个包提供aiur和fort运行的环境,可以类比jdk
  • deps-rhel.tar.gz。这个提供kong安装所需要的依赖包,这些包默认不在RHEL介质里边
  • prometheus-2.14.0.linux-amd64.tar.gz。flomesh用prometheus做持久化的流量统计存储

目前flomesh只支持RHEL7.x和CentOS7.x

安装需要外置的MySQL或者PostgreSQL,MySQL支持5.7以上版本(目前不支持NDB存储引擎),PG支持9.4以上版本。aiur在开发测试模式下,可选使用sqlite3。

步骤

  1. 配置Deps的repo。这个可以配置成本地repo,也可以配置成http的。如下是配置本地repo:
cp deps-rhel.tar.gz /opt/
cd /opt
tar xzvf deps-rhel.tar.gz
cd deps-rhel
yum -y install createrepo
createrepo .
cat <<EOT >> /etc/yum.repos.d/deps.repo
[deps]
name=deps
baseurl=file:///opt/deps-rhel
enabled=1
gpgcheck=0
EOT
  1. 安装各个软件包
tar xzvf nodejs-10.tar.gz
cd nodejs-10
yum -y localinstall nodejs*
cd ~/flomesh/images/
yum -y localinstall kong-x.x.x-yy.el7_pl.x86_64.rpm
yum -y localinstall piped-x.x.x-yy.el7_pl.x86_64.rpm
yum -y localinstall aiur-x.x.x-yy.el7_pl.x86_64.rpm
yum -y localinstall fort-x.x.x-yy.el7_pl.x86_64.rpm
  1. 配置参数

3.1 修改/etc/kong/kong.conf(如果没有这个文件,可以拷贝kong.conf.default到kong.conf),设置其中的database=mysql(如果用的是pg的话,设置成postgres); 修改mysql_*这些参数,添加host/port/username/password/database这些信息 3.2 设置piped使用flomesh模式

cp -f /etc/piped/test/flomesh/config.ini /etc/piped/

3.3 修改/etc/aiur/config.ini,数据库设置成”mysql“(根据情况,可以使用其他数据库,测试过的数据库包括postgresql、sqlite和mysql,理论上也支持oracle等商业数据库),配置host/port/username/password/database这些信息。默认的监听端口是8080,可以根据需要修改 3.4 修改/etc/aiur/fort.ini,参数配置参考下表:

[fort]
name = default                     #fort的名字
log_level = error               #日志的级别

[aiur]
endpoint = http://localhost:8080  #这里配置连接到的aiur的地址
username = fort                    #这里配置连接到aiur的用户名
password = fort            #这里配置连接到aiur的密码
poll_interval = 5           #这里配置从aiur获取配置的时间间隔

[zone]
name = default             #这里配置zone的名字
guid =                  #这里需要一个guid,如果一个zone使用多个fort(比如为了高可用),那么多个fort的guid应该是一样的,但是名字可以不一样。Tips:可以用uuidgen工具来生成guid
sync_interval = 5                   #这里配置同步注册中心的周期,单位是秒。大多数的注册中心,可以选择30秒,甚至更长时间的同步周期
tags =                              #标签

[zone.metrics]
host = localhost                    #这里是配置piped的信息,保留默认值
port = 9999                         #这里配置piped端口信息,保留默认值
scrape_interval = 5                 #这里配置收集流量信息的周期,可以5秒,也可以更短;根据管理要求设置
scrapes[] = http://localhost:10000  #这里配置收集性能数据的端点,可以是多行;当多行的时候,fort会计算汇总值

[zone.redis]                        
host = localhost                    #当网关集群需要使用redis时候(比如集群范围的限速等),redis服务的信息配置在这里
port = 6379
timeout = 2000
password =
database = 0
sentinel_master =
sentinel_role =
sentinel_addresses =
cluster_addresses =

[zone.registry]                     
type = eureka                       #这里配置fort获取微服务的注册中心的信息。目前flomesh支持kubernetes,eureka,dubbo/zookeeper,nacos作为注册中心
endpoint = http://localhost
login =

; type = kubernetes
; custom = false
; framework = 
; endpoint = https://localhost:6443
; mode = IngressIP
; token = eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi0ybndtYiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjlhZTliYmZmLWZmOGMtMTFlOS05YmJkLTUyNTQwMDc1ZGMzZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.HdVF7c2Ni-BiCAY1EJlwdhOqjSV-K8cB_Xu468ApLRsFOcpkdRVQ9DQyoj5eyrS1nfMlLWm7vnRKDv9cEtbgwprdFhgtPkcRvzHR6htM-41rJrFQ0UFNqrudVToQXa24hwXP2Q455Dd0Rtu9GtYsQcJeV7Ie-VzVGxlTTTtySFXhd18zzD89dueM2nybFwZhaovjO-uzZYDCNgJb_3neHH8sOq0-DwtRpCXayYpcsGzigEtLKsXCtcP2O5YfynXUVzlr8oU_qZMNUhaW4trqmxzvY98vhIlRjk-skmJq7ygIYM6_icXBxfW0y51XhFTPQDvCZyqvcI3RG-87-Ts8tA
; ingress_ip = 127.0.0.1
; ingress_port = 9999

; type = zookeeper
; custom = false
; framework = dubbo
; endpoint = 192.168.33.10:2181
; recursive = false
; schema =
; auth = 

; type = nacos
; custom = false
; framework = springboot
; endpoint = http://localhost:8848

[kong.default]                      
name = default                      #这里配置网关的参数。网关的名字
tags =                              #标签
admin_endpoint = http://localhost:8001 #网关管理接口的地址

下一步

接下来可以: