700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > HAProxy负载均衡原理及企业级实例部署haproxy集群

HAProxy负载均衡原理及企业级实例部署haproxy集群

时间:2021-07-14 07:35:05

相关推荐

HAProxy负载均衡原理及企业级实例部署haproxy集群

HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。

同一客户端访问服务器,HAProxy保持回话的三种方案:

HAProxy将客户端ip进行Hash计算并保存,由此确保相同IP访问时被转发到同一真实服务器上。

HAProxy依靠真实服务器发送给客户端的cookie信息进行回话保持。

HAProxy保存真实服务器的session及服务器标识,实现会话保持功能。

HAProxy拓扑结构图

二 配置文件解析

HAProxy安装后默认没有配置文件,需要手动创建/etc/haproxy.cfg。启动HAProxy时用-f指定配置文件路径。haproxy的配置文件包含全局设置段与代理段,global是全局段,defaults、listen、frontend、backend为代理段。frontend用来匹配客户端请求的域名或者URL;backend定义后端服务器集群。

HAProxy配置文件参数详细解析:

三 Haproxy实例部署

本例使用listen定义一个监控端口;

使用frontend定义一个前端80端口;

通过backend定义名为inside_servers 和 external_servers的服务器组;

使用default_backend定义默认服务器组external_servers;

external_servers包括和 两台服务器

inside_servers包含 一台服务器

1首先配置web服务器

在web1、web2、web3上安装httpd并配置网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.3

NETMASK=255.255.255.0

GATEWAY=192.168.1.2

ONBOOT=yes

TYPE=Ethernet

service network restart

yum install -y httpd

iptables -F

iptables -X

service iptables save

setenforce 0

sed -i s/enforcing/disabled/g /etc/sysconfig/selinux

echo "web1 192.168.1.3" > /var/www/html/index.html

service httpd restart

chkconfig httpd on

web2、web3机器上执行与web1相同步骤,注意修改部分参数

2接着haproxy服务器配置

设置两块网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=10.10.10.10

NETMASK=255.0.0.0

ONBOOT=yes

TYPE=Ethernet

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=192.168.1.2

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

ONBOOT=yes

TYPE=Ethernet

service network restart

service iptables stop

内核调优,修改系统文件

vim /etc/security/limits.conf

*softnofile65535

*hardnofile65535

配置日志文件,添加三行

vim /etc/rsyslog.conf

$ModLoadimudp

$UDPServerRun514

local3.* /var/log/haproxy.log

yum -y install gcc

wget/download/1.6/src/haproxy-1.6.11.tar.gz

tar zxfhaproxy-1.6.11.tar.gz -C /usr/src/

cd /usr/src/haproxy-1.6.11/

make TARGET=linux2628

make install

mkdir /var/haproxy

3创建配置文件

vim /etc/haproxy.cfg

global

maxconn4096

log127.0.0.1local3info

chroot/var/haproxy

uid99

gid99

daemon

nbproc1

pidfile/var/run/haproxy.pid

ulimit-n65535

statssocket/var/tmp/stats

defaults

logglobal

modehttp

maxconn20480

optionhttplog

optionhttpclose

optiondontlognull

optionforwardfor

optionredispatch

optionabortonclose

statsrefresh30

retries3

balanceroundrobin

cookieSRV

timeoutcheck2000ms

timeoutconnect5000ms

timeoutserver50000ms

timeoutclient50000ms

listenadmin_status#定义haproxy的监控界面

bind0.0.0.0:6553

modehttp

log127.0.0.1local3 info

statsenable

statsrefresh5s#监控页面自动刷新时间5s

statsrealmHaproxy\Statistics#登录监控页面提示符

statsuri/admin?stats #监控页面URL路径

statsauthadmin:123456#监控页面的账户密码

statshide-version #隐藏haproxy版本

frontendweb_service#定义前端服务器

bind0.0.0.0:80

modehttp

logglobal

optionhttplog

optionhttpclose

optionforwardfor

#aclinside_src src 192.168.1.0/24#定义acl

#use_backendinside_servers if inside_src#判断acl的源地址,把请求转发到inside_servers组

default_backendexternal_servers#默认服务器组

backendexternal_servers

modehttp

balanceroundrobin#轮询真实服务器

optionhttpchkGET/index.html#检查index文件,判断服务器是否健康

##定义后端真实服务器,向cookie中插入web1信息,check进行健康检查,检查时间间隔为2000ms,##连续两次健康则认为是正常开启的,连续三次检查失败则认为宕机,服务器权重1

server web1 192.168.1.3:80 cookie web1 check inter 2000 rise 2 fall 3 weight 1

server web2 192.168.1.4:80 cookie web2 check inter 2000 rise 2 fall 3 weight 1

#backend inside_servers

#modehttp

#balanceroundrobin#轮询真实服务器

#optionhttpchkGET/index.html#检查index文件,判断服务器是否健康

#server web3 192.168.1.5:80 cookie web3 check inter 2000 rise 2 fall 3 weight 1

4启动haproxy服务

service rsyslog restart#重启系统日志服务

haproxy -f /etc/haproxy.cfg#启动haproxy服务

echo "/usr/local/sbin/haproxy -f /etc/haproxy.cfg" >> /etc/rc.local

5测试验证

浏览器访问监控页面

在一个ip为10.10.10.100的机器上访问http://10.10.10.10:6553/admin?stats

多次刷新访问将得到web1和web2 不同页面信息

如果配置文件中开启使用inside_servers,则在192.168.1.0/24网段机器上访问http://192.168.1.2,服务器返回的会一直是web3的页面信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。