[Datum0.4.0体验反馈] 部署 & 玄学问题 & 建议

收款专用地址:0x0Dd81eC85CFBdE22cAcd0642BBef35aDA7794303

准备

  • 购买一台 8C16G200GB 的服务器
    • 操作系统:Ubuntu18.04
    • 架构:AMD
    • 地区:海外

开始


sudo apt-get update

sudo apt-get install git -y

git clone https://github.com/datumtechs/datum-network-deploy.git

cd datum-network-deploy

git checkout ansible_v0.4.0

mkdir log

sudo apt install -y python python-pip python3 python3-pip

pip install --upgrade setuptools && python -m pip install --upgrade pip

pip install -r ./requirements.txt

ansible-playbook --ask-sudo-pass local_prepare.yml

# 输入sudo密码

sudo adduser datum

# 输入你想要的密码
# 再次输入

chmod u+w /etc/sudoers

vi /etc/sudoers

# i

# 在root下面一行添加 datum ALL=(ALL)ALL

# esc

# :wq

chmod u-w /etc/sudoers

# 数据库安装(新服务器没有数据库)

sudo apt-get install mysql-server mysql-client

mysql -uroot -p

# 无密码,直接回车

grant all privileges on *.* to root@"%"identified by"datum_root"with grant option;

grant all privileges on *.* to datum_admin@"%"identified by"admin_123456"with grant option;

flush privileges;

exit;

service mysql restart

# 修改 inventory.ini 并保存,模板见底部

ansible-playbook --ask-sudo-pass local_prepare.yml

ansible-playbook -i inventory.ini bootstrap.yml

sudo apt-get install unzip

sudo apt-get install libffi-dev

sudo apt-get install python3.6-dev

sudo apt-get install build-essential

ansible-playbook -i inventory.ini deploy.yml

ansible-playbook -i inventory.ini start.yml

  • 访问管理后台:xxx.xxx.xxx.xxx:80

  • 访问 consul :xxx.xxx.xxx.xxx:8500

inventory.ini 模板【一机多服务】


# 库存文件,主要用来配置主机列表和主机组 (注: 下列IP均需为内网IP)
# 内网IP:xxx.xxx.xxx.xxx
# 外网IP:yyy.yyy.yyy.yyy 
# ICE微服务:一个组织有一个Glacier2/IceGrid的via服务
[ice_via]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 调度,一个组织有一个调度服务
[carrier]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 管理台,一个组织有一个管理台服务
[admin]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 资源节点,一个组织可以配置多个资源服务
[data]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 计算节点,一个组织可以配置多个计算服务
[compute]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 注册中心,一个组织要配置奇数个(1,3,5,等)注册中心,方便 raft 选择leader
[consul]
xxx.xxx.xxx.xxx ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

## Global variables
[all:vars]
# 集群的名称,自定义即可
cluster_name = demo-cluster

# 部署服务开关
enable_deploy_ice_via = True
enable_deploy_carrier = True
enable_deploy_admin = True
enable_deploy_data = True
enable_deploy_compute = True
enable_deploy_consul = True

# consul 服务的端口,根据自己的部署情况进行设置,数量要和 consul 组里面的 ip 数量一致。
consul_server_port = [8200]
consul_serf_lan_port = [8300]
consul_serf_wan_port = [8400]
consul_http_port = [8500]
consul_dns_port = [8600]

# admin web 服务证书相关配置信息
enable_tls = False # 是否启用 https,启用设置为 True,需要配置证书和相应的域名,证书里面的密码套件等,不启用设置为 False,忽略下面的配置。
admin_server_name = datum-admin.demo.network
admin_ssl_protocols = "TLSv1 TLSv1.1 TLSv1.2"
admin_ssl_ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

# admin web 的 mysql 相关用户名密码
mysql_root_password = datum_root
amin_user = datum_admin
admin_password = admin_123456

# admin web 服务端口号
admin_web_port = 9090

# carrier 外网 ip 地址
carrier_external_ip = yyy.yyy.yyy.yyy

# carrier 服务端口号
carrier_pprof_port = 10032
carrier_rpc_port = 10033
carrier_grpc_gateway_port = 10034
carrier_p2p_udp_port = 10035
carrier_p2p_tcp_port = 10036

# via 外网 ip 地址
ice_via_external_ip = yyy.yyy.yyy.yyy

# via 服务端口号
ice_glacier2_port = 10037   # Glacier2服务端口号
ice_grid_port = 10038       # IceGrid 服务端口号

