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…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...