WordPress 多点负载均衡部署方式

 

WordPress 确实是做博客非常好的一个工具。但是基本上都是单一节点的。做成多个点的集群其实也是非常方便的,并不需要借助什么组件。

 

 

数据库的同步

多点数据库相互同步的方式比较麻烦,也只能构建一个环状结构。因此这里主要讲述的是Master-Master 主主(双主)复制模式的构建

为了方便表述,在这里分别称两个服务器为A和B。 PHPMyAdmin 提供一个非常方便的设置,但是似乎并没有什么用。所以还是自己手动设置吧,首先将两台服务器的配置文件设置好,我使用的是Mariadb。

 

[mysqld]
#skip-networking    必须使用网络,所以这个要关闭,注释掉
bind-address = 监听的IP地址
port=你的端口号,如果不想使用默认的端口
server-id=1434495932  服务器的ID,两台服务器必须设置不一样的
report-host=example.com 向被连接服务器报告自己的名字

log_bin=mysql-bin   启动 log bin
log_error=mysql-bin.err 记录错误 
#binlog_ignore_db=provider   如果有不想被复制的数据库请使用这个设置

#设置自动增长值,避免冲突。
auto_increment_offset=2 
auto_increment_increment=2

 

两台服务器都必须进行设置,注意,server-id 和 report-host 应该是不一样的。auto_increment_offset 应该一个设置成1,另外一个设置成2。让它们错开。两台服务器都restart 一下,让设置生效。在进行同步的时候,应该合理使用screen,避免重复登陆数据库,另外关闭其它页面服务避免不必要的数据库读写。另外只需要在服务器A设置用户就行了,如果设置全部同步的话,另外一台服务器会复制权限表。

 

登陆服务器A,锁住数据库。

FLUSH TABLES WITH READ LOCK;

 

使用Screen切出来 导出数据库

mysqldump --all-databases -u root -p > backup.sql

 

复制到服务器B

scp backup.sql root@b.example.com:/somewhere/backup.sql

 

在服务器B登陆数据库,并且导入数据

source backup.sql

 

 

查看数据库A的记录位置

MariaDB [(none)]> SHOW Master  STATUS\G;
*************************** 1. row ***************************
            File: mysql-bin.000011
        Position: 35378810
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

 

在数据库B设置从模式,注意需要根据上个输出结果填入File和Position

CHANGE MASTER TO    
	MASTER_HOST='服务器A的地址',  
	MASTER_LOG_FILE='mysql-bin.000011',  
	MASTER_LOG_POS=35378810, 
	MASTER_PORT=你定制的端口, 
	MASTER_USER='复制用户名', 
	MASTER_PASSWORD='密码';
START SLAVE;
SHOW SLAVE STATUS\G;

 

这时候应该找到两个Yes, 如果没有找到,就要检查服务器A的表是否有改动了(没有锁住?)。

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 

然后锁住数据库B,并显示数据库B的状态。

FLUSH TABLES WITH READ LOCK;
SHOW Master  STATUS\G;

 

 

在数据库A设置Change master to ,然后显示从状态,这时候出现两个Yes就可以了。

接着两个数据库都可以解除锁定了。

 

 

文件的同步

文件同步有很多方法,最简单的构建就是使用rsync 然后配合crontab定时执行增量式复制。使用了一段时间,感觉还是挺稳定的 。

rsync -rtvouzp -e 'ssh -p ssh的端口' --links --progress root@cdn-sora.ink.moe:/var/www/html/ /var/www/html/

 

 

WordPress的部署

似乎,并不需要干什么,只不过最好在本机上面host文件,禁用掉一些不必要的插件,pageview那些计数的,其实还是可以用的。只不过有关文件操作的就要注意一点了。发布了才发现没有提及wordpress。

 

 

局限性

数据库同步的技术非常成熟,但是文件只能够做到增量式的相互复制。如果需要删除某个文件就需要在两个服务器上面同时操作。是不太方便的。另外Session并没有同步,如果可以搭配Redis同步会更加好,因此建议在编辑的常用后端,修改host文件绑定ip地址。

 

 

 

这篇博文发表在 服务器开发 目录下,标签为 , , , ,
版权所有,请勿转载。如需引用,请使用链接:https://note.masterchan.me/?p=708
 

您的邮箱地址不会被公开,评论使用Gravatar头像。
Your email address will not be published. This blog is using Gravatar.

正在提交评论...
正在为您准备评论控件