主頁 >  其他 > Fate部署實戰——從零開始實作Fate cluster部署

Fate部署實戰——從零開始實作Fate cluster部署

2021-08-21 10:04:26 其他

文章目錄

  • 摘要
  • 1 總體介紹
    • 1.1.系統介紹
    • 1.2.組件說明
    • 1.3.系統架構
  • 2 詳細設計
    • 2.1.部署規劃
    • 2.2.主機資源和作業系統要求
    • 2.3.網路要求
  • 3 搭建虛擬環境
    • 3.1 硬體要求
    • 3.2 軟體
    • 3.3 安裝 VMWare虛擬機安裝
    • 3.4 CentOS安裝
  • 4 虛擬環境配置
    • 4.1 hostname配置
    • 4.2 關閉selinux
    • 4.3 配置yum倉庫
    • 4.4 修改Linux系統引數
    • 4.5 **修改系統mysql配置**
    • 4.6 關閉防火墻(可選)
    • 4.7 創建APP用戶
    • **4.8 給APP用戶配置sudo**
    • 4.9 增加虛擬記憶體
    • 4.10 安裝依賴包
    • **4.11 設定projects目錄**
    • 4.12 **配置ssh無密登錄**
  • 5 專案部署
    • 5.1 系統檢查
    • 5.2 獲取專案
    • 5.3 組態檔修改和示例
      • 5.3.1 初始化組態檔
      • 5.3.2 證書制作配置(可選)(這一步我沒有做,官方給的有)
      • 5.3.3 修改組態檔
    • 5.4 部署
    • 5.5 問題定位
  • 6 測驗
    • 6.1 Toy_example部署驗證
      • 6.1.1 單邊測驗
      • 6.1.2 雙邊測驗
    • 6.2 最小化測驗
      • **6.2.1 上傳預設資料:**
      • **6.2.2 快速模式:**
      • **6.2.3 正常模式**:
    • 6.3 Fateboard testing
  • 7 系統運維
    • 7.1 服務管理
      • 7.1.1 服務管理
    • 7.2 查看行程和埠
      • 7.2.1 查看行程
      • 7.2.2 查看行程埠
    • 7.2.3 服務日志
      • 7.2.4 檔案目錄說明
  • 8. 卸載
        • 8.1 概述
        • 8.2 執行卸載

摘要

這篇文章是我對Fate cluster部署方式的總結,從零開始,一步一步實作Fate cluster的部署,如果有不對的地方請給我留言,PDF版本我上傳到CSDN了,有需要的可以下載,地址:
https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/21314477

1 總體介紹

1.1.系統介紹

1)FATE

FATE (Federated AI Technology Enabler) 是微眾銀行AI部門發起的開源專案,
提供了一種基于資料隱私保護的安全計算框架,為機器學習、深度學習、遷移學習演算法提供強有力的安全計算支持,
安全底層支持同態加密、秘密共享、哈希散列等多種多方安全計算機制,演算法層支持多方安全計算模式下的邏輯回歸、Boosting、聯邦遷移學習等,

2)EggRoll

Eggroll 是一個適用于機器學習和深度學習的大規模分布式架構,包括了計算、存盤和通信等模塊,為FATE框架提供底層支撐,

3)FATE官方網站:https://fate.fedai.org/

本文將介紹使用ansible部署腳本進行FATE集群的部署,

1.2.組件說明

軟體產品組件說明
fatefate_flow9360;9380聯合學習任務流水線管理模塊
fatefateboard8080聯合學習程序可視化模塊
fateFederatedML演算法代碼包
eggrollclustermanager4670cluster manager管理集群
eggrollnodemanger4671node manager管理每臺機器資源
eggrollrollsite9370跨站點或者跨party通訊組件
mysqlmysql3306資料存盤,clustermanager和fateflow依賴

1.3.系統架構

2 詳細設計

2.1.部署規劃

本示例是每端只有一臺主機,每端可以多臺主機,目前只支持nodemanager多節點部署,其他組件都是單節點,

rolepartyidIP地址作業系統主機配置存盤部署模塊
host10000192.168.65.161 (有外網)CentOS 7.2/Ubuntu 18.048C16G500Gfate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql
guest9999192.168.65.162CentOS 7.2/Ubuntu 18.048C16G500Gfate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql

2.2.主機資源和作業系統要求

