实现基于Haproxy+Keepalived负载均衡高可用架构

一:环境准备

centos系统服务器4台,两台用于做haproxy主从架构,

两台作为后端server,服务器配置好yum源,防火墙关闭,

关闭selinux,各节点时钟服务同步,各节点之间可以通过主机名互相通信。

二:安装步骤

1.iptables –F &&setenforing 清空防火墙策略,关闭selinux.

2.拿两台服务器都使用yum方式安haproxy,keepalived

服务

3.后端服务器配置好基于LNMP架构的web服务

当准备工作做好之后,就可以修改配置文件啦,第一个我们要修改的配置文件是

/etc/keepalived/keepalived.conf配置文件内容

在state里面定义主或从

在virtual_route_id 定义id号,请注意,主和从定义的id号一定要相同

在priority 定义优先级

在virtual_ipaddress定义一个虚拟的vip 172.17.252.53

然后在另一台haproxy的服务器上做配置

保存退出

然后启动服务:在centos6里面 service keepalived  start

在centos7里面,systemctl   start keepalived

启动了服务之后,因为主的优先级高,所以我们看到在主里面那个虚拟的vip

  当我们把主里面的服务停了,我们在从里面就可以看到那个虚拟的vip,说明已经实现了vip的漂移。实现了高可用

修改主haproxy配置文件,定义全局配置,配置日志,启动用户,pid文件等

在修改之前呢,我们先学习一下haproxy的配置文件结构

global # 全局配置
daemon #让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能,
当然,也可以在命令行中以“-db”选项将其禁用;
maxconn 25600 #设定每个haproxy进程所接受的最大并发连接数,其等同于命令行
选项“-n”;“ulimit -n”自动计算的结果正是参照此参数设定的

defaults # 默认配置
mode http #设定实例的运行模式或协议。当实现内容交换时,前端和后端必须工作
于同一种模式

frontend http-in # 定义前端server
bind *:80 #此指令仅能用于frontend和listen区段,用于定义一个或几个监听的套接字
default_backend servers #设置后端服务器组

backend servers # 定义后端服务器组
server server1 127.0.0.1:8080 check #服务器组中包含的主机

global #全局配置 (进程管理及安全相关的参数)
- chroot <jail dir>:修改haproxy的工作目录至指定的目录并在放弃权限之前执行
chroot()操作,可以提升haproxy的安全级别,
- daemon:让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能,
当然,也可以在命令行中以“-db”选项将其禁用;
- gid <number>:以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,
以免因权限问题带来风险;
- group <group name>:同gid,不过指定的组名;
- log <address> <facility> [max level [min level]]:定义全局的syslog服务器,最
多可以定义两个;
- nbproc <number>:指定启动的haproxy进程个数,只能用于守护进程模式的
haproxy;默认只启动一个进程,
- uid:以指定的UID身份运行haproxy进程;
- user:同uid,但使用的是用户名;
- ulimit-n:设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计
算,因此不推荐修改此选项;
- stats:可开启一个unix socket管理接口

proxies 代理相关的配置可以如下:
- defaults <name>
- frontend <name>
- backend <name>
- listen <name>
“defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个
“defaults”所重新设定。
“frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
“backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器

“listen段通过关联“前端”和“后端”定义了一个完整的代理,frontend和backend 块的结合体
所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此
外,ACL名称会区分字母大小写。

defaults相关的配置可以如下:
defaults
mode http #实现http的7层规则
log global #日志定义
option httplog #启用日志记录HTTP请求,默认haproxy日志记录是
不记录HTTP请求
option dontlognull #日志中将不会记录空连接。
option httpclose # 强制短连接,每次收发完包后都把连接关闭
option forwardfor #添加xforward日志标记
retries 3 # 定义连接后端服务器的失败重连次数
timeout http-request 10s # 请求超时
timeout queue 1m #队列超时
timeout connect 10s #连接超时
timeout client 1m #客户端超时

listen 相关的配置可以如下:
listen段通过关联“前端”和“后端”定义了一个完整的代理,frontend
和backend 块的结合体
listen stats #定义一个统计报告服务
mode http #基于http协议
bind 0.0.0.0:1080 #监听1080端口
stats enable #开启统计报告服务
stats hide-version #隐藏统计报告版本信息
stats uri /haproxyadmin?stats #统计报告访问url
stats realm Haproxy\ Statistics #页面登陆信息
stats auth admin:admin #验证账号信息
stats admin if TRUE #验证模式

server #定义服务主机
server <name> <address>[:port] [param*]
[param*]:为此服务器设定的一系参数;其可用的参数非常多,具体请参考官方文档中的说明,下面仅说明几个常用的参数;
服务器或默认服务器参数:
backup:设定为备用服务器,仅在负载均衡场景中的其它server均不可用于启用此server;
check:启动对此server执行健康状态检查,其可以借助于额外的其它参数完成更精细的设定,如:
inter <delay>:设定健康状态检查的时间间隔,单位为毫秒,默认为2000;也可以使用fastinter和downinter来根据服务器端状态优化此时间延迟;
rise <count>:设定健康状态检查中,某离线的server从离线状态转换至正常状态需要成功检查的次数;
fall <count>:确认server从正常状态转换为不可用状态需要检查的次数;
cookie <value>:为指定server设定cookie值,此处指定的值将在请求入站时被检查,第一次为此值挑选的
server将在后续的请求中被选中,其目的在于实现持久连接的功能;
maxconn <maxconn>:指定此服务器接受的最大并发连接数;如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其它连接被释放;
maxqueue <maxqueue>:设定请求队列的最大长度;
observe <mode>:通过观察服务器的通信状况来判定其健康状态,默认为禁用,其支持的类型有“layer4”和“layer7”,“layer7”仅能用于http代理场景;
redir <prefix>:启用重定向功能,将发往此服务器的GET和HEAD请求均以302状态码响应;需要注意的是,在prefix后面不能使用/,且不能使用相对地址,以免造成循环;例如:
server srv1 172.16.100.6:80 redir http://imageserver.magedu.com check
weight <weight>:权重,默认为1,最大值为256,0表示不参与负载均衡;

学习了haproxy的配置文件结构和内容之后,接下来,我们就要继续修改配置文件了,首先我们可以定义一个统计报告服务的页面

mode http:基于http协议

bind *:1090 监听1090端口

stats uri 统计报告访问url

stats auth  验证账号信息

stats  admin if TRUE(一定要大写)验证模式

然后通过那个虚拟的vip进行访问

可以通过如下图形界面进行管理

配置一个frontend, 并关联到后端backend rs-server

配置后端backend rs-server,添加两台web服务,并配置健康状态检查,实现负载均衡

然后保存退出,重启服务

配置主haproxy完成后,同步配置到从haproxy,并启动所有服务。

然后就可以了。你学会了吗?

时间: 2024-10-10 04:54:59

实现基于Haproxy+Keepalived负载均衡高可用架构的相关文章

实现基于Haproxy_NAT+Keepalived负载均衡高可用架构

实验思路: 1.做这个实验首先可以想象一个场景,用户访问webserver的时候首先会经过调度器,首先需要明白的一点就是一般公司一般是在内网,客户端是通过外网访问webserver的. 2.haproxy是一个负载均衡器,Keepalived通过VRRP功能能再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群系统,也就是说haproxy是解决后端realserver负载均衡的问题,keepalived是解决调度器的高可用的问题. 3.haproxy检测到后端服务器处于不健康的状态的时候会把

HAproxy+Keepalived负载均衡-高可用web站

haproxy+keepalived负载均衡高可用web站   OS IP 子网掩码 路由网关 Centos6.6 HAproxy Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 HAporxy Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6(WE

Nginx+Keepalived负载均衡高可用(双机热备)

Nginx+Keepalived负载均衡高可用(双机热备) 1.1 Nginx安装及配置 1.2 Keepalived安装及配置 1.3 WebServer安装 1.4 测试Nginx+Keepalived 环境如下: CentOS 6.4_64K eepalived-1.2.12 Nginx-1.4.4 vip:192.168.10.50 master:192.168.10.11 backup:192.168.10.12 webserver1:192.168.10.13 webserver2:

Gtid+MGR+atlas读写分离以及负载均衡高可用架构

MySQL5.7.24 Gtid+MGR+atlas读写分离以及负载均衡高可用架构 一.服务器环境介绍: 腾讯云的云主机安装360开源的mysql中间键Atlas腾讯云机器的外网ip:119.29.97.131沧州233测试物理机器的外网ip192.168.1.233(安全起见故意写成内网的ip,其实是外网ip) 二.mysqlGtid+MGR安装 参考博文地址: 三.中间键Atlas简介 (摘抄自https://github.com/Qihoo360/Atlas) Atlas 是由 Qihoo

Keepalived + Haproxy实现负载均衡高可用

基于LVS实现Keepalived的高可用见:http://amelie.blog.51cto.com/12850951/1979636 负载均衡为将用户并发请求转发到后台若干服务器,以分流方式均衡负载.均衡负载借用的软件,我们这里是Haproxy.而负责转发的服务器,我们称之为负载均衡服务器,也称反向代理服务器.这种情况下,如果负载均衡服务器挂掉,后台服务器再多也会导致服务无法访问.为提高负载均衡服务器的可用性,我们可以架设从服务器随时接管主负载均衡服务器的工作,而这种方式的实现,就要借助于相

LVS/DR + keepalived负载均衡高可用实现

一.keepalived简介 keepalived是分布式部署解决系统高可用的软件,结合lvs(LinuxVirtual Server)使用,解决单机宕机的问题.keepalived是一个基于VRRP协议来实现IPVS的高可用的解决方案.对于LVS负载均衡来说,如果前端的调度器direct发生故障,则后端的realserver是无法接受请求并响应的.因此,保证前端direct的高可用性是非常关键的,否则后端的服务器是无法进行服务的.而我们的keepalived就可以用来解决单点故障(如LVS的前

LVS+Keepalived负载均衡高可用如此简单?

今天简单写下lvs+keepalive实现负载均衡和高可用的功能,仅供参考!关于它们的详细介绍这里就不描述了,大家可以自行搜索下! lvs+keepalived网络拓扑图: 一.准备一个vip和4台虚拟机: vip:192.168.1.100 向外提供服务的ip,一般是绑定域名的 192.168.1.10 LB1_master调度器IP 192.168.1.13  LB2_slave调度器IP 192.168.1.11 nginx服务器IP 192.168.1.12  apache服务器IP 二

20.keepalived负载均衡--高可用

1.1keepalived服务概念说明 keepalived软件能干什么? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 Keepalived软件主要是通过VRRP协议实现高可用功能的. VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写, VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时, 整个网络可

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

概述 目前关于负载均衡和高可用的架构方案能找到相当多且详尽的资料,此篇是自己学习相关内容的一个总结,防止将来遗忘再次重新查找资料,也避免踩相同的坑. 此次配置的负载均衡与高可用架构:Nginx + Keepalived(主备模式),Nginx 使用反向代理实现七层负载均衡. 众所周知,Nginx 是一款自由的.开源的.高性能HTTP服务器和反向代理服务器,也是一个IMAP.POP3.SMTP代理服务器. 也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行HTTP服务处理,也可以