Nginx+NFS+LAMP主从架构

业务需求

1、nginx服务器负责调度2台(2台服务器均布署discuz和wordpress服务)web服务器

2、NFS服务器存放2台web服务器的网页文件

3、mysql服务器存放2台web服务器网站数据文件

4、它们的域名分别是:d.zjzd.cn(discuz)和w.zjzd.cn(wordpress)

1、IP地址规划

172.16.30.1  Nginx

172.16.30.2  NFS

172.16.30.3  LAMP(Mysql Master)

172.16.30.4  LAMP(Mysql Slave)

172.16.30.5  Windows

2、mysql主从配置

172.16.30.3  LAMP(Mysql Master)

#/etc/init.d/iptables stop
#setenforce 0
#vim /etc/my.cnf
[mysqld]
server-id = 1
log-bin=mysql-bin
#/etc/init.d/mysqld restart
#mysql
mysql> grant replication slave on *.* to ‘tongbu‘@‘%‘ identified by ‘sa123456‘;
Query OK, 0 rows affected (0.02 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      252 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

172.16.30.4  LAMP(Mysql Slave)

#/etc/init.d/iptables stop
#setenforce 0
#vim /etc/my.cnf
[mysqld]
server-id = 2
#/etc/init.d/mysqld restart
#mysql
mysql> change master to master_host=‘172.16.30.3‘,master_user=‘tongbu‘,master_password=‘sa123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=252;
Query OK, 0 rows affected (0.07 sec)
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.16.30.3
                  Master_User: tongbu
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 252
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 252
              Relay_Log_Space: 407
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)

注:IO和SQL进程同为YES则代表主从配置成功

3、搭建NFS服务

172.16.30.2  NFS

(1)创建挂载和共享目录

#/etc/init.d/iptables stop
#setenforce 0
#fdisk /dev/sda
n p 回车 +200G p w    #因为我的主分区已经使用了三个,所以这里默认新建的主分区是第四个分区(建议将第四个分区分为扩展分区,而不是主分区,输入e即可)
#mkfs.ext4 /dev/sda4
#mkdir /data
#blkid /dev/sda4
/dev/sda4: UUID="520d6185-1545-4ee2-87c4-84c535a4a534" TYPE="ext4"
#vim /etc/fstab
UUID=520d6185-1545-4ee2-87c4-84c535a4a534 /data ext4    defaults        0 0
#mount -a
#df -Th
/dev/sda4      ext4   197G  188M  187G   1% /data
#mkdir /data/www
#mkdir /data/www/{discuz,wordpress}

(2)下载并解压discuz

#wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
#cd /data/www
#unzip /root/Discuz_X3.2_SC_UTF8.zip -d discuz/
#cd discuz
#mv upload/* .
#ll

(3)下载并解压wordpress

#wget https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz
#tar xf wordpress-4.5.3-zh_CN.tar.gz -C /data/www/wordpress/
#cd /data/www/wordpress/wordpress
#mv * ../
#cd ..
#rm -fr wordpress

(4)配置nfs服务

#vim /etc/exports
/data/www/discuz     *(rw,sync)
/data/www/wordpress  *(rw,sync)
#/etc/init.d/nfs restart

4、在两台LAMP服务器上分别挂载Discuz和Wordpress目录

(1)172.16.30.3 Mysql Master
#yum install nfs-utils
#cd /var/www/html/
#mount -t nfs 172.16.30.2:/data/www/ .
或者
#mount -t nfs 172.16.30.2:/data/www/discuz .
#mount -t nfs 172.16.30.2:/data/www/wordpress .

注:挂载过后需要退出当前目录,然后再次进入挂载目录才会看到挂载后的内容

(2)172.16.30.4 Mysql Slave

#yum install nfs-utils
#cd /var/www/html/
#mount -t nfs 172.16.30.2:/data/www/ .
或者
#mount -t nfs 172.16.30.2:/data/www/discuz .
#mount -t nfs 172.16.30.2:/data/www/wordpress .

5、在两台LAMP服务器上配置相同虚拟主机并进行向导安装

(1)、配置虚拟主机

#cd /etc/httpd/conf
#vim vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/discuz"
    ServerName  d.zjzd.cn
  <Directory "/var/www/html/discuz">
    AllowOverride All
    Options -Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>
    ErrorLog  logs/error_log
    CustomLog logs/access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/wordpress"
    ServerName w.zjzd.cn 
  <Directory "/var/www/html/wordpress">
    AllowOverride All
    Options -Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>
    ErrorLog  logs/error_log
    CustomLog logs/access_log common
</VirtualHost>
#vim httpd.conf
Include conf/vhosts.conf
#/etc/init.d/httpd restart

(2)、配置主机解析

首先找到C:\Windows\System32\drivers\etc\hosts文件,然后右击选择"Edit with notepad++"添加以下内容,最后通过浏览器访问进行测试

172.16.30.3 d.zjzd.cn

172.16.30.3 w.zjzd.cn

