本指南配置了一个高可靠性的WordPress站点,使用了一个双Linode集群,使用了MySQL主主复制和一个Linode nodebal前端。
先决条件
本指南是为Debian 7或Ubuntu 14.04编写的。为了完成这个指南,请确保您的帐户上有两个Linodes和一个NodeBalancer。Linodes都需要一个私有IP地址。还可以确保你的两个链接都配置了SSH密钥,并将对方的Linode的SSH密钥放在另一个/.ssh/authorized_keys文件中。
安装所需要的软件包
使用以下命令在每个Linodes上安装Apache、PHP和MySQL:
- 1 sudo apt-get update
- 2 sudo apt-get upgrade -y
- 3 sudo apt-get install apache2 php5 php5-mysql mysql-server mysql-client
编辑MySQL配置,以设置主-主复制
1、在每个Linodes上编辑/etc/mysql/my.cnf文件。添加或修改以下值:
Server 1:
- /etc/mysql/my.cnf
- server_id = 1
- log_bin = /var/log/mysql/mysql-bin.log
- log_bin_index = /var/log/mysql/mysql-bin.log.index
- relay_log = /var/log/mysql/mysql-relay-bin
- relay_log_index = /var/log/mysql/mysql-relay-bin.index
- expire_logs_days = 10
- max_binlog_size = 100M
- log_slave_updates = 1
- auto-increment-increment = 2
- auto-increment-offset = 1
Server 2:
- /etc/mysql/my.cnf
- server_id = 2
- log_bin = /var/log/mysql/mysql-bin.log
- log_bin_index = /var/log/mysql/mysql-bin.log.index
- relay_log = /var/log/mysql/mysql-relay-bin
- relay_log_index = /var/log/mysql/mysql-relay-bin.index
- expire_logs_days = 10
- max_binlog_size = 100M
- log_slave_updates = 1
- auto-increment-increment = 2
- auto-increment-offset = 2
2、对于每个Linodes,编辑bind-address配置,以便使用私有IP地址:
/etc/mysql/my.cnf
bind-address = x.x.x.x
3、一旦完成,重新启动MySQL应用程序:
sudo service mysql restart
创建复制用户
1、在每个Linodes上都登录到MySQL:
mysql -u root -p
2、在每个Linode上配置复制用户。替换. x.x.x。带有强密码的反对的Linode和密码的私有IP地址
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
3、回到终端,运行下面的命令来测试配置。使用相反的Linode的私有IP地址:
mysql -ureplication -p -h x.x.x.x -P 3306
这个命令应该将您连接到远程服务器的MySQL实例。
配置数据库复制
1、在服务器1上登录到MySQL时,查询主状态:
SHOW MASTER STATUS;
注意显示的文件和位置值:
- mysql> SHOW MASTER STATUS;
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000001 | 277 | | |
- +------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
在服务器2上,在MySQL提示中,为该数据库设置了奴隶功能。替换. x.x.x。从第一个服务器获得私有IP。还可以用前面步骤中的值替换master_log_file和master_log_pos的值。
- SLAVE STOP;
- CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=277;
- SLAVE START;
3、在服务器2上,查询主状态。注意文件和位置值:
SHOW MASTER STATUS;
4、在服务器1上设置从属数据库状态,替换步骤2中与服务器2中交换的相同值:
- SLAVE STOP;
- CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=277;
- SLAVE START;
5、在两个Linodes上都退出MySQL:
exit
配置Apache
本节中的步骤将需要在您的Linodes上执行。
提示:
对于本指南的以下部分,请将“https://cnbudgetvm.com/”替换为您的域名。
1、通过输入以下命令禁用默认的Apache虚拟主机:
sudo a2dissite *default
2、导航到你的/var/www目录:
cd /var/www
3、创建一个文件夹来保存你的网站,输入以下命令:
sudo mkdir example.com
4、在你刚刚创建的文件夹中创建一组文件夹来存储你的网站的文件、日志和备份:
- sudo mkdir cnbudgetvm.com/public_html
- sudo mkdir cnbudgetvm.com/log
5、为网站创建虚拟主机文件:
- file excerpt:/etc/apache2/sites-available/cnbudgetvm.com.conf
- # domain: example.com
- # public: /var/www/example.com/public_html/
- <</span>VirtualHost *:80>
- # Admin email, Server Name (domain name), and any aliases
- ServerAdmin webmaster@example.com
- ServerName www.example.com
- ServerAlias example.com
- # Index file and Document Root (where the public files are located)
- DirectoryIndex index.html index.php
- DocumentRoot /var/www/example.com/public_html
- # Log file locations
- LogLevel warn
- ErrorLog /var/www/example.com/log/error.log
- CustomLog /var/www/example.com/log/access.log combined
- </</span>VirtualHost>
注意:文件名必须与.conf 结束在Apache 2.4及以后版本,Ubuntu 14.04用途。.conf 扩展与早期版本向后兼容。
6、通过输入以下命令启用新网站:
sudo a2ensite example.com.conf
重新启动Apache
sudo service apache2 restart
安装WordPress
1、在Linode的初选中,下载并安装最新版本的WordPress。替换为您的配置正确路径列出的任何路径:
- cd /var/www
- wget https://wordpress.org/latest.tar.gz
- tar -xvf latest.tar.gz
- cp -R wordpress/* /var/www.Vevb.com/public_html
2、为新的WordPress安装配置MySQL数据库。你需要用你自己的设置来替换wordpressuser和password。
- mysql -u root -p
- CREATE DATABASE wordpress;
- GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
- FLUSH PRIVILEGES;
- EXIT
3、在文档根目录上设置权限,使WordPress能够完成它的配置步骤:
chmod 777 /var/www/example.com/public_html/
4、使用你的网络浏览器连接到你的Linode的IP地址,并通过配置步骤来完全安装WordPress。
注意:为了确保每个WordPress实例都能处理本地数据库,您需要确保该步骤中的数据库主机值被设置为localhost。这应该在默认情况下填充。
5、通过WordPress管理界面中的一般设置配置您的WordPress URL和站点地址。确保您的域在两个字段中都配置了。
注意:在完成您的WordPress安装步骤并第一次登录之后,您应该重新设置您的文档根目录的权限,以确保额外的安全性。您可以使用以下命令:
chmod 755 /var/www/example.com/public_html/
6、完成WordPress安装步骤后,将配置复制到您的第二个Linode。替换. x.x.x。第二个Linode的IP地址:
rsync -r /var/www/* x.x.x.x:/var/www/.
7、登录到第二个Linode并重新启动Apache:
sudo service apache2 restart
使用Lsyncd配置文件夹同步
1、在集群的主要Linode上安装Lsyncd。
sudo apt-get install lsyncd
2、创建一个配置文件,以便执行同步操作。替换. x.x.x。在您的集群中使用第二个Linode的私有IP地址。
file excerpt:/etc/lsyncd/lsyncd.conf.lua
- settings = {
- logfile = "/var/log/lsyncd.log",
- statusFile = "/var/log/lsyncd-status.log"
- }
- sync{
- default.rsyncssh,
- delete = false,
- insist
- source="/var/www",
- host="x.x.x.x",
- targetdir="/var/www",
- rsync = {
- archive = true,
- perms = true,
- owner = true,
- _extra = {"-a"},
- },
- delay = 5,
- maxProcesses = 4,
- ssh = {
- //Vevb.com
- port = 22
- }
- }
3、开始Lsyncd守护进程:
service lsyncd start
4、Lsyncd成功地开始了测试:
service lsyncd status
如果这个命令返回之外的东西lsyncd is running,仔细检查你的lsyncd.conf.lua 文件,并确保RSA公钥是次要服务器上正确的位置。
5、测试复制通过创建一个文件在您的主要Linode /var/www文件夹。您应该能够在几秒内在第二个Linode上看到相同的文件。
配置您的Nodebalancer
1、访问Linode管理器中的nodebalalt选项卡。
2、如果您还没有这样做,请添加一个nodebal法师,确保它与您的后端Linodes相同的数据中心。
3、选择您的新nodebal法师并单击“创建配置”。编辑您的配置设置如下:
- Port: 80
- Protocol: HTTP
- Algorithm: Least Connections
- Session Stickiness: Table
- Health Check Type: HTTP Valid Status
4、一旦您点击“Save Changes”按钮,就会提示您添加您的节点。为每个节点提供一个惟一的标签,并在每个节点的地址字段中输入私有网络地址和端口。
5、当您添加了两个节点时,请确保健康检查将它们标记为向上。一旦两个节点都显示出来,返回到nodebal法师的主页并注意所列出的IP地址。你现在应该能够导航到那个IP地址并查看你的网页了。
为了测试高可用性功能,可以在一个节点上停止apache2/mysql服务,或者一次一次地关闭一个节点。即使在其中一个节点被标记为向下时,该网站仍应继续提供服务。
祝贺您,您已经配置了您的高可用性可靠性WordPress站点!
新闻热点
疑难解答
图片精选