在CentOS上搭建LNMP(Linux, Nginx, MySQL/MariaDB, PHP)集群可以提高网站的可用性和性能。以下是一个基本的步骤指南,帮助你在CentOS上搭建一个简单的LNMP集群。
在两台服务器上安装Nginx。
sudo yum install epel-release
sudo yum install nginx
启动并启用Nginx服务:
sudo systemctl start nginx
sudo systemctl enable nginx
在两台服务器上安装MySQL或MariaDB。
sudo yum install mariadb-server mariadb
启动并启用MySQL/MariaDB服务:
sudo systemctl start mariadb
sudo systemctl enable mariadb
运行安全脚本:
sudo mysql_secure_installation
在主服务器上配置MySQL/MariaDB以允许远程连接。
编辑主服务器的MySQL配置文件 /etc/my.cnf
或 /etc/mysql/my.cnf
,添加以下内容:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name
重启MySQL服务:
sudo systemctl restart mariadb
创建一个用于复制的用户:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
获取主服务器的二进制日志位置:
SHOW MASTER STATUS;
记下 File
和 Position
的值。
在备份服务器上配置MySQL/MariaDB以连接到主服务器。
编辑备份服务器的MySQL配置文件 /etc/my.cnf
或 /etc/mysql/my.cnf
,添加以下内容:
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name
read_only = 1
重启MySQL服务:
sudo systemctl restart mariadb
在备份服务器上配置主从复制:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
START SLAVE;
在主服务器上安装并配置Nginx作为负载均衡器。
安装Nginx:
sudo yum install nginx
启动并启用Nginx服务:
sudo systemctl start nginx
sudo systemctl enable nginx
编辑Nginx配置文件 /etc/nginx/nginx.conf
,添加负载均衡配置:
http {
upstream backend {
server master_ip;
server backup_ip;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
重启Nginx服务:
sudo systemctl restart nginx
访问你的网站,确保请求被正确地分发到主服务器和备份服务器。
通过以上步骤,你可以在CentOS上搭建一个基本的LNMP集群。根据实际需求,你可能需要进一步优化和扩展配置,例如使用Keepalived实现高可用性,或者使用更复杂的负载均衡策略。