類別說明
主機配置不低于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.3.網路要求

類別說明
防火墻策略1、如果通過公網互通,兩端rollsite所部署主機需互相開通出和入防火墻策略,
2、防火墻設備需要支持長連接和需要對連接數無限制,
外網帶寬入通過公網互通,公網帶寬不低于20Mb
負載均衡設備1、如果出或入口有負載均衡設備則此設備需要支持grpc或者支持透明轉發,
2、fate為雙向通訊,需支持出和入方向主動請求,

3 搭建虛擬環境

3.1 硬體要求

準備一臺至少12核CPU、24G記憶體、1T硬碟(最好SSD)和一個不低于10MB能上互聯網的網路,(最好能滿足上面的條件,要不然即使安裝的沒有問題,也可能跑不起來),

3.2 軟體

Xshell 、VMware Workstation 16 Pro,這兩款軟體的下載地址: https://pan.baidu.com/s/1j6j4n4TMlxxvtSFb-r_G5A 提取碼:52bv

Centos,下載地址:http://vault.centos.org/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

3.3 安裝 VMWare虛擬機安裝

從我給的網盤地址將VMWare軟體下載下來安裝即可,自行激活,如果有問題問度娘,

安裝完成后,點擊“編輯→虛擬網路編輯器”,如下圖:

img
查找網關

img

選擇VMnet8,然后點擊NAT設定,

img

在這里找到網關:192.168.65.2 記住這個網關,后面配置網路的時候要用到,

3.4 CentOS安裝

打開vwmare軟體,點擊創建新的虛擬機

img

選擇“典型(推薦)“,然后選擇”下一步“,

img

選擇“下一步“

img

如下圖,選擇“Linux“、”Centos7 64位“、然后選擇”下一步“

img

給虛擬機命名,第一臺命名為“fate01”,第二臺虛擬機命名為“fate02”,

然后選擇安裝路徑,安裝在空間較大的盤符,然后選擇“下一步”

img

最大磁盤大小設定為“500G”,選擇“將磁盤拆分成多個檔案”,然后選擇“下一步”.

img

選擇“自定義硬體”,如下圖:

img

然后設定記憶體為8G,處理器數量設定為1,每個處理器的內核數量設定為4,在“新CD/DCD(IDE)”選項中設定“CentOS-7-x86_64-DVD-1804.iso”檔案的路徑,完成上面的設定后選擇關閉,

imgimg

img

然后我們就能看到虛擬機的配置,如果沒有問題,則選擇”完成”,等待虛擬機安裝結束,

img

出現下圖則說明安裝完成,選擇“開啟此虛擬機”,你就可以看到Centos7的安裝頁面,

img

選擇“Install CentOS 7”,然后按“Enter”鍵,

img

出下面如下畫面,選擇“中文”,在右側選擇“簡體中文(中國)”,然后選擇“繼續”,

img

選擇“鍵盤”,點擊“+”,選擇“英語(英國)”,然后點擊“添加”,再選擇“完成”,

img

img

img

接下來,點擊“軟體選擇”,在左側選擇“最小安裝”,在右側選擇“除錯工具”和”系統管理工具”,然后選擇“完成”,

img
img

設定“安裝位置”,然后選擇“我要配置磁區”,選擇“完成”,

img

img
然后出現如下畫面,選擇“點這里自動創建他們”

img

選擇“home”,設定期望容量為100GiB,然后點擊“+”

img

添加新的掛載點“/data”,容量為“341.12GiB”,然后點擊“添加掛載點”,

img

然后點擊“完成”,選擇“接受更改”

img

img

點擊“網路和主機名”

img
以太網,選擇“打開”,設定主機名為“fate01”,點擊“應用”,然后選擇“配置”,

img
點擊“IPv4設定”,方法設定為“手動”,點擊“Add”,增加IP地址,如下圖,ip地址為“192.168.65.161”,另一臺的ip地址設定為192.168.65.162,子網掩碼和網關相同都,分別設定為“24”和“192.168.65.2”(這個網關我們在前面提到過),DNS服務器設定為“192.168.65.2”,勾選“需要IPv4地址完成這個連接”,
img
點擊”IPv6設定”,方法選擇“忽略”,然后選擇“保存”,
img
然后觀察IP設定是否正確,如果沒有問題則選擇“完成”,

