HAProxy调度、ACL控制和负载均衡以及LNMT实现动静分离

HAProxy调度、ACL控制和负载均衡以及LNMT实现动静分离,第1张

四层负载均衡指的是负载均衡设备通过报文中的目标IP地址和端口负载均衡算法,选择到达目的的内部服务器,其主要工作在OSI七层模型的第四层(传输层)。四层负载均衡对数据包只是起一个数据转发的作用,并不会干预客户端与服务器之间应用层的通信

七层负载均衡,也被称为“内容交换”,指的是负载均衡设备通过报文中的应用层信息(URL、HTTP头部等信息)和负载均衡算法,选择到达目的的内部服务器。

1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低

2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。

2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)

3、应用范围比较广,工作在四层,所以不用考虑要处理的具体应用,可以对所有应用做负载均衡;

4、不支持正则处理,不能做动静分离。

5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)

6、配置复杂,对网络依赖比较大,稳定性很高。

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx仅能支持http、https和Email协议,适用范围较小。

8、不支持Session的直接保持,但能通过ip_hash来解决。

9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)

10、Nginx还能做Web服务器即Cache功能。

1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;

2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作

3、支持url检测后端的服务器出问题的检测会有很好的帮助。

4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现

5、单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度。

6、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。

9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)

10、不能做Web服务器即Cache

虚拟机Server(CentOS 7系统)即作为nginx服务器又作为Tomcat服务器,适配两个网卡端口,外网IP:192.168.10.199,内网IP:192.168.163.200,客户端发来的请求首先经由nginx处理,如果为静态内容则直接由nginx响应,如果为动态内容,则由nignx反代至后端的Tomcat服务器组并做负载均衡.

可以用于mysql。

使用HAProxy路由MySQL读请求

以下的例子使用HAProxy转发请求到两台mysql从库上。

Mysql:mysql 5.5

HAProxy IP: 172.28.10.192

Mysql Slave1:172.28.10.145

Mysql Slave2:172.28.10.150

在172.28.10.192上编译和安装haproxy

[root@cscscslocalhost 1109]# tar -zvfx haproxy-1.4.21.tar.gz

[root@cscscslocalhost haproxy-1.4.21]#make TARGET=linux26 PERFIX=/usr/local/haproxy

[root@cscscslocalhost haproxy-1.4.21]# make install PREFIX=/usr/local/haproxy

install -d /usr/local/haproxy/sbin

install haproxy /usr/local/haproxy/sbin

install -d /usr/local/haproxy/share/man/man1

install -m 644 doc/haproxy.1 /usr/local/haproxy/share/man/man1

install -d /usr/local/haproxy/doc/haproxy

for x in configuration architecture haproxy-en haproxy-frdo \

install -m 644 doc/$x.txt /usr/local/haproxy/doc/haproxy \

--查看haproxy版本,如有返回表示安装成功

[root@cscscslocalhost haproxy-1.4.21]# haproxy -v

HA-Proxy version 1.4.21 2012/05/21

Copyright 2000-2012 Willy Tarreau <w@1wt.eu>

[root@cscscslocalhost haproxy]# cd /usr/local/haproxy

--在haproxy安装目录中,新建conf和logs目录

[root@cscscslocalhost haproxy]# mkdir conf

[root@cscscslocalhost haproxy]# mkdir logs

[root@cscscslocalhost haproxy]# ls

conf doc logs sbin share

--编写haproxy的配置文件,在haproxy的软件包中examples中有例子,可以复制过来再修改.

值得注意的有轮询方式,转发方式,每服务器的权重等信息。

[root@cscscslocalhost haproxy]# vi /etc/haproxy.cfg

global

log 127.0.0.1 local0

log 127.0.0.1 local1 notice

#log loghostlocal0 info

maxconn 4096

chroot /usr/share/haproxy

uid 99

gid 99

daemon

#debug

#quiet

defaults

log global

modetcp

option httddplog

option dontlognull

retries 3

redispatch

maxconn 2000

contimeout 5000

clitimeout 50000

srvtimeout 50000

listen mysql_proxy

bind 0.0.0.0:23306

mode tcp

balance roundrobin

server db1 172.28.10.145:3307 check inter 2000 rise 2 fall 5 weight 1

server db2 172.28.10.150:3306 check inter 2000 rise 2 fall 5 weight 1

--新建对应的chroot目录,否则会报错,haproxy不能正常启动

[root@cscscslocalhost haproxy]# haproxy -f /etc/haproxy.cfg

[ALERT] 314/142955 (12657) : [haproxy.main()] Cannot chroot(/usr/share/haproxy).

[root@cscscslocalhost haproxy]# mkdir /usr/share/haproxy

--启动haproxy,查看端口,确保启动成功.

[root@cscscslocalhost haproxy]# haproxy -f /etc/haproxy.cfg

[root@cscscslocalhost haproxy]# netstat -nltp | grep haproxy

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp0 0 0.0.0.0:23306 0.0.0.0:* LISTEN 12674/haproxy

--修改日志的相关配置,让haproxy能够输出日志信息

[root@cscscslocalhost log]# vi /etc/syslog.conf

local6.* /var/log/haproxy.log

[root@cscscslocalhost haproxy]# vi /etc/sysconfig/syslog

SYSLOGD_OPTIONS=" -r -m 0"

[root@cscscslocalhost haproxy]# service syslog restart

Shutting down kernel logger: [ OK ]

Shutting down system logger: [ OK ]

Starting system logger: [ OK ]

Starting kernel logger: [ OK ]

--到此haproxy已经能够正常的转发mysql请求到后端的真正mysql服务器上了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8567979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存