基于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)
上一篇 2017-05-18 13:24
下一篇 2017-05-18 14:00

相关推荐

  • 初识Linux-即使是997也不能停止学习

    1.计算机的组成及其功能:    从1946年第一台通用计算机ENIAC诞生至今,几乎所有的计算机系统都是建立在冯诺依曼体系结构上的。那么何为冯诺依曼体系结构? 冯诺依曼体系结构:        控制器:是整个计算机的中枢,负责计算机的整体调度工作,将指令从存储器中取出,并对指令进行解释执行。 &n…

    Linux干货 2016-10-29
  • ArchSummit 2017全球架构师峰会100余位国内外技术专家北京等你!

    ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。

    2017-11-13
  • N25_第三周作业_leon

    N25_第三周作业_leon 1.       列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who 全部 jj       tty1  …

    Linux干货 2017-01-06
  • Linux磁盘管理命令

    Linux有着管理各种存储设备的强大能力。Linux把所有磁盘都当作文件管理,从而简化我们对其进行的读写等操作。 IDE接口的硬盘在Linux中命名为:/dev/hd{a|b|c……},比如/dev/hda; 其他硬盘比如SATA接口的硬盘命名为:/dev/sd{a|b|c……},比如/dev/sda。 注:{…

    Linux干货 2015-12-06
  • 第七周作业

    查看作业内容请移步此链接:http://www.cnblogs.com/wangenzhi/p/6403568.html

    Linux干货 2017-02-15
  • 8.5作业

    找出ifconfig命令结果中本机的所有ipv4地址 [root@English6 wang]# ifconfig |grep -o "[1-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" 192.168.1.113 192.168…

    Linux干货 2016-08-09