img
完成上面的設定后,選擇“開始安裝”,然后設定root密碼,

img
將密碼設定為“123456”,然后點擊“完成”,等待安裝完成,

img
安裝完成后,點擊“重啟”,

img

重啟之后,出現如下畫面,輸入“root”,密碼“123456”登錄root賬戶,

img

另一臺虛擬機的安裝步驟和第一臺一樣只是名字是“fate02”,IP地址為“192.168.65.162”,

安裝完成后,安裝Xshell,用Xshell登錄,個人認為用xshell執行命令方便一些,

4 虛擬環境配置

4.1 hostname配置

1)修改主機名

在192.168.65.161 root用戶下執行:

hostnamectl set-hostname VM_0_1_centos

在192.168.65.162 root用戶下執行:

hostnamectl set-hostname VM_0_2_centos

2)加入主機映射

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行:

vi /etc/hosts

添加內容

192.168.0.1 VM_0_1_centos
192.168.0.2 VM_0_2_centos

img
添加完成后,執行"su root"命令重新登錄,

4.2 關閉selinux

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行:

確認是否已安裝selinux

centos系統執行:rpm -qa | grep selinux

ubuntu系統執行:apt list --installed | grep selinux

如果已安裝了selinux就執行:setenforce 0

img

4.3 配置yum倉庫

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行:

1)備份CentOS-Base.repo檔案

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

img

2)修改yum倉庫配置

vi /etc/yum.repos.d/CentOS-Base.repo

添加內容:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3)使新倉庫配置生效

yum clean all
yum makecache

img

4.4 修改Linux系統引數

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行:

1)清理20-nproc.conf檔案

cd /etc/security/limits.d
ls -lrt 20-nproc.conf

存在則:

mv 20-nproc.conf 20-nproc.conf_bak

img

2)修改limits.conf檔案

vi /etc/security/limits.conf

添加下面的資訊:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

img
重新登陸,ulimit -a查看是否生效

img

4.5 修改系統mysql配置

mv /etc/my.cnf /etc/my.cnf_bak

img

4.6 關閉防火墻(可選)

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行

systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service

img

4.7 創建APP用戶

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行

groupadd -g 6000 apps
useradd -s /bin/bash -g apps -d /home/app app
passwd app

app初識密碼設定為123456

img

4.8 給APP用戶配置sudo

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行

vi /etc/sudoers.d/app

添加內容:

app ALL=(ALL) ALL
app ALL=(ALL) NOPASSWD: ALL
Defaults !env_reset

img

給檔案sudoers檔案增加寫入權限

chmod u+w /etc/sudoers

編輯 sudoers檔案

vi /etc/sudoers

在root ALL=(ALL) ALL下面追加:

root    ALL=(ALL)       NOPASSWD: ALL
app     ALL=(ALL)       ALL
app     ALL=(ALL)       NOPASSWD: ALL

給檔案sudoers檔案洗掉寫入權限

chmod u-w /etc/sudoers

img

4.9 增加虛擬記憶體

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行

生產環境使用時,因記憶體計算需要增加128G虛擬記憶體,執行前需檢查存盤空間是否足夠,

手工創建,root用戶執行:

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

img

4.10 安裝依賴包

目標服務器(192.168.65.161 192.168.65.162)root用戶執行

#安裝基礎依賴包
#centos
yum install -y gcc gcc-c++ make openssl-devel gmp-devel mpfr-devel libmpc-devel libaio numactl autoconf automake
#ubuntu
apt-get install -y gcc g++ make openssl libgmp-dev libmpfr-dev libmpc-dev libaio1 libaio-dev numactl autoconf automake libtool libffi-dev
#如果有報錯,需要解決依賴安裝源問題,

#安裝ansible和行程管理依賴包
#centos
yum install -y ansible
#ubuntu
apt-get install -y ansible

#如果安裝有報錯同時服務器有外網,沒有外網的需要解決yum源不全的問題,執行:
#centos
yum install -y epel-release
#增加一個更全面的第三方的源,然后再重新安裝ansible

4.11 設定projects目錄

在目標服務器(192.168.65.161 192.168.65.162)root用戶下執行

cd /data
mkdir projects
chown app:apps projects
ls -l
chown -R app /data

img

4.12 配置ssh無密登錄

1)配置自身免密

