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

相关推荐

  • linux 删除内核文件,未能启动,修复方法 CDROM与网络法

    当缺少 /boot 内核文件 vmlinuz-2…. initramfs-2… 此时只能借助 光盘 CDROM 来引导生成    进入  RESCUE 模式 1    chroot       &…

    Linux干货 2016-09-13
  • 文本编辑秘籍之vim宝典

    一、初识Vim Vim是从 vi 发展出来的一个文本编辑器。其功能非常强大,熟练掌握vim的常用操作和快捷操作能让我们从繁杂的文本处理任务中杀出血路,在运维的道路上愉快前行。 vim使用简单命令组合来完成复杂操作,同时也支持基本正则表达式。 二、拨开vim迷雾: 2.1 使用vim打开一个文件: 如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑…

    Linux干货 2016-08-10
  • 磁盘及文件系统管理

    磁盘管理     MBR:master boot record 主引导记录。位于磁盘的0磁道0扇区共512字节,独立于操作系统之外的。512字节的划分               …

    Linux干货 2016-08-25
  • class15磁盘管理(二) 高级磁盘管理(一)

    挂载点和/etc/fstab 配置文件系统体系 被mount、fsck和其它程序使用 系统重启时保留文件系统体系 可以在设备栏使用文件系统卷标 使用mount -a命令挂载  /etc/fstab 中的所有文件系统 文件挂载配置文件 /etc/fstab每行定义一个要挂载的文件系统;   &nbsp…

    Linux干货 2016-09-05
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26