高可用keepalived结合haproxy代理WordPress(动静分离)

高可用keepalived结合haproxy代理WordPress(动静分离)

(1)A  B两台服务器做keepalived高可用,同时作为haproxy动静分离后端代理。

        (keepalived时主备模型,haproxy轮询调度)

(2)C 服务器搭建apache作为动态资源服务器

(3)D 服务器搭建nginx作为静态资源服务器

(4)VIP:172.18.0.42


A主机配置:

先搭建主备模型

[root@centos7 ~]#cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group4 224.0.102.78
}

vrrp_instance myr1 {
    state MASTER
    interface eth0
    virtual_router_id 78
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass J21LEswe
    }
    virtual_ipaddress {
    172.18.0.42/16 dev eth0
    }
}
 virtual_server 172.18.0.42 80 {
      delay_loop 3
      lb_algo rr
      lb_kind DR
      protocol TCP
  
      real_server 172.18.0.9 80 {
          weight 1
          HTTP_GET {
              url {
                path /
                status_code 200
             }
  
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
  
   real_server 172.18.0.11 80 {
          weight 1
          HTTP_GET {
              url {
                path /
                status_code 200
              }
  
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }


配置VIP


[root@centos7 ~]#cat setpara.sh 
#!/bin/bash
#
vip=’172.18.0.42′
netmask=’255.255.255.255′
iface=’lo:0′
case $1 in 
start)
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/${ifcase}/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 2 > /proc/sys/net/ipv4/conf/${ifcase}/arp_announce
        ifconfig $iface $vip netmask $netmask broadcast $vip up
        route add -host $vip dev $iface
        ;;
stop)

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf${iface}/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/${iface}/arp_announce
        ;;
*)
        echo “usage: $(basename $0) start|stop”
        exit 1
        ;;
esac

编辑haproxy,实现动静分离

[root@centos7 haproxy]#cat /etc/haproxy/haproxy.cfg

#———————————————————————
# main frontend which proxys to the backends
#———————————————————————
frontend  eshop *:80
  # acl invalid_src src 172.18.253.194
  # block if invalid_src
  # errorfile 403 /etc/haproxy/errorfiles/403.html
  # errorloc 403 http://www.baidu.com
  # acl curl_agent hdr_sub(User-Agent) -i curl
  # use_backend curlbe if curl_agent
    acl phpapp path_end -i .php
    use_backend dynssrvs if phpapp
    maxconn 4000
    rspadd X-Via:\ HAProxy
    rspidel Server.*
    default_backend             websrvs
    compression type text/html
    compression algo gzip
backend dynssrvs
        balance source
        server dynsrv1 172.18.251.129:80 check

listen stats :9527
    stats enable
    stats uri /haadmin?admin
    stats realm “Statistics Admin”
    stats auth dan:138184
    stats admin if TRUE
    

#———————————————————————
# static backend for serving up images, stylesheets and such
#———————————————————————
    
    backend websrvs
        balance leastconn
        server websrv1 172.18.0.10:80 check

启动haproxy服务

systemctl start haproxy


  B 主机配置:

搭建主备模型

[root@centos7 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node2
   vrrp_mcast_group4 224.0.102.78
}

vrrp_instance myr1 {
    state BACKUP
    interface ens36
    virtual_router_id 78
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass J21LEswe
    }
    virtual_ipaddress {
        172.18.0.42/16 dev ens36
    }
}   
 

virtual_server 172.18.0.42 80 {
    delay_loop 3
    lb_algo rr 
    lb_kind DR
    protocol TCP
    

    real_server 172.18.0.9 80 {
        weight 1
        HTTP_GET {
            url { 
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
   } 
    real_server 172.18.0.11 80 {
        weight 1
        HTTP_GET {
            url { 
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}


其余的haproxy和vip配置同A主机一样。

D主机配置:(centos6主机)

 316  yum install mysql-server
 317  service mysqld start

 318  mysql

 grant all on wpdb.* to wpuser@’172.18.%’ identified by ‘138184’;

 339  mkdir /data/www

 341  cd /data/www

 322  wget ftp://172.18.0.1/pub/Sources/sources/httpd/wordpress-4.3.1-zh_CN.zip

 324  unzip wordpress-4.3.1-zh_CN.zip 

 321 chown -R apached.apached /data/www/wordpress

 330  vim /etc/exports

/data/www/      172.18.0.11(rw)
/data/www/      172.18.0.12(rw) 

 331  yum install nfs-utils
 332  yum install rpcbind
 333  service nfs start
 334  showmount -e 172.18.0.13
/data/www 172.18.0.11,172.18.0.12


C主机配置:

240  yum -y install nfs-utils httpd php php-mysql  mysql-server

266  mount -t nfs 172.18.12.12;/data/www/ /var/www/html/

295  service mysqld start

D主机配置:(centos7主机)

[root@centos7 ~]# yum install -y nginx php-fpm php-mysql nfs-utils
[root@centos7 conf.d]# nginx

[root@centos7 conf.d]# systemctl start php-fpm

最后通过浏览器访问VIP:172.18.0.42:80 ,那么将由D服务器响应静态资源。通过VIP:172.18.0.42:80/index.php

将由C服务器提供动态资源。


当主节点A坏掉时,那么备节点B将代替A继续工作,实现高可用。



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

(0)
m22shanyongguom22shanyongguo
上一篇 2017-05-20 11:44
下一篇 2017-05-20 14:40

相关推荐

  • 测试so接口函数的脚本 [python]

    下面是一个测试solib库中调用函数的测试脚本,但该脚本还存在这一些问题,我目前无法理解和解决; 问题: 1.我定义了logging采用日志滚动的方式,写日志,并且每个日志的大小是20M,但测试结果发现日志连1M都没到就开始轮转了,并且在轮转过程中,还出现logging写日志,却发现,日志轮转了,结果竟然报了,轮转日志不存在。 Traceback (most…

    Linux干货 2016-01-05
  • python-多进程

    进程是由系统自己管理的。 1:最基本的写法 from multiprocessing import Pool def f(x):     return x*x if __name__ == '__main__': &nb…

    Linux干货 2016-11-05
  • 简单描述LVS工作原理-第1部分

    一、NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。 优点:集群中的物理服务器可以使…

    Linux干货 2016-08-15
  • 文件权限特殊管理之ACL

    ACL:access control list 权限访问列表 应用范围:所属主和所属组和其他用户之外的他叔用户 ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等都支持ACL功能 centos7 中:安装系统分区和装完系统之后自己手动添加的分区自动支持a…

    Linux干货 2016-08-05
  • 马哥教育网络班第21期+第六周课程作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的1、以至少一个空白字符开头的行的行首加#; :%s@^[[:space:]]\+@#@   2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s@^[[:space…

    Linux干货 2016-08-22
  • M20 – 1- 第三天:终端和基本命令

      今天学了一些初步的命令,能实现一些基础功能。 chvt : change vitrual terminal 切换虚拟终端 使用方法 : chvt # <- 加终端号 注意:图形界面不能随意切换其他的终端,只有在字符行节目才能进行切换。 lsb_release:查看系统信息 使用方法:lsb_release -a tty:查看终端类型 使用…

    Linux干货 2016-07-29