问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在ubuntu14.0下为WordPress应用服务器搭建四层负载均衡

发布网友 发布时间:2022-04-29 07:39

我来回答

1个回答

热心网友 时间:2022-04-10 09:28

当前环境快照
可选:在继续本教程之前,你可能想为你当前环境创建快照。本教程中快照有两个目的:
如果发生错误可以回滚到可工作环境
对原始服务器做一次性复制,而不需要再次安装和配置PHP以及Nginx
注意:为环境创建快照需要短暂的关闭VPS
为wordpress-1和mysql-1两个VPS做一个快照。
现在有了快照以后,我们就可以准备好继续搭建环境中其他部分了。

创建第二台web应用服务器
现在我们需要创建第二个VPS来分担原始应用服务器的负载。有两种选择:
从之前的快照wordpress-1中创建一个新的VPS
从头开始重新创建一个VPS并且设置该VPS和wordpress-1有相同的软件和配置
不论那种方法,如果网络可用,一定要确保勾选个人网络。个人网络是本教程中所有VPS都需要的。
如果没有个人网络选项,用你的VPS的公开IP来替代内网IP。需要注意的是,当使用公网IP在应用服务器和数据库服务器之间传输敏感数据比如非加密的数据库密码,并不是一个很好的选择,因为这些信息需要在互联网上传输。
方式一:使用快照创建新的VPS
创建一个新的VPS,叫做wordpress-2,使用你为wordpress-1做的快照来做。
如果你选择的这种方式,可以跳过“方式二”直接去看“同步web应用文件”小节。
方式二:从头创建一个新的VPS
这种方式和“方式一”可二选一。
如果你想从头设置wordpress-2服务器,而不是使用wordpress-1的快照,那么你要确保安装的软件相同。如果你忘了如何安装和设置原始wordpress服务器,可以参考预备知识章节中如何设置web服务器小节。
快速参考,这里是一个相关软件和配置文件的列表,需要你来安装或复制:
软件方面:
Mysql客户端
Nginx
PHP
安装完这些软件后,在你的wordpress-2服务器上运行一下命令:
sudo apt-get update
sudo apt-get install mysql-client
sudo apt-get install nginx php5-fpm php5-mysql
原始应用服务器上需要创建或编辑的配置文件:
/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/www.conf
/etc/nginx/sites-available/example.com
/etc/nginx/sites-enabled/example.com
当你修改完配置文件后,不要忘了冲洗PHP和Nginx,可以使用一下命令:
sudo service php5-fpm restart
sudo service nginx restart
在新服务器的安装和配置完成以后,我们需要同步wordpress应用文件。
同步Web应用文件
在应用程序可以进行负载均衡之前,我们需要确保新应用服务器的应用程序文件和原始wordpress服务器的文件是同步的。这些文件的位置也就是你安装wordpress的位置,以及其他的一些文件。除了wordpress运行所需要的配置文件之外,上传的文件和通过wordpress接口安装的插件的安装文件和这些插件上传的文件都需要去同步。在预备知识文章中,我们将wordpress安装在/var/www/example.com路径下--我们将
在所有的例子中都会使用这个路径,但是你需要将这个路径替换为你wordpress的实际安装路径。
有很多方法在服务器之间同步文件--NFS或者glusterFS都是不错的选择。我们将使用glusterFS来满足我们所有的同步需求,因为它允许每个应用服务器来存储应用程序文件的副本,同时也会保持文件系统的一致性。下图是我们共享存储方案的概念图:

