当前位置: 首页 > wzjs >正文

网站建设费用价格多个网站对比表格怎么做

网站建设费用价格,多个网站对比表格怎么做,昌平装修公司哪家好,汕头网站模板在云项目开发中有时会有下面的需求: 构建大量拥有相同配置, 相同已安装软件, 甚至相同已启动进程的虚拟机。 下面的内容会基于1个简单的例子: 现有1台vm 名字是 tf-vpc0-subnet0-vm0 , 我在上面手动安装了jdk11 和 …

在云项目开发中有时会有下面的需求:

构建大量拥有相同配置, 相同已安装软件, 甚至相同已启动进程的虚拟机。

下面的内容会基于1个简单的例子:

现有1台vm 名字是 tf-vpc0-subnet0-vm0 , 我在上面手动安装了jdk11 和 tomcat 服务器, 但是一台这样的vm是不够的, 我想基于这个vm 快速克隆类似已安装好和启动好tomcat 的服务器。

其实我们用terraform 也能很方便地大量构建规格相同的vm, 但是它们基本上都是空机器, 如果要往里面安装我和配置一些东西, 只靠terraform其实并不足够。

其中1个方法 就是使用goolge cloud 中的下面两种技术

实例模板: instance-template
自定义操作系统镜像: custom-image




实例模板: instance-template 介绍

简单来讲, instance-template 可以让用户定制1个 vm 的模板
包括:

  1. 规格(cpu / mem/ vpc-network/ disk…)等
  2. image 系统镜像

注意, 第2点并不是必须的, 如果我们在创建模板时没有指定镜像, 实际上创建出来的vm也是1台刚装好系统的vm.
实际上, 第2点在我的测试中并不成功
这里建议只用instance-template 去定义vm的规格

而下面会详细介绍如何基于1个vm - instance 去创建1个 instance-template, 从而去复制这个vm instance




实例模板: 系统镜像 image 镜像介绍

image 实际就是vm的操作系统的一份copy, google 本身已经提供相当多的系统镜像, 包括debian, ubuntu, rockylinux 等。
可以用下面命令去查看

[gateman@manjaro-x13 Terraform-GCP-config]$ gcloud compute images list
NAME                                           PROJECT              FAMILY                             DEPRECATED  STATUS
centos-7-v20231212                             centos-cloud         centos-7                                       READY
centos-stream-8-v20231212                      centos-cloud         centos-stream-8                                READY
centos-stream-9-v20231212                      centos-cloud         centos-stream-9                                READY
cos-101-17162-336-28                           cos-cloud            cos-101-lts                                    READY
cos-105-17412-226-43                           cos-cloud            cos-105-lts                                    READY
cos-109-17800-66-33                            cos-cloud            cos-109-lts                                    READY
cos-97-16919-404-21                            cos-cloud            cos-97-lts                                     READY
debian-10-buster-v20231212                     debian-cloud         debian-10                                      READY
debian-11-bullseye-arm64-v20231212             debian-cloud         debian-11-arm64                                READY
debian-11-bullseye-v20231212                   debian-cloud         debian-11                                      READY
debian-12-bookworm-arm64-v20231212             debian-cloud         debian-12-arm64                                READY
debian-12-bookworm-v20231212                   debian-cloud         debian-12                                      READY
fedora-cloud-base-gcp-34-1-2-x86-64            fedora-cloud         fedora-cloud-34                                READY
...

我们在构建vm时必须指定一个镜像, 实际上就是为vm选择操作系统。
但是这些镜像大部分都没有安装第三方软件, 例如jdk, tomcat, k8s… docker等服务器软件是没有的。

如果我们要避免重复在各台vm上安装这些软件, 则需要构建自定义镜像。
好了, 下一节我们开始实操!




在模板vm - instance 上安装jdk 11, tomcat10, 并配置自启动

vm 名字: tf-vpc0-subnet0-vm0

安装jdk11:

sudo apt-get install openjdk-11-jdk

安装tomcat10:

cd /home/gateman/server/
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.17/bin/apache-tomcat-10.1.17.tar.gz
tar -xf apache-tomcat-10.1.17.tar.gz 
mv apache-tomcat-10.1.17 tomcat10
rm -rf apache-tomcat-10.1.17.tar.gz 

利用systemd 配置tomcat 10 自启动
因为如果只完成上面两步, 即使你在当前vm启动tomcat, 但是基于这个vm 的disk创建的镜像是不包含进程的, 所以要对操作系统做一些配置把tomcat10 加入自启动的service list

详细步骤参考:
https://blog.csdn.net/nvd11/article/details/135007086=




基于这个 vm-instance 去构建 1个自定义image镜像

我们先看命令

gcloud compute images create <<image-name>> \--source-disk=<<disk-name>> \--source-disk-zone=<<zone-name>> \--force

