akash是一个非常有趣的去中心化云计算市场。在这里部署应用非常的简单快捷而且便宜。
之前介绍过测试网的部署,现在介绍一下主网的部署,主网稍微有点儿不一样的地方。
本篇文章使用的系统是ubuntu 18.04
一、必要依赖安装
Tools
Installed commands:
go
akash
首先需要安装go和akash。
go请自行安装,这里简单说一下akash的安装。
主网目前是0.10.1版本,我们可以直接下载二进制文件:
export AKASH_VERSION="v0.10.1"
curl https://raw.githubusercontent.com/ovrclk/akash/master/godownloader.sh | sh -s -- "$AKASH_VERSION"
安装完毕需要自行添加path,或者直接./bin/akash这样使用
安装完毕检查版本
akash version
显示版本为0.10.1为正确,然后继续
之后你需要一个akash的钱包,部署一个应用至少需要5个AKT以及少许矿工费。
关于如何创建钱包请参考这里:
https://docs.akash.network/guides/wallet
然后我们需要输入主网的环境配置:
export AKASH_NODE="http://rpc.akash.forbole.com:80"
export AKASH_VERSION="v0.10.1"
export AKASH_CHAIN_ID="akashnet-2"
export AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
export KEYRING_BACKEND="os"
以及你的钱包环境配置(注意keyname是上面创建钱包的时候定义的,地址请输入上面步骤创建或导入的钱包):
export KEY_NAME="keyname"
export ACCOUNT_ADDRESS="akash1xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
全部弄完,最好检查一下环境配置:
echo $AKASH_NODE
echo $AKASH_VERSION
echo $AKASH_CHAIN_ID
echo $AKASH_NET
echo $KEYRING_BACKEND
echo $KEY_NAME
echo $ACCOUNT_ADDRESS
全部都正确返回参数后可以进行下一步
二、编写deploy.yml
部署应用,你需要先把你的应用做成docker并上传,然后编写deploy.yml。
这里附上我个人写的一个小应用的deploy.yml,我会告诉你这些参数有什么作用。
---
version: "2.0"
services:
web:
image: maiyude/tronmoney:v1
expose:
- port: 8501
as: 80
to:
- global: true
profiles:
compute:
web:
resources:
cpu:
units: 0.1
memory:
size: 512Mi
storage:
size: 1512Mi
placement:
westcoast:
attributes:
datacenter: equinix-metal-ams1
signedBy:
anyOf:
- "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"
pricing:
web:
denom: uakt
amount: 1
deployment:
web:
westcoast:
profile: web
count: 1
这里是官方的说明文档,可以参考:https://github.com/ovrclk/docs/blob/73411dae2a927c9e946932981f0655324669065b/sdl/README.md
image: maiyude/tronmoney:v1
expose:
- port: 8501
as: 80
to:
- global: true
image: maiyude/tronmoney:v1是镜像的名字,然后下面的是端口映射的设置,这里我是把8501端口映射到了80端口。请根据你使用的端口进行映射。
compute:
web:
resources:
cpu:
units: 0.1
memory:
size: 512Mi
storage:
size: 1512Mi
这里的配置是选择你需要的CPU,内存,硬盘等参数,请根据你的需求进行配置。
pricing:
web:
denom: uakt
amount: 1
pricing设置的是每区块出价
attributes:
datacenter: equinix-metal-ewr1
signedBy:
anyOf:
- "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"
这里是选择你想要使用的服务商,你可以按自己喜欢选择需要的地区。现在官方有几个地区可以选择:
equinix-metal-ewr1:New Jersey, United States
equinix-metal-sjc1:California, United States
你也可以输入下面的命令查询现在的 provider列表
akash query provider list
三、部署应用
准备工作做完,开始部署应用
其实部署非常简单,只有两条命令:
第一条命令,创建你的证书:
akash tx cert create client --chain-id $AKASH_CHAIN_ID --keyring-backend $KEYRING_BACKEND --from $KEY_NAME --node $AKASH_NODE --fees 5000uakt
创建完成后,建议去区块浏览器检查是否创建成功。如果报错,后边的步骤会报错。
区块浏览器地址:https://www.mintscan.io/
Create Certificate显示Success既成功了。
第二条命令,部署应用
akash deploy create deploy.yml --from $KEY_NAME --fees 5000uakt
如果成功,大概会这样显示:
I[2021-03-10|16:53:46.160] tx sent successfully hash=780A5FE292F00057BDD0EFB5333096E328BE3899F219EF52C938286FD28FBF43 code=0 codespace= action=create-deployment dseq=27977
I[2021-03-10|16:53:53.611] deployment created addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977
I[2021-03-10|16:53:53.611] order for deployment created addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1
I[2021-03-10|16:53:59.600] bid for order created addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1 price=100uakt
D[2021-03-10|16:53:59.600] Processing bid
D[2021-03-10|16:53:59.600] All groups have at least one bid
I[2021-03-10|16:54:14.600] Done waiting on bids qty=1
I[2021-03-10|16:54:14.601] Winning bid gseq=1 price=100uakt provider=akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
I[2021-03-10|16:54:17.735] All expected leases created addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977
I[2021-03-10|16:54:17.735] lease for order created addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1 price=100uakt
I[2021-03-10|16:54:17.735] Waiting on leases to be ready leaseQuantity=1
D[2021-03-10|16:54:17.735] Checking status of lease lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
I[2021-03-10|16:54:18.235] sending manifest to provider action=send-manifest provider=akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz dseq=27977
D[2021-03-10|16:54:18.353] Could not get lease status lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz err="remote server returned 404"
I[2021-03-10|16:54:26.299] service ready lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz service=web
I[2021-03-10|16:54:26.299] lease ready leaseID=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
{
"name": "web",
"available": 1,
"total": 1,
"uris": [
"5tito0kgehbrjefr7ae9ko1pfs.ingress.ams1p0.mainnet.akashian.io"
],
"observed_generation": 1,
"replicas": 1,
"updated_replicas": 1,
"ready_replicas": 1,
"available_replicas": 1
}
你可以记录下你的dseq=27977和urls。
其中的urls就是你的应用的网址:
http://5tito0kgehbrjefr7ae9ko1pfs.ingress.ams1p0.mainnet.akashian.io/
你可以直接打开使用,也可以把你的设置你的域名cnname到这个地址。
注意刚部署服务器有个部署的时间,刚开始可能是503或者404,请等待一段时间。
另外讲解一下这个步骤发生了什么。这是一系列操作的集合。
里面有Create Deployment、Create Bid、Create Lease等步骤,如果你不想使用集成的办法,你也可以手动的分开进行这些步骤,这里不细说。
至此,应用部署完毕。
部署完成后,每个区块会进行扣费,如果你要取消部署,请输入
akash tx deployment close --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --dseq $DSEQ --owner $ACCOUNT_ADDRESS --from $KEY_NAME --keyring-backend $KEYRING_BACKEND -y --fees 5000uakt
取消后,没用完的AKT会给你退回。
更多操作请参考官方文档:https://docs.akash.network/guides/deploy
五、常见错误
- 错误一:
bash: /akash: No such file or directory
这是akash的path配置错误或者akash没安装,请检查。
- 错误二:
Error: failed to parse log level (main:info,state:info,statesync:info,:error): Unknown Level String: 'main:info,state:info,statesync:info,:error', defaulting to NoLevel
请尝试在命令后边加上:--log_level "info"
如:
akash version --log_level "info"
- 错误三:
failed to execute message; message index: 0: 7314204uakt is smaller than 50000000uakt: insufficient funds
akt余额不足,请检查至少需要5个
- 错误四:
Error: Put "https://provider.ewr1p0.mainnet.akashian.io:8443/deployment/81178/manifest": remote error: tls: bad certificate
无法链接provider,这里有多个可能性。我们逐一排除
首先请检查版本akash version,确定版本是0.10.1或者更新的主网版本
然后逐一检查参数是否正确:
echo $AKASH_NODE
echo $AKASH_VERSION
echo $AKASH_CHAIN_ID
echo $AKASH_NET
echo $KEYRING_BACKEND
echo $KEY_NAME
echo $ACCOUNT_ADDRESS
全部参数正确后,检查区块浏览器上是否已经成功创建证书。
以上步骤全部检查完毕,请尝试重新部署。如果再次失败,请取消部署后重试。
如果还是错误,请到官方discord寻求帮助。
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit