高可用keepalived+haproxy实现动静分离

高可用keepalived+haproxy:
实验环境:
clientIP为:172.18.254.149
VIRROUTEIP为:172.18.61.5
keepalived+haproxy机器1IP为172.18.61.1
keepalived+haproxy机器2IP为172.18.61.2
server1IP为172.18.61.3
server2IP为172.18.61.4
实验示意图:
高可用keepalived+haproxy实现动静分离
实验功能:
前端2台haproxy对后端2台server的web服务做反向代理,并且实现动静态页面的分离,而对于haproxy机器,我们借用keepalived做高可用,解决前端代理服务器的单点故障,并且让haproxy只能通过本机登陆haproxy stats的管理界面。
实验步骤:
1.为两台后端服务器安装httpd服务,172.18.0.63和172.18.0.64的80端口分别提高html静态页面
yum -y install httpd
2.为172.18.61.1安装httpd服务,并将端口改为8080,将该机器设置为haproxy的backup server
3.分别为172.18.61.2和172.18.61.4安装httpd服务。并将它们的端口8080做成虚拟主机,部署动态内容,放入以.php结尾的文件作为测试界面
4.在两台frontend server 上分别安装keepalived和haproxy
yum -y install haproxy keepalived
5.2台机器都配置keepalived,编辑/etc/keepalived/keepalived.conf
第一台做master,配置如下:
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id haproxy
}
vrrp_instance haproxy {
state MASTER
interface enp0s3
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.61.5/16
}
}
第二台做backup,配置如下:
vrrp_instance haproxy {
state BACKUP
interface enp0s3
virtual_router_id 51
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.61.5/16
}
}
启动并测试keepalived,看IP地址是否能够发生漂移。
6.配置两台机器的haproxy服务,并实现动静分离,编辑/etc/haproxy/haproxy.cfg
frontend main
bind *:80
#acl invalid_src src 172.18.254.149
#block if invalid_src
#errorfile 403 /etc/haproxy/403.html
reqadd Via:\ yilei-dw3
#acl curl_agent hdr_sub(User-Agent) -i curl
#use_backend curlbe if curl_agent
acl phpapp path_end -i .php
use_backend dysrvs if phpapp
default_backend websrvs
backend dysrvs
balance roundrobin
server web3 172.18.61.4:8080 check
server web5 172.18.61.2:8080 check
backend websrvs
#balance hdr(User-Agent)
balance roundrobin
#cookie websrv insert nocache
#server web1 172.18.61.3:80 check cookie web1
server web1 172.18.61.3:80 check weight 1
#server web2 172.18.61.2:80 check cookie web2
#server web2 172.18.61.2:80 check redir http://www.baidu.com weight 2
server web2 172.18.61.4:80 check weight 1
server web4 172.18.61.1:8080 backup check
listen stats
bind 127.0.0.1:10080
stats enable
stats uri /haproxyadmin?stats
stats realm ‘haproxy auth’
stats auth yilei:centos
stats admin if TRUE
7.在client上测试。

   

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

(0)
yilei-dw3yilei-dw3
上一篇 2017-05-17 18:55
下一篇 2017-05-17 22:48

相关推荐

  • Linux用户与组之权限管理

    权限(rwx、sst、umask) chown chmod ACL(见下篇) 试验环境:CentOS 7.2 与CentOS 6.8,具体会在应用场景明确指出 权限 Linux系统对用户与组的管理,其具体操作手段就是对于权限的分配,而常见的权限分配工具有 rwx, sst, umask, ACL. 跟用户与组有uid和gid一样,权限也有…

    Linux干货 2016-08-07
  • CentOS6.7上编译安装php

    环境:CentOS6.7,minimal安装。 前提条件:安装了编译环境,安装了Apache/Nginx,安装了MySQL/MariaDB。具体安装见:http://www.178linux.com/16583    http://www.178linux.com/17497  1、解决依赖关系: 请配置好yum源(系统安装源及…

    Linux干货 2016-06-03
  • 马哥Linux学习之Linux背景和主要发行版篇

        Linux是一种 类Unix计算机操作系统的统称,简单的说来就是Linux内核+GNU工程的各种工具和数据库。Linux包括各种Linux的发行版,其实也就是为达到不同的目的而制作(目的包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用或嵌入式)的不同版本。     Linux的由来.…

    2015-03-19
  • sed 高级用法(1) 之 n N

    前言 我在参考其它多个Blog中发现,有些Blog中sed的功能介绍和实际有出入,这可能和版本有关系,正如sed文档中所说“might change in future versions”,所以本文sed是以4.2.1为例。如果以后sed更新版本了,有可能会不一样。 好记性不如烂笔头! sed的工作原理 sed维护着两个数据的缓冲空间,一个是模式空间(pat…

    Linux干货 2015-07-03
  • 第三周作业

    1、列出当前系统上所有已登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d ' ' -f 1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# la…

    Linux干货 2016-12-19
  • 流编辑器Sed(Stream Edit)详解

    流编辑器Sed(Stream Edit)详解       Grep 、sed 和awk并称为文本三剑客。使用Grep就可以很好的实现文本查找的功能,而且简单有效。然而其却无法直接对其进行编辑,sed的出现便解决了这一问题。 Sed被称为流编辑器,它是一种新型的非交互式的文本编辑器,它逐行处理文件或输入,并将结…

    Linux干货 2016-08-22