ansible 部署FATE集群单边场景
官方文档:
https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_FATE_manual.md
https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_two_sides.md
gitee详细文档:
docs/ansible_deploy_one_side.md · 亦一亦二/AnsibleFATE - Gitee.com
一、前置操作
1、主机映射
第一台:
hostnamectl set-hostname fate01
第二台:
hostnamectl set-hostname fate02
2、关闭selinux
确认是否已安装selinux
centos系统执行:rpm -qa | grep selinux
ubuntu系统执行:apt list --installed | grep selinux
如果已经安装selinux就执行:setenforce 0
3、修改linux系统参数
vi /etc/security/limits.conf
如果没有一下内容,则添加:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
4、清理20-nproc.conf文件
cd /etc/security/limits.d
ls -lrt 20-nproc.conf如果存在该文件则:
mv 20-nproc.conf 20-nproc.conf_bak
5、修改系统mysql配置
mv /etc/my.cnf /etc/my.cnf_bak
6、关闭防火墙(可选)
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
## 如果是Ubuntu系统:
ufw disable
ufw status
7、创建用户
groupadd apps
useradd -s /bin/bash -g apps -d /home/app app
8、创建目录并设置sudo权限以及免密登录
# 创建用户
mkdir -pv /data/projects /data/temp /data/logs
chown -R app:apps /data/projects /data/temp /data/logs
# 设置sudo权限
echo "app ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# 免密登录:
# 切换app用户免密登录:
su - app
ssh-keygen -t rsa
ssh-copy-id -i app@192.168.0.1
9、增加虚拟内存
cd /data
dd if=/dev/zero of=/data/swapfile128G bs=1024 count=134217728
mkswap /data/swapfile128G
swapon /data/swapfile128G
cat /proc/swaps
echo '/data/swapfile128G swap swap defaults 0 0' >> /etc/fstab
10、安装ansible
# yum源没有ansible,配置yum源:
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache
yum install ansible# 修改ansible: /etc/ansible/ansible.cfg
remote_user = app
二、部署
本章是通过ansible 部署FATE集群单边场景之一:单独部署host和guest。
role | partyid | IP地址 | 操作系统 | 主机配置 | 存储 | 部署模块 |
host | 10000 | 192.168.0.1 (有外网) | CentOS 7.2/Ubuntu 18.04 | 8C16G | 500G | fate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql |
guest | 9999 | 192.168.0.2 | CentOS 7.2/Ubuntu 18.04 | 8C16G | 500G | fate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql |
主机资源和操作系统要求
类别 | 说明 |
主机配置 | 不低于8C16G500G,千兆网卡 |
操作系统 | CentOS linux 7.2及以上同时低于8/Ubuntu 18.04 |
依赖包 | 需要安装如下依赖包: |
用户 | 用户:app,属主:apps(app用户需可以sudo su root而无需密码) |
文件系统 | 1、数据盘挂载在/data目录下。 |
虚拟内存 | 不低于128G |
系统参数 | 1、文件句柄数不低于65535。 |
2 部署目标介绍
(1) Host端
Party Id: 10000
角色 | IP | 端口 | 介绍 |
rollsite | 192.168.0.1 | 9370 | 跨站点或者说跨party通讯组件 |
fate_flow | 192.168.0.1 | 9360;9380 | 联合学习任务流水线管理模块 |
clustermanager | 192.168.0.1 | 4670 | cluster manager管理集群 |
nodemanager | 192.168.0.1 | 4671 | node manager管理每台机器资源 |
fateboard | 192.168.0.1 | 8080 | 联合学习过程可视化模块 |
mysql | 192.168.0.1 | 3306 | 数据存储,clustermanager和fateflow依赖 |
(2) Guest端
Party Id: 9999
角色 | IP | 端口 | 介绍 |
rollsite | 192.168.0.2 | 9370 | 跨站点或者说跨party通讯组件 |
fate_flow | 192.168.0.2 | 9360;9380 | 联合学习任务流水线管理模块 |
clustermanager | 192.168.0.2 | 4670 | cluster manager管理集群 |
nodemanager | 192.168.0.2 | 4671 | node manager管理每台机器资源 |
fateboard | 192.168.0.2 | 8080 | 联合学习过程可视化模块 |
mysql | 192.168.0.2 | 3306 | 数据存储,clustermanager和fateflow依赖 |
3 下载离线安装包
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/AnsibleFATE_1.7.2_release-offline.tar.gz
tar -zxvf AnsibleFATE_1.7.2_release-offline.tar.gz
cd AnsibleFATE_1.7.2_release-offline
4 配置(host)
4.1 初始化配置
- 步骤一:
# 使用辅助脚本产生初始化配置:
sh deploy/deploy.sh init -h="10000:192.168.0.1"
- 步骤二:按需修改配置
vim deploy/conf/setup.conf
#base setup
env: prod
pname: fate
ssh_port: 22
deploy_user: app
deploy_group: apps
#
#deploy mode: deploy|install|config|uninstall
deploy_mode: deploy
#
#moduel list: mysql|eggroll|fate_flow|fateboard
modules:- mysql- eggroll- fate_flow- fateboard
#
#role list: host|guest|exchange
roles:- host:10000
#
#ssl role list: host && guest | host&&exchange | guest&&exchange
ssl_roles: []
#
polling: {}
#host ip lists
#host_ips: []
host_ips:- default:192.168.0.1
#
#extra host rules
host_special_routes: - default:192.168.0.2:9370 ---guest IP,此处需要手工添加,可以设置额外路由指向exchange
#guest ip lists
#guest_ips: []
guest_ips: []
#
#extra guest rules
guest_special_routes: []
#
#exchange ip lists
exchange_ips: []
#
#extra exchange rules
exchange_special_routes: []
default_engines: eggroll
- 步骤3:执行辅助脚本产生配置
bash deploy/deploy.sh render
4.2 配置host信息
修改如下文件,默认可以不修改。
vi var_files/prod/fate_host
host:partyid: 10000rollsite:enable: truecoordinator: fateips:- 192.168.0.1port: 9370secure_port: 9371server_secure: falseclient_secure: falsepolling:enable: falseroute_tables:- id: defaultroutes:- name: defaultip: 192.168.0.2port: 9370is_secure: false- id: 10000routes:- name: defaultip: 192.168.0.1port: 9370is_secure: false- name: fateflowip: 192.168.0.1port: 9360clustermanager:enable: trueips:- 192.168.0.1port: 4670cores_per_node: 16nodemanager:enable: trueips:- 192.168.0.1port: 4671eggroll:dbname: eggroll_metaegg: 4fate_flow:enable: trueips:- 192.168.0.1grpcPort: 9360httpPort: 9380dbname: fate_flowproxy: rollsitehttp_app_key:http_secret_key:use_deserialize_safe_module: falsedefault_engines: eggrollfateboard:enable: trueips:- 192.168.168.104port: 8080dbname: fate_flowmysql:enable: truetype: insideips:- 192.168.0.1port: 3306dbuser: fatedbpasswd: fate_deV2999zk:enable: falselists:- ip: 127.0.0.1port: 2181use_acl: falseuser: fatepasswd: fateservings:ips:- 127.0.0.1port: 8000
4.3 执行部署
部署所有服务
bash deploy/deploy.sh deploy
查看部署日志:tailf logs/deploy-??.log
5 配置(guest)
5.1 初始化配置
- 步骤一:
# 使用辅助脚本产生初始化配置:
sh deploy/deploy.sh init -g="9999:192.168.1.1"
- 步骤二:按需修改配置
vim deploy/conf/setup.conf
#base setup
env: prod
pname: fate
ssh_port: 22
deploy_user: app
deploy_group: apps
#
#deploy mode: deploy|install|config|uninstall
deploy_mode: deploy
#
#moduel list: mysql|eggroll|fate_flow|fateboard
modules:- mysql- eggroll- fate_flow- fateboard
#
#role list: host|guest|exchange
roles:- guest:9999
#
#ssl role list: host && guest | host&&exchange | guest&&exchange
ssl_roles: []
#
polling: {}
#host ip lists
#host_ips: []
host_ips: []
#
#extra host rules
host_special_routes: []
#guest ip lists
#guest_ips: []
guest_ips: - default:192.168.0.2
#
#extra guest rules
guest_special_routes: - default:192.168.0.1:9370 ---host IP,此处需要手工添加,可以设置额外路由指向exchange
#
#exchange ip lists
exchange_ips: []
#
#extra exchange rules
exchange_special_routes: []
default_engines: eggroll
- 步骤3:执行辅助脚本产生配置
bash deploy/deploy.sh render
5.2 配置guest信息
修改如下文件,默认可以不修改。
vi var_files/prod/fate_guest
guest:partyid: 9999rollsite:enable: truecoordinator: fateips:- 192.168.0.2port: 9370secure_port: 9371server_secure: falseclient_secure: falsepolling:enable: falseroute_tables:- id: defaultroutes:- name: defaultip: 192.168.0.1port: 9370is_secure: false- id: 9999routes:- name: defaultip: 192.168.0.2port: 9370is_secure: false- name: fateflowip: 192.168.0.2port: 9360clustermanager:enable: trueips:- 192.168.0.2port: 4670cores_per_node: 16nodemanager:enable: trueips:- 192.168.0.2port: 4671eggroll:dbname: eggroll_metaegg: 4fate_flow:enable: trueips:- 192.168.0.2grpcPort: 9360httpPort: 9380dbname: fate_flowproxy: rollsitehttp_app_key:http_secret_key:use_deserialize_safe_module: falsedefault_engines: eggrollfateboard:enable: trueips:- 192.168.0.2port: 8080dbname: fate_flowmysql:enable: truetype: insideips:- 192.168.0.2port: 3306dbuser: fatedbpasswd: fate_deV2999zk:enable: falselists:- ip: 127.0.0.1port: 2181use_acl: falseuser: fatepasswd: fateservings:ips:- 127.0.0.1port: 8000
5.3 执行部署
部署所有服务
bash deploy/deploy.sh deploy
查看部署日志:tailf logs/deploy-??.log
5.4 查看进程
# 根据部署规划查看进程是否启动
ps -ef | grep -i clustermanager
ps -ef | grep -i nodemanager
ps -ef | grep -i rollsite
ps -ef | grep -i fate_flow_server.py
ps -ef | grep -i fateboard
三、后置操作
1、清理部署临时目录
bash /data/projects/tools/clean_tmp.sh
2、启停操作
/data/projects/common/supervisord/service.sh status|start|restart 某服务名|all
# eg:
/data/projects/common/supervisord/service.sh status all
3、部署之后fate-board url
http://192.168.0.1:8080
# admin/admin
# mysql的root密码默认在var_files/*/fate_init
# /data/projects/fate/eggroll/conf/route_table.json 路由表
4、新增节点
(1)复制只部署nodemanager服务的机器的所有文件(/data/projects)过去,排除数据目录下面的数据(/data/projects/data/fate/eggroll
),启动nodemanger服务
(2)数据库eggroll*的server_node表增加一行新增ip的记录角色为nodemanger(请参考表中已有的数据操作)
(3)crontab定时任务启动supervisor服务的那条记录也需要复制过去设置一下。
执行/data/projects/common/supervisord/boot.sh(启动supervisor)
执行/data/projects/common/supervisord/service.sh status all查看该节点nodemanger是否启动
相关文章:

