docker搭建高可用与负载均衡(二)nginx+apache+php+mysql主从复制+NFS+zabbix监控系统

   日期:2024-12-27    作者:ei1ir 移动:http://mip.riyuangf.com/mobile/quote/60449.html

网站建设是企业、组织、个人宣传和分享交流的重要的平台,尤其是在如今的信息化时代下,所有行业都在互联网的影响下实现数字化、在线化。在网站的建设中,网站的部署和发布是非常重要的一环,尤其是企业网站,随着企业的影响力和业务规模的扩大,企业的服务器需要承载的访问量和负载也日益增多,这就对企业提供网络服务提出了新的标准。因此,为使得企业网络可以承载更多的访问量和业务需求,我们就需要搭建web集群,实现企业级web集群负载均衡和高可用。而在网站开发的过程中,企业或者个人往往不会考虑从零开始开发,为节约时间和经济成本,通常会选择一款框架来建设和部署网站。在本次项目中,我选取现在国外热门的网站框架——wordpress来进行web集群的安装和部署,以nginx做负载均衡器,配置双网站来承担网站负载,配置NFS共享、mysql主从复制和zabbix监控系统。

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 监控系统

为方便网站的运营和维护,对整个集群进行监控,我们另外设置一台服务器来监控系统的运行状态。方便在监控网站各服务器的运行,以备在系统出现问题,能快速找到应对方案,减少企业的损失。

本次项目着重对web应用的部署和mysql数据库的主从部署,通过nginx负载均衡分担网络流量,同时使用zabbix进行网络的监控。

系统的地址以及软件环境如下
容器(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

在宿主机上安装docker,在此次实验中,我使用的是centOS7的linux环境。
使用下面的命令安装docker

 

此次项目中,使用了六个容器,如图所示

 
 

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
支持 SSL 和 TLSSNI。

3.2.1 下载安装配置nginx

 

3.2.2 启动nginx

 
 

3.3.1 安装apache和php

 

3.3.2 下载wordpress

 

3.3.3 配置apache服务器

配置网站根目录为wordpress的目录

 

3.3.4 PHP版本问题和wordpress的安装探索

 

删除原先有的php,并安装php7(wordpress5 兼容php7,但是部分主题插件不兼容)

 

3.3.5 检测php环境

3.4.1 宿主机安装nfs,配置共享目录

  1. 安装配置nfs

    #yum install nfs-utils //使用yum方式安装nfs
    #vim /etc/sysconfig/nfs
    #systemctl start rpcbind //启动rpcbind服务,查看监听端口

2.新建 /var/www/html/wordpress/wp-includes目录为共享目录,设置权限为777
这里我只将wp-includes即wordpress的核心文件设置为nfs共享,其他需要设置nfs共享的目录可以按照相同的思路进行配置。
3.编辑/etc/exports文件

 

重启nfs服务
3.4.2 配置web容器,挂在共享目录

 
 

3.5.1 安装mysql

 

3.5.2 修改初始密码

 

3.5.3 添加wordpress 用户和权限

(1)赋予wordpress软件服务器器访问权限

 

(2)创建wordpress数据库
A.倘若你是在公网的环境下进行,服务器都有公网地址,则在此处可以直接创建wordpress数据库,并通过网页进行安装。

 

在安装时会设置mysql的服务器地址,以及后台登录账号和密码,但是由于我这里采用的时docker的内部环境,因此在安装过程中出现了一些问题,不过幸运的是,都找到了解决方法。解决过程如下
1)服务器无法连接
因为web安装时会从web端对服务器进行检测,但是通过主机访问时无法正常连接到服务器,因此需要在web服务器端进行一些操作。
A.复制wp-config-sample.php文件为wp-config.php,编辑文件内容如下

 
 
 

给wordpress数据库加入一个管理员权限的用户
:在此次环境中,我采用的是docker环境,用主机浏览时,无法使用web界面正确安装wordpress,因此,倘若你也遇到后台登录账号无法登录的问题,可以通过如下方法添加测试账号,用于登录网站后台

 
 
 

2.在master节点配置从节点账号

3.7.1 下载安装zabbix

//配置镜像

 

3.7.2 .初始化mysql数据库

 

3.7.3 配置数据库

//在zabbix_server.conf中编辑数据库配置

 

3.7.4 启动

 
 
 

鉴于以上安装流程中出现的问题,建议在单台服务器上先完成wordpress的安装,导出数据库,以安装好的wordpress容器提交为镜像,然后创建新的容器。拷贝导出的数据库文件,导入到mysql-master上,并在mysql-master上配置给web服务器的权限。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号