在目標服務器(192.168.65.161 192.168.65.162)app用戶下執行

在虛擬機VM_0_1_centos 上以app用戶身份在home目錄下執行

su app
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >>/home/app/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

img

使用ssh 192.168.65.161命令測驗,第一次需要確認yes ,之后應可以不需密碼登錄為成功,

img

在VM_0_2_centos 上執行相同步驟配置VM_0_2_centos 的自身免密登錄,

2)配置VM_0_1_centos 免密登錄VM_0_2_centos

VM_0_1_centos app用戶下執行

scp ~/.ssh/authorized_keys app@192.168.65.162:/home/app/.ssh

輸入VM_0_2_centos的app密碼

VM_0_2_centos app用戶下執行

cat ~/.ssh/id_rsa.pub >> /home/app/.ssh/authorized_keys

scp ~/.ssh/authorized_keys app@192.168.65.161:/home/app/.ssh

輸入VM_0_1_centos 的app密碼完成檔案傳輸,

VM_0_1_centos app用戶下執行

ssh 192.168.65.162

應不需要密碼即可登錄fate02機,到這里我們已經完成環境的配置了,

5 專案部署

5.1 系統檢查

在目標服務器(192.168.65.161 192.168.65.162)app用戶下執行

#虛擬記憶體,size不低于128G,如不滿足需參考3.6章節重新設定
cat /proc/swaps
Filename                                Type            Size    Used    Priority
/data/swapfile128G                      file            134217724       384     -1

#檔案句柄數,不低于65535,如不滿足需參考3.3章節重新設定
ulimit -n
65535

#用戶行程數,不低于64000,如不滿足需參考3.3章節重新設定
ulimit -u
65535

#檢查行程是否有fate行程殘留,如有則需要停止服務
ps -ef| grep -i fate

netstat -tlnp | grep 4670
netstat -tlnp | grep 4671
netstat -tlnp | grep 9370
netstat -tlnp | grep 9371
netstat -tlnp | grep 9360
netstat -tlnp | grep 8080
netstat -tlnp | grep 3306

#檢查部署目錄,如有需先進行mv
ls -ld /data/projects/fate
ls -ld /data/projects/data
ls -ld /data/projects/snmp

#檢查supervisord組態檔,如有則需要mv或者洗掉掉
ls -lrt /data/projects/common/supervisord/supervisord.d/fate-*.conf

5.2 獲取專案

在目標服務器(192.168.65.161 具備外網環境)app用戶下執行

進入執行節點的/data/projects/目錄,執行:

#注意:URL鏈接有換行,拷貝的時候注意整理成一行
cd /data/projects/
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/ansible_nfate_1.6.0_release-1.0.0.tar.gz
tar xzf ansible_nfate_1.6.0_release-1.0.0.tar.gz

5.3 組態檔修改和示例

5.3.1 初始化組態檔

cd ansible-nfate-*
#init.sh檔案不需要修改,主要是輔助生成一些組態檔
 
#生產環境加prod引數執行
 sh ./tools/init.sh prod
 
>sh ./tools/init.sh prod
clean old config
init environments/prod
init var_files/prod
init project_prod.yml

5.3.2 證書制作配置(可選)(這一步我沒有做,官方給的有)

1)證書制作

vi /data/projects/ansible-nfate-1.*/tools/make.sh

#1、自定義安全證書需同時部署兩端,只部署一端需要手工處理證書,手工處理部分暫不介紹,
#2、安全證書支持如下部署方式:
    1)部署host+guest,host和guest使用安全證書通訊,
    2)部署host+exchange+guest,其中host和exchange使用安全證書通訊,guest和exchange普通通訊,
    3)部署host+exchange+guest,其中guest和exchange使用安全證書通訊,host和exchange普通通訊,

guest_host="192.168.65.161" ---根據實際IP修改
host_host="192.168.65.162" ---根據實際IP修改
exchange_host="192.168.65.160" ---根據實際IP修改,本示例不部署無需修改

2)執行腳本制作證書

cd tools
sh ./make.sh

在keys/host,guest目錄下會產生證書檔案,

3)拷貝證書到部署目錄

sh cp-keys.sh host guest

證書檔案會拷貝到roles/eggroll/files/keys目錄

特別說明:
1、目前腳本部署只支持2方設定證書認證,(host&guest、host&exchange、guest&exchange)

