一、安装环境

1.软件版本

HAProxy:1.5.18

Keepalived:1.3.5

Nginx:1.12.2

PHP:7.2

系统版本:CentOS 7.4

2.IP分配与架构图

3.安装软件

1>关闭所有服务器的firewall与SELinux

~ ]# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
~ ]# systemctl disable firewalld
~ ]# systemctl stop firewalld
~ ]# reboot

2>在各服务器上安装所需软件,这里都是yum安装,详细安装步骤略过。

4.软件配置

1>HAProxy配置

要实现动静分离需在HAProxy中做ACL规则匹配。具体配置详情如下,两台HAProxy的配置相同:

global
log 127.0.0.1 local2 chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn
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/
option redispatch
retries
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 frontend myweb
bind *:
compression algo gzip #选择压缩方式,可优化网页访问速度
compression type text/html text/plain application/x-javascript text/css application/xml #定义要压缩的文件类型
errorloc http://192.168.29.101:9999/errorloc/403.html #错误页位置
rspidel ^Server:.* #删除报头文件中以Server开头的项,安全优化项,因为Server开头的一般是私密信息,如后端服务器的Nginx版本等
acl static path_end .png .jepg .jpg .bmp .html .htm .jsp #ACL规则定义,匹配以.png...结尾的请求并命名为static
use_backend staticsv if static #如果匹配ACL规则static则交由后端服务器组staticsv处理
acl dynamic path_end .php #ACL规则定义,匹配以.php结尾的请求并命名为dynamic
use_backend dynamicsv if dynamic #如果匹配ACL规则dynamic则交由后端服务器组dynamicsv处理
default_backend dynamicsv #默认后端服务器组 backend staticsv
balance roundrobin #调度算法
cookie server insert nocache
server staticsv1 192.168.29.103: check cookie static1
server staticsv2 192.168.29.104: check cookie static2 backend dynamicsv
balance roundrobin
cookie server insert nocache
server dynamicsv1 192.168.29.105: check cookie dynamic1
server dynamicsv2 192.168.29.106: check cookie dynamic2 listen stats #定义状态页
bind *:
acl sta src 192.168.29.1
block if ! sta
http-request allow if sta
stats enable
stats uri /myhaproxy?admin
stats realm "Hello World"
stats auth admin:admin

2>配置Keepalived

在192.168.29.101上的配置如下:

global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout
router_id n1
vrrp_mcast_group4 224.1.101.18
}
vrrp_script chk_hapx {
script "killall -0 haproxy && exit 0 || exit 1" #这里要指出的是,killall -0 表示检查是否有进程存在,若存在返回值0,若不存在返回1,表示haproxy没有正常工作,并且返回1时往下执行操作。
weight -
interval
fall
rise
} vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.29.88/ dev ens33 label ens33:
}
track_script {
chk_hapx
}
}

在192.168.29.102上的配置如下(与101的区别已用黄颜色标注):

global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout
router_id n1
vrrp_mcast_group4 224.1.101.18
}
vrrp_script chk_hapx {
script "killall -0 haproxy && exit 0 || exit 1"
weight -
interval
fall
rise
} vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.29.88/ dev ens33 label ens33:
}
track_script {
chk_hapx
}
}

关于keepalived的原理与应用可以阅读这篇博客←点击

5.配置静态服务器组与动态服务器组

在192.168.29.103和192.168.29.104上安装nginx服务

在192.168.29.105和192.168.29.106上安装nginx+php服务

6.配置MariaDB与NFS

配置过程在之前的博客已有详细描述了这里不再赘述:

MariaDB配置点击→这里

NFS配置点击→这里

以上都配置完成后一个简易的基于keepalived+HAProxy的动静分离就部署完成了,然后就能所需的网页资源了。

虽然架构很简单,但能帮助我们理解工作逻辑,和熟悉配置详情。

HAProxy(三):Keeplived+HAProxy搭建高可用负载均衡动静分离架构基础配置示例的更多相关文章

  1. 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

    额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...

  2. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  3. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  4. Keepalived+HAProxy 搭建高可用负载均衡

    转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...

  5. Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡

    周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...

  6. HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署

    HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...

  7. Keepalived+lvs 搭建高可用负载均衡

    本站点停止更新,请访问:blog.coocap.com 不了解负载均衡高可用的童鞋,强烈建议先看keepalived+nginx高可用负载均衡: 传送门(求粉):http://www.cnblogs. ...

  8. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  9. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

随机推荐

  1. QT-QWebEngineView-createWindow弹出页面解决

    首先要写一个继承QWebEngineView的类 头文件: #ifndef WEBBROWSER_H #define WEBBROWSER_H #include <QWebEngineView& ...

  2. AX_SysExcel

    void KTL_CPeng_ImportCustStamp()  {      str                 file;      FileNameFilter      filter = ...

  3. Linux 第七天

    软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l  开源,如果有足够的能力,可以修改源代码 l  可以自由选择所需的功能 l  软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...

  4. (PMP)第13章-----项目相关方管理

    13.1 识别相关方 1 相关方分类的方法: 1.1 权力/利益方格,权力/影响方格,影响/作用方格(小型项目,关系简单) 权力:基于相关方的职权级别: 利益:对项目成果的关心程度 影响:对项目成果的 ...

  5. 关于CSS布局

    是时候单独列出一篇文章记录CSS布局了. http://www.imooc.com/article/2235  [史上最全Html和CSS布局技巧]

  6. 配置微信jssdk自定义分享

    前段时间做这个功能的时候遇到这个问题,之前的话是微信自动抓取界面第一张图,现在微信更新api,必须自行配置,接入jssdk,才能实现该功能. 详细可以查看微信的jssdk文档 微信官方开发者文档    ...

  7. 深入理解SpringCloud与微服务构建学习总结

    说明:用时 from 2018-11-16 to 2018-11-23 七天 0 放在前面   什么是微服务?   微服务是一个分布式系统.微服务架构的风格,就是将单一程序开发成一个微服务,每个微服务 ...

  8. 快速部署Apache服务静态网站

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充, ...

  9. XCode 无法识别设备

    XCode 取消Unpair Device 后不能读取设备 1:退出XCode 2:断开设备连接 3:在终端执行‘sudo pkill usbmuxd’ 4:重启XCode 5:连接设备即可

  10. Swift5 语言指南(十三) 方法

    方法是与特定类型相关联的函数.类,结构和枚举都可以定义实例方法,这些方法封装了用于处理给定类型的实例的特定任务和功能.类,结构和枚举也可以定义类型方法,它们与类型本身相关联.类型方法类似于Object ...