用haproxy结合keepalived实现基于LNMP的负载均衡和高可用

今天我们讲haproxy结合keepalived实现LNMP的负载均衡和高可用,现在的公司大部分都基于haproxy实现负载均衡。下面以一个事例去给大家详细讲解如何去实现:

一、用haproxy结合keepalived实现基于lnmp的负载均衡和高可用服务,要求:

(1)实现动静分离,图片和css,js都分离到专门的静态服务器上

(2)只允许172.17网段用户访问

(3)对于动态请求,要求实现基于cookie的会话保持

整体架构如下:

1、实验前需要关闭防火墙和selinux,以及同步时间。

关闭防火墙:iptables -F

关闭selinux:setenforce 0

同步时间:ntpdate 172.17.0.1(局域网的网关)

2、配置主服务器

(1)配置主keepalived

vim /etc/keepalived/keepalived.conf(基于NAT模式)

global_defs {                                 #全局设置

notification_email {

[email protected]                        #邮件地址

}

notification_email_from root

smtp_server 127.0.0.1                      #发送邮件的地址

smtp_connect_timeout 30

router_id KEEPALIVED_LVS

}

vrrp_instance VI_1 {

state MASTER                              #级别为MASTER

interface eth1                            #对外的网卡

virtual_router_id 74                      #VIP组号,做实验的时候不要和别人是一个组

priority 200                              #优先级

advert_int 1

authentication {                          #组内验证

auth_type PASS

auth_pass magedu

}

virtual_ipaddress {

172.17.177.176                        #对外的VIP

}

}

vrrp_instance VI_2 {

state MASTER

interface eth0

virtual_router_id 75

priority 200

advert_int 1

authentication {

auth_type PASS

auth_pass magedu

}

virtual_ipaddress {

192.168.153.153                        #对内的DIP的VIP,因为是两个调度器,所以要让DIP的地址也漂

}

}

主要是实现VIP对外,然后再生成一个DIP的VIP对内

启动服务systemctl start keepalived

开启路由转发vim /etc/sysctl.conf

net,ipv4,ip_forward=1

sysctl -p    生效

(2)配置主haproxy

vim /etc/haproxy/haproxy.cfg

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 http

bind 172.17.177.176:80               #80端口绑定到VIP上

stats enable                         #启动监控页面

stats uri /haproxy                   #监控页面的路径

stats auth  admin:admin              #监控页面的账号密码

stats refresh                        #10s监控页面每10秒自动刷新一次

stats admin if TRUE                  #能修改监控页面

acl imagejingtai path_end -i .jpj .png .bmp .gif .js .css          #匹配静态页面

acl imagephp path_end -i .php                                      #匹配动态php页面

use_backend webserver1 if imagephp                                 #如果匹配到imagephp就调度到webserver1中

acl host src 172.17.0.0/16                                         #匹配172.17这个网段

block if ! host                                                    #如果不是host里面的网段就都拒绝

default_backend webserver                                          #默认的backend是webserver

backend webserver1                                                     #后端的服务器

balance roundrobin                                                 #使用的算法

server web1 192.168.153.177:80 check weight 1

backend webserver2

balance roundrobin

server web2 192.168.153.176:80 check weight 1

backend webserver

balance roundrobin

cookie SRV insert nocache                                          #基于cookie验证

server http1 192.168.153.177:80 check weight 1 cookie srv1         #基于cookie的srv1验证保持会话

server http1 192.168.153.176:80 check weight 1

启动服务systemctl start haproxy

查看80端口是否监听在VIP上  ss -ntl

3、配置从的服务器

(1)配置从的keepalived

vim /etc/keepalived/keepalived.conf

global_defs {

notification_email {

[email protected]

}

notification_email_from root

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id KEEPALIVED_LVS

}

vrrp_instance VI_1 {

state BACKUP                              #MASTER需要改成BACKUP

interface eth1

virtual_router_id 74

priority 190                              #优先级需要调小

advert_int 1

authentication {

auth_type PASS

auth_pass magedu

}

virtual_ipaddress {

172.17.177.176

}

}

vrrp_instance VI_2 {

state BACKUP                              #MASTER需要改成BACKUP

interface eth0

virtual_router_id 75

priority 190                              #优先级需要调小

advert_int 1

authentication {

auth_type PASS

auth_pass magedu

}

virtual_ipaddress {

192.168.153.153

}

}

启动服务systemctl start keepalived

开启路由转发vim /etc/sysctl.conf

net,ipv4,ip_forward=1

sysctl -p    生效

(2)配置从的haproxy(和主的haproxy配置一样)

vim /etc/haproxy/haproxy.cfg

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 http

bind 172.17.177.176:80               #80端口绑定到VIP上

stats enable                         #启动监控页面

stats uri /haproxy                   #监控页面的路径

stats auth  admin:admin              #监控页面的账号密码

stats refresh                        #10s监控页面每10秒自动刷新一次

stats admin if TRUE                  #能修改监控页面

acl imagejingtai path_end -i .jpj .png .bmp .gif .js .css          #匹配静态页面

acl imagephp path_end -i .php                                      #匹配动态php页面