5.3.3 修改組態檔

1)修改初始化主機IP

vi /data/projects/ansible-nfate-1.*/environments/prod/hosts

#ansible格式組態檔
[fate]   ---把需要部署的主機IP填入fate組
192.168.65.161  
192.168.65.162

[deploy_check] ---把執行ansible的本機IP填入deploy_check組
192.168.65.161 

[all:vars]
ansible_connection=ssh
ansible_ssh_port=22   ---根據實際情況修改
ansible_ssh_user=app
#ansible_ssh_pass=test   ---如果未做免密登陸需提供密碼
##method: sudo or su
ansible_become_method=sudo
ansible_become_user=root
ansible_become_pass=   ---各個主機未做免密sudo需填寫root密碼

2)修改host方引數

注意:默認是不啟用安全證書的配置,如果啟用安全證書通訊需把server_secure,client_secure,is_secure設定為true,以及is_secure對應的port設定為9371

#不部署host方則不用修改
#除了nodemanger可以設定多個IP外,其他都是單個IP
vi /data/projects/ansible-nfate-1.*/var_files/prod/fate_host

host:
    partyid: 10000 ---host端partyid,根據實際規劃修改
    rollsite:
      enable: True
      ips: ---IP串列,目前rollsite只支持部署到一臺服務器
      - 192.168.65.161  
      port: 9370 ---grpc埠
      secure_port: 9371 ---grpcs埠
      pool_size: 600 ---執行緒池大小,推薦設為:min(1000 + len(party_ids) * 200, 5000)
      max_memory:    ---rollsite行程JVM記憶體引數,默認是物理記憶體的1/4,可根據實際情況設定,如12G,如果是rollsite專用的機器,配置成物理記憶體的75%,
      server_secure: False ---作為服務端,開啟安全證書驗證,不使用安全證書默認即可
      client_secure: False ---作為客戶端,使用證書發起安全請求,不使用安全證書默認即可
      polling: ---是否使用單向模式,本示例不支持,默認false即可
        enable: False
      default_rules: ---本party指向exchange或者其他party的IP、埠路由配置
      - name: default
        ip: 192.168.65.162 ---exchange或者對端party rollsite IP
        port: 9370 ---exchange或者對端party rollsite 埠,一般默認9370,即無安全證書部署;如需開啟安全證書通信,應設定為9371;
        is_secure: False ---是否使用安全認證通訊;需要結合server_secure或者client_secure使用,當三者都為true時,表示和下一跳rollsite使用安全認證通訊,同時上一個引數port需設定為9371;不使用安全證書默認即可,
      rules: ---本party自身路由配置
      - name: default
        ip: 192.168.65.161
        port: 9370
      - name: fateflow
        ip: 192.168.65.161
        port: 9360
    clustermanager:
      enable: True
      ips:
      - 192.168.65.161 ---只支持部署一臺主機
      port: 4670
      cores_per_node: 16 ---nodemanager節點cpu核數,多個nodemanager節點按照CPU核數最小的設定
    nodemanager:
      enable: True
      ips: ---支持部署多臺
      - 192.168.65.161
      port: 4671
    eggroll: 
      dbname: "eggroll_meta"
      egg: 2
    fate_flow:
      enable: True
      ips:
      - 192.168.65.161  ---只支持部署一臺主機
      grpcPort: 9360
      httpPort: 9380
      dbname: "fate_flow"
      proxy: rollsite ---fate_flow通訊服務的前置代理是rollsite還是nginx,默認即可
    fateboard:
      enable: True
      ips:
      - 192.168.65.161  ---只支持部署一臺主機
      port: 8080
      dbname: "fate_flow"
    mysql:
      enable: True
      ips:
      - 192.168.0.1  ---只支持部署一臺主機
      port: 3306
      dbuser: "fate"
      dbpasswd: "fate_deV2999"
    zk:
      enable: False
      lists:
      - ip: 192.168.65.161
        port: 2181
      use_acl: false
      user: "fate"
      passwd: "fate"
    servings:
     ip: 192.168.65.161
     port: 8000

將默認的192.168.0.1替換為192.168.65.161,將192.168.0.2替換為192.168.65.162 其他的不要改動!

4)修改guest引數

注意:默認是不啟用安全證書的配置,如果啟用安全證書通訊需把server_secure,client_secure,is_secure設定為true,以及is_secure對應的port設定為9371

