基于haproxy实现wordpress动静分离

基于haproxy实现wordpress动静分离

环境:centos 6.8

注:此处省略对于各服务器的IP配置。

一:图示讲解

     用户访问vip,通过haproxy代理得到服务器的资源。此架构下基于keepalived对haproxy做负载均衡(此种两种软件装在同一台服务器),基于haproxy对Nginx和apache做负载均衡,Nginx和Apache使用共享存储NFS和mysql。

二:配置讲解

第一步:配置mysql和nfs

# 配置Mysql服务
[root@mysql-nfs ~]$ yum -y install mariadb-server
[root@mysql-nfs ~]$ systemctl start mariadb
[root@mysql-nfs ~]$ mysql
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.%.%' IDENTIFIED BY 'wppass';
MariaDB [(none)]> 
 
# 配置NFS服务
[root@mysql-nfs ~]$ useradd -r -u 88 apache
[root@mysql-nfs ~]$ mkdir -p -v /data/www
[root@mysql-nfs ~]$ chown apache.apache /data/www
[root@mysql-nfs ~]$ yum -y install nfs-utils
[root@mysql-nfs ~]$ cat > /etc/exports.d/web_data.exports << EOF
/data/www/ 192.168.37.0/16(rw,all_squash,anonuid=88,anongid=88)
EOF
[root@mysql-nfs ~]$ systemctl start rpcbind
[root@mysql-nfs ~]$ systemctl start rpcidmapd
[root@mysql-nfs ~]$ systemctl start nfs
 
# 测试NFS服务
[root@mysql-nfs ~]$ showmount  -e 127.0.0.1
Export list for 127.0.0.1:
/data/www 192.168.37.0/16
 

第二步:配置Nginx和apache

# 配置apache1服务器
[root@lap1 ~]$ useradd -r -u 88 apache
[root@lap1 ~]$ yum -y install nfs-utils httpd php php-mysql
[root@lap1 ~]$ mount -t nfs 192.168.37.144:/data/www /var/www/html/
[root@lap1 ~]$  wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.zip
[root@lap1 ~]$unzip  wordpress-4.7.4-zh_CN.zip
[root@lap1 ~]$cp wordpress/   /var/www/html
[root@lap1 ~]$ service httpd restart
[root@lap2 ~]$ ls /var/www/html/
wordpress
 
# 配置apache2服务器
[root@lap1 ~]$ useradd -r -u 88 apache
[root@lap1 ~]$ yum -y install nfs-utils httpd php php-mysql
[root@lap1 ~]$ mount -t nfs 192.168.37.144:/data/www /var/www/html/
[root@lap1 ~]$ service httpd restart
[root@lap1 ~]$  ls /var/www/html/
wordpress
# 配置Nginx1服务器
[root@nginx1 ~]$ yum -y install nfs-utils nginx
[root@nginx1 ~]$ mount -t nfs 192.168.37.144:/data/www /usr/share/nginx/html/
[root@nginx1 ~]$ service httpd restart
[root@nginx1 ~]$ ls /usr/share/nginx/html/
wordpress
 
# 配置Nginx2服务器
[root@nginx1 ~]$ yum -y install nfs-utils nginx
[root@nginx1 ~]$ mount -t nfs 192.168.37.144:/data/www /usr/share/nginx/html/
[root@nginx1 ~]$ service httpd restart
[root@nginx1 ~]$ ls /usr/share/nginx/html/
wordpress

第三步:配置Keepalived和Haproxy

# 配置HAproxy1服务器

## 安装相关程序包
[root@haproxy1 ~]$ yum -y  install haproxy keepalived psmisc
## 为haproxy提供配置文件
[root@haproxy1 ~]$ cp /etc/haproxy/haproxy.cfg{,.bak}
[root@haproxy1 ~]$ cat > /etc/haproxy/haproxy.cfg << EOF 
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  Test *:80
    stats enable
    stats uri /stats
    acl url_static  path_end       -i .jpg .gif .png .css .js .svg
    rspidel Server.*
    rspadd  Server:\ CNC 
    use_backend     web          if url_static
    default_backend php

backend php
    balance     roundrobin
    server      ap1 192.168.37.138:80 check 
    server      ap1 192.168.37.129:80 check 

backend web
    balance     roundrobin
    server      nginx1 192.168.37.135:80 check
    server      nginx2 192.168.37.134:80 check
EOF

## 为keepalived提供配置文件
[root@haproxy1 ~]$ cp /etc/keepalived/keepalived.conf{,.bak}
[root@haproxy1 ~]$ cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
   router_id haproxy1
   vrrp_mcast_group4 224.0.128.100
}

vrrp_script check_haproxy {
    script "killall -0 haproxy && exit 0 || exit 1"
    interval 1
    weigth -5 
}

vrrp_script check_down {
    script "[ -f /etc/keepalived/down ] && exit 1 || exit 0"
    interval 1
    weigth -5
}

