高可用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
下一篇 2017-05-17

相关推荐

  • 私人定制—linux系统

    自制Linux系统: 1、分区并创建文件系统 [root@localhost6 ~]# fdisk  /dev/sdb 分两个必要的分区 /dev/sdb1对应/boot /dev/sdb2对应根/ 创建文件系统: [root@localhost6 ~]# mkfs.ext4 /dev/s…

    Linux干货 2016-09-26
  • 如何在微软Azure云机上添加新磁盘

    大家好: 最近在项目实践中,分享下如何在微软Azure云机上添加新磁盘。 首先需要查看下是否有未用上的磁盘,先fdisk -l查(看下图)并和Azure技术确认该磁盘是否可永久保存数据: 然后找到未分区的磁盘号,如上图中的/dev/sdc,再 fdisk /dev/sdc后开始在该新磁盘上进行分区创建: 为方便管理,我们一般就创建一个分区,然后进行格式化: …

    Linux干货 2016-11-27
  • 第六周

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

    Linux干货 2016-09-19
  • 马哥教育网络班21期+第12周课程练习

    1、请描述一次完整的http请求处理过程; 建立或处理请求:接受请求或拒绝请求; 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程; 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息; 访问资源:获取请求报文中请求的资源; 构建相应报文; 发送响应报文; 记录日志 2、httpd所支持的处理模型有哪些,他们分别适用于哪些环境。 …

    Linux干货 2016-10-24
  • 文件共享服务之SAMBA

    文件共享服务之SAMBA 文件共享服务之SAMBA 一、samba出现的意义 二、samba协议描述 三、samba为客户端的实现 四、samba为服务端的实现 五、使用图形界面配置SAMBA 一、samba出现的意义 首先nfs实现系统文件挂载linux与linux之间,linux到windows之间实现的并不是那么理想 FTP可以实现linux和wind…

    Linux干货 2016-04-19