当前位置: 首页 > news >正文

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

依赖包

需要安装如下依赖包:
#centos
gcc gcc-c++ make openssl-devel gmp-devel mpfr-devel libmpc-devel libaio
numactl autoconf automake libtool libffi-devel ansible
#ubuntu
gcc g++ make openssl ansible libgmp-dev libmpfr-dev libmpc-dev
libaio1 libaio-dev numactl autoconf automake libtool libffi-dev
cd /usr/lib/x86_64-linux-gnu
if [ ! -f “libssl.so.10” ];then
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10
fi

用户

用户:app,属主:apps(app用户需可以sudo su root而无需密码)

文件系统

1、数据盘挂载在/data目录下。
2、创建/data/projects目录,目录属主为:app:apps。
3、根目录空闲空间不低于20G。

虚拟内存

不低于128G

系统参数

1、文件句柄数不低于65535。
2、用户进程数不低于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的世界,是一场数字化社交的奇妙之旅。在这个广袤的虚拟社交空间中,人们可以尽情展现自己、分享生活,与全球朋友、家人和同事保持紧密联系,共同探索社交互动的乐趣与魅力。让我们深入了解这个世界的魅力所在&#xff1…...

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

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...