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是否启动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

确保云原生部署中的网络安全

数字环境正在以惊人的速度发展,组织正在迅速采用云原生部署和现代化使用微服务和容器构建的应用程序(通常运行在 Kubernetes 等平台上),以推动增长。 无论我们谈论可扩展性、效率还是灵活性,对于努力提供无与伦比的用…

服务器遭遇挖矿病毒syst3md及其伪装者rcu-sched:原因、症状与解决方案

01 什么是挖矿病毒 挖矿病毒通常是恶意软件的一种,它会在受感染的系统上无授权地挖掘加密货币。关于"syst3md",是一种特定的挖矿病毒,它通过在受感染的Linux系统中执行一系列复杂操作来达到其目的。这些操作包括使用curl从网络下载…

爬虫逆向实战(36)-某建设监管平台(RSA,魔改)

一、数据接口分析 主页地址:某建设监管平台 1、抓包 通过抓包可以发现网站首先是请求了一个/prod-api/mohurd-pub/vcode/genVcode的接口,用于获取滑块验证码的图片 滑块验证之后,请求了/prod-api/mohurd-pub/dataServ/findBaseEntDpPage这…

【C语言】—— 指针一 : 初识指针(上)

【C语言】—— 指针一 : 初识指针(上) 一、内存和地址1.1、如何理解内存和地址1.2、 如何理解编址 二、指针变量和地址2.1、取地址操作符 &2.2、 指针变量2.3、 解引用操作符 ∗ * ∗2.4、指针变量的大小 三、指针变量类型的意义3.1、 指…

CentOS 7 / Linux 安装Redis(超简单版)

查看本站其他文章写的极其复杂,给我看乐了 原文链接:https://zhuanlan.zhihu.com/p/626263224 安装 redis 的安装极为简单,使用 CentOS 7 自带的 yum 安装即可 yum install redis 启动等操作 启动 systemctl start redis 查看状态 syst…

【网络安全】 MSF提权

本文章仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若读者因此作出任何危害网络安全的行为,后果自负,与作者无关。 环境准备: 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

计算机考研|408专业课复习教程+注意事项

408其实把真题琢磨透就已经可以了!其实大部分考研党复习到最后真题都来不及刷完就要上考场 因为在考研后期时间分配真的很困难!特别是数学和408 本人双非科班出身备考408成功上岸,在这里也想给想考408的学弟学妹们一些很中肯的,…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Slider)

滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Slider(options?: SliderOption…

C++Qt学习——QPushButton、QRadioButton(单选按钮)、QCheckBox(复选按钮)

目录 1、QPushButton 1.1、创建一个新的项目,转到UI界面拖一个Push Button 1.2、Push Button的常用信号主要有四个,分别为 clicked(), pressed(), released(), toggled() 1.2.1、按住Push Button右键转到槽,选择信号函数 1.2.2、在Widget…

【C/C++ 学习笔记】函数进阶

【C/C 学习笔记】函数进阶 视频地址: Bilibili 函数默认值 如果某个位置有默认值,那么从此参数向右都需要有默认值如果函数声明有默认值,那么函数实现就不能设置默认值 function add(int a 10, int b 20) {return a b; }函数占位参数 直接使用数…

1.2 课程架构介绍:STM32H5 芯片生命周期管理与安全调试

1.2 课程架构介绍:STM32H5 芯片生命周期管理与安全调试 下面开始学习课程的第二节,简单介绍下STM32H5芯片的生命周期和安全调试,具体课程大家可以观看STM32官方录制的课程,链接:1.2. 课程架构介绍:STM32H5…

闪电网络协议设计思想剖析

1. 引言 闪电网络可能是比特币之上部署的最受期待的技术创新。闪电网络,为由 Joseph Poon 和 Tadge Dryja 于2015年首次提出的支付层,承诺支持: 用户之间几乎无限数量的链下交易,几乎免费,同时利用比特币提供的安全性…

IDEA编译安卓源码TVBox(2)

一、项目结构:主要app和player app结构 二、增加遥控器按键选台 修改LivePlayActivity.java 1、声明变量 public String channelId "";public Timer timer new Timer();public Toast mToast;2、定义方法 private void mToastShow(String s){mToast …

微信小程序-webview分享

项目背景 最近有个讨论区项目需要补充分享功能,希望可以支持在微信小程序进行分享,讨论区是基于react的h5项目,在小程序中是使用we-view进行承载的 可行性 目标是在打开web-view的页面进行分享,那就需要涉及h5和小程序的通讯问…

Unity类银河恶魔城学习记录10-10 p98 UI health bar源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili HealthBar_UI.cs using System.Collections; using System.Collections.G…

vue2和vue3部署到服务器子目录为空白页

问题:今天遇到vue项目部署到服务器默认hash没问题但是hhistory为空白的问题。研究了一下找到了答案记录一下 vue项目history模式部署在子路径 项目打包后默认只能部署在服务器根路径,如果想 http://www.xxx.com/demo/ 这种形式 vue3vite配置方法 在 …

计算机毕业设计-基于大数据技术下的高校舆情监测与分析

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、研究背景与意义1.1背景与意义1.2 研究内容 二、舆情监测与分析的关键技术2.1 robot协议对本设计的影响2.2 爬虫2.2.1 工作原理2.2.2 工作流程2.2.3 抓取策略2.3 scrapy架构2.3.1 scrapy:开源爬虫架…

Lua-Lua虚拟机2

Lua虚拟机是指Lua语言的执行环境,它是一种轻量级的、嵌入式的脚本语言虚拟机。Lua虚拟机可以解释执行Lua脚本,并提供了一系列的API供开发者使用。 Lua虚拟机的主要概念包括以下几个方面: 解释器:Lua虚拟机内部包含了一个解释器&a…

AcWing 4405. 统计子矩阵(双指针,前缀和)

给定一个 N M NM NM 的矩阵 A A A,请你统计有多少个子矩阵 (最小 1 1 11 11,最大 N M NM NM) 满足子矩阵中所有数的和不超过给定的整数 K K K? 输入格式 第一行包含三个整数 N , M N,M N,M 和 K K K。 之后 N N N 行每行包含 M M M 个整数…

【LinuxWindows 10系统中设置定时关机】

Windows 10系统中设置定时关机 在Windows 10系统中设置定时关机可以通过多种方式实现,以下是几种常用的方法: 方法一:命令提示符或运行窗口 打开“运行”窗口,可以按键盘上的Win R组合键; 在运行窗口中输入以下命令…