ansible 部署FATE集群单边场景
官方文档: https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_FATE_manual.md https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_two_sides.md gitee详细文档: docs/ansible_deploy_one_side.md…...

融入Facebook的世界:探索数字化社交的魅力
融入Facebook的世界,是一场数字化社交的奇妙之旅。在这个广袤的虚拟社交空间中,人们可以尽情展现自己、分享生活,与全球朋友、家人和同事保持紧密联系,共同探索社交互动的乐趣与魅力。让我们深入了解这个世界的魅力所在࿱…...

stm32-定时器输出比较PWM
目录 一、输出比较简介 二、PWM简介 三、输出比较模式实现 1.输出比较框图(以通用定时器为例) 2.PWM基本结构 四、固件库实现 1.程序1:PWM呼吸灯 2.程序2:PWM驱动直流电机 3.程序3:控制舵机 一、输出比较简介 死区生成和互补输出一般…...
Redis对过期key的删除策略
假设设置了一批 key 只能存活 1 个小时,那么 1 小时后,redis 是怎么对这批 key 进行删除的? 定期删除 惰性删除 定期删除: redis是默认每隔100ms就随机抽取一些设置了过期时间的key,检查是否过期,如果过期就删除。…...
http的body格式
body数据都通常放在 HTTP 请求的 body 部分。 在 HTTP 请求中,Content-Type 头用于指示 body 中的数据格式。例如,对于 x-www-form-urlencoded 格式的数据,通常会设置 Content-Type: application/x-www-form-urlencoded,而对于 fo…...

