登录
首页 >  Golang >  Go问答

在 GCP 托管实例组中创建实例并执行脚本

来源:stackoverflow

时间:2024-02-22 15:51:25 470浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《在 GCP 托管实例组中创建实例并执行脚本》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在使用分布式计算框架 bacalhau[0]。设置集群的模式如下:

$ curl -sL https://get.bacalhau.org/install.sh | bash
[...output...]
$ bacalhau serve
To connect another node to this private one, run the following command in your shell:
bacalhau serve --node-type compute --private-internal-ipfs --peer /ip4/10.158.0.2/tcp/1235/p2p/QmeEoVj8wyxMxhcUSr6p7EK1Dcie7PvNeXCVQny15Htb1W --ipfs-swarm-addr /ip4/10.158.0.2/tcp/46199/p2p/QmVPFmHmruuuAcEmsGRapB6yDDaPxhf2huqa9PhPVEHK8F

(以生产友好的格式执行此操作涉及使用 systemd - 我已在此处排除它)。

我想做的是拥有一个 google 托管实例组,该组监视 cloud pub/sub(此处未介绍),以便在发出信号时创建新实例。问题是对等互连字符串仅在第一个实例启动后才知道。我最初的想法是启动一个实例,捕获输出,并将其写入一个所有内容都可以读取的公共位置。

我考虑过以下模式:

  1. 创建一个实例模板来检查中央端点(kv 存储?)是否有此信息
  2. 创建一个实例模板,从 gcs 存储桶中读取此信息
  3. 还有别的事吗?

我已经读过这篇关于使用 gcs 进行领导者选举的文章[1],但是我可以强制 gcs 作为锁定机制吗?或者我需要使用整个库[2]?或者还有其他解决方案吗?我可以使用 gcp 上的任何托管服务来完成此任务。

我的偏好不是使用 golang,而是使用非编译语言(例如 python)来完成此任务。

[0] https://docs.bacalhau.org/quick-start-pvt-cluster

[1] https://cloud.google.com/blog/topics/developers-practitioners/implementing-leader-election-google-cloud-storage

[2] https://pkg.go.dev/github.com/hashicorp/vault/physical/gcs


正确答案


您可以采取的一种方法是使用元数据服务器来存储对等互连字符串。 *GCP documentation.

gcp 提供了一个实例元数据服务器,允许您存储和检索实例的元数据。创建新实例时,您可以使用 gcloud 命令行工具或 google cloud api 将对等互连字符串设置为实例上的元数据:

gcloud compute instances add-metadata instance_name --metadata peering_string=value

要从 bacalhau 启动脚本中读取元数据:

curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/PEERING_STRING"

如果您特别需要 python 脚本,请使用 requests 库向此curl 链接发出 api 请求。

今天关于《在 GCP 托管实例组中创建实例并执行脚本》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>