172.16.30.4 d.zjzd.cn

172.16.30.4 w.zjzd.cn

(3)、创建数据库及授权用户

172.16.30.3 Mysql Master

#mysql
mysql> create database discuz;
Query OK, 1 row affected (0.01 sec)
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on discuz.* to [email protected]‘172.16.30.%‘ identified by ‘discuz‘;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on wordpress.* to [email protected]‘172.16.30.%‘ identified by ‘wordpress‘;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye

(4)、配置数据库服务器为域名地址

172.16.30.3 Mysql Master

#vim /etc/hosts
172.16.30.3 mysql.zjzd.cn    #注意:在LAP环境下,解析是配置在web服务器上的,并非是数据库服务器,这里LAP+Mysql是同一台服务器,所以才这样配置

172.16.30.4 Mysql Slave

#vim /etc/hosts
172.16.30.3 mysql.zjzd.cn

(5)网页向导安装Discuz服务(略)

步骤:检查安装环境-->设置运行环境-->创建数据库-->安装

172.16.30.5 Windows

#http://d.zjzd.cn  //当检查安装环境的时候,个别目录会提示不存在或不可写的状态,只需要执行以下操作即可

172.16.30.2 NFS

#cd /data/www/discuz
#chmod -R 777 data/ uc_* config/

(6)网页向导安装Wordpress服务(略)

安装进行时若有警告提示,按以下操作即可

172.16.30.2 NFS

#vim /data/www/wordpress/wp-config.php  #根据提示复制框中的内容

6、配置nginx负载均衡

(1)nginx的安装

#/etc/init.d/iptables stop
#setenforce 0
#useradd www
#yum install pcre pcre-devel openssl openssl-devel
#wget http://nginx.org/download/nginx-1.10.2.tar.gz
#tar -xf nginx-1.10.2.tar.gz
#cd nginx-1.10.2.tar.gz
#./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-pcre
#make && make install
#/usr/local/nginx/sbin/nginx -t
#/usr/local/nginx/sbin/nginx 
#netstat -tunlp | grep 80

(2)配置nginx负载均衡虚拟主机

#cd /usr/local/nginx/conf
#mkdir domains
#cd domains
#vim d.zjzd.cn
upstream discuz_web {
         server 172.16.30.3:80 weight=1 max_fails=2 fail_timeout=30s;
         server 172.16.30.4:80 weight=1 max_fails=2 fail_timeout=30s;
}
server
  {
    listen       80;
    server_name d.zjzd.cn;  #注:这里的域名可以和apache中虚拟主机的域名不一致
    location /
    {
         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         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_pass http://discuz_web;
    }
}
#vim w.zjzd.cn
upstream wordpress_web {
         server 172.16.30.3:80 weight=1 max_fails=2 fail_timeout=30s;
         server 172.16.30.4:80 weight=1 max_fails=2 fail_timeout=30s;
}
server
  {
    listen       80;
    server_name w.zjzd.cn;
    location /
    {
         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         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_pass http://wordpress_web;
    }
}
#/usr/local/nginx/sbin/nginx -s reload

(3)、配置nginx.conf文件

#vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    include domains/*;      #主要是添加这一行内容,导入vhosts文件
}

(4)、配置主机解析

172.16.30.3 windows

首先找到C:\Windows\System32\drivers\etc\hosts文件,然后右击选择"Edit with notepad++"添加以下内容,最后通过浏览器访问进行测试

172.16.30.1 d.zjzd.cn w.zjzd.cn  //这里请求的是nginx服务器的内容

(5)、测试

通过停止所有后端服务器,然后访问网站,最后查询nginx错误日志即可

172.16.30.3  LAMP(Mysql Master)

#/etc/init.d/httpd stop

172.16.30.4  LAMP(Mysql Slave)

#/etc/init.d/httpd stop

172.16.30.5 windows

http://d.zjzd.cn

http://w.zjzd.cn

172.16.30.1 nginx

#tail /usr/local/nginx/logs/error.log
2016/11/23 17:11:47 [error] 71293#0: *339 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /forum.php HTTP/1.1", upstream: "http://172.16.30.3:80/forum.php", host: "d.zjzd.cn"
2016/11/23 17:11:47 [error] 71293#0: *339 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /forum.php HTTP/1.1", upstream: "http://172.16.30.4:80/forum.php", host: "d.zjzd.cn"
2016/11/23 17:11:47 [error] 71293#0: *339 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /favicon.ico HTTP/1.1", upstream: "http://172.16.30.4:80/favicon.ico", host: "d.zjzd.cn", referrer: "http://d.zjzd.cn/forum.php"
2016/11/23 17:11:47 [error] 71293#0: *339 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /favicon.ico HTTP/1.1", upstream: "http://172.16.30.3:80/favicon.ico", host: "d.zjzd.cn", referrer: "http://d.zjzd.cn/forum.php"
2016/11/23 17:11:50 [error] 71293#0: *349 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: w.zjzd.cn, request: "GET / HTTP/1.1", upstream: "http://172.16.30.3:80/", host: "w.zjzd.cn"
2016/11/23 17:11:50 [error] 71293#0: *349 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: w.zjzd.cn, request: "GET / HTTP/1.1", upstream: "http://172.16.30.4:80/", host: "w.zjzd.cn"
2016/11/23 17:13:51 [error] 71293#0: *355 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /forum.php HTTP/1.1", upstream: "http://172.16.30.3:80/forum.php", host: "d.zjzd.cn"
2016/11/23 17:13:51 [error] 71293#0: *355 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /forum.php HTTP/1.1", upstream: "http://172.16.30.4:80/forum.php", host: "d.zjzd.cn"
2016/11/23 17:13:51 [error] 71293#0: *355 no live upstreams while connecting to upstream, client: 172.16.0.25, server: d.zjzd.cn, request: "GET /favicon.ico HTTP/1.1", upstream: "http://discuz_web/favicon.ico", host: "d.zjzd.cn", referrer: "http://d.zjzd.cn/forum.php"
时间: 2024-11-05 02:30:50

