部署了两个wordpress服务端使用相同的域名,并且部署了负载均衡,但是通过域名只能访问第1台服务端是为什么?
1、环境部署
主机名 | ip地址 | 用途 |
---|---|---|
lb01 | 10.0.0.231 | 负载均衡代理服务器 |
web01 | 10.0.0.232 | wordpress服务端1 |
web02 | 10.0.0.233 | wordpress服务端2 |
db01 | 10.0.0.234 | 数据库 |
2、问题概述
-
在使用ansible剧本一键部署wordPres时出现此问题,两个wordpress使用的是同一个域名,想通过代理服务器自动分配访问的服务端,但是在访问的时候,发现每次通过lb01访问都只能访问web01,访问不了web02服务端
-
然后尝试直接访问web02时,发现也是会自动跳转到web01上面
3、问题猜想
- 可能是lb01、web01、web02上的nginx服务有问题,子配置文件,站点目录,域名是否写对
- 可能是web01、web02上的php-fpm服务有问题,导致无法解析站点目录里的配置文件???
- 数据库授权有问题??? 最先排除的就是这个,因为网站已经登录了,不可能是授权问题
4、解决办法
以上猜想中的全部检查了,没有问题
请教了某位大佬:在安装wordpress的时候,选择的是ip安装,而不是使用域名去安装的,导致我数据库里的信息保存的只有10.0.0.232这一个ip地址,所以每次访问的时候,都会跳转到web02服务端上!
- 我在数据库里查询了一下,果然,url指定的是10.0.0.232这台服务器,而不是域名…
我以为只有这一处地方改过来就可以,可惜数据库相互关联,写入的不只这一个地方
解决办法需要将wordpress程序安装的数据库里面所有包含10.0.0.232的表信息都改为blog.cn(自定义域名)
一张一张的表去改特别麻烦,而且根本不知道哪张表里有这个信息,容易漏下,所以我这里把这个库使用mysqldump导出,使用文本替换功能再导入即可
- 1、导出这个库,我的库名就叫做wordpress
mysqldump -uroot -p123 --databases wordpress >/tmp/wordpress.sql
- 2、将wordpress.sql文件复制到windows上,使用文本编辑器强大的替换功能,将所有的10.0.0.232替换为blog.cn
- 将替换后的文件传输到db01上,删除原来的wordpress库,导入新库
drop database wordpress;
source wordpress.sql;
- 查询新库里wordpress的url
- 尝试访问web02服务端,或者访问lb01看看能不能自动轮询两台服务器
BTW:查阅了好多资料都没有找到类似的案例,解决方案仅供参考,因为相同的故障可能不只一种问题导致的。