1.项目概述
网站建设是企业、组织、个人宣传和分享交流的重要的平台,尤其是在如今的信息化时代下,所有行业都在互联网的影响下实现数字化、在线化。在网站的建设中,网站的部署和发布是非常重要的一环,尤其是企业网站,随着企业的影响力和业务规模的扩大,企业的服务器需要承载的访问量和负载也日益增多,这就对企业提供网络服务提出了新的标准。因此,为使得企业网络可以承载更多的访问量和业务需求,我们就需要搭建web集群,实现企业级web集群负载均衡和高可用。而在网站开发的过程中,企业或者个人往往不会考虑从零开始开发,为节约时间和经济成本,通常会选择一款框架来建设和部署网站。在本次项目中,我选取现在国外热门的网站框架——wordpress来进行web集群的安装和部署,以nginx做负载均衡器,配置双网站来承担网站负载,配置NFS共享、mysql主从复制和zabbix监控系统。
1.1 功能需求
1.1.1 wordpress网站框架简介
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。
WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。
WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。
1.1.2 负载均衡
网站正式上线时,考虑到单台节点的服务器无法承受超负载的HTTP(s)请求时,此时为满足外部的访问量,同时为了方便管理、提高扩展性和安全性以及减少企业开支,通常就需要采用增加服务器部署站点配置负载均衡集群的方法,来提高企业网站的网络服务能力。
1.1.3 高可用
当负载均衡的服务器节点越来越多时,网站规模也越来越大,负载均衡分发器承担的网络流量最大,其在整个集群中的重要性也就不言而喻,一旦节点出现故障甚至宕机,整个集群将无法对外提供服务。因此,除了负载均衡之外,我们同时会部署负载均衡的高可用,即负载均衡器的主备部署。
1.1.4 NFS共享
配置宿主机文件NFS共享,可以通过网络访问共享资源,节省服务器的存储空间。同时可以方便对文件的统一管理。
1.1.5 mysql主从复制
web负载均衡和高可用保证了web软件的正常访问和运行,但却无法保证数据库的安全。而数据对一个网站来说,是非常重要的。因此在基于对数据安全的考虑,我们对mysql设置主从复制,增强数据库的安全性。
1.1.6 监控系统
为方便网站的运营和维护,对整个集群进行监控,我们另外设置一台服务器来监控系统的运行状态。方便在监控网站各服务器的运行,以备在系统出现问题,能快速找到应对方案,减少企业的损失。
1.2 完成度
本次项目着重对web应用的部署和mysql数据库的主从部署,通过nginx负载均衡分担网络流量,同时使用zabbix进行网络的监控。
2.系统设计
2.1系统结构图表
此次实验环境为centos上的docker系统,系统搭建如图所示:
2.2系统地址以及软件分布表
系统的地址以及软件环境如下:
容器(Container) 操作系统(OS) IP地址 安装软件
宿主机(docker) CentOS7 192.168.131.100 Docker
nginx1 CentOS7 172.18.0.11 nginx
web CentOS7 172.18.0.111 apache+php
web1 CentOS7 172.18.0.112 apache+php
mysql-master CentOS7 172.18.0.201 Mysql
mysql-slave CentOS7 172.18.0.202 mysql
zabbix CentOS7 172.18.0.254 zabbix
network 172.18.0.0/16
3.项目实现
3.1容器准备
在宿主机上安装docker,在此次实验中,我使用的是centOS7的linux环境。
使用下面的命令安装docker:
# yum install docker -y
# systemctl start docker
# systemctl enable docker
此次项目中,使用了六个容器,如图所示:
# docker network create --subnet=172.18.0.0/16 cluster
# docker run -d --privileged --net clus