阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Keepalived+Haproxy构建高可用负载均衡集群

117次阅读
没有评论

共计 7673 个字符,预计需要花费 20 分钟才能阅读完成。

keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5 层交换。Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web 服务器。HAProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。…

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Keepalived+Haproxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

Keepalived+haproxy 构建 web 高可用负载均衡系统

本章将使用 keepalived 做为高可用集群调度用户请求,并且检测 haproxy 负载均衡器的状态,实时地完成节点的动态调整。

keepalived 原理图:

Keepalived+Haproxy 构建高可用负载均衡集群

Layer3:Keepalived 使用 Layer3 的方式工作式时,Keepalived 会定期向服务器群中的服务器

发送一个 ICMP 的数据包(既我们平时用的 Ping 程序), 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将 它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。在本文 中将采用这种方式。

Layer4: 如果您理解了 Layer3 的方式,Layer4 就容易了。Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是 80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中剔除。

Layer5:Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

haproxy 工作机制:

Keepalived+Haproxy 构建高可用负载均衡集群

HAProxy 相比 LVS 的使用要简单很多,功能方面也很丰富。当 前,HAProxy 支持两种主要的代理模式:”tcp” 也即 4 层(大多用于邮件服务器、内部协议通信服务器等),和 7 层(HTTP)。在 4 层模式 下,HAProxy 仅在客户端和服务器之间转发双向流量。7 层模式下,HAProxy 会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应 (response) 里指定内容来控制协议,这种操作要基于特定规则。

系统环境:CentOS6.4

iptables 关闭

selinux is disabled

一、keepalived 的安装与配置

#tar zxf keepalived-1.2.7.tar.gz

#cd keepalived-1.2.7

#./configure –prefix=/usr/local/keepalived 指定路径编译

其中可能安装一下依赖包:

openssl-devel popt-devel libnl-devel

# make && make install 执行 make 安装

# cd /usr/local/keepalived/ 默认主目录,存在 sbin/ 和 etc/ 目录

# ln -s /usr/local/keepalived/sbin/keepalived /sbin/ 便于管理 keepalived,将文件链接

# ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# vim /etc/keepalived/keepalived.conf
root@localhost
}
notification_email_from keepalived@server3.example.com 通知收件人地址
virtual_router_id 88 定义虚拟路由 id
priority 100 定义主节点(权值决定)
virtual_ipaddress {定义 VIP
192.168.0.88
}
}