vrrp_instance Haproxy_VIP {
    state MASTER
    interface eth1
    virtual_router_id 66
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass  11111
    }
    virtual_ipaddress {
        172.18.32.232/16 dev eth1 label eth1:1
    }
    track_script {
        check_haproxy
        check_down   
    }
}
EOF

## 启动haproxy、keepalived服务
[root@haproxy1 ~]$ systemctl start haproxy
[root@haproxy1 ~]$ systemctl start keepalived
# 配置HAproxy2服务器

## 安装相关程序包
[root@haproxy1 ~]$ yum -y  install haproxy keepalived psmisc
## 为haproxy提供配置文件
[root@haproxy1 ~]$ cp /etc/haproxy/haproxy.cfg{,.bak}
[root@haproxy1 ~]$ cat > /etc/haproxy/haproxy.cfg << EOF 
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  Test *:80
    stats enable
    stats uri /stats
    acl url_static  path_end       -i .jpg .gif .png .css .js .svg
    rspidel Server.*
    rspadd  Server:\ CNC 
    use_backend     web          if url_static
    default_backend php

backend php
    balance     roundrobin
    server      ap1 192.168.37.138:80 check 
    server      ap1 192.168.37.129:80 check 

backend web
    balance     roundrobin
    server      nginx1 192.168.37.135:80 check
    server      nginx2 192.168.37.134:80 check
EOF

## 为keepalived提供配置文件
[root@haproxy1 ~]$ cp /etc/keepalived/keepalived.conf{,.bak}
[root@haproxy1 ~]$ cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
   router_id haproxy1
   vrrp_mcast_group4 224.0.128.100
}

vrrp_script check_haproxy {
    script "killall -0 haproxy && exit 0 || exit 1"
    interval 1
    weigth -5 
}

vrrp_script check_down {
    script "[ -f /etc/keepalived/down ] && exit 1 || exit 0"
    interval 1
    weigth -5
}

vrrp_instance Haproxy_VIP {
    state BACKUP
    interface eth1
    virtual_router_id 66
    priority 95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass  11111
    }
    virtual_ipaddress {
        172.18.32.232/16 dev eth1 label eth1:1
    }
    track_script {
        check_haproxy
        check_down   
    }
}
EOF

## 启动haproxy、keepalived服务
[root@haproxy1 ~]$ systemctl start haproxy
[root@haproxy1 ~]$ systemctl start keepalived

三.测试访问

     在浏览器访问http://172.18.32.232/wordpress 正常

四.此实验需要注意的地方

    1. 配置wordpress时,数据库地址要填mysql服务器地址192.168.37.139

    2. 配置wordpress时,要在nfs服务器上切换到apache用户创建在/data/www/目录下创建wp-config.php文件。


ps: 如果大家在实验过程中有任何问题,欢迎随时联系我。VX:504498722



原创文章,作者:cnc,如若转载,请注明出处:http://www.178linux.com/76160

(0)
cnccnc
上一篇 2017-05-18
下一篇 2017-05-18

相关推荐

  • Linux系统用户、组

    1、资源分派:          Authentication  认证        Authorization   授权     &nbs…

    Linux干货 2016-08-04
  • 高级文件管理系统

    1、 设定文件系统配额 在内核中执行: • 以文件系统即分区为单位启用 • 对不同组或者用户的策略不同 根据块或者节点进行限制: • 执行软限制(soft limit),限时限制 • 硬限制(hard limit) 初始化: • 分区挂载选项,针对用户或组:usrquota 、grpquota • 初始化数据库,也即是创建用户或组文件系统配额数据库:quot…

    Linux干货 2016-09-01
  • vim文本编辑器和sed用法汇总

    1. Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进 和增加了很多特性。 VIM是纯粹的自由软件。 2. vim的三种工作模式: (1) 编辑模式:也叫命令模式,可以执行个各种快捷键的命令 (2) 插入模式:在文本文件中可以直接输入内容。 (3) 末行模式:红帽官方叫扩展命令行模式vim内置命令行接口  注:vi…

    Linux干货 2016-08-12
  • Memcached实现Tomcat的session会话绑定

    memcached介绍:  Memcached是一个高性能的分布式内存对称缓存系统;通过缓存查询数据库结果,介绍数据库访问次数,以提高web应用的速度、提高扩展性。  Memcached特点:   协议简单   基于libevent的事件处理   内置内存存储方式  memcached不互相通信的分…

    Linux干货 2015-08-01
  • 程序包管理:rpm , yum ,与编译

    1.RPM,Redhat Package Manager。是Redhat和CentOS等Linux系统上常见的软件安装工具。 软件安装: 常见选项 -i                #install…

    Linux干货 2016-03-26
  • linux 权限相关知识

    linux day 6     用户、组和权限 1.Linux用户:Username/UID         管理员:root, 0         普通用户:1-65535             …

    Linux干货 2016-08-08