场景介绍

本文介绍如何在半小时内,通过阿里云容器ACK服务和文件存储NAS服务搭建一个简略的弹性、高可用NGINX网站。在实现本文的所有操作后,您将取得一个单网页的网站,用户的申请将会被打散到多个容器节点上,并且依据业务负载主动扩缩容,即便某个容器节点宕机也不会影响用户拜访。另外您还能够将本地编辑的网页疾速更新到网站上。

背景常识

本教程应用到的云产品如下:

云服务器ECS

云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳固牢靠、弹性扩大的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您洽购IT硬件的后期筹备,让您像应用水、电、天然气等公共资源一样便捷、高效地应用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS继续提供创新型服务器,解决多种业务需要,助力您的业务倒退。

文件存储NAS

阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例、E-HPC 和容器服务等计算节点的文件存储服务。NAS 提供了简略的可扩大文件存储以供与 ECS 配合应用,多个ECS实例能够同时拜访 NAS 文件系统,并且存储容量会随着您增加和删除文件而主动弹性增长和膨胀,为在多个实例或服务器上运行的工作负载和应用程序提供通用数据源。

容器服务Kubernetes版

阿里云容器服务Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)是寰球首批通过Kubernetes一致性认证的服务平台,提供高性能的容器利用治理服务,反对企业级Kubernetes容器化利用的生命周期治理,让您轻松高效地在云端运行Kubernetes容器化利用。

本教程七个步骤,实现前五个步骤即可实现弹性高可用的NGINX网站,最初两个步骤验证网站的弹性和高可用属性。

步骤一:创立资源
步骤二:挂载文件系统NAS到ECS服务器
步骤三:上传文件到NAS
步骤四:配置NAS挂载信息
步骤五:创立NGINX利用
步骤六:拜访测试网站
步骤七:验证服务高可用
步骤八:验证弹性扩缩容

步骤一:开启体验

云产品资源体验地址:https://developer.aliyun.com/...

开启云产品资源

步骤二:挂载文件系统NAS到ECS服务器

阿里云文件存储NAS是一个可共享拜访,弹性扩大,高牢靠,高性能的分布式文件系统。它能够为容器提供长久化的存储服务。在接下来的操作里,您的网页文件将会被保留在NAS文件系统中,当容器pod被创立后即可间接调用NAS里的文件,并且在pod被销毁后,NAS里的文件也会持续留存。
1.应用资源提供的子账号(能够应用浏览器的无痕模式),登录NAS文件系统控制台。
2.单击左侧疏导栏文件系统列表,而后单击文件系统 ID进入文件系统详情页。
3.单击挂载应用,查看挂载点信息,复制挂载命令。

4.关上终端工具,在终端中输出连贯命令ssh [username]@[ipaddress]。您须要将其中的username和ipaddress替换为资源提供的的ECS服务器的公网IP。
例如:

ssh root@123.123.123.123


命令显示后果如下:

5.在终端中执行以下命令,挂载NAS到ECS服务器。
装置NFS客户端。

sudo yum install nfs-utils

执行第3步中复制的挂载命令,挂载NAS到ECS的/mnt目录。

sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 3******7.cn-shanghai.nas.aliyuncs.com:/ /mnt

步骤三:上传文件到NAS

应用ACK集群搭建NGINX服务后,在您关上网站首页时,容器就会从NAS文件系统中读取这一步上传的网页文件,返回给浏览器。在网站搭建实现后,您能够通过同样的办法更新NAS里的文件。
1.在本地创立index.html文件。

  • Windows零碎:关上文本编辑器,输出test index page for
    nginx-nas-demo,而后保留文件类型为HTML文件。
  • MacOS或Linux:关上命令行工具,而后执行以下命令即可。
mkdir -p ~/Documents/nginx-nas-demoecho "test index page for nginx-nas-demo" > ~/Documents/nginx-nas-demo/index.html

2.下载并装置SFTP客户端,例如:FileZilla。
3.上传index.html文件到NAS。

  • 双击运行FileZila。
  • 依据以下信息,连贯服务器。主机:资源提供的ECS公网IP。用户名:root明码:资源提供的ECS明码。端口:22。
  • 在左侧目录树找到本地创立的index.html文件,在右侧目录树输出/mnt,进入NAS目录。
  • 将左侧区域的index.html拖拽到右侧区域,即可将本地文件上传到NAS。


4.您能够应用步骤二的形式近程连贯到ECS,在/mnt目录中查看刚上传的index.html文件。

步骤四:配置NAS挂载信息

要应用ACK服务挂载应用NAS,须要先配置容器存储卷PV和存储申明PVC信息,这些信息将会在您部署NGINX利用的时候用到。
1.配置存储卷。
进入ACK集群列表,单击ACK集群名称,进入集群详情页。
单击左侧疏导栏中的存储卷。
单击存储卷标签页,而后单击创立。
抉择NAS存储卷类型,填写存储卷名称,抉择NAS挂载点,最初单击创立。
操作流程参见如下图。
图1:

图2:

2.配置存储申明。

1.单击左侧导航栏中的存储卷。2.单击存储申明,而后单击创立。3.依据以下信息配置存储申明。

存储申明类型:抉择NAS。
名称:填写存储申明名称,例如:nas-pvc。
分配模式:抉择已有存储卷。
已有存储卷:抉择上一步创立的存储卷。
总量:此栏对于NAS不具备理论限度意义,保留默认值即可。