# ice传输协议:tcp(默认)/ssl
ice_protocol = tcp

# data 端口号,根据自己的部署情况进行设置,数量要和 data 组里面的 ip 数量一致。
data_port = [8700]

# compute 端口号,根据自己的部署情况进行设置,数量要和 compute 组里面的 ip 数量一致。
compute_port = [8800]
# whl文件
latticex_rosetta = latticex_rosetta-1.0.0-cp37-cp37m-linux_x86_64.whl
latticex_psi = latticex_psi-1.0.0-cp37-cp37m-linux_x86_64.whl
fighter_dcv = fighter_dcv-0.9.1-py3-none-any.whl
channel_sdk = datum_network_channel_sdk-2.0.4-cp37-cp37m-linux_x86_64.whl
# python proxy ,the purpose of this proxy is to speed up the download of third-party packages
python_proxy = -i https://pypi.douban.com/simple/

玄学问题之 FQA


\color{green}{问题已解决!}

  • @浅浅 提问:我是一台机器多个服务,然后只注册一个consul,因为内网不会访问支持Javascript的consul网页,所以inventory.ini变更到外部IP的时候,执行bootstrap.yml会报错

    如果所有的ip都使用内网,或者都使用外网,则不会报错。

  • @工作人员 解答:

1.执行bootstrap.yml的时候,如果各个服务都是部署在同一台机器,则需要IP统一,不能公内网混用
2.然后deploy.yml的时候,公内网可混用
3.执行start.yml的时候,公内网可混用

可以指定公网IP的大前提是公网IP必须是绑定在对应云主机的网卡上,否则不能将服务直接绑定到公网IP @浅浅 

\color{green}{问题已解决!}

  • @浅浅 提问:执行任务,它说我 task was executed failed EOF, cannot call token20Pay to prepay datatoken on beginConsumeByDataToken(), failed to call Token20Pay.Prepay() with sender1

  • @工作人员 解答:sender1组织的钱包里面没充钱。

  • 思考:氪金使我变强=。=


\color{green}{问题已解决!}

  • @浅浅 提问:机构头像获取不到

  • @工作人员 解答:我们https 访问http 内容会自动升级成https访问,前面你提供的那张图片不支持https协议不显示,所以加载失败。建议换一张图片试试。


\color{green}{问题已解决!}

  • @浅浅 提问:admin端出现 “内部错误” 怎么办?

  • @工作人员 解答:请先备份admin 日志,我们晚点查看。

  • @工作人员 追答:网络环境可能有问题,清除浏览器缓存后再次尝试。


\color{green}{问题已解决!}

  • @浅浅 提问:0209006 create channel failed. Create the client node:compute2 failed, reason:src/Ice/Network.cpp:2714: ::Ice::ConnectionRefusedException: connection refused: Connection refused, create io channel failed! 怎么解决?

  • @工作人员 解答:请先备份fighter 日志,我们晚点查看。

  • @工作人员 追答:请确认10037端口可以ping通,这是因为ice_via端口拒绝连接导致的。

@工作人员 的热心帮助下,这个邪门问题解决了。

解决方案:修改 inventory.ini 文件,将所有内网IP更换为公网IP


# 库存文件,主要用来配置主机列表和主机组 (注: 下列IP均需为内网IP)
# 内网IP:xxx.xxx.xxx.xxx
# 外网IP:yyy.yyy.yyy.yyy 
# ICE微服务:一个组织有一个Glacier2/IceGrid的via服务
[ice_via]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 调度,一个组织有一个调度服务
[carrier]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 管理台,一个组织有一个管理台服务
[admin]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 资源节点,一个组织可以配置多个资源服务
[data]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 计算节点,一个组织可以配置多个计算服务
[compute]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

# 注册中心,一个组织要配置奇数个(1,3,5,等)注册中心,方便 raft 选择leader
[consul]
yyy.yyy.yyy.yyy ansible_ssh_user="${userName}" ansible_ssh_pass="${userPwd}" ansible_sudo_pass="${userPwd}"

## Global variables
[all:vars]
# 集群的名称,自定义即可
cluster_name = demo-cluster

# 部署服务开关
enable_deploy_ice_via = True
enable_deploy_carrier = True
enable_deploy_admin = True
enable_deploy_data = True
enable_deploy_compute = True
enable_deploy_consul = True

# consul 服务的端口,根据自己的部署情况进行设置,数量要和 consul 组里面的 ip 数量一致。
consul_server_port = [8200]
consul_serf_lan_port = [8300]
consul_serf_wan_port = [8400]
consul_http_port = [8500]
consul_dns_port = [8600]