Nginx+NFS+LAMP主从架构的相关文章

keepalived容灾方案,实现nginx负载均衡主从架构

环境准备: 2台nginx服务器,2台负载均衡nginx服务器 一: 第一步首先准备好环境,2台可以使用yum源直接安装nginx,用来显示测试页面,测试显示页面内容为本地服务器的ip地址,如下图所示: 原文地址:https://www.cnblogs.com/bobo-wq/p/11509410.html

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

drbd+heartbeat+nfs高可用架构搭建

一.客户需求 1.需求描述 有些客户有自己的存储设备,但是并没有集群文件系统服务,所以如果我们多个节点(计算节点)如果想同时使用其中的一个块且要保证高可用的话,就需要我们自己来完成类似集群文件系统的服务组合,在此我们使用的服务组合是:iscsi共享+drbd+heartbeat+nfs. 2.服务说明 Iscsi共享:这里通过iscsi共享服务将存储设备上的存储块共享出去,提供节点(NC1+NC2)使用,此处我们将在iscsi服务短创建两个镜像充当块设备. Drbd   :服务器之间镜像块设备内

基于NDS+NFS+LAMP搭建discuz论坛

本节我们来看看如何基于一个DNS+NFS+LAMP平台来搭建一个discuz论坛.由于DNS以及LAMP前面几节中的我们以及讲过,所以这边我们就简单以相关配置为主,至于编译安装请参看前面几节的内容.好了,话不多说,下面我们就开始吧. 实验环境拓扑:两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡. 这边解释一下: DNS服务器以及2个Apache服务器我都放在同一台机器上以虚拟主机的形式实现. 如下图: DNS服务器的配置 直接安装: [[email prot

redis应用之主从架构配置

一.redis 主从复制安装配置 1.主从复制介绍 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制非常简单,但是redis的主从复制是异步的. 2.redis主从复制特点 同一个Master可以拥有多个Slaves. Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式: Maste

DNS服务解析,如何用bind构建主从架构的DNS服务器。

DNS(Domain Name System,域名系统) 在互联网上实现FQDN与IP地址的解析,这样避免了人们在访问站点时,记忆长串难懂的ip地址,只需要记忆人们容易理解的域名就行了. FQDN (Fully Qualified Domain Name,完全合格域名) FQDN------------------IP Address 正向解析 IP Address------------FQND 反向解析 简述工作原理: 我们大家都知道,全球一共有13台根节点服务器,当我们的DNS服务器收到一

redis集群之主从架构

https://redis.io/topics/replication1. redis主从架构概述(1)一个master可以配置多个slave(2)slave与master之间使用异步复制进行数据同步.(3)redis主从数据同步是非阻塞的. 2. 配置主从master配置: repl-diskless-sync yes # 无磁盘复制,子进程直接叫RDB文件发送给slave repl-diskless-sync-delay 5 # 无盘复制延迟,默认为5s min-slaves-to-writ

mysql-poxy 实现mysql主从架构读写分离

在高并发系统设计中,后端数据库的性能往往会成为系统的瓶颈,这时候就需要进行合理的设计,以分摊后端数据库的压力,比如在数据层前面构建缓存层.数据文件存放在RAID这样的设备.对数据进行分库分表分区存放.合理利用索引.进行数据的读写分离等.mysql-proxy提供了mysql数据库的读写分离能力,mysql-proxy通过Lua脚本能分析得出用户的sql请求,如果发现在是read请求,则会转化到master-slave模型的slave中,如果是write请求,则会转发到master中,以达到读写分

MySQL主从架构之Master-Slave主从同步

MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 MySQL主从架构:优点:故障时候可以切库:读写分离:从库执行其他业务例如备份. 1:Master-Slave    主从同步 2:Master-Slave-Slave……级联 3:Master-Master   互为主备 [主从同步]Master-Slave 注:需要主库打开log-bin ;设置server-id #mysqldump -uroot -p --all-data