如果你对本小节中使用的glusterFS完全不熟悉,请参考这个GlusterFS教程(https://www.digitalocean.com/community/tutorials/how-to-create-a-rendant-storage-pool-using-glusterfs-on-ubuntu-servers),这是本小节的基础。

注意:下面的内容将经常在wordpress-1和wordpress-2服务器之间跳转,请确保在正确服务器上运行响应命令,否则你将遇到麻烦。
编辑hosts文件
如果你有一个内部DNS,而且这个DNS记录了你VPS的内部IP地址,那么你可以跳过这一步直接配置并执行glusterFS相关命令。
否则,需要在wordpress-1和wordpress-2上编辑/etc/hosts文件:
sudo vi /etc/hosts
增加以下两行,将红色字替换为你应用服务器的各自ip:
wordpress_1_private_IP wordpress-1
wordpress_2_private_IP wordpress-2
保存并退出。
安装GlusterFS并配置一个冗余盘
在wordpress-1和wordpress-2上使用apt-get命令安装glusterFS服务端软件:
sudo apt-get install glusterfs-server
在wordpress-1上,运行以下命令来和wordpress-2保持对等:
sudo gluster peer probe wordpress-2
在wordpress-2上,运行以下命令来和wordpress-1保持对等:
sudo gluster peer probe wordpress-1
在wordpress-1和wordpress-2上,创建路径用来存储glusterFS所管理的文件,运行:
sudo mkdir /gluster-storage
在wordpress-1上,创建glusterFS副本,我们称作volume1,glusterFS 会将它存放在/gluster-storage中的数据保存在你所有的应用服务器上,运行:
sudo gluster volume create volume1 replica 2 transport tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage force
预期输出以下结果:
volume create: volume1: success: please start the volume to access data
再次在wordpress-1上,运行一下命令来启动刚刚创建的glusterFS卷,在volume1上运行:
sudo gluster volume start volume1
预期输出以下结果:
volume start: volume1: success
在wordpress-1上,如果你想查看刚创建和启动的glusterFS卷的信息,运行:
sudo gluster volume info
你需要明白的是目前有两个glusterFS“同盟”,每个对应一个wordpress服务器。
现在我们已经运行了一个glusterFS盘,为了能够使用它来同步文件,我们需要将该盘挂载。

挂载共享存储

首先挂载wordpress-1上的文件系统。
在wordpress-1上,修改fstab文件来使共享文件系统可以随机启动:
sudo vi /etc/fstab
添加以下行到fstab来将/storage-pool目录作为挂载点:
wordpress-1:/volume1 /storage-pool glusterfs defaults,_netdev 0 0
保存并退出。
在wordpress-1上,现在将glusterFS盘挂载至/storage_pool文件系统:
sudo mkdir /storage-pool
sudo mount /storage-pool
在wordpress-1上挂载共享盘/storage-pool后,你可以运行df -h命令来列出当前已挂载的文件。接下来,我们将使用类似的流程来挂载wordpress-2上的共享文件系统。
在wordpress-2上,编辑fstab来使共享系统随机启动:
sudo vi /etc/fstab
添加以下行到fstab来将/storage-pool目录作为挂载点:
wordpress-2:/volume1 /storage-pool glusterfs defaults,_netdev 0 0

在wordpress-2上,现在将glusterFS盘挂载至/storage_pool文件系统:
sudo mkdir /storage-pool
sudo mount /storage-pool
现在,所有在/storage-pool文件系统中创建、修改或删除的文件都会在两个wordpress服务器之间同步,即使当其中一个服务器暂时故障时也会同步。

将wordpress文件移至共享存储
下一步是将wordpress-1的wordpress文件移动到共享存储中。请将红色字体替换为你自己的值。/var/www/example.com表示wordpress文件的位置(nginx也会在这里查找文件),example.com本身只是根目录。
在wordpress-1上,运行以下命令来移动wordpress文件至共享文件系统/storage-pool:
sudo mv /var/www/example.com /storage-pool/
sudo chown www-data:www-data /storage-pool/example.com
接下来,你可能想创建一个符号链接来指向wordpress在共享文件中位置:
sudo ln -s /storage-pool/example.com /var/www/example.com
目前wordpress文件放在共享文件系统/storage-pool中,这些文件接受Nginx访问他们的原始路径/var/www/example.com。

将新的应用服务器指向共享存储区
下一步是我们在新web应用程序服务器上创建一个符号链接指向WordPress文件共享文件系统。
如果你选择使用快照创建wordpress-2,在wordpress-2上运行以下命令:
sudo rm /var/www/example.com
sudo ln -s /storage-pool/example.com /var/www/example.com

如果你从头创建wordpress-2服务器,在wordpress-2上运行以下命令:
sudo mkdir -p/var/www
sudo ln -s/storage-pool/example.com /var/www/example.com
这就是wordpress应用的文件同步。接下来是使新服务器wordpress-2连接数据库。

创建一个新的数据库用户
由于Mysql使用用户名和源主机来区别用户,我们需要创建一个新的wordpress用户来连接新的服务器wordpress-2。
在数据库服务器(mysql-1)上连接至MYSQL控制台:
mysql -u root -p
在一下mysql语句中,将红色字体替换为你真实环境的参数:
wordpress用户:Mysql中wordpress用户。确保和已经存在的用户名保持一致。
wordpress2private_IP:wordpress-2服务器的内部ip。
密码:wordpress用户的Mysql数据库密码。去报和已经存在的用户名密码保持一致。
在wordpress-2上mysql控制台中运行以下命令:
CREATE USER 'wordpressuser'@'wordpress_2_private_IP' IDENTIFIED BY 'password';
GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'wordpressuser'@'wordpress_2_private_IP';
FLUSH PRIVILEGES;
现在第二台服务器wordpress-2就可以登录mysql服务器mysql-1了。

还没负载均衡
注意,有两个应用服务器在运行但是他们并没有被负载均衡,因为每个服务器必须通过他们的*IP来访问。而我们希望能够通过相同的URL访问该应用程序,如http://example.com/,以及在两台服务器之间做流量分配。

安装HAProxy
在内网中创建一个新的VPS,在本教程中,我们叫做haproxy-www。
在haproxy-www服务器上使用apt-get命令来安装HAProxy:
sudo apt-get update
sudo apt-get install haproxy
我们需要使用HAProxy初始化脚本来启动和停止HAProxy:
sudo vi /etc/default/haproxy
将ENABLED值改为1来开启初始化脚本:
ENABLED=1
保存并退出。
现在HAProxy可以在服务器上被启动和停止。当然,你现在可以使用命令来控制HAProxy了。让我们来检查下它是否运行:
/etc/init.d$ sudo service haproxy status
输出结果:
haproxy not running
HAProxy没有运行。这是对的,因为它首先需要配置。接下来,让我们来配置HAProxy。

HAProxy配置
HAProxy的配置文件主要分为以下两部分:
Global:设置进程级参数
Proxies:包括默认、监听、前端、后端参数
Global配置
所有的HAProxy配置都需要在HAProxy服务器haproxy-www上进行。
首先,复制一份默认的haproxy.cfg文件:
cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig
现在,使用文本编辑器打开haproxy.cfg文件:
sudo vi /etc/haproxy/haproxy.cfg
你将看到有两部分已经被定义:global和defaults。首先,我们将对一些默认参数做一些修改。
在默认情况下,找到一下两行:
mode http
option httplog
将其中http替换为tcp,结果如下:
mode tcp
option tcplog
选择tcp作为HAProxy执行第4层负载平衡模式配置。在我们的例子中,这意味着一个特定的IP地址和端口中所有传入的流量将被转发到同一后端。如果你不熟悉这一概念,请阅读在HAProxy介绍中的负载均衡小节。
先不要关闭配置文件,我们将加上proxy配置。
代理配置(Proxyies)
我们首先要做的事情是增加前端。对一个基本的4层负载均衡设置,前端监听一个特定的IP地址和端口的流量,并将传入流量转发到一个指定的后端。
在配置文件的末尾,让我们添加上我们的前端:www。请将haproxy_www_public_IP替换为你自己的haproxy-www服务器IP地址:
frontend www
bind haproxy_www_public_IP:80
default_backend wordpress-backend
以下是对上面的前端配置代码片段中的每一行是什么意思做出解释:
frontend www:指定了一个名为“www”的前端,我们将用它来处理传入www的流量
bind haproxywwwpublic_IP:80:将haproxywwwpublic_IP替换为你haproxy-www服务器的*ip。这是告诉haproxy这个前端将处理这个ip和端口上的流量。
default_backend wordpress-backend:这指定所有这些前端的流量将会转发到wordpress-backend,这在下一步我们将定义
配置完前端后,继续将以下后端配置加入文件末尾:
backend wordpress-backend
balance roundrobin
mode tcp
server wordpress-1 wordpress_1_private_IP:80 check
server wordpress-2 wordpress_2_private_IP:80 check
以下是对上面每行配置的解释:
backend wordpress-backend:指定了一个名为“wordpress-backend”的后端
balance roundrobin:指定该后端将使用“轮循”的负载均衡算法
server wordpress-1 ...:指定了一个名为“wordpress-1”的后端服务器,内外nagIP(你必须替换为你自己服务器ip)和端口监听,在这个例子中为80端口。“check”选项表示使负载均衡器对这个服务器定期进行健康检查
server wordpress-2 ...:指定了一个名为“wordpress-2”的后端
保存并退出。
现在HAProxy可以启动了,但是让我们先开启日志功能。

开始HAProxy日志功能
启用HAproxy日志功能非常简单,首先编辑rsyslog.conf文件:
sudo vi /etc/rsyslog.conf
接着找到一下两行,取消这两行注释来开启UDP日志功能:
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
现在重启rsyslog来使新配置生效:
sudo service rsyslog restart
HAProxy日志功能现在已经开启了!日志文件将在HAProxy启动后被放在/var/log/haproxy.log。

启动HAProxy和PHP/Nginx
在haproxy-www服务器上,启动HAProxy来使配置生效:
sudo service haproxy restart
取决于你如何设置您的新应用程序服务器,您可能需要重新启动你的WordPress应用程序通过重启PHP和Nginx。
在wordpress-2服务器上,重启PHP和Nginx:
sudo service php5-fpm restart
sudo service nginx restart
现在WordPress应该运行在两个应用程序服务器,它们是负载均衡的。但仍有最后一个配置需要更改。

更新WordPress配置
现在你的WordPress应用程序的URL已经改变,我们必须在WordPress更新几个设置。
在wordpress服务器,编辑你的wp-config.php文件。它位于WordPress的安装位置(在本教程中,它是安装在/var/www/example.com但你安装可能会有所不同):
cd /var/www/example.com; sudo vi wp-config.php
找到"DB_NAME"所在行;增加以下配置在该行之上,并且替换红色的值:
define('WP_SITEURL', 'http://haproxy_www_public_IP');
define('WP_HOME', 'http://haproxy_www_public_IP');
保存并退出。
现在WordPress url配置为指向您的负载平衡器,而不是只有最初的WordPress服务器,而且在当你试着访问wp-admin控制台时发挥作用。

负载均衡完成
您的web应用程序服务器现在是负载均衡的。你的负载平衡WordPress现在可以访问您的用户通过负载均衡器haproxy-www的*IP地址或域名访问!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
橙子冷藏能保存多久 橙子会过期吗 新鲜橙子如何保存更久 橙子保鲜剂对人体有害吗 粒上皇开口熟栗120g*5袋(共600g)-详细介绍 三皇王板栗介绍 品牌榜:2024年板栗十大品牌排行榜 投票结果公布【新】 为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 websocket的安装问题,求助 如何搭建 websocket服务器 把鲜花摆在家中的哪个地方比较合适? 请问室内放置太多的花对人身体有好处吗? 下载的电脑系统怎么安装啊 我在网上下载了一个系统,请问怎么安装 下载了一个系统,怎样安装? 我是巨蟹座的,有什么特点?有什么要注意的.什么是我的幸运数字等等 十二星座的性格特点及幸运物、幸运日 阳历88年9月10号教师节出生的人的星座特点和性格特征是怎样的?平时要注意的和改的是什么? 下载后的系统怎么安装 十二星座性格特征 什么星座的人最幸运?最幸福? 天蝎座特点.性格.幸运的东西 射手座的性格和幸运的东西是是什么? 好运的拼音 生活中命好的女人,身上往往都有哪几个特征呢? 在生活中,好运的女人,一般都具有哪些特质? 高校青年教师如何在科研工作中发挥主力军作用 为什么要搞科研?什么样的人适合科研?大学老师要发几篇论文才行啊? 想在ubuntu下做html5的开发,有没有好的应用软件推荐呢? 如何安装pywebsocket 怎么在ubuntu14.04服务器上部署基本的tornado服务 如何在windows系统中安装websocket模块 如何使用NPM安装WebSocket模块 thinkphp 模板继承问题 websocket-bench 怎样安装 ubuntu怎么查看ryu控制器ip 微信6.0如何发视频 如何评价主播果小果? 有谁知道动画片《蓝精灵》在国内是哪年播出的?我说的是小时候看的那个蓝精灵.... 在中国。动画师的前景如何,动画师值多少钱 最近要考试,昨晚上突然梦见天上同时出现俩太阳俩月亮,不知道这个征兆是好是坏,请懂的人指点一下!谢谢了! 快黎明时分,梦见日月同辉。 梦见日月地球,同时在天上,从朋友家出来看见东边天上月亮和太阳同时全食,慢慢下降,后来月亮变成了, 解梦:海面上日月同辉 一个身份证弄了5个手机号,结果全停机,并且成空号。请问以后还能办理手机号吗? 一个手机号一个月绑定4个手机号被限制了怎么办 手机号码被停机? 手机号码被停机