记一次负载均衡+NFS博客站点搭建的总结
起因
原本是打算搭建个小博客站点做实验,突然想起之前遇到的一次负载均衡失效的经历,便打算做一次实验重现当初的情况并记录下来,防止日后再遇到类似的情况懵逼。
复现流程
架构体系
原环境:前端依赖nginx做负载均衡的调度器,web端是httpd+php-fpm分离,分别处理动态和静态页面,后端mariadb数据库做数据存储,NFS服务器提供站点文件作出共享,防止,web端出现站点文件不一致的情况。
模拟环境:nginx做负载均衡器,httpd和php-fpm共存在同一主机,NFS和mariadb分处2台主机,整个模拟一共使用5台主机。
软件环境与架构图
前提: 所有节点主机全部关闭selinux,清空防火墙规则。 | 系统 | httpd | php | nginx | maiadb |
---|---|---|---|---|---|
CentOS 7 | httpd2.4 | 5.4.14 | 1.10.2 | 10.2.15 |
架构图
配置各个节点
配置nginx节点
1.安装nginx
yum install nginx -y
2.编辑nginx配置文件
vim /etc/nginx/conf.d/upstream.conf #写入下面内容 #定义负载转发的后端ip upstream www.douma.com { server 192.168.99.131:80; server 192.168.99.130:80; } #配置主配置信息 server { listen 80; server_name www.douma.com; access_log /var/log/douma-access.log; error_log /var/log/douma-error.log debug; #set your default location location / { proxy_pass http://www.douma.com; } }
3.启动nginx
systemctl start nginx
配置mariadb
1.安装mariadb
#这里直接yum,新版的mariadb要到官网去配置新版的mariadb更新源 yum install mariadb -y systemctl start mairadb
2.授权账号
MariaDB [(none)]> grant all on wp.* to wp_admin@'192.168.99.%' identified by 'admin'; MariaDB [(none)]> flush privileges;
3.建立wordpress数据库
MariaDB [(none)]> create database wp;
配置NFS
1.安装nfs管理工具,并且启动
# centos7,centos6要先启动rpcbind服务才能启动nfs-server yum install nfs-utils -y systemctl start nfs-server
2.编辑配置文件
vim /etc/exports #写入想要共享的目录和允许挂载的机器和读写权限 /web/wordpress 192.168.99.0/24(rw)
3.创建目录并且放入wordpress站点文件
mkdir /web cd /web wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz tar -xvf wordpress-4.9.4-zh_CN.tar.gz
4.设置acl权限,要给父附录权限,否则在wordpress在上传文件会失败
#由于httpd是yum安装的,所以uid号相同,所以设置一次就好 setfacl -R -m u:48:rwx /web
5.将nfs目录分享出去
#重读exports文件 exportfs -r #查看分享出去的目录和权限 exportfs -v
6.编辑wordpress的配置文件
cd wordpress mv wp-config.sample.php wp-config.php vim wp-config.php
配置web服务器
2台web都按照如下配置
1.安装httpd和php-fmp
yum install httpd php-fpm php-mysql -y #由于未做分离所以可以直接启动,无需修改,如果分离,要注意修改配置文件允许远程访问和监听全部ip systemctl start php-fpm
2.配置httpd
#自定义配置文件名字,但是目录和结尾要固定 vim /etc/httpd/conf.d/php-fpm.conf #写入如下字段 #将php也作为默认页 DirectoryIndex index.php #关闭代理请求 ProxyRequests Off #设置允许代理的请求,这里未做分离所以直接代理到httpd目录就好 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
3.安装nfs管理工具
yum install nfs-utils -y #查看nfs服务器共享的文件夹 showmount -e 192.168.99.135
4.挂载目录
#这里有2中方法 #法一,编译fstabl文件 vim /etc/fstab 192.168.99.135:/web/wordpress /var/www/html/ nfs defaults 0 0 mount -a
#法二,直接命令挂载 mount 192.168.99.135:/web/wordpress /var/www/html/
5.启动httpd
systemctl start httpd
配置宿主机
由于没有做dns所以要修改宿主机的hosts文件才能实现基于域名的访问
C:\Windows\System32\drivers\etc\hosts #添入如下字段 192.168.99.150 www.douma.com
安装wordpress
1.宿主机在浏览器打开www.douma.com
填写好对应信息
2.安装wordpress等待完成
3.重新打开www.douma.com
部署完成。
总结
整个部署基本是按照问题解决后的配置来进行安装的,所以负载均衡可以正常实现。下面将会列出刚开始错误的点和配置。
注意点
nginx反向代理的配置
上面2幅图分别是正确和错误的配置,不过正常来说2个配置都没问题,但是在这里并不行;错误配置是将请求192.168.99.150的请求转发到后端的2台httpd机器上,但是在这里同时会将http://backend 也转发到后端,而wordpress会在安装过程中记录下这个站点名称,并且之后的请求会直接请求http://backend
wordpress数据库的记录
1.下面是wordpress记录到数据库的内容
这里我使用了phpmyadmin这个web端的mysql管理工具
图中方框内记录的便是wordpress记录的站点地址,同时也会是以后请求的地址。
2.下面是使用调试窗口看到的请求,正常情况下下次请求会重新去请求记录的站点地址,可以重新通过nginx实现负载均衡。如果请求的站点地址不是域名而是上面nginx错误配置或者是某个web节点的地址的话,负载均衡会完全失效。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
亿级 Elasticsearch 性能优化
前言 最近一年使用 Elasticsearch 完成亿级别日志搜索平台「ELK」,亿级别的分布式跟踪系统。在设计这些系统的过程中,底层都是采用 Elasticsearch 来做数据的存储,并且数据量都超过亿级别,甚至达到百亿级别。 所以趁着有空,就花点时间整理一下具体怎么做 Elasticsearch 性能优化,希望能对 Elasticsearch 感兴趣的同学有所帮助。 背景 Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 作为一个开箱即用的产品,在生产环境上线之后,我们其实不一定能确保其的性能和稳定性。如何根据实际情况提高服务的性能,其实有很多技巧。 下面我就从三个方面分别来讲解下优化服务的性能: 索引效率优化 查询效率优化 JVM 配置优化 索引效率优化 索引优化主要是在 Elastic...
- 下一篇
Consul + Nginx实现自动扩容平台
几个月没有更新博客了,已经长草了,特意来除草。之前基于nginx反向代理使用的是:nginx + confd + etcd的存储方式,最近发现部门DBA同事使用consul + redis + 哨兵实现的主从自动选举切换,不影响业务的方式,还有看到有些公司分享的consul + mha的方式,觉得不错,于是研究了下consul,本案例是基于consul +consul-template + nginx + flask + mysql构成的。既然consul这么传神,我们先来看看consul是什么: consul是HashiCorp公司(曾经开发过vgrant) 推出的一款开源工具, 基于go语言开发, 轻量级, 用于实现分布式系统的服务发现与配置。 与其他类似产品相比, 提供更“一站式”的解决方案。 consul内置有KV存储, 服务注册/发现, 健康检查, HTTP+DNS API, Web UI等多种功能。官网:https://www.consul.io/其他同类服务发现与配置的主流开源产品有:zookeeper和ETCD。 consul的优势: 1. 支持多数据中心, 内外...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路