- 1.1 FATE简介
- 2.1 环境依赖
- 2.2 依赖条件和前置操作
- 2.3 组件信息
- 2.4 基本概念与原理
- 2.5 辅助脚本和配置文件
- 2.6 部署流程
- 2.7 服务验证
- 2.8 服务运维
- 3.1 使用自签证书
- 3.2 单边部署使用证书场景
- 3.3 mysql使用外部数据库
FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的开源项目,为联邦学习生态系统提供了可靠的安全计算框架。FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。
FATE官方网站:https://fate.fedai.org/
本文将介绍使用通过Ansible进行部署FATE集群。我们提供了辅助脚本,优化部署配置的过程,有助于用户快速完成部署操作。部署是一件简单的事。。
名称 | 说明 |
---|---|
系统 | Centos 7.6 |
开发语言 | Python 3.8、Java 1.8 |
软件组件 | fate eggroll fateboard mysql |
假定是以普通账号(app账号)进行部署,部署Base模块则需要root权限(假定app账号具有免输入密码的sudo权限)。部署的目标为: ${pbase}/fate目录下。这里假定:
- pbase: /data/projects
- tbase: /data/temp
- lbase: /data/logs
- host_id: 10000
- guest_id: 9999
前置操作请参考: <<部署fate集群的前置操作>> 一文。
角色 | 端口 | 日志目录 | 介绍 |
---|---|---|---|
rollsite | 9370 | /data/logs/fate/eggroll/ | 跨站点或者说跨party通讯组件 |
fate_flow | 9360;9380 | /data/logs/fate/fateflow/ | 联合学习任务流水线管理模块 |
clustermanager | 4670 | /data/logs/fate/eggroll/ | cluster manager管理集群 |
nodemanager | 4671 | /data/logs/fate/eggroll/ | node manager管理每台机器资源 |
fateboard | 8080 | /data/logs/fate/fateboard/ | 联合学习过程可视化模块 |
mysql | 3306 | /data/logs/mysql/ | 数据存储,clustermanager和fateflow依赖 |
-
版本:大于等于1.7.0
-
离线包: 可以直接进行部署的包。
- 部署包名称:
AnsibleFATE_${version}_release_offline.tar.gz
- 部署包根目录名称:
AnsibleFATE_${version}_release_offline
- 部署包名称:
-
在线包: 部署的包,但不包括模块的资源包,不能直接进行部署。 可通过下载资源包(参考2.6.1.3一节),组装成离线包。
- 部署包名称:
AnsibleFATE_${version}_release_online.tar.gz
- 部署包根目录名称:
AnsibleFATE_${version}_release_online
- 部署包名称:
-
下载部署包
-
进行部署
-
安装: 只安装软件
-
更新配置: 只更新配置
-
部署: 安装软件和更新配置
-
删除: 删除软件和配置
后端引擎 | 可选部署角色 | 可选部署模块 |
---|---|---|
standalone | host、guest、exchange | mysql、eggroll、fate_flow、fateboard |
eggroll(默认) | host、guest、exchange | mysql、eggroll、fate_flow、fateboard |
spark | host、guest | mysql、fate_flow、fateboard、rabbitmq |
-
简单模式
"default:192.168.0.1"
-
详细定制模式
- host/guest端
"default:192.168.0.1" "rollsite:192.168.0.1" "nodemanager:192.168.0.1|192.168.0.2" "clustermanager:192.168.0.1" "fate_flow:192.168.0.1" "fateboard:192.168.0.1"
-
exchange端
"rollsite:192.168.0.3|192.168.0.4"
-
组件配置逻辑
-
非exchange情景,必须设置default值
-
nodemanager按需设置一个或多个IP
-
exchange的rollsite按需设置一个或多个IP
-
非exchange的rollsite只可以设置1个ip
-
其他组件只可以设置一个ip
-
当没有设置的组件,会使用default值。
-
服务端必须是exchange
本节内容适用于后端引擎为非spark的场景。
本节内容适用于后端引擎为非spark的场景。
包括默认路由参数和额外路由参数。
- 部署三方,host和guest的默认路由是exchange。 exchange不设置默认路由。
- 部署两方(host和guest),互为默认路由。
- 部署两方(一方为exchange),非exchange方默认路由为exchange。
- 可以通过额外路由设置本端的默认路由。本设置会覆盖上述默认路由。
- 部署一方如果需要设置默认路由,可通过设置额外路由来实现,可以支持证书方式
- exchange如果需要设置默认路由,可通过设置额外路由来实现,可以支持证书方式
- 当exchange需要部署多个机器时,必须通过添加额外路由来设置一个默认路由。
支持ip也支持域名。
本节内容目前仅适用于后端引擎为非spark的场景。
-
目前证书只支持两方
-
脚本默认生成的所有证书使用相同ca
-
脚本也支持生成的证书使用不同的ca(执行命令需要增加参数)
-
用户使用另外自签证书,需要在使用证书的方式部署完成后,再手工替换,并重启服务。
-
部署单边的情况,也支持配置证书。 用脚本只产生一方的证书。然后服务端和客户端的设置使用这个证书。 部署完成之后,用户手工按需替换其他证书。
- 支持spark、plusar/rabbitmq、hdfs/hive等应用场景
- spark只有host&guest场景适用
部署辅助脚本: deploy/deploy.sh
部署配置文件: deploy/conf/setup.conf
ansible配置文件: var_files/prod/*
bash deploy/deploy.sh --help
Usage: deploy/deploy.sh init|render|deploy|install|config|uninstall|keys|help args
bash deploy/deploy.sh init --help
Usage: deploy/deploy.sh -h|-g|-e|-m|-k
args:
-h=ip
-g=ip
-e=ip
-m=install or uninstall
-k=both roles of keys(eg: host|guest)
-n=standalone or eggroll or spark(default: eggroll)
- 生成部署配置文件
bash deploy/deploy.sh init [-g|-h|-e|-m|-k|-n]
参数说明:
-g:表示部署guest,可不填参数值;格式“partyid:ip”,使用示例: -g="9999:192.168.1.1" 或 -g
-h:表示部署host,可不填参数值;格式“partyid:ip”,使用示例: -h="10000:192.168.0.1" 或 -h
-e:表示部署exchange,可不填参数值;格式“ip or ip列表(用|分隔)”,使用示例: -e="192.168.0.88" 或 -e="192.168.0.88|192.168.0.89" 或 -e
-m:部署模式,-m=deploy|install|config|uninstall,默认deploy(安装+配置)
-k:开启证书,支持部署单边证书、双边或三边使用,使用示例:-k="host|guest" 或 -k
默认规则:
部署2方,-k无需带参数,默认会把2方角色都自动设置为开启证书。
部署3方,必须指定角色列表。
部署一方,必须使用不带参数。
-n: 后端引擎,-n=standalone or eggroll or spark,默认为eggroll,使用示例:-n=spark
上述参数可以混合使用,多个表示部署多方。
-
使用示例
-
初始化无需参数值
bash deploy/deploy.sh init -h -g -e
-
初始化使用实际参数值
bash deploy/deploy.sh init -h="10000:192.168.0.1" -g="9999:192.168.1.1" -e="192.168.0.88" -k="host|guest"
-
-
使用部署辅助脚本生成ansible配置文件
bash deploy/deploy.sh render
-
使用以下命令生产同一个ca的的证书
bash deploy/deploy.sh keys
-
按需使用以下命令生产不同ca的的证书
/bin/bash deploy/deploy.sh keys [host|guest|exchange] // |表示或,只能选择一个执行脚本 所有不同ca的证书生成后需要执行cp-keys.sh脚本 /bin/bash deploy/cp-keys.sh $arg1 $arg2 //arg1、arg2为证书的角色方[host|guest|exchange]
/bin/bash deploy/deploy.sh deploy|install|config|uninstall
参数说明:
deploy: 安装软件和更新配置
install: 安装软件
config: 更新配置
uninstall: 卸载
单服务或多服务的部署、卸载:
1) vim deploy/conf/setup.conf //按需增加或删减模块,编辑完成后执行render生成配置
deploy_mode: deploy //deploy、install、config表示部署、uninstall表示卸载
modules: //调整需要部署或卸载的模块
- mysql
- eggroll
- fate_flow
- fateboard
2)/bin/bash deploy/deploy.sh render //生成配置
3)/bin/bash deploy/deploy.sh deploy|uninstall //执行部署或卸载
- 查看部署、卸载日志
tailf logs/deploy-??.log ---部署服务的日志,执行部署命令会提示查看
tailf logs/uninstall-??.log ---卸载服务的日志,执行卸载命令会提示查看
-
spark引擎部署配置文件
文件:
deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app ---部署目标服务的远程连接用户 deploy_group: apps ---部署目标服务的远程连接用户的用户组 deploy_mode: deploy modules: - mysql - fate_flow - fateboard roles: - host:10000 - guest:9999 host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] default_engines: spark #host spark configuration information #compute_engine: spark host_compute_engine: spark host_spark_home: "" host_hadoop_home: "" #storage_engine: hive or hdfs or localfs host_storage_engine: hive host_hive_ips: "" host_hdfs_addr: "" #mq_engine: rabbitmq or pulsar host_mq_engine: rabbitmq host_rabbitmq_ips: "" host_pulsar_ips: "" #proxy host_nginx_ips: "" # #guest spark configuration information #compute_engine: spark guest_compute_engine: spark guest_spark_home: "" guest_hadoop_home: "" #storage_engine: hive or hdfs or localfs guest_storage_engine: hive guest_hive_ips: "" guest_hdfs_addr: "" #mq_engine: rabbitmq or pulsar guest_mq_engine: rabbitmq guest_rabbitmq_ips: "" guest_pulsar_ips: "" #proxy guest_nginx_ips: ""
-
非spark引擎部署配置文件
文件:
deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app ---部署目标服务的远程连接用户 deploy_group: apps ---部署目标服务的远程连接用户的用户组 deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - host:10000 - guest:9999 ssl_roles: [] polling: {} host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] exchange_ips: [] exchange_special_routes: [] default_engines: eggroll
-
部署配置文件讲解参数说明:
1,deploy_mode: 部署模式。 取值有: deploy、install、config、uninstall,设置方式: 默认deploy表示安装软件并配置服务,install只安装软件,config只更新配置服务,uninstall表示卸载。 2,modules:需要的部署的模块。取值有:mysql、eggroll 、fate_flow、fateboard,设置方式: 单独一个,多个或者全部。例:modules: ['mysql','eggroll'] 3,roles:需要部署的某一端的角色。取值有: host、 guest、exchange,设置方式: 3个任意组合。 4,ssl_roles: 使用证书的角色。取值有: host、 guest、exchange,设置方式: 空值或三选二。 三边部署不支持-k="host|guest";不支持spark场景 5,polling: polling的角色。取值有: 字典,包含服务端的角色和客户端的角色,格式: { "server_role": "exchange", "client_role": "host" },设置方式: 空值或字典。(部署2方或者3方才支持) 6,host_ips:host端机器列表。取值有: "default:ip"、"rollsite:ip"、"nodemanager:ip"、"clustermanager:ip"、"fate_flow:ip"、"fateboard:ip",设置方式: 只设default:ip, 或多个,或全部。fate_flow和nodemanager设置的多个ip使用|分割,其他组件不支持设置多个ip。 7,host_special_routes: host端额外路由。取值有: 数组,成员格式:party_id:ip:port,设置方式:可以设置零个、一个或多个。例:- 8888:192.168.1.2:9370(支持证书方式: - 8888:192.168.1.2:9371:secure),额外路由指向exchange示例为: - default:192.168.1.2:9370 8,guest_ips:guest端机器列表。取值有: "default:ip"、"rollsite:ip"、"nodemanager:ip"、"clustermanager:ip"、"fate_flow:ip"、"fateboard:ip",设置方式: 只设default:ip, 或多个,或全部。fate_flow和nodemanager设置的多个ip使用|分割,其他组件不支持设置多个ip。 9,guest_special_routes: guest端额外路由。取值有: 数组,成员格式:party_id:ip:port, 设置方式: 可以设置零个、一个或多个。(支持证书方式:- 8888:192.168.1.2:9371:secure),指向exchange示例为: - default:192.168.1.2:9370 10,exchange_ips: exchange端机器列表,取值:"default:ip列表"、"rollsite:ip列表" ,设置方式: 二选一。多个exchange_ip使用|分割。 11,exchange_special_routes:exchange端额外路由。取值有: 数组,成员格式:party_id:ip:port, 设置方式: 可以设置零个、一个或多个。(支持配置使用证书方式: - 8888:192.168.1.2:9371:secure) 12,默认路由的设置,请参考2.4.8“路由支持”一节的介绍。 13,default_engines:fate使用的引擎,默认为eggroll,取值列表(eggroll、standalone、spark) 14,host_compute_engine:计算引擎,取值:(spark);设置spark可启动spark配置。 15,host_spark_home:spark目录,默认使用环境变量的SPARK_HOME。 16,host_hadoop_home: hadoop服务目录 17,host_storage_engine:存储引擎,取值(hive、hdfs、localfs)三选一。 18,host_hive_ips:hive的IP地址。 19,host_hdfs_addr:hdfs的address地址。示例:hdfs://fate-cluster 20,host_mq_engine:需要部署的mq组件,取值(rabbitmq、pulsar)二选一。 21,host_rabbitmq_ips:需要部署rabbitmq的IP地址,若rabbitmq和fate分离部署,需要手动添加rabbitmq的IP至environment/prod/hosts文件的fate组下 22,host_pulsar_ips:需要部署pulsar的IP地址 23,host_nginx_ips:nginx代理IP,填写开启nginx配置
-
场景1:单部署host
命令:
sh deploy/deploy.sh init -h="10000:192.168.0.1"
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - host:10000 ssl_roles: [] polling: {} host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: [] guest_special_routes: [] exchange_ips: [] exchange_special_routes: [] default_engines: eggroll
参数说明:
modules:部署模块,按需求填写,例: modules: ['mysql','eggroll']
host_special_routes:host端额外路由,一般指向exchange,数组格式:party_id:ip:port,指向exchange 例:host_special_routes: [ 'default:192.168.0.88:9370' ]
default_engines: eggroll,默认后端引擎
-
场景2:单部署exchange
命令:
sh deploy/deploy.sh init -e="192.168.0.88"
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - exchange:0 ssl_roles: [] polling: {} host_ips: [] host_special_routes: [] guest_ips: [] guest_special_routes: [] exchange_ips: - default:192.168.0.88 exchange_special_routes: [] default_engines: eggroll
参数说明:
exchange_special_routes:exchange端额外路由,数组格式:party_id:ip:port,指向其他party例: exchange_special_routes: [ '8888:192.168.2.1:9370' ]
-
场景3:部署两方exchange-guest
命令:
sh deploy/deploy.sh init -g="9999:192.168.1.1" -e="192.168.0.88" -k="guest|exchange"
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - guest:9999 - exchange:0 ssl_roles: - guest - exchange polling: {} host_ips: [] host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] exchange_ips: - default:192.168.0.88 exchange_special_routes: [] default_engines: eggroll
参数说明:
ssl_roles:证书启用方
-
场景4:部署两方host-guest(spark)
命令:
sh deploy/deploy.sh init -h="10000:192.168.0.1" -g="9999:192.168.1.1" -n=spark
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - fate_flow - fateboard roles: - host:10000 - guest:9999 host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] default_engines: spark #host spark configuration information #compute_engine: spark host_compute_engine: spark host_spark_home: "" host_hadoop_home: "" #storage_engine: hive or hdfs or localfs host_storage_engine: hive host_hive_ips: "" host_hdfs_addr: "" #mq_engine: rabbitmq or pulsar host_mq_engine: rabbitmq host_rabbitmq_ips: "" host_pulsar_ips: "" #proxy host_nginx_ips: "" # #guest spark configuration information #compute_engine: spark guest_compute_engine: spark guest_spark_home: "" guest_hadoop_home: "" #storage_engine: hive or hdfs or localfs guest_storage_engine: hive guest_hive_ips: "" guest_hdfs_addr: "" #mq_engine: rabbitmq or pulsar guest_mq_engine: rabbitmq guest_rabbitmq_ips: "" guest_pulsar_ips: "" #proxy guest_nginx_ips: ""
-
场景5:部署两方host-guest(非spark)
命令:
sh deploy/deploy.sh init -h="10000:192.168.0.1" -g="9999:192.168.1.1" -k
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - host:10000 - guest:9999 ssl_roles: - host - guest polling: {} host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] exchange_ips: [] exchange_special_routes: [] default_engines: eggroll
-
场景6:部署三方host-guest-exchange
命令:
sh deploy/deploy.sh init -h="10000:192.168.0.1" -g="9999:192.168.1.1" -e="192.168.0.88" -k="host|exchange"
配置文件:
vim deploy/conf/setup.conf
env: prod pname: fate ssh_port: 22 deploy_user: app deploy_group: apps deploy_mode: deploy modules: - mysql - eggroll - fate_flow - fateboard roles: - host:10000 - guest:9999 - exchange:0 ssl_roles: - host - exchange polling: {} host_ips: - default:192.168.0.1 host_special_routes: [] guest_ips: - default:192.168.1.1 guest_special_routes: [] exchange_ips: - default:192.168.0.88 exchange_special_routes: [] default_engines: eggroll
- 涉及建立基础目录和安装基础依赖包等。(涉及sudo/root权限操作)
vi var_files/prod/base_init
- 内容如下:
base_dir: "/etc/ansible"
//目录可以根据实际情况调整
base: "/data"
pbase: "/data/projects" ---项目根目录
dbase: "/data/projects/data" ---数据目录
cbase: "/data/projects/common" ---工具类部署目录(包含supervisor和miniconda的路径)
sbase: "/data/projects/snmp"
lbase: "/data/logs" ---日志目录
tbase: "/data/temp" ---临时目录
bbase: "/data/projects/backups" ---备份目录
envCheck: True ---设置为False会跳过环境检查
init:
dirs:
- "common"
- "snmp"
supervisord:
version: 1.1.4
account:
name: "root" ---supervisor登陆账号
password: "fate" ---supervisor登陆密码
service:
owner: "app" ---supervisor启动用户,也是服务启动用户,按情况调整
group: "apps" ---用户的用户组,按情况调整
ip: "127.0.0.1" ---supervisor启动IP
port: 9001 ---supervisor启动端口
涉及各个组件的版本。
vi var_files/prod/fate_init
内容如下: 无需修改配置
deploy_mode: deploy ---部署模式,安装install 、配置config、卸载uninstall,脚本自动替换
deploy_modules: ---部署模块
- mysql
- eggroll
- fate_flow
- fateboard
deploy_roles: ---部署角色
- exchange
- guest
- host
ssl_roles: ---证书角色
- host
- exchange
default_engines: eggroll ---默认后端引擎
pname: "fate" ---项目名称
python: ---python部署信息
version: 4.5.4 --不同的包会随安全更新版本
dest: "miniconda3"
venv: "common/python/venv"
java: ---java部署信息
name: "jdk"
version: "8u345"
path: "common/jdk"
mysql: ---mysql部署信息
version: "8.0.28" --不同的包会随安全更新版本
path: "common/mysql"
user: "root" ---mysql数据库管理账号,使用外部mysql需要修改此参数为实际使用账号
passwd: "fatE168dev" ---mysql数据库管理密码,使用外部mysql需要修改此参数为实际使用密码
这个配置文件以及文档其余部分涉及的组件版本,以下载的部署包提供的版本为准。文档中的版本号仅用于展示配置的设置
按需修改,不部署则跳过此步骤
vi var_files/prod/fate_exchange
内容如下:
exchange:
rollsite:
enable: True
coordinator: fate
ips: ---rollsite IP列表
- 192.168.0.88
port: 9370 ---rollsite服务端口
secure_port: 9371 ---开启证书通讯时对外的端口
server_secure: False ---作为服务端,使用证书验证,开启True
client_secure: False ---作为客户端,使用证书验证,开启True
polling:
enable: False //polling设置开关,开启设置为True
ids: //开启polling,可以支持多方polling
- 10000 //与exchange通讯的polling对端
- 9999
route_tables: ---exchange路由表,指向各party的路由配置
- id: 10000 ---路由表party_id
routes:
- name: default
ip: 192.168.0.1 ---party_id为10000集群下的rollsite IP
port: 9370 ---开启证书设置为9371
is_secure: False ---开启证书设置为true,并把上面的port端口设置为9371
- id: 9999
routes:
- name: default
ip: 192.168.1.1 ---party_id为9999集群下的rollsite IP
port: 9370 ---开启证书设置为9371
is_secure: False ---开启证书设置为true,并把上面的port端口设置为9371
按需修改,不部署则跳过此步骤
vi var_files/prod/fate_host
- spark引擎场景配置请参考如下:
host:
partyid: 10000 ---host端partyid,根据实际规划修改
fate_flow:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.0.1 ---只支持部署一台主机
grpcPort: 9360 ---grpc服务端口
httpPort: 9380 ---http服务端口
dbname: "fate_flow" ---数据库名称
proxy: rollsite ---可选值:rollsite|fateflow|nginx,fateflow和nginx用于spark
http_app_key:
http_secret_key:
use_deserialize_safe_module: false
default_engines: eggroll ---可选值:standalone、eggroll、spark等
federation: rabbitmq ---可选:rabbitmq或pulsar
storage: hdfs ---存储引擎:hdfs,hive和localfs
fateboard:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.0.1 ---只支持部署一台主机
port: 8080 ---服务端口
dbname: "fate_flow" ---数据库名称
mysql:
enable: True ---true为需要部署此模块,False则否
type: inside ---inside表示内部数据库,自动部署;outside表示外部数据库,不提供部署
ips:
- 192.168.0.1 ---只支持部署一台主机
port: 3306 ---服务端口
dbuser: "fate" ---数据库业务账号,使用外部mysql可修改此参数
dbpasswd: "fate_deV2999" ---数据库业务密码,使用外部mysql可修改此参数
zk: ---不支持部署zk,配置信息用于fateflow
enable: False ---true为开启zk配置信息,False则否
lists: ---zk集群IP列表
- ip: 192.168.0.1
port: 2181 ---zk服务端口
use_acl: false ---zk是否启动acl
user: "fate" ---acl用户
passwd: "fate" ---acl密码
servings: ---serving-server配置信息
ips: ---serving集群IP列表,配置host端serving
- 192.168.0.1
port: 8000 ---服务端口
spark: ---开启spark信息
enable: False
home:
hadoop_home:
cores_per_node: 20
nodes: 2
hive:
enable: False
host: 127.0.0.1
port: 10000
auth:
configuration:
kerberos_service_name:
username:
password:
hdfs:
enable: False
name_node: hdfs://fate-cluster
path_prefix:
rabbitmq: ---rabbitmq部署信息
enable: False
host: 192.168.0.1
mng_port: 12345
port: 5672
user: fate
password: fate
route_table:
- id: 10000
routes:
- ip: 192.168.0.1
port: 5672
pulsar:
enable: False
host: 192.168.0.1
port: 6650
mng_port: 8080
topic_ttl: 5
route_table:
- id: 10000
routes:
- ip: 192.168.0.1
port: 6650
sslPort: 6651
proxy: ""
nginx:
enable: False
host: 127.0.0.1
http_port: 9300
grpc_port: 9310
- 非spark引擎场景配置请参考如下:
host:
partyid: 10000 ---host端partyid,根据实际规划修改
rollsite:
enable: True ---true为需要部署此模块,False则否
coordinator: fate
ips: ---IP列表,目前rollsite只支持部署到一台服务器
- 192.168.0.1
port: 9370 ---服务端口
secure_port: 9371 ---开启证书通讯时对外的端口
server_secure: False ---作为服务端,使用证书验证,开启True
client_secure: False ---作为客户端,使用证书验证,开启True
polling:
enable: False ---polling设置开关,开启设置为True
route_tables: ---host端路由表
- id: default ------本party指向exchange或者其他party的IP,端口路由配置
routes:
- name: default ---默认路由表,目前支持一个默认路由。如果有exchange,则指向exchange,如无,则指向对端party。
ip: 192.168.0.88 ---exchange或者对端party rollsite IP
port: 9370 ---exchange或者对端party rollsite 端口,默认9370
is_secure: False ---host开启证书设置为true
- id: 10000 ---本party自身路由配置
routes:
- name: default
ip: 192.168.0.1 ---rollsitede IP
port: 9370
is_secure: false
- name: fateflow
ip: 192.168.0.1 ---fateflow IP
port: 9360
clustermanager:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.0.1 ---只支持部署一台主机
port: 4670 ---服务端口
cores_per_node: 16 ---设置cpu核数,统一为nodemanager所在机器的总cpu核数
nodemanager: ---可以多节点,在ips中加配置
enable: True ---true为需要部署此模块,False则否
ips: ---支持部署多台
- 192.168.0.1
- 192.168.0.x
port: 4671 ---服务端口
eggroll:
dbname: "eggroll_meta" ---eggroll使用的数据库名,默认即可
egg: 4 ---egg并发数可以根据附录公式计算修改
fate_flow:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.0.1 ---只支持部署一台主机
grpcPort: 9360 ---grpc服务端口
httpPort: 9380 ---http服务端口
dbname: "fate_flow" ---数据库名称
proxy: rollsite ---可选值:rollsite|fateflow|nginx,fateflow和nginx用于spark
http_app_key:
http_secret_key:
use_deserialize_safe_module: false
default_engines: eggroll ---可选值:standalone、eggroll、spark等
fateboard:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.0.1 ---只支持部署一台主机
port: 8080 ---服务端口
dbname: "fate_flow" ---数据库名称
mysql:
enable: True ---true为需要部署此模块,False则否
type: inside ---inside表示内部数据库,自动部署;outside表示外部数据库,不提供部署
ips:
- 192.168.0.1 ---只支持部署一台主机
port: 3306 ---服务端口
dbuser: "fate" ---数据库业务账号,使用外部mysql可修改此参数
dbpasswd: "fate_deV2999" ---数据库业务密码,使用外部mysql可修改此参数
zk: ---不支持部署zk,配置信息用于fateflow
enable: False ---true为开启zk配置信息,False则否
lists: ---zk集群IP列表
- ip: 192.168.0.1
port: 2181 ---zk服务端口
use_acl: false ---zk是否启动acl
user: "fate" ---acl用户
passwd: "fate" ---acl密码
servings: ---serving-server配置信息
ips: ---serving集群IP列表,配置host端serving
- 192.168.0.1
port: 8000 ---服务端口
按需修改,不部署则跳过此步骤
vi var_files/prod/fate_guest
- spark引擎场景配置请参考如下:
guest:
partyid: 9999 ---guest端partyid,根据实际规划修改
fate_flow:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.1.1 ---只支持部署一台主机
grpcPort: 9360 ---grpc服务端口
httpPort: 9380 ---http服务端口
dbname: "fate_flow" ---数据库名称
proxy: rollsite ---可选值:rollsite|fateflow|nginx,fateflow和nginx用于spark
http_app_key:
http_secret_key:
use_deserialize_safe_module: false
default_engines: eggroll ---可选值:standalone、eggroll、spark等
federation: rabbitmq ---可选:rabbitmq或pulsar
storage: hdfs ---存储引擎:hdfs,hive和localfs
fateboard:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.1.1 ---只支持部署一台主机
port: 8080 ---服务端口
dbname: "fate_flow" ---数据库名称
mysql:
enable: True ---true为需要部署此模块,False则否
type: inside ---inside表示内部数据库,自动部署;outside表示外部数据库,不提供部署
ips:
- 192.168.1.1 ---只支持部署一台主机
port: 3306 ---服务端口
dbuser: "fate" ---数据库业务账号,使用外部mysql可修改此参数
dbpasswd: "fate_deV2999" ---数据库业务密码,使用外部mysql可修改此参数
zk: ---不支持部署zk,配置信息用于fateflow
enable: False ---true为开启zk配置信息,False则否
lists: ---zk集群IP列表
- ip: 192.168.1.1
port: 2181 ---zk服务端口
use_acl: false ---zk是否启动acl
user: "fate" ---acl用户
passwd: "fate" ---acl密码
servings: ---serving-server配置信息
ips: ---serving集群IP列表,配置guest端serving
- 192.168.1.1
port: 8000 ---服务端口
spark: ---开启spark信息
enable: False
home:
hadoop_home:
cores_per_node: 20
nodes: 2
hive:
enable: False
host: 127.0.0.1
port: 10000
auth:
configuration:
kerberos_service_name:
username:
password:
hdfs:
enable: False
name_node: hdfs://fate-cluster
path_prefix:
rabbitmq: ---rabbitmq部署信息
enable: False
host: 192.168.1.1
mng_port: 12345
port: 5672
user: fate
password: fate
route_table:
- id: 10000
routes:
- ip: 192.168.1.1
port: 5672
pulsar:
enable: False
host: 192.168.1.1
port: 6650
mng_port: 8080
topic_ttl: 5
route_table:
- id: 10000
routes:
- ip: 192.168.1.1
port: 6650
sslPort: 6651
proxy: ""
nginx:
enable: False
host: 127.0.0.1
http_port: 9300
grpc_port: 9310
- 非spark引擎场景配置请参考如下:
guest:
partyid: 9999 ---guest端partyid,根据实际规划修改
rollsite:
enable: True ---true为需要部署此模块,False则否
coordinator: fate
ips: ---IP列表,目前rollsite只支持部署到一台服务器
- 192.168.1.1
port: 9370 ---服务端口
secure_port: 9371 ---开启证书通讯时对外的端口
server_secure: False ---作为服务端,使用证书验证,开启True
client_secure: False ---作为客户端,使用证书验证,开启True
polling:
enable: False ---polling设置开关,开启设置为True
route_tables: ---host端路由表
- id: default ------本party指向exchange或者其他party的IP,端口路由配置
route:
- name: default ---默认路由表,目前支持一个默认路由。如果有exchange,则指向exchange,如无,则指向对端party。
ip: 192.168.0.88 ---exchange或者对端party rollsite IP
port: 9370 ---exchange或者对端party rollsite 端口,默认9370
is_secure: False ---guest开启证书设置为true
- id: 10000 ---本party自身路由配置
route:
- name: default
ip: 192.168.1.1 ---rollsitede IP
port: 9370
is_secure: false
- name: fateflow
ip: 192.168.1.1 ---fateflow IP
port: 9360
clustermanager:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.1.1 ---只支持部署一台主机
port: 4670 ---服务端口
cores_per_node: 16 ---设置cpu核数,统一为nodemanager所在机器的总cpu核数
nodemanager: ---可以多节点,在ips中加配置
enable: True ---true为需要部署此模块,False则否
ips: ---支持部署多台
- 192.168.1.1
- 192.168.1.x
port: 4671 ---服务端口
eggroll:
dbname: "eggroll_meta" ---eggroll使用的数据库名,默认即可
egg: 4 ---egg并发数可以根据附录公式计算修改
fate_flow:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.1.1 ---只支持部署一台主机
grpcPort: 9360 ---grpc服务端口
httpPort: 9380 ---http服务端口
dbname: "fate_flow" ---数据库名称
proxy: rollsite ---可选值:rollsite|fateflow|nginx,fateflow和nginx用于spark
http_app_key:
http_secret_key:
use_deserialize_safe_module: false
default_engines: eggroll ---可选值:standalone、eggroll、spark等
fateboard:
enable: True ---true为需要部署此模块,False则否
ips:
- 192.168.1.1 ---只支持部署一台主机
port: 8080 ---服务端口
dbname: "fate_flow" ---数据库名称
mysql:
enable: True ---true为需要部署此模块,False则否
type: inside ---inside表示内部数据库,自动部署;outside表示外部数据库,不提供部署
ips:
- 192.168.1.1 ---只支持部署一台主机
port: 3306 ---服务端口
dbuser: "fate" ---数据库业务账号,使用外部mysql可修改此参数
dbpasswd: "fate_deV2999" ---数据库业务密码,使用外部mysql可修改此参数
zk: ---不支持部署zk,配置信息用于fateflow
enable: False ---true为开启zk配置信息,False则否
lists: ---zk集群IP列表
- ip: 192.168.1.1
port: 2181 ---zk服务端口
use_acl: false ---zk是否启动acl
user: "fate" ---acl用户
passwd: "fate" ---acl密码
servings: ---serving-server配置信息
ips: ---serving集群IP列表,配置guest端serving
- 192.168.1.1
port: 8000 ---服务端口
修改文件:(默认不需要修改)
vi project_prod.yaml
spark引擎场景配置project_prod.yaml内容如下:
- hosts: fate
any_errors_fatal: True
vars:
jbase: "{{pbase}}/{{pname}}/{{java['path']}}/{{java['name']}}-{{java['version']}}"
pybase: "{{pbase}}/{{pname}}/{{python['venv']}}"
pypath: "{{pbase}}/{{pname}}/fate/python:{{pbase}}/{{pname}}/fateflow/python:{{pbase}}/{{pname}}/eggroll/python"
vars_files:
- var_files/prod/base_init
- var_files/prod/fate_init
- var_files/prod/fate_host
- var_files/prod/fate_guest
roles:
- base
- supervisor
- { role: "mysql", when: "( 'host' in deploy_roles and ansible_ssh_host in host['mysql']['ips'] and host['mysql']['enable'] == True and host['mysql']['type'] == 'inside' and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['mysql']['ips'] and guest['mysql']['enable'] == True and guest['mysql']['type'] == 'inside' and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "python", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fate_flow']['ips'] and host['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fate_flow']['ips'] and guest['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "rabbitmq", when: "( 'host' in deploy_roles and ansible_ssh_host == host['rabbitmq']['host'] and host['rabbitmq']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host == guest['rabbitmq']['host'] and guest['rabbitmq']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "fateflow", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fate_flow']['ips'] and host['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fate_flow']['ips'] and guest['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "fateboard", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fateboard']['ips'] and host['fateboard']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fateboard']['ips'] and guest['fateboard']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
非spark引擎场景配置project_prod.yaml内容如下:
- hosts: fate
any_errors_fatal: True
vars:
jbase: "{{pbase}}/{{pname}}/{{java['path']}}/{{java['name']}}-{{java['version']}}"
pybase: "{{pbase}}/{{pname}}/{{python['venv']}}"
pypath: "{{pbase}}/{{pname}}/fate/python:{{pbase}}/{{pname}}/fateflow/python:{{pbase}}/{{pname}}/eggroll/python"
vars_files:
- var_files/prod/base_init
- var_files/prod/fate_init
- var_files/prod/fate_host
- var_files/prod/fate_guest
- var_files/prod/fate_exchange
roles:
- base
- supervisor
- { role: "mysql", when: "( 'host' in deploy_roles and ansible_ssh_host in host['mysql']['ips'] and host['mysql']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['mysql']['ips'] and guest['mysql']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "python", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fate_flow']['ips'] and host['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['nodemanager']['ips'] and host['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fate_flow']['ips'] and guest['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['nodemanager']['ips'] and guest['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "eggroll", when: "( ( 'exchange' in deploy_roles and ansible_ssh_host in exchange['rollsite']['ips'] and exchange['rollsite']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['rollsite']['ips'] and host['rollsite']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['clustermanager']['ips'] and host['clustermanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['nodemanager']['ips'] and host['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['fate_flow']['ips'] and host['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['rollsite']['ips'] and guest['rollsite']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['clustermanager']['ips'] and guest['clustermanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['nodemanager']['ips'] and guest['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fate_flow']['ips'] and guest['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) )" }
- { role: "fateflow", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fate_flow']['ips'] and host['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'host' in deploy_roles and ansible_ssh_host in host['nodemanager']['ips'] and host['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fate_flow']['ips'] and guest['fate_flow']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['nodemanager']['ips'] and guest['nodemanager']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
- { role: "fateboard", when: "( 'host' in deploy_roles and ansible_ssh_host in host['fateboard']['ips'] and host['fateboard']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] ) or ( 'guest' in deploy_roles and ansible_ssh_host in guest['fateboard']['ips'] and guest['fateboard']['enable'] == True and deploy_mode in [ 'deploy', 'install', 'config' ] )" }
修改文件:(默认不需要修改)
vi environments/prod/hosts
内如如下:
[all:vars]
ansible_connection=ssh
ansible_ssh_port=36000 ---远程连接端口
ansible_ssh_user=app ---远程执行用户,同时也是部署用户
#ansible_ssh_pass=
##method: sudo or su
ansible_become_method=sudo
ansible_become_user=root
ansible_become_pass=
[deploy_check]
---fate组为同时部署host、guest和exchange的IP列表
[fate]
192.168.0.88
192.168.1.1
192.168.0.1
若需在ansible本机安装且不经过ssh,则在IP后面添加 ansible_connection=local,如下
[fate]
192.168.0.88 ansible_connection=local
若部署spark场景,rabbitmq和fate分离部署,需要手动添加rabbitmq的IP至fate组下
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/AnsibleFATE_${version}_release_offline.tar.gz
tar xzf AnsibleFATE_${version}_release_offline.tar.gz
cd AnsibleFATE_${version}_release_offline
-
$version >= 1.7.0
,各版本下载链接可在 wiki 查看 -
离线包解压后初始化配置后可直接部署
-
离线包与在线包的唯一区别是在线包缺少部分不常更新的大文件,可按需下载
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/AnsibleFATE_${version}_release_online.tar.gz
tar xzf AnsibleFATE_${version}_release_online.tar.gz
cd AnsibleFATE_${version}_release_online
-
$version >= 1.9.0
-
按需下载文件,全部下载后的在线包与离线包的目录结构完全一致
-
更新在线包时,只需直接解压覆盖原有文件,下列文件如无更新,可不再下载
# 必需
wget -P roles/python/files https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/resources/Miniconda3-py38_4.12.0-Linux-x86_64.sh
# fateflow 和 eggroll 需要
wget -O roles/python/files/pypi.tar.gz https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/pip_packages_fate_${version}.tar.gz
# fateboard 和 eggroll 需要
wget -P roles/java/files https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/resources/jdk-8u345.tar.xz
# fateflow 和 eggroll 都需要连接数据库,fateboard 不需要数据库
wget -P roles/mysql/files https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/resources/mysql-8.0.28.tar.gz
# 按需
wget -P roles/rabbitmq/files https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/resources/rabbitmq-server-generic-unix-3.9.14.tar.xz
部署配置文件: deploy/conf/setup.conf
Usage: /bin/bash deploy/deploy.sh init -h|-g|-e|-m|-k
args:
-h=ip
-g=ip
-e=ip or ips
-m=install or uninstall
-k=both roles of keys(eg: host|guest)
-n=standalone or eggroll or spark(default: eggroll)
- 手工修改配置文件
vi deploy/conf/setup.conf
- 生成ansible配置文件: var_files/prod/***
/bin/bash deploy/deploy.sh render
/bin/bash deploy/deploy.sh ping
/bin/bash deploy/deploy.sh keys ---生成同一ca证书
/bin/bash deploy/deploy.sh keys [host|guest|exchange] ---生成不同ca证书,选择一方执行
不同ca的证书生成后需要执行cp-keys.sh脚本
/bin/bash deploy/cp-keys.sh $arg1 $arg2 //arg1、arg2为证书的角色方[host|guest|exchange]
/bin/bash deploy/deploy.sh deploy|install|config|uninstall
详看2.7.1一节。
后置操作请参考: <<部署fate集群的后置操作>> 一文。
跑toy测试和最小化测试(详看2.7.2节”Toy_example部署验证“和2.7.3节“最小化测试”)
访问fateboard
浏览器访问http://192.168.0.1:8080 or http://192.168.1.1:8080
查看进程和端口
使用ps、losf、ss等命令查看已经部署的服务的进程和端口。
- 查看进程
ps aux|grep fate
/bin/bash /data/projects/common/supervisord/service.sh status all
- 查看在监听的所有tcp端口
ss -lnt
- 查看指定端口是否监听
lsof -i :9370
此测试您需要设置2个参数:gid(guest partyid),hid(host_partyid)。
1)192.168.0.1上执行,gid和hid都设为10000:
source /data/projects/fate/bin/init_env.sh
flow test toy -gid 10000 -hid 10000
类似如下结果表示成功:
"2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998"
提示:如出现max cores per job is 1, please modify job parameters报错提示,需要修改运行时参数task_cores为1,增加命令行参数 '--task-core 1'.
2)192.168.0.2上执行,gid和hid都设为9999:
source /data/projects/fate/bin/init_env.sh
flow test toy -gid 9999 -hid 9999
类似如下结果表示成功:
"2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998"
选定9999为guest方,在192.168.0.2上执行:
source /data/projects/fate/bin/init_env.sh
flow test toy -gid 9999 -hid 10000
类似如下结果表示成功:
"2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998"
分别在192.168.0.1和192.168.0.2上执行:
source /data/projects/fate/bin/init_env.sh
fate_test data upload -t min_test
更多细节信息,敬请参考脚本README
请确保guest和host两方均已分别通过给定脚本上传了预设数据。
快速模式下,最小化测试脚本将使用一个相对较小的数据集,即包含了569条数据的breast数据集。
选定9999为guest方,在192.168.0.2上执行:
source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/min_test_task/
#单边测试
python run_task.py -gid 9999 -hid 9999 -aid 9999 -f fast
#双边测试
python run_task.py -gid 9999 -hid 10000 -aid 10000 -f fast
其他一些可能有用的参数包括:
- -f: 使用的文件类型. "fast" 代表 breast数据集, "normal" 代表 default credit 数据集.
- --add_sbt: 如果被设置为1, 将在运行完lr以后,启动secureboost任务,设置为0则不启动secureboost任务,不设置此参数系统默认为1。
若数分钟后在结果中显示了“success”字样则表明该操作已经运行成功了。若出现“FAILED”或者程序卡住,则意味着测试失败。
只需在命令中将“fast”替换为“normal”,其余部分与快速模式相同。
服务管理
进入supervisor目录
cd /data/projects/common/supervisord
启动/关闭/查看所有:
bash service.sh start/stop/status all
启动/关闭/查看单个模块(可选:clustermanager,nodemanager,rollsite,fateflow,fateboard,mysql):
bash service.sh start/stop/status fate-clustermanager
服务日志
服务 | 进程关键字 | 日志路径 |
---|---|---|
eggroll | ClusterManager、NodeManager、rollsite | /data/logs/fate/eggroll/ |
fate_flow | fate_flow_server | /data/logs/fate/fateflow/ |
mysql | mysql | /data/logs/mysql/ |
fateboard | fateboard | /data/logs/fate/fateboard/ |
自签证书的名称需要和部署脚本的统一,包含ca.pem、server.pem、server.key、client.pem、client.key文件,每个部署角色的证书文件都需要包含这五个文件。
- 在已有证书的fate环境下替换自签证书的场景(假设证书为guest+exchange)
1)当自签证书的名称不一样,需要如下操作,每个角色的证书都需要操作:
1、ca.pem:ca根证书,类似ca.crt文件,名称不一致使用cp命令重命名文件;例如:cp ca.crt ca.pem
2、server.pem:server服务端证书,类似server.crt文件,名称不一致使用cp命令重命名文件;例如:cp server.crt server.pem
3、server.key:server服务端私钥,制作私钥时可以指定名称,若名称不一致使用cp命令重命名文件
4、client.pem:client客户端证书,类似client.crt文件,名称不一致使用cp命令重命名文件;例如:cp client.crt client.pem
5、client.key:client客户端私钥,制作私钥时可以指定名称,若名称不一致使用cp命令重命名文件
2)将角色的证书拷贝到对应角色主机的证书路径下(假设证书文件在角色名对应的文件夹中,远程用户app)
scp guest/* app@guestip:/data/projects/data/fate/keys/
scp exchange/* app@exchangeip:/data/projects/data/fate/keys/
//guestip和exchangeip根据实际IP填写
3)重启guest和exchange的rollsite服务
bash /data/projects/common/supervisord/service.sh restart fate-rollsite
部署单边的情况,也支持配置证书。 用脚本只产生一方的证书。然后服务端和客户端的设置使用这个证书。 部署完成之后,用户手工按需替换其他证书
- 部署单边完成后需要替换证书的操作
1)部署单边host(假设证书方为exchange-host)
1、sh deploy/deploy.sh init -h -k
//修改conf/setup.conf的hostip,并设置额外路由为exchange,路由格式为(default:ip:证书端口:secure)
2、sh deploy/deploy.sh keys //证书制作拷贝
3、将deploy/keys/host/目录下的ca.pem、client.pem、client.key文件远程拷贝到exchange服务器的/data/projects/data/fate/keys/目录下,拷贝对应的名称分别为exchange-client-ca.pem、exchange-client-client.pem、exchange-client-client.key
4、sh deploy/deploy.sh render //生成ansible配置
5、sh deploy/servicec.sh deploy //执行部署
2)部署单边exchange(假设证书方为exchange-host)
1、sh deploy/deploy.sh init -e -k
//修改conf/setup.conf的exchangeip,并设置额外路由为host,路由格式为(host_party:ip:证书端口:secure)
2、sh deploy/deploy.sh keys //证书制作拷贝
3、将deploy/keys/exchange/目录下的ca.pem、client.pem、client.key文件远程拷贝到host服务器的/data/projects/data/fate/keys/目录下,拷贝对应的名称分别为host-client-ca.pem、host-client-client.pem、host-client-client.key
4、sh deploy/deploy.sh render //生成ansible配置
5、sh deploy/servicec.sh deploy //执行部署
1)使用root登录数据库授权内网root所有人访问(没有root用户,使用有管理权限的账号登陆)
登陆mysql(需要cd到mysql的目录下)
./bin/mysql -uroot -p
执行如下sql
alter user 'root'@'localhost' identified with mysql_native_password by 'root管理密码';
CREATE USER if not exists root@'%' IDENTIFIED BY "root管理密码";
GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION;
alter user 'root'@'%' identified with mysql_native_password by 'root管理密码';
flush privileges;
2)修改var_files/prod/fate_host、fate_guest
mysql:
enable: True
type: outside --修改为outside,表示外部
ips:
- 192.168.0.1 --填写外部mysql的实际IP
port: 3306 --填写外部mysql的实际端口
dbuser: fate
dbpasswd: fate_deV2999
3)修改var_files/prod/fate_init
mysql:
version: "8.0.28"
path: "common/mysql"
user: "root" ---mysql数据库管理账号,修改为实际使用的管理账号
passwd: "fatE168dev" ---mysql数据库管理密码,修改为实际使用的管理密码