#不部署guest方則不用修改
#除了nodemanger可以設定多個IP外,其他都是單個IP
vi /data/projects/ansible-nfate-1.*/var_files/prod/fate_guest

guest:
    partyid: 9999 ---根據實際規劃修改
    rollsite:
      enable: True
      ips: ---IP串列,目前rollsite只支持部署到一臺服務器
      - 192.168.65.162
      port: 9370 ---grpc埠
      secure_port: 9371 ---grpcs埠
      pool_size: 600 ---執行緒池大小,推薦設為:min(1000 + len(party_ids) * 200, 5000)
      max_memory:    ---rollsite行程JVM記憶體引數,默認是物理記憶體的1/4,可根據實際情況設定,如12G,如果是rollsite專用的機器,配置成物理記憶體的75%,
      server_secure: False ---作為服務端,開啟安全證書驗證,不使用安全證書默認即可
      client_secure: False ---作為客戶端,使用證書發起安全請求,不使用安全證書默認即可
      polling: ---是否使用單向模式,本示例不支持,默認false即可
        enable: False
      default_rules:  ---本party指向exchange或者其他party的IP、埠路由配置
      - name: default
        ip: 192.168.65.161 ---exchange或者對端party rollsite IP
        port: 9370 ---exchange或者對端party rollsite 埠,一般默認9370,即無安全證書部署;如需開啟安全證書通信,應設定為9371;
        is_secure: False ---server_secure或者client_secure為true,指向的下一跳rollsite也開啟了安全認證,此引數需要設定為true,上一個引數port需設定為9371,不使用安全證書默認即可
      rules:  ---本party自身路由配置
      - name: default
        ip: 192.168.65.162
        port: 9370
      - name: fateflow
        ip: 192.168.65.162
        port: 9360
    clustermanager:
      enable: True
      ips:   ---只支持部署一臺主機
      - 192.168.65.162
      port: 4670
      cores_per_node: 16 ---nodemanager節點cpu核數,多個nodemanager節點按照CPU核數最小的設定
    nodemanager:
      enable: True
      ips:  ---支持部署多臺主機
      - 192.168.65.162
      port: 4671
    eggroll:
      dbname: "eggroll_meta"
      egg: 2
    fate_flow:
      enable: True 
      ips:  ---只支持部署一臺主機
      - 192.168.65.162
      grpcPort: 9360
      httpPort: 9380
      dbname: "fate_flow"
      proxy: rollsite  ---fate_flow通訊服務的前置代理是rollsite還是nginx,默認即可
    fateboard:
      enable: True
      ips:  ---只支持部署一臺主機
      - 192.168.65.162
      port: 8080
      dbname: "fate_flow"
    mysql:
      enable: True
      ips:  ---只支持部署一臺主機
      - 192.168.65.162
      port: 3306
      dbuser: "fate"
      dbpasswd: "fate_deV2999"
    zk:
      enable: False
      lists:
      - ip: 192.168.65.162
        port: 2181
      use_acl: false
      user: "fate"
      passwd: "fate"
   servings:
     ip: 192.168.65.162
     port: 8000

5)修改exchange引數(不用exchange,這里不用配置)

注意:默認是不啟用安全證書的配置,如果啟用安全證書通訊需把server_secure,client_secure,is_secure設定為true,以及is_secure對應的port設定為9371

#不部署exchange則不需要修改
vi /data/projects/ansible-nfate-1.*/var_files/prod/fate_exchange

exchange:
  enable: False --部署exchange需修改為True
  rollsite: 
    ips:
    - 192.168.0.88
    port: 9370
    secure_port: 9371 ---grpcs埠
    pool_size: 600,推薦設為:min(1000 + len(party_ids) * 200, 5000)
    max_memory:    ---rollsite行程JVM記憶體引數,默認是物理記憶體的1/4,可根據實際情況設定,如12G,如果是rollsite專用的機器,配置成物理記憶體的75%,
    server_secure: False ---作為服務端,開啟安全證書驗證,不使用安全證書默認即可
    client_secure: False ---作為客戶端,使用證書發起安全請求,不使用安全證書默認即可
    polling:  ---是否使用單向模式,本示例不支持,默認false即可
      enable: False
      id: 10000
  partys:  ---指向各party的路由配置
  - id: 10000
    rules:
    - name: default
      ip: 192.168.0.1
      port: 9370  ---對應party rollsite 埠,一般默認9370,即無安全證書通訊;如需開啟安全證書通信,應設定為9371;
      is_secure: False ---server_secure或者client_secure為true,指向的下一跳rollsite也開啟了安全認證,此引數需要設定為true,上一個引數port需設定為9371,不使用安全證書默認即可
  - id: 9999
    rules:
    - name: default
      ip: 192.168.0.2
      port: 9370 ---對應party rollsite 埠,一般默認9370,即無安全證書通訊;如需開啟安全證書通信,應設定為9371;
      is_secure: False ---server_secure或者client_secure為true,指向的下一跳rollsite也開啟了安全認證,此引數需要設定為true,上一個引數port需設定為9371,不使用安全證書默認即可

