基于云平台的LNMP集群架构研究
2021-09-22曹秀莲钟祥睿林晓超
曹秀莲 钟祥睿 林晓超
摘 要:服务器集群架构是网站Web业务的核心,其可用性直接关系到用户的体验和网站的效率。现代集群架构运用云平台的管理和资源池,用云主机来代替物理服务器,对系统的信息进行传输、处理、存储、监控等都有所改进。网站的访问量日益剧增,当访问量达到十几万时,针对访问量而引发的服务器架构调优,成为了一个迫切需要解决的问题。
关键词:云平台 LNMP集群 访问量 负载均衡
中图分类号:TP393 文献标识码:A 文章编号:1674-098X(2021)06(a)-0061-04
Research on LNMP cluster architecture based on cloud platform
CAO Xiulian ZHONG Xiangrui LIN Xiaochao
(Guangdong Engineering Vocational College Guangzhou, Guangdong Province, 510520 China)
Abstract: Server cluster architecture is the core of website web business, and its availability is directly related to the user experience and website efficiency. Modern cluster architecture uses the management and resource pool of cloud platform, and uses the virtual machine to replace the physical server to improve the information transmission, processing, storage and monitoring of the system. With the rapid growth of website traffic, when the traffic reaches more than 100000, the server architecture optimization caused by the traffic has become an urgent problem to be solved.
Key Words: Cloud platform; LNMP cluster; Traffic; Load balancing
本文主要選取了企业web网站架构为实际研究对象,在云平台下构建LNMP集群,从数据库服务优化、web服务器优化、负载均衡优化3个方面对企业的软硬件实际情况提出web网站架构优化方案。
1 研究背景
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利[1-2]。
LNMP集群是企业级常用于处理高并发问题的集群[3-4],它代表的就是Linux系统下Nginx+MySQL+ PHP这种网站服务器架构,LNMP集群架构可以解决30000~100000的访问量。
服务器集群架构是网站web业务的核心,其可用性直接关系到用户的体验和网站的效率。随着计算机技术的飞速发展和访问量不断的增加,传统的web架构、负载均衡已不能适应新的发展需要,提高web集群架构的高可用性主要途径是运用先进的信息技术,根据企业的业务需求对现有的软硬件情况进行架构的改进,是解决问题的有利方法。
云平台下的LNMP集群架构就是搭建的IaaS(Infrastructure as a Service),即基础设施即服务。指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。云平台下的LNMP集群架构的设计目标是优化企业web业务架构,应对web业务日益剧增的访问量,以此提高企业web服务集群的高可用行性和企业web业务的需求。
2 云平台下构建LNMP集群的整体设计
一个良好的架构设计和运维保障措施,能为云平台的稳定健康运行,产生不可估量的积极影响[5-6]。如果化繁为简,简单来说,要部署一套生产环境级别的云平台,至少会涉及到4个层次的内容,即物理基础设施层、存储层、云服务层和用户应用层。
随着访问量不断增加,大多企业的Web集群都采用集群技术来构建Web物理服务器集群以解决日访问量大的问题。提高服务器集群的性能要选择合理的负载均衡策略,负载均衡策略的合理应用能优化集群性能,提高系统的运行效率,有效解决系统访问量大的问题。本文构建的LNMP集群的设计架构图如图1所示。
2.1 整体设计目标
2.1.1 构建云平台集群架构
在计算节点集群和控制节点集群搭建云平台。
2.1.2 资源弹性使用
在控制节点服务器上实现资源的整合,把控制节点的全部资源加入云平台资源池。
2.1.3 构建LNMP集群架构
使用云平台下的云主机进行搭建Web虚拟的服务集群架构。
2.1.4 負载均衡
在Lvs中使用Wrr算进行负载均衡调度,提高整个Web架构的稳定性。
2.1.5 提高Web服务器集群访问量
弹性资源的使用,可以快速增加Web集群中服务器的数量,令访问量增加。
2.1.6 MySql数据库(HA)
在访问量大的时候mysql服务器集群写入的请求会加重服务集群的负载,这个时候需要进行mysql集群读写进行分离。
2.2 云平台部署步骤
2.2.1 各节点进行基础环境配置
配各节点IP地址、关闭防火墙不自启、内核防火墙设置为disable、全部节点进行统一时钟。
2.2.2 控制节点(Rabbitmq、mariadb、Keystone、nova-api等)
至少部署3台控制节点,其余可做计算节点、网络节点或存储节点。采用Haproxy + KeepAlived方式,代理数据库服务和OpenStack服务,对外暴露VIP提供API访问。
2.2.3 网络节点(neutron_dhcp_agent、neutron_l3_agent、neutron_openvswitch_agent等)
网络节点上运行的Neutron服务包括很多的组件,比如L3 Agent、openvswitch Agent、LBaas、VPNaas、FWaas、Metadata Agent等,其中部分组件提供了原生的HA支持。
网络节点涉及到的网络有管理网络(用于OpenStack各服务之间通信)、外部网络(提供floating ip)、存储网络(如ceph存储网络)和虚机网络(也称租户网络、业务网络)4种类型。
2.2.4 计算节点(Nova-Compute、neutron_openvswitch_agent、虚拟机等)
计算节点是在全部的物理服务器(包括控制节点)运行nova、nova-api组件的各服务,进行云平台的资源整合。
2.2.5 存储节点(cinder-volume、swift等)
存储节点的HA,主要是针对cinder-volume、cinder-backup服务做HA,最简便的方法就是部署多个存储节点,某一节点上的服务挂了,不至于影响到全局。
3 LNMP集群架构详细部署
3.1 Nginx安装部署
根据架构图把LNMP集群分为Nginx集群和Mysql+php集群。
Nginx安装配置包括如下几部分:
(1)Web服务、邮件服务、邮件代理;
(2)负载均衡(反向代理proxy);
(3)webcache;
Nginx特点:静态小文件(1M),支持高并发,占用的资源很少。3W并发,10个进程,内存150M。
安装依赖包:
依赖软件:Pcre、Openssl、Zlib
yum -y install wget
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel
yum -y install patch
下载软件包和依赖软件包:/tools/
wget http://nginx.org/download/nginx-1.10.2.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz
配置nginx.conf及部署Web站点
egrep -v "#|^$" nginx.conf.default >nginx.conf
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.guangdonggongcheng.com;
location / {
root html/www;
index index.html index.htm;
}
}
server {
listen 80;
server_name bbs.guangdonggongcheng.com;
location / {
root html/bbs;
index index.html index.htm;
}
}
}
3.2 负载均衡部署
3.2.1 LB(Load Balance)集群之LVS
LB集群的架构和原理很简单,就是当用户的请求发过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到共享存储,这样保证所有用户请求的数据是一致的,如图2所示。
LVS(Linux Virtual Server)即Linux虚拟服务器,是Linux内核标准的一部分。LVS架构从逻辑上可分为调度层、Server集群层和共享存储,是一个实现负载均衡集群的开源软件项目。能够构建一个高性能高可用的Linux服务器集群,不但具有良好的可靠性、可扩展性和可操作性,而且成本低廉。
3.2.2 LVS使用的加权轮询 WRR负载均衡算法
LVS中的负载均衡使用的是加权轮询WRR负载均衡算法,这种算法比经典的rr算法多了一个权重的概念,主要是给RS设置权重,权重代表分发的请求数,取值范围为0~100,这实质是弥补rr算法的不足之处。LVS根据每台服务器的性能,给每台服务器添加权值,假设有服务器A权值=1,服务器B权值=2,则意味着调度到服务器B的请求会是服务器A的2倍。
3.2.3 MySQL数据库HA(High Availability)
Mariadb Galara 集群。Galera Cluster是一套在innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去。特点如下:(1)同步复制,(>=3)奇数个节点;(2)Active-active的多主拓扑结构;(3)集群任意节点可以读和写;(4)自动身份控制,失败节点自动脱离集群;(5)自动节点接入;(6)真正的基于”行”级别和ID检查的并行复制;(7)无单点故障,易扩展。
采用MariaDB + Galera方案部署至少3个节点(最好节点数量为奇数),外部访问通过Haproxy的active + backend方式代理。平时主库为A,当A出现故障,则切换到B或C节点。
安装数据库HA过程如下。
(1)进行基础配置。集群至少需要3个节点的服务器硬件、配IP、centos7系统。
(2)配置说明。Galera Cluster的内存要求很难准确预测。它使用的特定内存量可能会有很大差异,具体取决于给定节点接收的负载。如果Galera Cluster尝试使用比节点更多的内存,则mysqld实例会崩溃。保护节点系统崩溃的方法是确保服务有足够的swap空间分区或者交换文件。
(3)启动Galera集群。完成安装和配置Galera Cluster后,需要使用wsrep-new-cluster选择一个节点上启动mysqld。这将会初始化集群的核心組件。在此之后启动的每个节点都将连接到该组件并开始复制数据。
4 结语
应对企业访问量日益剧增问题,使Web业务高可用,需要在云平台技术、技术架构、数据库HA、负载均衡等方面就设计调优。本文对企业Web业务应对日益剧增的访问量进行了分析其架构,对企业的日访问量剧增提出了全面的可行方案总结如下。
(1)数据库HA方面:业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去、同步复制、多住拓扑结构、集群任意节点可以读和写、自动身份控制、无单点故障、自动节点接入。
(2)Web应用和服务层:用云平台来代替整个系统的管理,易拓展性强,使用云主机的虚拟化技术在LNMP架构上。
(3)集群负载均衡调度算法:根据实际情况选择合适的集群均衡调度算法。当用户访问集群时,每个用户所要请求处理的时间和消耗系统资源是不同的,采用动态反馈负载均衡算法考虑集群的实时负载和响应情况,不断调整服务期间处理的比例,尽可能的提高集群的整体性能。
参考文献
[1] 李金兆.信息化社会的戏曲传承[D].临汾:山西师范大学,2019.
[2] 蒯向春.云网融合应用关键技术研究与设计[D].南京:南京邮电大学,2017.
[3] 刘焓.云平台下服务分布式监控系统的研究与实现[D].成都:电子科技大学,2020.
[4] 兰巨龙,胡宇翔,张震,等.未来网络体系与核心技术[M].北京:人民邮电出版社:学术中国·院士系列, 2017.368.
[5] 刘志成,林东升,彭勇.云计算技术与应用基础[M].北京:人民邮电出版社,2017.283.
[6] 刘奕.5G网络技术对提升4G网络性能的研究[J].数码世界,2020(4):24.