本文介绍如何在半小时内,经过阿里云容器ACK服务和文件存储NAS服务搭建一个简单的弹性、高可用NGINX网站。在完成本文的全部操做后,您将得到一个单网页的网站,用户的请求将会被打散到多个容器节点上,而且根据业务负载自动扩缩容,即便某个容器节点宕机也不会影响用户访问。另外您还能够将本地编辑的网页快速更新到网站上。html
本教程使用到的云产品以下:nginx
云服务器ECS浏览器
云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、自然气等公共资源同样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。缓存
文件存储NASbash
阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例、E-HPC 和容器服务等计算节点的文件存储服务。NAS 提供了简单的可扩展文件存储以供与 ECS 配合使用,多个ECS实例能够同时访问 NAS 文件系统,而且存储容量会随着您添加和删除文件而自动弹性增加和收缩,为在多个实例或服务器上运行的工做负载和应用程序提供通用数据源。服务器
容器服务Kubernetes版ssh
阿里云容器服务Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)是全球首批经过Kubernetes一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。tcp
本教程七个步骤,完成前五个步骤便可实现弹性高可用的NGINX网站,最后两个步骤验证网站的弹性和高可用属性。编辑器
步骤一:建立资源
步骤二:挂载文件系统NAS到ECS服务器
步骤三:上传文件到NAS
步骤四:配置NAS挂载信息
步骤五:建立NGINX应用
步骤六:访问测试网站
步骤七:验证服务高可用
步骤八:验证弹性扩缩容分布式
云产品资源体验地址:https://developer.aliyun.com/...
开启云产品资源
阿里云文件存储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
使用ACK集群搭建NGINX服务后,在您打开网站首页时,容器就会从NAS文件系统中读取这一步上传的网页文件,返回给浏览器。在网站搭建完成后,您能够经过一样的方法更新NAS里的文件。
1.在本地建立index.html文件。
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。
4.您能够使用步骤二的方式远程链接到ECS,在/mnt目录中查看刚上传的index.html文件。
要使用ACK服务挂载使用NAS,须要先配置容器存储卷PV和存储声明PVC信息,这些信息将会在您部署NGINX应用的时候用到。
1.配置存储卷。
进入ACK集群列表,单击ACK集群名称,进入集群详情页。
单击左侧引导栏中的存储卷。
单击存储卷标签页,而后单击建立。
选择NAS存储卷类型,填写存储卷名称,选择NAS挂载点,最后单击建立。
操做流程参见以下图。
图1:
图2:
2.配置存储声明。
1.单击左侧导航栏中的存储卷。 2.单击存储声明,而后单击建立。 3.根据如下信息配置存储声明。
存储声明类型:选择NAS。
名称:填写存储声明名称,例如:nas-pvc。
分配模式:选择已有存储卷。
已有存储卷:选择上一步建立的存储卷。
总量:此栏对于NAS不具备实际限制意义,保留默认值便可。
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)右侧的建立。 在弹出的建立对话框的规则项中配置如下信息,而后单击建立。
说明 其余选项保持默认值便可。
此时路由一栏应该显示域名与对应服务的信息。路由功能会将用户请求经过简单扇出的方法,打散到多个容器节点上进行处理。
c. 勾选容器组水平伸缩后面的开启,而后在最小副
等待建立成功。
等待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. 进入ACK控制台的工做负载页面,单击步骤三建立的NGINX服务名称。 b. 单击容器组水平伸缩器查看当前副本数和容器组当前当前CPU使用率。
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. 此时,使用浏览器打开网站,发现仍然能够正常访问。