use_backend webserver1 if imagephp                                 #如果匹配到imagephp就调度到webserver1中

acl host src 172.17.0.0/16                                         #匹配172.17这个网段

block if ! host                                                    #如果不是host里面的网段就都拒绝

default_backend webserver                                          #默认的backend是webserver

backend webserver1                                                     #后端的服务器

balance roundrobin                                                 #使用的算法

server web1 192.168.153.177:80 check weight 1

backend webserver2

balance roundrobin

server web2 192.168.153.176:80 check weight 1

backend webserver

balance roundrobin

cookie SRV insert nocache                                          #基于cookie验证

server http1 192.168.153.177:80 check weight 1 cookie srv1         #基于cookie的srv1验证保持会话

server http1 192.168.153.176:80 check weight 1

启动服务service haproxy start

4、配置后端的web服务器

需要提前搭建好基于LNMP实现的小米电子商务网站(前面的博客有如何搭建LNMP实现小米电子商务网站)

(1)NAT模式

把80,3306,9000端口开开

systemctl start nginx   php-fpm    mariadb

然后把路由指向DIP的VIP

ip route add default via 192.168.153.153

(2)DR模式

在调度器keepalived中不用配置DIP的VIP,因为把网关指向路由器就行

ip route add default via 172.17.0.1

还要在回环网卡上加入VIP地址

ifconfig lo:0 172.17.166.165 broadcast 172.17.166.165 netmask 255.255.255.255 up

添加路由,让VIP走lo:0

route add -host 172.17.166.165 dev lo:0

只回答目标IP地址是来访网络接口本地地址的ARP查询请求

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.

5、然后就可以去测试看VIP会不会飘逸,关闭主的服务器,然后看能不能访问web服务器

还可以访问http://192.168.153.177/haproxy去管理后台web服务器

到此为止就完全实现负载均衡和高可用,后端web服务器多台时候就在haproxy中多加几个server就可以了!

时间: 2024-10-07 04:50:33

用haproxy结合keepalived实现基于LNMP的负载均衡和高可用的相关文章

nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用

本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片.html.JS.CSS等静态文件,tomcat处理jsp.servlet等动态请求 服务器名称                                 系统版本                           预装软件                     IP地址 Nginx服务器                             CentOS 7 最小安装              Nginx

实战 LVS+Keepalived 实现负载均衡和高可用

1.软件介绍 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡. LVS负载均衡有4种负载均衡方式 a.DR 模式 b.NAT 模式 c.Tunnel 模式 d.Full NAT 模式 LVS负载均衡8种调度算法 (rr,wrr,lc,wlc,lblc,lblcr,dh,sh) 各个模式的原理在此不再赘述,本文使用DR模式,rr调度算法. Keepalived 是运行在lvs 之上,它的主要功能是

Keepalived负载均衡与高可用

1.keepalived服务介绍Keepalived的项目实现的主要目标是简化LVS项目的配置并增强其稳定性,即Keepalived是对LVS项目的扩展增强.Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, Keepalived也具备负载均衡的功能,此外, Keepalived还实现了基于多层TC

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境

HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入?引入了frontend,backend:frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend. Keepalived介绍Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障.一个WEB服务至少会有2台服务

haproxy+keepalived实现负载均衡及高可用

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高性能性.负载均衡,以及基于TCP和HTTP的应用程序代理.相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务

使用HAproxy,keepalived实现简单LAMP架构的负载均衡与高可用

整个架构简单拓扑图如下所示: 其中: 192.168.10.66与192.168.10.6两台主机提供httpd服务 192.168.10.27与192.168.10.87两台主机提供varnish缓存服务 192.168.10.17与192.168.10.77两台主机安装HAProxy实现客户端请求的调控 192.168.10.7主机安装mariadb,提供数据存储服务 服务器与客户端连接ip地址为172.16.10.99/16, 一.httpd服务 1.分别于192.168.10.6与192

基于HAProxy+Varnish实现动静分离、负载均衡的高可用集群

拓扑结构介绍 在实际的生产使用过程中,一个基本的能够应对日均百万PV的网络,一般会具有以下几种结构. 这其中每种结构担负了不同的角色. 代理服务器,负责进行请求调度,实现了负载均衡. KeepAlived配置代理服务器实现了高可用. 缓存服务器,实现了资源的缓存,提高了请求的命中率,加快了访问速度. 动静分离,减轻后端服务器压力,提高资源访问速度. 数据库主从复制,读写分离,降低了数据库的压力 运维监控系统,实时监控系统运行状态. 自动化运维控制系统,批量管理大量服务器. 版本控制系统,在应用的

haproxy+keepalive 实现jboss负载均衡和高可用

系统为centos 6.4 64位 主:192.168.1.61 备:192.168.1.62 浮动ip:192.168.1.64 realserver:192.168.1.60和192.168.1.63 第一:jboss的安装配置: yum install java-1.7.0* -y unzip jboss-5.1.0.GA.zip  -d /usr/local ln -sv jboss-5.1.0.GA   jboss cd /usr/local/jboss/server cp -r de