关于nginx:使用ACK和NAS快速搭建弹性NGINX网站

4次阅读

共计 4749 个字符,预计需要花费 12 分钟才能阅读完成。

场景介绍

本文介绍如何在半小时内,通过阿里云容器 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-demo
echo "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. 在命令行中执行以下命令。
正文完
 0