categories:
资料 tags:
haproxy, https, linux, nginx author:
快乐成长
现在网络完全越来越受到重视, 因此https也是大势所趋, 以往nginx都是工作在http方式下, 其实nginx在https下工作也挺好的。 这里将分步骤的逐步实现一套采用nginx, haproxy, keepalived实现的https系统, 并且系统没有单点故障, 基本适应中小系统的安全需要。
1. Nginx https安装 这个文章主要是安装支持https的nginx, 源代码装过程
2. https安装(2)nginx配置 继承上一个文章, 记录配置过程, 然后实现https服务
本文继承前两个文章, 记录通过nginx实现https的功能, 并且通过haproxy将两台nginx的https进行整合, 统一对外提供服务。
但是本文的方法, 在haproxy上仍然存在单点故障, 下一篇文章, 将修正这个错误
本文记录详细的安装过程, 供大家参考。
一. 准备linux操作系统
本文的nginx和haproxy都是在linux下进行的安装与测试, 因此需要linux计算机。
我们采用vmware作为虚拟机软件, 采用下面的已经安装好的虚拟机镜像做为操作系统。 这样节省了安装时间。
链接:http://pan.baidu.com/s/1nutqTkP 密码:f4bh
- 安装好vmware软件,
…
阅读全文
categories:
资料 tags:
haproxy author:
sch
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy 特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。。
如果说在功能上,能以proxy反向代理方式实现 WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke 等。
但要明确一点的,Haproxy 并不是 Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。
但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。自1.3版本开始还引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend。
另外, 版本1.3 是处于活跃开发阶段的版本, 它支持如下新特性:
l 内容交换 : 可以根据请求(request)的任何一部分 来选择一组服务器, 比如请求的 URI , Host头(header) , cookie , 以及其他任何东西. 当然,对那些静态分离的站点来说,对此特性还有更多的需求。… 阅读全文
categories:
资料 tags:
haproxy author:
sch
简介:
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.
Haproxy 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入.新的1.3引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.
实验环境以及服务器信息:
OS: RedHat AS 5.1
软件列表:
keepalived-1.2.2.tar.gz
haproxy-1.4.13.tar.gz
服务器信息:
Master server 10.10.0.99 (调度主服务器)
Slave server 10.10.0.98 (从调度服务器)
VIP: 10.10.0.97 (调度服务器的虚拟IP)
Real server:
10.10.0.96
10.10.0.95
安装keepalived
# tar zxvf keepalived-1.2.2.tar.gz
# cd keepalived-1.2.2… 阅读全文
categories:
资料 tags:
haproxy, 原创 author:
sch
原创文章,转载请指明出处并保留原文url地址
1 haproxy简介
1.1 Haproxy功能介绍
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机, 它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
下图是HAProxy的架构:
![wps_clip_image-4675[4][1] wps_clip_image-4675[4][1]](http://www.iigrowing.cn/wp-content/uploads/Haproxy_C658/wps_clip_image467541.jpg)
1.2 Haproxy监控
下图是HAProxy的监控页面截图:
![wps_clip_image-15376[3][1] wps_clip_image-15376[3][1]](http://www.iigrowing.cn/wp-content/uploads/Haproxy_C658/wps_clip_image1537631.jpg)
1.3 Haproxy基本特点
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:”tcp”也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。
l 免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;
l 根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom’s 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;
l HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;
l 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;
l HAProxy支持虚拟主机。… 阅读全文
categories:
资料 tags:
haproxy author:
sch
一:Global parameters
* Process management and security
– chroot 改变当前工作目录
– daemon 运行方式为后台工作
– user – group 工作用户和组
-log <address> <facility>日志输出设备
– nbproc 创建工作的进程数目
-pidfile pid文件位置
– ulimit-n 设置每个进程的可用的最大文件描述符
– stats 创建监控所用的套接字目录
– node 创建另外一个节点名字共用一个IP地址,用来识别哪个节点在处理流量
– description 描述实例的名称
maxconn <number> … 阅读全文
categories:
资料 tags:
haproxy author:
sch
考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。
下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题。
PS: 这个问题费了我好大神:-|
PLATFORM: SUSE Linux Enterprise Server 11 (x86_64)
1. haproxy的编译安装
获取haproxy的源代码
官方地址:http://haproxy.1wt.eu/
目前最新的版本:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
命令:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
考虑到版本的更新,具体的安装属性可能会稍有改变,建议在安装前可以大致浏览下haproxy目录下的README和Makefile两个文件。
编译haproxy
进入解压后的haproxy的目录,用下列命令进行编译:
make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 …
这里着重说明几个常用的选项。
TARGET
指定对目标操作系统在编译的时候进行优化,可选择如下值之一:
Generic, linux22, linux24, linux24e, linux26, solaris, freebsd, … 阅读全文
categories:
linux资料 tags:
haproxy author:
sch
架构拓扑图如下:
![wps_clip_image-2439[3][1] wps_clip_image-2439[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxHaproxykeepalived_28AB/wps_clip_image243931.jpg)
haproxy
VIP: 192.168.1.150
Master:192.168.1.10
Slave: 192.168.1.11
之间用keepalived实现HA
webserver1:192.168.1.101
webserver2:192.168.1.102
webserver3:192.168.1.103
webserver4:192.168.1.104
1.下载:
#wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.4.tar.gz
2.解压安装
#tar –zxvf haproxy-1.3.14.4.tar.gz
#tar zxvf haproxy-1.3.14.4..tar.gz
#mv haproxy-1.3.14.4 haproxy
#cd haproxy
#make TARGET=linux26
(2.4内核版本 make TARGET=linux24
freebsd make TARGET=freebsd
solaris系统 make TARGET=solaris CPU=ultrasparc REGEX=static-pcre)… 阅读全文
categories:
资料 tags:
haproxy author:
sch
1 缓存Memcached(M)
1.1 M的概念
M是高性能的分布式内存缓存服务器,协议简单。通过缓存数据库的查询结果,减少数据库访问次数,提高动态Web应用的速度和扩展性。
M支持下述语言
![wps_clip_image-29334[3][1] wps_clip_image-29334[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image2933431.jpg)
1.2 M的设计
1.2.1 M的机制
守护进程机制:UNIX Daemon;Socket事件处理机制:非阻塞、Libevent异步事件处理、Epoll/Kqueue;内存管理机制:Slab内存分配、LRU对象清除、Hash快速检索Item。
内存管理中,Slab中分成小单位Chunk,Chunk中存有实际数据Item。下述是M的Slab内存结构图和分配实例图。
![wps_clip_image-10708[3][1] wps_clip_image-10708[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image1070831.jpg)
Slab内存结构图
![wps_clip_image-16413[3][1] wps_clip_image-16413[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image1641331.jpg)
Slab内存分配实例图
![wps_clip_image-26154[3][1] wps_clip_image-26154[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image2615431.jpg)
Slab计算占用内存图
![wps_clip_image-8825[3][1] wps_clip_image-8825[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image882531.jpg)
Item数据存储格式图
1.2.2 M的架构设计
M的设计遵从原则是,首次访问从RDBMS中取得数据,按一定规则保存到M后,第二次访问从M中取得数据显示到浏览器页面中。
![wps_clip_image-26264[3][1] wps_clip_image-26264[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image2626431.jpg)
M架构层次图
M的服务端并没有分布式功能,各个服务器之间没有互相通信以共享信息。M的分布式完全取决于客户端的实现,如下图所示。
![wps_clip_image-25027[3][1] wps_clip_image-25027[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image2502731.jpg)
M使用说明图
如需要在M中保存键名为“tokyo”的数据时,通过客户端应用程序的算法,根据Key来决定选择哪个服务器节点进行存储。服务器选定之后,命令其保存键名“tokyo”和键值“data”。
![wps_clip_image-16791[3][1] wps_clip_image-16791[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image1679131.jpg)
Set实例图
如需要在M中获取键名为“tokyo”的数据时。把键名“tokyo”传给客户端函数库,通过和数据保存相同的算法,根据Key选择服务器节点。只要算法一致,就能选对服务器,发送命令取得键值“data”。
![wps_clip_image-30287[3][1] wps_clip_image-30287[3][1]](http://www.iigrowing.cn/wp-content/uploads/MR_9542/wps_clip_image3028731.jpg)
Get实例图
1.3 M的客户端算法
1.3.1 余数分散
根据服务器台数的余数进行分散,求得Key的整数Hash值H,除以服务器的台数N,由余数指向选中服务器,即H%N。
算法的数据分散性比较优秀,但不足的是当添加/移除服务器时(包括服务器Down机事件),缓存重组的代价相当大。因为添加/移除服务器后,余数必定发生改变,客户端在获取数据时,就无法通过算法获取和保存时相同的服务器,严重影响了缓存的命中率。大部分负载会在事件发生的同时,增大数据库的压力。
1.3.2 一致性哈希
一致性哈希算法,Consistent Hashing是一种分布式算法,常用于负载均衡。M 客户端选择这种算法,解决将Key-Value均匀分配到众多M 服务器上的问题。它可以取代传统的取模操作,解决了上述取模操作无法应对增删M 服务器所遇到的问题。… 阅读全文