5.4 部署

按照上述配置含義修改對應的配置項后,然后執行部署腳本:

#相對ansible-nfate-*目錄
cd /data/projects/ansible-nfate-1.*
 
#生產環境加prod引數執行
nohup  sh ./boot.sh prod -D > logs/boot.log 2>&1 &

在這里需要等待一段時間,大約十幾分鐘,部署日志輸出在logs目錄下,實時查看是否有報錯:

#相對ansible-nfate-*目錄
cd logs
tail -f ansible.log (實時查看部署情況,如果沒有這個日志檔案,需要查看是否有安裝ansible)

檢查項不通過提示串列:
1、"Warning: now swap is 0, need to turn up" 
    ---沒有設定虛擬記憶體,請參考前面章節進行設定,不低于128G,
2、"Warning: key fate process exists, please has a check and clean"
    ---環境沒有清理干凈,需要把以前部署的fate行程停掉,
3、"Warning: these ports: 4670 4671 9360 9370 9380 have been used"
    ---環境沒有清理干凈,需要把以前部署的fate行程停掉,
4、"Warning: if reinstall mysql, please stop mysql, and rename /etc/my.cnf"
    ---mysql沒有停止,需要停止,如果有/etc/my.cnf檔案,需要mv改名,
5、"Waring: please rename /data/projects/fate"
    ---fate目錄存在,需要先mv,
6、"Warning: please rename /data/projects/data/fate/mysql"
    ---/data/projects/data存在,需要mv,
7、"Warning: supervisor_fate_conf exists, please remove ls /data/projects/common/supervisord/supervisord.d/fate-*.conf"
  ---/data/projects/common目錄存在,需要mv,

fateflow部署完重啟:

#因為fate_flow依賴的組件比較多,可能啟動會有例外,處理如下:
netstat -tlnp | grep 9360
如果沒有埠則重起fateflow:
sh service.sh stop fate-fateflow
sh service.sh start fate-fateflow

5.5 問題定位

1)eggroll日志

/data/logs/fate/eggroll/bootstrap.clustermanager.err

/data/logs/fate/eggroll/logs/eggroll/clustermanager.jvm.err.log

/data/logs/fate/eggroll/logs/eggroll/nodemanager.jvm.err.log

/data/logs/fate/eggroll/logs/eggroll/bootstrap.nodemanager.err

/data/logs/fate/eggroll/logs/eggroll/bootstrap.rollsite.err

/data/logs/fate/eggroll/logs/eggroll/rollsite.jvm.err.log

2)fateflow日志

/data/logs/fate/python/logs/fate_flow/

3)fateboard日志

/data/logs/fate/fate/fateboard/logs

6 測驗

6.1 Toy_example部署驗證

此測驗您需要設定3個引數:guest_partyid,host_partyid,work_mode,

6.1.1 單邊測驗

1)192.16865.161上執行,guest_partyid和host_partyid都設為10000:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 10000 10000 1

注意:如果超過1分鐘沒輸出,表示部署有問題,需要看日志進行問題定位,

類似如下結果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

提示:如出現max cores per job is 1, please modify job parameters報錯提示,需要修改當前目錄下檔案toy_example_conf.json中引數task_cores為1.

2)192.168.65.162 上執行,guest_partyid和host_partyid都設為9999:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 9999 9999 1

注意:如果超過1分鐘沒輸出,表示部署有問題,需要看日志進行問題定位,

類似如下結果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

6.1.2 雙邊測驗

選定9999為guest方,在192.168.65.162上執行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 9999 10000 1

