利用阿里云搭建WordPress网站 – 服务器横向扩展
WordPress是一种非常流行的博客网站平台,也可以当作一个内容管理系统(CMS)来使用, 是世界上使用最广泛的博客系统之一。WordPress有非常多优秀的插件,使得这个开源产品变得非常容易扩展,满足不同的需求。
我准备利用一个系列的文章,来展示如果利用阿里云的各种产品(弹性计算,数据库,安全等等),搭建一个完整的WordPress网站。内容包括:
- 一、 搭建基础网站应用
- 二、 域名,短信和邮箱
- 三、 动静分离和CDN加速
- 四、 数据库缓存和管理
- 五、 服务器横向扩展
- 六、 网站安全
五、服务器横向扩展
针对数据库增加了缓存和只读实例这些配套组件之后,在很长一段时间之内,网站都不再会因为数据库性能出现问题(毕竟网站读多写少,业务场景比较单一),随着业务持续增加压力会出现在应用服务器上。应用服务器的扩展可以是纵向的(升级规格),也可以是横向的(增加服务器进行并行处理),在这篇文章中,我们会演示如何利用镜像进行ECS的横向扩展。为了进行横向扩展,首先需要复制ECS镜像(这当然要求应用是无状态的),并在前端增加SLB负载均衡。除此之外,当ECS数量逐渐增加之后,为了运维方便,往往可以增加一个NAT网关来作为统一的公网运维出入口,如果对安全性特别高的情况,甚至需要通过增加VPN+堡垒机的方式来进行包含鉴权和审计的运维活动。
这个部分的架构图如下,基于上一个版本增加了:
- SLB负载均衡:对多台ECS进行流量分发,从而扩展应用系统对外的服务能力,避免单点故障
- NAT网关:在 VPC 环境下构建一个公网流量的出入口,为多ECS提供访问公网的出口(SNAT)或统一运维入口(DNAT)
利用镜像新建一台ECS
横向扩展的前提是无状态应用,文件和数据库都应该独立出来存放。前面配置的NAS和MySQL都是独立的,已经具备横向扩展的条件。横向扩展的方式是复制多个无状态的ECS实例。做法是首先打个ECS快照(https://help.aliyun.com/document_detail/25455.html)。说到ECS快照,为了保证业务数据安全,一般的系统应该进行每日快照并最少保存过去7天的快照数据。“快照不规范,亲人两行泪!”
快照创建好了之后,再利用这个快照创建一个自定义镜像(https://help.aliyun.com/document_detail/25460.html)。注意快照和镜像的区别,快照主要是用于数据备份,只能恢复到当前ECS实例,不可跨地域使用;镜像主要是用于数据迁移,可以更换系统盘或创建新的ECS实例,可以跨地域使用。
有了镜像,就可以再复制出一个新的ECS来。创建ECS的时候要注意VPC应该和老ECS的VPC一致,才能保证内网互通。另外考虑到高可用,可以把新ECS放在另外一个可用区中,即使有其中一个区的ECS宕机,还有另一个区的ECS可以用。另外,跨可用区高可用的部署要注意“雪崩效应”,即两台ECS的负载都大于50%的情况下,当一台因故宕机后,另一台也会由于过载的原因而宕机,导致高可用失效。因此,两台ECS高可用,平均负载不应超过50%;三台ECS高可用,平均负载不应超过66%;四台ECS高可用,平均负载不应超过75%;以及类推。
为了让新的ECS可以访问RDS和Redis,需要将其内网IP加入到RDS和Redis的白名单中,这个操作可以参考前两篇(“搭建基础网站应用”和“数据库缓存和管理”)中的设置方法,而NAS和OSS则没有这个安全要求。所有的对应的连接配置也都已经被打包进了镜像当中,一般来说无需再进行配置。
然后我们把之前绑在旧ECS上的EIP解绑,然后绑到新ECS上面试试看。由于是通过镜像复制出来的新ECS,连接的数据库是原有的,所以理论上应该和访问旧ECS应该没有什么区别。
绑定好之后,访问网页试试,正常应该可以成功。如果发现又到了WordPress的配置页,这表示之前配置文件没有正确加载。这个问题很可能是因为NAS加载因为某种问题失败了,可以重启一次新ECS再试试。
用SLB做负载均衡
有了多台ECS,为了保证流量均衡分配到多台ECS上,需要在ECS集群前面增加SLB负载均衡(https://www.aliyun.com/product/slb),这和自己用Nginx搭负载均衡类似,而优势在于能够快速搭建起一主一备的高可用架构,并且运维起来也更方便些。创建SLB的时候要注意使用私网类型,这样才能继续绑定使用之前的EIP,使得对外IP保持不变。另外还要注意使用之前创建的VPC,保证其与后端ECS的内网连通。
创建成功之后,开始配置后端服务器,将前面的新旧两台ECS接入。
前端继续监听HTTP协议,并且仍旧继续使用80端口,使得在横向扩展过程中,不影响业务的对外展现。SLB的调度算法有三种:轮询、加权轮询(WRR)、加权最小连接数(WLC),在后端服务器的处理能力不同的情况下,一般采用加权算法。在此例中,两台后端ECS设置了相同的权重,效果和轮询一样。另外WordPress需要打开保持会话功能,负载均衡监听会把来自同一客户端的访问请求分发到同一台后端ECS上。
设置完成之后,把绑在新ECS上的EIP解绑,然后绑到SLB上面来。
最后从前端页面试试,访问正常。在SLB的控制台上也应该可以看到相应的流量,妥!
NAT网关做维护口
SLB+EIP作为用户出入的“正门”没有问题,但是无法供运维人员使用来对ECS进行运维,包括SSH(或者RDP)和外网下载等。为了对ECS集群进行运维,要么给每个ECS都绑一个EIP,要么利用NAT网关(https://www.aliyun.com/product/nat)作为运维的出入口。第一种方法安全性较低,也不太容易管理,所以一般都会采用NAT网关的方案,利用DNAT提供SSH(或者RDP)端口映射供运维人员远程控制,利用SNAT提供外网下载的能力。另外,由于NAT网关没有鉴权能力,如果需要更安全的运维方式,还应该利用堡垒机(https://www.aliyun.com/product/bastionhost)来代替NAT网关的DNAT功能。
首先需要购买一个NAT网关和两个EIP(一个供DNAT使用,一个供SNAT使用),然后把EIP绑定到NAT上。
然后配置DNAT,将后端ECS的22端口(SSH)映射到外网来(本例用了10221和10222端口来分别对应旧新两台ECS的22端口)。
从外网试试利用映射端口10221来控制旧ECS,没问题。
再来配置SNAT,这个很简单,只需要绑定到相应的交换机上就好了。
利用刚刚的SSH试试从ECS进行下载,毫无压力。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux搭建自己的Nexus私服
本文介绍如何在Linux服务器通过Docker搭建Nexus私服 一、安装Nexus 1、创建存放数据的位置 # 进入个目录,这个你们随便 cd /srv # 创建个文件夹 mkdir nexus-data # 赋予权限,不然启动会报错,无操作权限 chmod 777 nexus-data 2、启动 执行以下命令即可,会自动拉取镜像并启动 docker run -d -p 8081:8081 --name nexus -v /srv/nexus-data:/nexus-data --restart=always sonatype/nexus3 通过docker logs -f nexus查看启动日志,当出现Started Sonatype Nexus OSS说明启动成功,这时通过http://ip:8081即可访问点击右上角Sign in进行登
- 下一篇
Docker容器实战(六) - 容器的隔离与限制
Linux容器中用来实现“隔离”的技术手段:Namespace。Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。 在之前虚拟机与容器技术的对比图里,不应该把Docker Engine或者任何容器管理工具放在跟Hypervisor相同的位置,因为它们并不像Hypervisor那样对应用进程的隔离环境负责,也不会创建任何实体的“容器”,真正对隔离环境负责的是宿主机操作系统本身: 在这个对比图里,应该把Docker画在跟应用同级别并且靠边的位置。用户运行在容器里的应用进程,跟宿主机上的其他进程一样,都由宿主机操作系统统一管理,只不过这些被隔离的进程拥有额外设置过的Namespace参数Docker在这里更多
相关文章
文章评论
共有0条评论来说两句吧...