# admin web 服务证书相关配置信息
enable_tls = False # 是否启用 https,启用设置为 True,需要配置证书和相应的域名,证书里面的密码套件等,不启用设置为 False,忽略下面的配置。
admin_server_name = datum-admin.demo.network
admin_ssl_protocols = "TLSv1 TLSv1.1 TLSv1.2"
admin_ssl_ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

# admin web 的 mysql 相关用户名密码
mysql_root_password = datum_root
amin_user = datum_admin
admin_password = admin_123456

# admin web 服务端口号
admin_web_port = 9090

# carrier 外网 ip 地址
carrier_external_ip = yyy.yyy.yyy.yyy

# carrier 服务端口号
carrier_pprof_port = 10032
carrier_rpc_port = 10033
carrier_grpc_gateway_port = 10034
carrier_p2p_udp_port = 10035
carrier_p2p_tcp_port = 10036

# via 外网 ip 地址
ice_via_external_ip = yyy.yyy.yyy.yyy

# via 服务端口号
ice_glacier2_port = 10037   # Glacier2服务端口号
ice_grid_port = 10038       # IceGrid 服务端口号

# ice传输协议:tcp(默认)/ssl
ice_protocol = tcp

# data 端口号,根据自己的部署情况进行设置,数量要和 data 组里面的 ip 数量一致。
data_port = [8700]

# compute 端口号,根据自己的部署情况进行设置,数量要和 compute 组里面的 ip 数量一致。
compute_port = [8800]
# whl文件
latticex_rosetta = latticex_rosetta-1.0.0-cp37-cp37m-linux_x86_64.whl
latticex_psi = latticex_psi-1.0.0-cp37-cp37m-linux_x86_64.whl
fighter_dcv = fighter_dcv-0.9.1-py3-none-any.whl
channel_sdk = datum_network_channel_sdk-2.0.4-cp37-cp37m-linux_x86_64.whl
# python proxy ,the purpose of this proxy is to speed up the download of third-party packages
python_proxy = -i https://pypi.douban.com/simple/

建议

  管理员端能够对 \color{orange}{计算中} 的任务且该任务的执行时长超出预期,并在其他参与方的详情中处于 \color{red}{失败} 状态,执行强制关闭以保证其他功能的有效使用。

  例如任务26号已经计算超过12个小时,且该任务的运行阈值并没有设置超过120分钟,因此这个任务早就因为运行超时失败了,但是在这一方中显示 \color{orange}{计算中} 。这就导致该管理员想要注销网络身份,但却被限制的情况发生。

  如果强制注销:

ansible-playbook -i inventory.ini stop.yml

ansible-playbook -i inventory.ini cleanup.yml

  就会导致官网出现明明这个节点已经嗝屁,却又分外靠前的情况,下图框选的两个节点已经 cleanup 但没有注销网络身份,于是永久地留在节点行列。

1 个赞

请问地区一定要是海外吗?

我习惯用海外服务器,下载python第三方库或者git包比较快,国内的服务器我不知道

顶一下顶一下,别沉底

历经千难万险,终于看到了一抹绿色

1 个赞


每次到这就报错 请问这种情况咋办呀:new_moon_with_face:
到这个命令了
ansible-playbook -i inventory.ini bootstrap.

提权了吗?(提权了吗?)

直接切root了呀不应该权限不够吧

你是按照我的指令流程做的吗?

你在sudo adduser xxx这条指令是否有对他提权?

上述指令我执行了八遍,没有任何问题

除了切换root 其他都是按照流程来
sudo adduser datum输完以后打不开那个文件,切root的时候可以打开 我就在root上面做了

这个配置的服务器好贵aaa

所有的操作都在root上做呀,但是inventory.ini文件里面的用户角色必须是 datum,并且datum在root下完成提权

对的=。=高配置服务器的价格都挺贵的

顶一下帖子,让大家知道 PlatON 的隐私计算网络 Datum 正在测试中

怎么肥事!没人玩Datum?快来啊快来啊

你自己玩就够了,总奖励5W的LAT,都是你的

:face_holding_back_tears::face_holding_back_tears::face_holding_back_tears:
这也太让人心动了吧,但依然希望有更多的小伙伴参与 :heartbeat: :heartbeat: :heartbeat: :heartpulse: :heartpulse: :heartpulse:

你一个人就够了,毕竟5万个LAT也有4000多,刚好作为一个测试人员的工资也差不多

删评论干啥,没搞懂 :joy: