Haproxy的负载均衡和高可用配置
一、Haproxy的理解
Haproxy是一个使用c语言编写的自由开发源代码软件,它提供高可用性、负载均衡、以及基于http和tcp的应用程序代理。
Haproxy特别使用于那些负载特别大的web站点,这些站点通常需要会话或七层处理。Haproxy运行再当前的硬件上,完全可以支持数以万计的并发连接。并且他的运行模式使得它可以很简单安全的整合进当前的架构中,同时也可以保护我们的web服务器不被暴露再网络上。
二、haproxy的安装配置和负载均衡
1)首先在server1中下载haproxy的源码包,解压
---> yum install rpm-build -y # 安装rpmbuild命令
---> rpmbuild -tb haproxy-1.4.26.tar.gz # 建立haproxy的二进制软件包
---> cd rpmbuild/RPMS/x86_64
---> rpm -ivh haproxy-1.4.26-1.x86_64.rpm # 安装haproxy软件包
---> rpm -ql haproxy # 查看软件相关文件的路径
2)生成haproxy的配置文件
---> cd /root/
---> tar zxf haproxy-1.4.24.tar.gz # 解压压缩包。
---> cd haproxy-1.4.26/examples
---> cp conten-sw-sample.cfg /etc/haproxy/haproxy.cfg # 若目录haproxy不存在,新建即可
3)创建haproxy用户,并修改配置文件
---> useradd haproxy
---> vim /etc/haproxy/haproxy.cfg
global
maxconn 10000 # 最大连接数
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid haproxy # 此处为新建的haproxy用户的信息
gid haproxy
chroot /var/empty
daemon
defaults
mod http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
option prefer-last-server
retries 2
option redispatch
timeout connect 5s
timeout server 5s
frontend public
bind *:80 name clear # 默认haproxy的端口号为1080
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#mode http
default_backend dynamic
backend dynamic # 默认使用的后端服务集群
balance roundrobin # 负载均衡的算法为rr
server statsrv1 172.25.2.2:80 check inter 1000 # 后端服务器
server statsrv2 172.25.2.3:80 check inter 1000
4)修改内核最大文件数
---> vim /etc/security/limits.conf # 在最后一行输入以下内容
haproxy - nofile 10000
5)启动服务,测试haproxy是否安装成功
---> /etc/init.d/haproxy start
---> netstat -antlp| grep 1080 # 查看1080端口是否可用
6)在真机中进行负载均衡的测试,轮询的方式(端口号自己可以在配置文件中修改)
7)对后端服务器的管理和页面数据的监控
8)172.25.31.6/monitoruri #网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200
三、基于tcp和http的应用程序代理
(一)动态页面和静态页面的分离
1、在server1中的httpd默认发布目录中编写文件index.html(server2);在server3中http默认发布目录编写文件index.php
---> yum install -y php php-mysql # 在server3中安装php动态页面
---> vim /vat/www/html/index.php
---> /etc/init.d/httpd restart
2、在haproxy的配置文件中修改访问动态页面和静态页面
---> vim /etc/haproxy/haproxy.cfg # 在之前的基础上做如下修改
3)在浏览器中进行测试
# 动态访问server3的index.php界面
# 静态访问的server2中的发布文件
(二)修改haproxy的日志文件
1)修改日志服务配置文件从而修改日志存储位置
---> vim /etc/rsyslog.conf # 修改三处
2)启动haproxy服务,生成日志,并查看
---> /etc/init.d/haproxy restart
---> cat /var/log/haproxy.log # 查看日志
(三)访问控制
1)修改配置文件,添加访问控制的主机
---> vim /etc/haproxy/haproxy.conf # 添加黑名单,在blacklist中的主机均不可以访问(可写ip亦可写网段)
---> /etc/init.d/haproxy restart
2)在浏览器中测试情况如下:
3)重定向(当250访问时,重定向到server1中)
---> vim /etc/haproxy/haproxy.conf # 打开httpd服务
---> /etc/init.d/haproxy reload
---> /etc/init.d/httpd start
4)测试结果如下
(四)读写分离
1)在server1中编写配置文件
---> vim /etc/haproxy.haproxy.conf # 当进行上传操作,转到server3
---> /etc/init.d/haproxy reload
2)在server2和server3中安装php,把上传脚本放在http默认发布目录,在server3中建立load目录,存放上传图片。(要设置权限)
3)上传图片(注意图片的格式)
# 上传成功,在upload目录中查看:
四、corosync+pacemaker实现haproxy的高可用
1)首先在server4中安装haproxy服务。操作步骤与server1相同。配置好的结果为:
2)在server1和server4中,开启corosync服务 (可以关闭haproxy服务)
---> /etc/init.d/corosync start
3)在crm中添加haproxy服务(首先删除之前的nginx服务和web组)
# 添加haproxy服务并创建组,把ip和haproxy添加进去
# 再另一端监控情如下:
4)当节点server4的corosync关闭时,资源自动切换到server1上。
# 真机中一直是可以显示的。
5)当server1的主机挂掉的时候,由于fence服务是启动的,所以,server1可以自动开启,并加入可用节点中。
Haproxy的负载均衡和高可用配置的更多相关文章
- 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用
本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...
- HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用
HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240 mysql_b2 242 mysql_b1 247 haprox ...
- net core 实战之 redis 负载均衡和"高可用"实现
net core 实战之 redis 负载均衡和"高可用"实现 1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的& ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- nginx负载均衡+keepalived高可用
nginx负载均衡+keepalived高可用 环境准备 192.168.88.111:nginx + keepalived MASTER 192.168.88.112:nginx + keepa ...
- dubbo服务层面上的负载均衡和高可用
dubbo上的服务层可以做集群,来达到负载均衡和高可用,很简单,只需要在不同的服务器节点上向同一个zk(内网环境)注册相同的服务 注意就是,消费者不能在同一个zk做这种集群操作的 转载请注明博客出处: ...
- HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境
HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服 ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
- TCP接入层的负载均衡、高可用、扩展性架构
一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层,一般是browser或者APP 中间反向代理层,n ...
随机推荐
- mysql 数据操作 单表查询 having 过滤 练习
1. 查询各岗位内包含的员工个数小于2的岗位名.岗位内包含员工名字.个数 mysql> select post,group_concat(name),count(id) from employe ...
- HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)
http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find way ...
- expdp&impdp备份恢复常用命令
备份前准备 创建备份用户 create user backup identified by backup#2018 ; 授予导入导出角色 grant connect,resource to backu ...
- 20165324_mypwd
20165324_mypwd 实验要求 实验要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试mypwd 背景知识 文件存储结构 介绍文件 ...
- Cocos2d-JS实现的2048
一.前言 2048是之前火过一段时间的休闲数字消除类游戏,它的玩法很简单,上手很容易,可是想到要得到高分却很难,看似简单的游戏却有着很多得分的技巧,想当初这个游戏也曾是陪伴我大学课堂的游戏之一.虽然在 ...
- 小论“Boolean参数作为入参”的函数
<Clean Code>一书中对于如何写好函数有着很动人的描写,其中对于函数参数的建议有如下两点: 函数参数的数量应该尽可能少 给一个一元函数传入bool类型的参数很"罪恶&qu ...
- html5语法改变
<!doctype html> 简化了 <meta http-equiv="Content-type" content="text/html;chars ...
- VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...
- 19重定向管道与popen模型
重定向 dup2 int dup(int fd) 重定向文件描述符 int newFd = dup(STDOUT_FILENO) newFd 指向 stdout int dup2(int fd1, ...
- uva 10254
如果我们设f[i]为4个柱子时把i个东东从一个柱子移到另一个柱子所用的最少步骤,设g[i]为3个柱子时对应的值,我们可以得到f[n]=min{2*f[k]+g[n-k]},其中g[i]是已知的为2^i ...