步骤五:创立NGINX利用

1.进入集群详情页单击左侧疏导栏中的工作负载,在默认的无状态标签页中,单击应用镜像创立。

2.在利用根本信息页面中,填写利用名称,而后单击下一步。

3.容器配置。

a.  在容器配置页面中,单击抉择镜像。

b.  在弹出的对话框中,单击搜寻,抉择Docker镜像,填写nginx,而后单击搜寻。c.  在搜寻后果中抉择nginx官网镜像,而后单击确定。

d.  将容器配置页面拉到最下方,在数据卷栏单击减少云存储申明(PersistentVolumeClaim),抉择步骤二创立的存储申明作为挂载源,在容器门路一项填写/usr/share/nginx/html/。

阐明 这项配置会将NAS挂载到容器的/usr/share/nginx/html/门路,也就是NGINX默认寄存index.html的目录。

e.  此页面其余配置应用默认值即可,单击下一步按钮持续。
  • 高级配置。
    a. 在高级配置页面中,单击服务(Service)右侧的创立。

       在弹出创立服务对话框的端口映射中设置以下信息,而后点击创立。

名称:http(http必须全副小写,否则会创立失败)。
服务端口:80。
容器端口:80。
协定:TCP。

阐明 其余选项放弃默认值即可。

b.  单击路由(Ingress)右侧的创立。    在弹出的创立对话框的规定项中配置以下信息,而后单击创立。
  • 域名:您的网站域名,例如:foo.bar.com。阐明 如果您没有域名,能够先随便填写一个测试域名。
  • 服务:抉择上一步创立的nginx-nas-svc服务。


阐明 其余选项放弃默认值即可。
此时路由一栏应该显示域名与对应服务的信息。路由性能会将用户申请通过简略扇出的办法,打散到多个容器节点上进行解决。

c.  勾选容器组程度伸缩前面的开启,而后在最小副![本数处填写2,最初单击最下方的创立按钮。](https://img-blog.csdnimg.cn/20201103152725698.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbmd5aWtlamk=,size_16,color_FFFFFF,t_70#pic_center)

期待创立胜利。

步骤六:拜访测试网站

期待NAS和容器的配置实现后,您就能够应用本地电脑拜访测试网站了。
1.配置办公电脑的hosts文件。
阐明: 如果您在NGINX利用配置中,应用的是正式网站域名,并且曾经通过备案,就能够跳过这个步骤,间接通过浏览器关上网站。如果您应用的是测试域名(例如foo.bar.com),那么就须要在本地电脑上配置hosts文件,让浏览器把对域名的申请转到ACK集群的IP地址上。

a.  进入ACK控制台的工作负载页面。b.  单击步骤三创立的NGINX服务名称。

c.  单击拜访形式标签页,将路由的端点IP地址复制到粘贴板,这个IP地址就是公网拜访网站应用的IP地址。

d.  应用管理员权限关上本地C:\Windows\System32\drivers\etc\hosts文件,将端点IP和步骤三种设置的域名退出hosts文件,而后保留退出,如下图所示。

阐明:Linux和Mac零碎请批改/etc/hosts文件。


2.应用浏览器关上网站。

阐明:如果不能失常拜访,您能够尝试清空浏览器缓存,或者应用无痕浏览模式拜访。

步骤七:验证服务高可用

因为部署NGINX利用的时候,抉择了容器组最小正本数为2,所以在一台容器宿主节点宕机的状况下,网站依然能够由另一台容器宿主节点提供服务,保障了服务的高可用个性。
1.模仿节点故障。

a.  在集群详情页单击左侧疏导栏节点治理进入节点治理页面。b.  抉择其中2个节点,而后单击上面操作栏节点保护在弹出的对话框中勾选排空节点,而后单击确定。


此时,能够看到节点状态为不可调度。

c.  应用浏览器关上网站,发现依然能够失常拜访。

  1. 复原节点。
    a. 单击上面操作栏节点上线在弹出的对话框单击确定。
    b. 应用浏览器关上网站,发现依然能够失常拜访。

步骤八:验证弹性扩容

1.查看容器组初始状态。

a.  进入ACK控制台的工作负载页面,单击步骤三创立的NGINX服务名称。b.  单击容器组程度伸缩器查看以后正本数和容器组以后以后CPU使用率。

  1. 模仿容器高负载。
    a. 在集群详情页单击右上方通过 CloudShell 治理集群,进入CloudShell命令行。

b.   在命令行中,执行以下命令查看节点。
kubectl get pod

c.  执行以下命令,进入容器。
kubectl exec -it lalala-***pod-name****-kxjbg bash
d.  执行以下命令,模仿容器高负载。
fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read

3.确认主动扩容。

a.  进入ACK控制台的工作负载页面,单击步骤三创立的NGINX服务名称。b.  单击容器组程度伸缩器查看以后正本数和容器组以后CPU使用率。

稍等一点工夫能够看到以后CPU使用率显著升高。

期待几分钟后再次查看,发现以后正本数曾经变为10。

c.  此时,应用浏览器关上网站,发现依然能够失常拜访。

  1. 解除容器高负载。
    a. 进入CloudShell命令行。
    b. 在命令行中执行以下命令。