使用 lvs+keepalived 时使用一下配置
virtual_server 192.168.0.88 80{定义虚拟服务
delay_loop 6
lb_algo rr 使用轮询方式调度算法
lb_kind DR 使用 DR 直连模式
# persistence_timeout 50 这个是 nat 的必须做的,如果加上这个的话,就会持续链接这个
protocol TCP
real_server 192.168.0.198 80 {定义真实服务
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.0.199 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}

#/etc/init.d/keepalived start

因为要构建 keepalived 高可用集群,因此需要在 keepalived 备用节点上安装配置同样的服务。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101765p2.htm

二、haproxy 的安装与配置

#tar zxf haproxy-1.4.23.tar.gz

#cd haproxy-1.4.23

#find -name *.spec 发现 spec 文件,可以将源码包打压成 rpm

#yum install rpm-build -y 安装 rpm 包构建软件

#rpmbuild -tb haproxy-1.4.23.tar.gz 使用源码包构建 rpm 包

#cd /root/rpmbuild/RPMS/x86_64 生成的 rpm 包

#rpm -ivh *.rpm 安装 keepalived 的 rpm 包

# vim /etc/haproxy/haproxy.cfg
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen status_auth 192.168.0.103:8080 给监控界面做一个端口绑定,指定用户和密码
stats enable
stats uri /admin
stats auth user:passwd 定义监控页面的用户和密码
stats refresh 6

slisten ha_proxy 192.168.0.103:80 在 103 主机上定义真实主机(Real Server)
balance roundrobin
server inst1 192.168.0.198:80
server inst2 192.168.0.199:80

# vim /etc/rsyslog.conf
开启 tcp 或者 udp
$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log
#/etc/init.d/rsyslog restart

#/etc/init.d/haproxy start

web 负载均衡方案 haproxy 构建完毕!

访问 http://192.168.0.103 可以访问到 198 和 199 主机的内容

访问 http://192.168.0.103:8080 使用用户名和密码登陆可以查看链接状态

 

三、整合 keepalived 和 haproxy

# vim check_haproxy.sh 编写一个检测 haproxy 状态脚本
#!/bin/bash
/etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null
if [$? -ne 0] ;then
/etc/init.d/keepalived stop &> /dev/null
fi

# chmod +x check_haproxy.sh
#./check_haproxy.sh 在 haproxy 关闭时自动启动 haproxy

修改 keepalived 文件

# vim keepalived.conf
vrrp_script check_haproxy {
script “/opt/check_haproxy.sh”
interval 2
weight 2
}

virtual_ipaddress {
192.168.0.88 新的 VIP
}
track_script {
check_haproxy
}

# vim /etc/haproxy/haproxy.cfg
listen www.domain.com *:80 所以 IP 都可以访问(给本机 VIP 做解析)
cookie SERVERID rewrite
balance roundrobin
server app1_1 192.168.0.198:80 cookie app1inst1 check inter 2000 rise 2 fall 3
server app1_2 192.168.0.199:80 cookie app1inst2 check inter 2000 rise 2 fall 3

listen status_auth *:8080 使用任意客户端检测
stats enable
stats uri /admin
stats auth user:passwd 定义监控页面的用户和密码
stats refresh 6

# /etc/init.d/keepalived restart

# ip addr show 查看主 keepalived 已经加载了 VIP 资源
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:9c:c9:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 scope global eth0 103 为主节点 IP
inet 192.168.0.88/32 scope global eth0 88 为 VIP

# /etc/init.d/haproxy status 查看状态为 running

注意:构建 keepalived+haproxy 高可用负载均衡集群必须在两个节点分别配置两个服务,并且保证相同的配置和服务,在备用节点上注意将权值修改小些。

测试高可用和负载均衡:

任何一个主机的 keepalived 出现故障,另外一个主机会接管相应的资源。

任何一个 haproxy 出现故障,客户仍然可以访问后端 Real Server 提供的服务。

keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5 层交换。Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web 服务器。HAProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。…

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Keepalived+Haproxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

Keepalived+haproxy 构建 web 高可用负载均衡系统

本章将使用 keepalived 做为高可用集群调度用户请求,并且检测 haproxy 负载均衡器的状态,实时地完成节点的动态调整。

keepalived 原理图:

Keepalived+Haproxy 构建高可用负载均衡集群

Layer3:Keepalived 使用 Layer3 的方式工作式时,Keepalived 会定期向服务器群中的服务器

发送一个 ICMP 的数据包(既我们平时用的 Ping 程序), 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将 它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。在本文 中将采用这种方式。

Layer4: 如果您理解了 Layer3 的方式,Layer4 就容易了。Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是 80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中剔除。

Layer5:Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

haproxy 工作机制:

Keepalived+Haproxy 构建高可用负载均衡集群

HAProxy 相比 LVS 的使用要简单很多,功能方面也很丰富。当 前,HAProxy 支持两种主要的代理模式:”tcp” 也即 4 层(大多用于邮件服务器、内部协议通信服务器等),和 7 层(HTTP)。在 4 层模式 下,HAProxy 仅在客户端和服务器之间转发双向流量。7 层模式下,HAProxy 会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应 (response) 里指定内容来控制协议,这种操作要基于特定规则。

系统环境:CentOS6.4

iptables 关闭

selinux is disabled

一、keepalived 的安装与配置

#tar zxf keepalived-1.2.7.tar.gz

#cd keepalived-1.2.7

#./configure –prefix=/usr/local/keepalived 指定路径编译

其中可能安装一下依赖包:

openssl-devel popt-devel libnl-devel

# make && make install 执行 make 安装

# cd /usr/local/keepalived/ 默认主目录,存在 sbin/ 和 etc/ 目录

# ln -s /usr/local/keepalived/sbin/keepalived /sbin/ 便于管理 keepalived,将文件链接

# ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# vim /etc/keepalived/keepalived.conf
root@localhost
}
notification_email_from keepalived@server3.example.com 通知收件人地址
virtual_router_id 88 定义虚拟路由 id
priority 100 定义主节点(权值决定)
virtual_ipaddress {定义 VIP
192.168.0.88
}
}

使用 lvs+keepalived 时使用一下配置
virtual_server 192.168.0.88 80{定义虚拟服务
delay_loop 6
lb_algo rr 使用轮询方式调度算法
lb_kind DR 使用 DR 直连模式
# persistence_timeout 50 这个是 nat 的必须做的,如果加上这个的话,就会持续链接这个
protocol TCP
real_server 192.168.0.198 80 {定义真实服务
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.0.199 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}

#/etc/init.d/keepalived start

因为要构建 keepalived 高可用集群,因此需要在 keepalived 备用节点上安装配置同样的服务。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101765p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计7673字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中