Java Web开发从0到1
文章目录 总纲第1章 Java Web应用开发概述1.1 程序开发体系结构1.1.1 C/S体系结构介绍1.1.2 B/S体系结构介绍1.1.3 两种体系结构的比较1.2 Web应用程序的工作原理1.3 Web应用技术1.3.1 客服端应用技术1.3.2 服务端应用技术1.4 Java Web应用的开发环境变量1.5 Tomcat的安装与配置…...

002——编译鸿蒙(Liteos -a)
目录 一、鸿蒙是什么 二、Kconfig 2.1 概述 2.2 编译器 2.3 make使用 本文章引用了很多韦东山老师的教程内容,算是我学习过程中的笔记吧。如果侵权请联系我。 一、鸿蒙是什么 这里我补充一下对鸿蒙的描述 这张图片是鸿蒙发布时使用的,鸿蒙是一个很…...
Ansible--详解
目录 一、Ansible核心组件 二、Ansible配置 1.配置案例 (1)管理安装ansible (2)管理机分发公匙 (3)配置管理 (4)测试连接 2.命令说明 三、playbook剧本编写 1.playbook模板…...

Django和Mysql数据库
Django学习笔记 Django和Mysql数据库 Django开发操作数据库更简单,内部提供了ORM框架。 1)安装mysqlclient pip3 install mysqlclient2)ORM ORM可以帮助我们做两件事: 1.创建、修改、修改数据库中的表(不用写sql语句)[不能创…...

[蓝桥杯]-最大的通过数-CPP-二分查找、前缀和
目录 一、题目描述: 二、整体思路: 三、代码: 一、题目描述: 二、整体思路: 首先要知道不是他们同时选择序号一样的关卡通关,而是两人同时进行两个入口闯关。就是说两条通道存在相同关卡编号的的关卡被通…...
安卓UI面试题 26-30
26. Window和DecorView是什么?DecorView又是如何和Window建立联系的?Window是 WindowManager 最顶层的视图,它负责背景(窗口背景)、Title之类的标准的UI元素, Window是一个抽 象类,整个Android系统中, PhoneWindow是 Window的唯一实现类。 至于 DecorView,它是一个顶级 …...
CPU、GPU、IPU、NPU、TPU、LPU、MCU、MPU、SOC、DSP、FPGA、ASIC、GPP、ECU、
CPU: 中央处理器(Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。 它的功能主要是解释计算机指令以及处理计算机软件…...

鸿蒙车载原生开发,拓展新版图
一天内连发“五弹”、HiCar 4.0首次上车 华为鸿蒙狂扩“汽车朋友圈”-上游新闻 汇聚向上的力量 3月15日,在“华为云&华为终端云服务创新峰会2024”上,华为首批汽车行业伙伴广汽传祺、岚图汽车、零跑汽车、凯翼汽车加入鸿蒙生态合作,华为…...

15届蓝桥杯第二期模拟赛题单详细解析
文章目录 🧡🧡t1_求余🧡🧡思路代码 🧡🧡t2_灌水🧡🧡思路代码 🧡🧡t3_字符显示🧡🧡思路代码 🧡🧡t4_区间最大和…...
mysql统计数据库大小
ps:亲测可行,时间2024-03-15 15:18 mysql统计数据库大小 要统计MySQL数据库的大小,你可以使用以下SQL查询: SELECT table_schema AS "Database",ROUND(SUM(data_length index_length) / 1024 / 1024, 2) AS "Size (MB)"FROM info…...
centos防火墙firewall-cmd限定特定的ip访问
文章目录 firewall-cmd是什么?启动firewalld服务查看默认区域关闭端口访问添加富规则firewall-cmd的区域概念firewall-cmd的常用选项通用选项:状态选项:永久选项:区域选项: firewall-cmd是什么? firewall-…...

创维汽车与创维光伏储能亮相2024上海AWE,感受制造业的升级变迁
2024年3月14日,中国家电及电子消费博览会在上海正式召开。相比往届展会,2024上海AWE进驻更多行业头部力量,出展更多尖端科技,蕴含更深行业思考。创维光伏储能及乘载更先进智驾科技的创维汽车亮相此次展会。 消费电子的革新不断影响…...

Kafka配置SASL_PLAINTEXT权限。常用操作命令,创建用户,topic授权
查看已经创建的topic ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list 创建topic 创建分区和副本数为1的topic ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic acltest --partitions 1 --replication-factor 1 创建kafka用户 …...
[Java、Android面试]_05_内存泄漏和内存溢出
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注收…...

MySQL-HMA 高可用故障切换
本章内容: 了解MySQL MHA搭建MySQL MHAMySQL MHA故障切换 1.案例分析 1.1.1案例概述 目前 MySQL 已经成为市场上主流数据库之一,考虑到业务的重要性,MySQL 数据库 单点问题已成为企业网站架构中最大的隐患。随着技术的发展,MHA…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...