類似如下結果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

6.2 最小化測驗

6.2.1 上傳預設資料:

分別在192.168.65.161和192.168.65.162上執行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/scripts/
python upload_default_data.py -m 1

更多細節資訊,敬請參考腳本README

6.2.2 快速模式:

請確保guest和host兩方均已分別通過給定腳本上傳了預設資料,

快速模式下,最小化測驗腳本將使用一個相對較小的資料集,即包含了569條資料的breast資料集,

選定9999為guest方,在192.168.65.162上執行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/min_test_task/
#單邊測驗
python run_task.py -m 1 -gid 9999 -hid 9999 -aid 9999 -f fast
#兩邊測驗
python run_task.py -m 1 -gid 9999 -hid 10000 -aid 10000 -f fast

其他一些可能有用的引數包括:

  1. -f: 使用的檔案型別. “fast” 代表 breast資料集, “normal” 代表 default credit 資料集.
  2. –add_sbt: 如果被設定為1, 將在運行完lr以后,啟動secureboost任務,設定為0則不啟動secureboost任務,不設定此引數系統默認為1,

若數分鐘后在結果中顯示了“success”字樣則表明該操作已經運行成功了,若出現“FAILED”或者程式卡住,則意味著測驗失敗,

6.2.3 正常模式

只需在命令中將“fast”替換為“normal”,其余部分與快速模式相同,

6.3 Fateboard testing

Fateboard是一項Web服務,如果成功啟動了fateboard服務,則可以通過訪問 http://192.168.65.161:8080 和 http://192.168.65.162:8080 來查看任務資訊,如果本地辦公電腦和服務器之間有防火墻則需開通,

7 系統運維

7.1 服務管理

在目標服務器(192.168.0.1 192.168.0.2)app用戶下執行

7.1.1 服務管理

cd /data/projects/common/supervisord

啟動/關閉/重啟/查看所有:

#注意:因mysql是基礎組件,啟動較慢,建議重啟操作是先停止所有組件,然后先啟動mysql,再啟動其他組件
sh service.sh start/stop/restart/status all 

#說明:因為fateflow依賴的組件比較多,重啟所有的操作可能會導致fateflow啟動例外,處理如下:
netstat -tlnp | grep 9360
如果沒有埠則重起fateflow:
sh service.sh stop fate-fateflow
sh service.sh start fate-fateflow

啟動/關閉/重啟/查看單個模塊(可選:clustermanager,nodemanager,rollsite,fateflow,fateboard,mysql):

sh service.sh start/stop/restart/status fate-clustermanager

7.2 查看行程和埠

在目標服務器(192.168.0.1 192.168.0.2 )app用戶下執行

7.2.1 查看行程

#根據部署規劃查看行程是否啟動
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

7.2.2 查看行程埠

#根據部署規劃查看行程埠是否存在
#clustermanager
netstat -tlnp | grep 4670
#nodemanager
netstat -tlnp | grep 4671
#rollsite
netstat -tlnp | grep 9370
#fate_flow_server
netstat -tlnp | grep 9360
#fateboard
netstat -tlnp | grep 8080

7.2.3 服務日志

服務日志路徑
eggroll/data/logs/fate/eggroll/logs
fate_flow&任務日志(fateflow節點)/data/logs/fate/python/logs
fateboard/data/logs/fate/fateboard/logs
mysql/data/logs/fate/mysql/

7.2.4 檔案目錄說明

檔案路徑說明
/data/projects/fate軟體部署路徑
/data/projects/datamysql資料存放路徑
/data/logs日志路徑
/data/projects/common/supervisord行程管理工具supervisor安裝路徑

8. 卸載

8.1 概述

支持所有服務服務的卸載以及單個服務的卸載,

8.2 執行卸載

cd /data/projects/ansible-nfate-1.*
sh ./uninstall.sh prod all

#卸載命令說明
sh ./uninstall.sh $arg1 $arg2
- $arg1引數同4.4.1步驟init執行的引數,為test|prod,
- $arg2引數為選擇的服務,可選引數為(all|mysql|eggroll|fate_flow|fateboard),all代表卸載所有服務,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295291.html

標籤:其他

上一篇:手把手教你docker swarm集群部署

下一篇:Java基礎 JDK,JRE,JVM 的區別及聯系(面試題)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more