ansible 部署FATE集群单边场景

2024-03-15 14:28

本文主要是介绍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集群单边场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812272

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus