一:环境准备
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
chroot()操作,可以提升haproxy的安全级别,
- daemon:让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能,
当然,也可以在命令行中以“-db”选项将其禁用;
- gid
以免因权限问题带来风险;
- group
- log
多可以定义两个;
- nbproc
haproxy;默认只启动一个进程,
- uid:以指定的UID身份运行haproxy进程;
- user:同uid,但使用的是用户名;
- ulimit-n:设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计
算,因此不推荐修改此选项;
- stats:可开启一个unix socket管理接口
proxies 代理相关的配置可以如下:
- defaults
- frontend
- backend
- listen
“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
[param*]:为此服务器设定的一系参数;其可用的参数非常多,具体请参考官方文档中的说明,下面仅说明几个常用的参数;
服务器或默认服务器参数:
backup:设定为备用服务器,仅在负载均衡场景中的其它server均不可用于启用此server;
check:启动对此server执行健康状态检查,其可以借助于额外的其它参数完成更精细的设定,如:
inter
rise
fall
cookie
server将在后续的请求中被选中,其目的在于实现持久连接的功能;
maxconn
maxqueue
observe
redir
server srv1 172.16.100.6:80 redir http://p_w_picpathserver.magedu.com check
weight
学习了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,并启动所有服务。
然后就可以了。你学会了吗?