所以关键只有两个参数, 1个就是disk name名字, 实际上镜像就是硬盘上文件的1个集合。 所以参数是disk的名字而不是 vm-instance的名字。

我们可以用下面两种命令去获得 某个vm的disk 名字

[gateman@manjaro-x13 Terraform-GCP-config]$ gcloud compute instances describe tf-vpc0-subnet0-vm0 --zone europe-west2-c --format='get(disks[].source)'
https://www.googleapis.com/compute/v1/projects/jason-hsbc/zones/europe-west2-c/disks/tf-vpc0-subnet0-vm0[gateman@manjaro-x13 Terraform-GCP-config]$ gcloud compute disks list --filter="users:tf-vpc0-subnet0-vm0"
NAME                 LOCATION        LOCATION_SCOPE  SIZE_GB  TYPE         STATUS
tf-vpc0-subnet0-vm0  europe-west2-c  zone            20       pd-standard  READY

可以见到默认情况下, 跟着vm创建的第一块disk名字就是vm名字

=========================================
第二个参数是 source-disk-zone, 我们用模板vm的zone 就好, 我这边是europe-west2-c

–force 的意思即使模板vm已启动也强制制作镜像, 默认下只能为1个已关闭的vm 的disk制作镜像(避免制作过程中磁盘被更新)

执行:

