曹秀蓮 鐘祥睿 林曉超


摘? 要:服務器集群架構是網站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.