使用ssh 192.168.65.161命令测试,第一次需要确认yes ,之后应可以不需密码登录为成功。
在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机。到这里我们已经完成环境的配置了。
=================================================================
在目标服务器(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
在目标服务器(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.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,不使用安全证书默认即可
按照上述配置含义修改对应的配置项后,然后执行部署脚本:
#相对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
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
===============================================================
此测试您需要设置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.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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-9wzlJh7I-1712435992462)]