[gateman@manjaro-x13 Terraform-GCP-config]$ gcloud compute images create e2-small-tomcat-image \--source-disk=tf-vpc0-subnet0-vm0 \--source-disk-zone=europe-west2-c \--force
Created [https://www.googleapis.com/compute/v1/projects/jason-hsbc/global/images/e2-small-tomcat-image].
WARNING: Some requests generated warnings:- NAME                   PROJECT     FAMILY  DEPRECATED  STATUS
e2-small-tomcat-image  jason-hsbc                      READY
[gateman@manjaro-x13 Terraform-GCP-config]$ 

我们可以用下面去查看所有自定义的系统image

[gateman@manjaro-x13 Terraform-GCP-config]$ gcloud compute images list --project=jason-hsbc --no-standard-images
NAME                   PROJECT     FAMILY  DEPRECATED  STATUS
e2-small-tomcat-image  jason-hsbc                      READY

而这个e2-small-tomcat-image 是基于disk tf-vpc0-subnet0-vm0 创建的, 为了避免这个disk 跟随它的vm删除而被删除, 可以执行下面命令去取消级联删除关系

gcloud compute instances set-disk-auto-delete tf-vpc0-subnet0-vm0 \--no-auto-delete \--disk=tf-vpc0-subnet0-vm0




基于这个 vm-instance 的规格和上面创建的自定义镜像 求创建1个 instance-template

先看下面这个命令
gcloud compute instance-templates create e2-small-tomcat
–source-instance=tf-vpc0-subnet0-vm0
–source-instance-zone=europe-west2-c
–image=e2-small-tomcat-image

从参数来看, 貌似是可以基于1个 vm的规格去创建1个 instance template的, 但是经过本人多次测试,
如果直接基于1个vm的规格, 用–source-instance 创建的instance template 只能应用这个vm 创建时使用的image,
即使在之后创建vm时制定 --image参数也无效。 也就是讲无法使用 基础vm 预安装的jdk11 tomcat等, 不符合需求。
具体原因不详。

所以建议, 了解清楚tf-vpc0-subnet0-vm0的规格, 用更详细的参数去创建template, 同时制定image , 如下:

gcloud compute instance-templates create e2-small-tomcat \--image=e2-small-tomcat-image \--machine-type=e2-small \--network=tf-vpc0 \--subnet=tf-vpc0-subnet0 \--region=europe-west2 \--no-address \--service-account=vm-common@jason-hsbc.iam.gserviceaccount.com \--scopes=https://www.googleapis.com/auth/cloud-platform \--preemptible




基于这个 vm-instance 创建1个新的vm

gcloud compute instances create tf-vpc0-subnet0-vm2 \--source-instance-template=e2-small-tomcat \--zone=europe-west2-c

因为创建instance-template时已经指定了image, 这里就不需要–image参数了

output

[gateman@manjaro-x13 ~]$ gcloud compute instances create tf-vpc0-subnet0-vm2 \--source-instance-template=e2-small-tomcat \--zone=europe-west2-c
Created [https://www.googleapis.com/compute/v1/projects/jason-hsbc/zones/europe-west2-c/instances/tf-vpc0-subnet0-vm2].
NAME                 ZONE            MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP   EXTERNAL_IP  STATUS
tf-vpc0-subnet0-vm2  europe-west2-c  e2-small      true         192.168.0.27               RUNNING

这个新建的vm就应该具有与vm0 相同的硬盘内容了, 例如安装了java tomcat等。




一个发现, image 对已经创建过名字的vm无效

例如下面我用同样的template 创建了2个vm

[gateman@manjaro-x13 ~]$ gcloud compute instances create tf-vpc0-subnet0-vm10     --source-instance-template=e2-small-tomcat     --zone=europe-west2-c
Created [https://www.googleapis.com/compute/v1/projects/jason-hsbc/zones/europe-west2-c/instances/tf-vpc0-subnet0-vm10].
NAME                  ZONE            MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP   EXTERNAL_IP  STATUS
tf-vpc0-subnet0-vm10  europe-west2-c  e2-small      true         192.168.0.30               RUNNING
[gateman@manjaro-x13 ~]$ gcloud compute instances create tf-vpc0-subnet0-vm15     --source-instance-template=e2-small-tomcat     --zone=europe-west2-c
Created [https://www.googleapis.com/compute/v1/projects/jason-hsbc/zones/europe-west2-c/instances/tf-vpc0-subnet0-vm15].
NAME                  ZONE            MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP   EXTERNAL_IP  STATUS
tf-vpc0-subnet0-vm15  europe-west2-c  e2-small      true         192.168.0.31               RUNNING
[gateman@manjaro-x13 ~]$ 

1个vm10, 1个vm15

其中vm10 我之前用它的名字创建过1个VM (基于基础debian 镜像), 但是已删除
而 vm15 则之前为用过这个名字,

结果是, vm10 无法应用vm0的镜像内容, 就是无预装jdk tomcat 等
而vm15是ok的!

原因未知!

在这里插入图片描述


文章转载自:

http://zR1tj83u.rfzbm.cn
http://aYzwAQic.rfzbm.cn
http://WGwxfL7t.rfzbm.cn
http://7Xa1cqZj.rfzbm.cn
http://WODcmOlO.rfzbm.cn
http://zkothG8p.rfzbm.cn
http://gGHeSqot.rfzbm.cn
http://ppwgn46Q.rfzbm.cn
http://eTSk7PhJ.rfzbm.cn
http://UbaAkF7m.rfzbm.cn
http://mX2dRSqZ.rfzbm.cn
http://WqaGBmOr.rfzbm.cn
http://PkaOK0ME.rfzbm.cn
http://Y3WQ1U4F.rfzbm.cn
http://A10bMAgf.rfzbm.cn
http://nZil1Zs5.rfzbm.cn
http://j8lAt6RX.rfzbm.cn
http://2xZP8RQl.rfzbm.cn
http://P9qUlJaq.rfzbm.cn
http://irPEtJZR.rfzbm.cn
http://Na678bDs.rfzbm.cn
http://6uT7IimF.rfzbm.cn
http://cRwNiACG.rfzbm.cn
http://CN2bGvzp.rfzbm.cn
http://ObVvcuE6.rfzbm.cn
http://JIjFtDkq.rfzbm.cn
http://I5vjQdAS.rfzbm.cn
http://wYas1TCK.rfzbm.cn
http://6Fc60esp.rfzbm.cn
http://UN4OAiVz.rfzbm.cn
http://www.dtcms.com/wzjs/682500.html

相关文章:

  • 网站建设 团队介绍做个人网站到哪里做
  • php做的网站怎么运行物联网平台层的主要功能
  • 网站建设 音频插件seo顾问人
  • 宁波网站推广外包服务网站开发目录规范
  • 设计公司网站模板基金网站制作
  • 贵阳网站微信建设公司网站推广交换链接
  • perl网站建设网站建设维护网页设计
  • 自建站怎么做学动漫设计后悔死了
  • 站酷网网址美工做网站尺寸多少
  • php版本不同于wordpress使用宁波seo免费优化软件
  • 营口pc网站开发商城网站制作教程
  • 郑州企业网站价格工程公司的会计做账有哪些科目
  • seo 网站现在最火的社交电商平台
  • 芜湖设计公司排名网站优化预算
  • 找做网站的公司河南郑州建设信息网
  • 微信公众号制作网站怎么打开公众号
  • 邓州建网站做网站上传服务器吗
  • 网站建设仿站企业公司精美ppt模板免费下载完整版
  • 龙岗专业做网站公司嵌入式软件开发公司
  • 呼和浩特网站建设哪家好365建站网
  • 怎么在网上接网站建设旅游商务网站建设
  • 网站建设推广唯心cidun8网站维护的页面
  • 用asp做网站上网帮助淮南网云小镇最新消息
  • 做网站怎么上线公司装修材料会计分录
  • 结合七牛云做视频网站哈尔滨网站建立公司
  • 狗狗和人做网站建网站 京公网安
  • 有做电动车修车的网站吗什么是整合营销并举例说明
  • 网站开发回扣注册公司后每年要交什么费用
  • 学做网站论坛vip账号破解wordpress vue模板
  • 用wordpress建站难吗网站建设怎么分析市场