博客网站的优化一
网站架构:LNMP+WordPress
系统:rhel7+centos7(虚拟机)
概述:
为提高网站的并发效果,适应不断增大的访问量需求,以及防止服务器的单点故障,因此将网站的一台web服务器改造成三台web服务,
采用Haproxy代理,对服务器进行负载均衡调度,充分利用服务器性能.
同时保证所有服务器的提供的博客网站的服务内容一致,采用单独的NFS服务器,存放博客网站的内容,共享给三个web服务器.
为进一步减轻服务器的压力,将数据库服务与web服务器进行解耦分离,也便于以后进行数据库服务集群,解决数据库的单点故障等.
配置DNS服务器,屏蔽真实的地址,同时也便于用户更好的记住地址,分配一个域名www.mylab.com
需求整理:
- 数据库独立于web服务器
- NFS服务共享博客网站内容
- 多台web服务提高并发访问,防止单点故障
- DNS域名解析服务提供便捷的网站访问
- Haproxy反向代理web服务,提高负载均衡,高可用的网站服务
规划:
client 192.168.2.254/24 192.168.4.254/24
dns 192.168.4.5/24 192.168.2.5/24 安装包: bind bind-chroot
haproxy 192.168.4.5/24 192.168.2.5/24 安装包:haproxy
web1 192.168.2.11/24 安装包:gcc pcre-devel openssl-devel php php-fpm php-mysql mariadb-devel nfs-utils nginx-1.12.2.tar.gz
web2 192.168.2.12/24 安装包:gcc pcre-devel openssl-devel php php-fpm php-mysql mariadb-devel nfs-utils nginx-1.12.2.tar.gz
web3 192.168.2.13/24 安装包:gcc pcre-devel openssl-devel php php-fpm php-mysql mariadb-devel nfs-utils nginx-1.12.2.tar.gz
dbserver 192.168.2.21/24 安装包:mariadb mariadb-server mariadb-devel
nfsserver 192.168.2.31/24 安装包:nfs-utils wordpress-5.0.2-zh_CN.tar.gz的php文件内容为共享
拓扑图:
配置注意点:
- nginx需要源码编译,configure 配置模块添加两项--with-http_ssl_module --with-http_stub_status_module
- nginx 配置文件动静分离设置
- nginx 开机自启服务echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local chmod +x /etc/rc.local
- haproxy 配置文件/etc/haproxy/haproxy.conf,添加web集群,设置轮询调度
- NFS使用的是随机端口,每次启动NFS都需要将自己的随机端口注册到rpcbind服务,这样客户端访问NFS时先到rpcbind查询端口信息,得到端口信息后再访问NFS服务。
systemctl restart rpcbind
systemctl enable rpcbind
- NFS 共享文件夹所有者和所属组设置成apache,因为解析php脚本需要操作权限
- 三台web服务器开机自动挂载共享文件 echo "192.168.2.31:/web_share/html/ /usr/local/nginx/html/ nfs defaults 0 0" >> /etc/fstab
- 博客网站的域名可以设置www.mylab.com, 便于检查网站访问效果,案例中给的lab.com,互联网可以访问
- 真机的/etc/hosts的文件添加域名 不加www.mylab.com ,而是使用nameserver 192.168.4.5
- 修改wordpress的配置文件wp-config.php,使浏览器访问网站某个子页面后,URL不会固定到某一台后端服务器不轮询,添加两行
define('WP_SITEURL', 'http://www.lab.com');
define('WP_HOME', 'http://www.lab.com');