python毕业设计题目推荐,Fate部署实战—,实现原理讲解

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-9wzlJh7I-1712435992462)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值