热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LinuxLVS+Keepalive+HAproxy集群部署

一.部署思路用户访问的域名都解析到LVS的VIP上,LVS做四层负载均衡,负载分配用户的请求至不同的HAproxy代理服务器上,HAproxy再对用户的请求做7层负载均衡,将不同的

一. 部署思路

用户访问的域名都解析到LVS的VIP上,LVS做四层负载均衡,负载分配用户的请求至不同的HAproxy代理服务器上,HAproxy再对用户的请求做7层负载均衡,将不同的链接根据ACL规则分配到不同的真实Apache服务器上。


二. 组网规划

1. 组网拓扑图

技术分享图片


2. 地址规划




















































































节点类型IP地址规划主机名地址类型网卡
LVS-MASTER192.168.31.11/24study01.linux.com真实地址eth0
LVS-BACKUP192.168.31.12/24study02.linux.com真实地址eth0
LVS-VIP192.168.31.10/32-虚拟地址eth0
HAproxy01192.168.31.13/24study03.linux.com真实地址eth0
HAproxy01192.168.31.10/32study03.linux.com虚拟地址lo:0
HAproxy02192.168.31.14/24study04.linux.com真实地址eth0
HAproxy02192.168.31.10/32study04.linux.com虚拟地址lo:0
apache01192.168.31.15/24study05.linux.com真实地址eth0
apache02192.168.31.16/24study06.linux.com真实地址eth0
apache01192.168.31.17/24study07.linux.com真实地址eth0

3. 测试域名规划

域名注册两个: static.test.com 和 study.test.com



  • static.test.com---->此域名请求被负载到apache 192.168.31.15

  • 路径里带jpg后缀的被分配到apache 192.168.31.15

  • 其他的所有被分配到apache 192.168.31.16


三. 部署LVS+keepalive

1. LVS-MASTER部署

yum -y install gcc-* glibc-* *c++* openssl-devel #安装开发环境
yum -y install ipvsadm #安装LVS
yum -y install keepalived #安装keepalive

! Configuration File for keepalived
global_defs {
notification_email {
wang_zengyi@126.com #设置接收报警邮件,可以设置多个,每行一个,前提是需要开启本机的sendmail服务
}
notification_email_from 647956023@qq.com #设置邮件的发送邮箱
smtp_server 121.51.19.175 #设置SMTP服务器地址
smtp_connect_timeout 30 #设置连接SMTP服务器的超时时间
router_id LVS_DEVEL #表示运行keepalive服务器的一个标识,发邮件时显示在邮件主题中的信息
}
vrrp_instance VI_1 { #VRPP实例部分
state MASTER #指定VRRP角色
interface eth0 #指定HA监测的网络接口
virtual_router_id 51 #VRRP实例ID,同一组VRRP必须试用同样的ID
priority 100 #VRRP优先级,越大越优先
advert_int 1 #心跳报文通告间隔
authentication {
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass 1111 #设置验证密码,同一组VRRP的主备必须是用相同的密码和类型
}
virtual_ipaddress {
192.168.31.10 #设置VIP
}
}
virtual_server 192.168.31.10 80 { #设置对用户提供服务的虚拟IP和端口
delay_loop 6 #设置运行情况检查,时间是秒
lb_algo rr #设置负载调度算法
lb_kind DR #设置LVS实现负载均衡的机制
nat_mask 255.255.255.0
#persistence_timeout 50 #会话超时时间,单位是秒,超时后会分发到下一个节点
protocol TCP #指定协议类型,有TCP和UDP
real_server 192.168.31.13 80 { #指定后端真实服务器地址和端口
weight 1
TCP_CHECK {
connect_timeout 3 #表示3秒无响应超时
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
}
}
real_server 192.168.31.14 80 { #指定后端真实服务器地址和端口
weight 1
TCP_CHECK {
connect_timeout 3 #表示3秒无响应超时
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
}
}
}

2. LVS-BACKUP部署

yum -y install gcc-* glibc-* *c++* openssl-devel #安装开发环境
yum -y install ipvsadm #安装LVS
yum -y install keepalived #安装keepalive

LVS-BACKUP的配置文件和主配置文件只有以下部分不同:
1. 角色改为BACKUP。
2. priority改的要低于主机的优先级。

四. 部署HAproxy

  • 所有的haproxy的部署方法和配置完全相同,详细见如下内容:

yum -y install haproxy
#以下内容实际环境中可以编写成脚本
ifconfig lo:0 192.168.31.10 netmask 255.255.255.255 up
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

#haproxy的配置
#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2 #全局的日志配置,设置接收日志的地址和日志设备
chroot /var/lib/haproxy #指定haproxy程序的更改根目录
pidfile /var/run/haproxy.pid #指定haproxy进程的PID文件,启动进程的用户必须有访问权限
maxconn 4000 #设置haproxy进程可接受的最大连接数,等同于ulimit -n
user haproxy #设置运行haproxy进程的用户,也可使用该用户的UID代替
group haproxy #设置运行haproxy进程的组,也可使用该组的GID代替
daemon #设置haproxy进入后台运行,这是推荐模式
nbproc 1 #设置haproxy可以启动的进程数,推荐这个数值要小于CPU内核数
#设置多个进程可减少每个进程任务队列,但可能导致系统崩溃
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http #haproxy运行模式,可以运行在TCP(四层)、HTTP(七层)、health模式
log global #log配置使用global定义
option httplog #启用haproxy的日志记录http请求
option dontlognull
option http-server-close #客户端完成请求后,haproxy将主动关闭TCP连接
option forwardfor except 127.0.0.0/8 #如果后端服务器要获得用户的真实IP就要配置此参数
option redispatch #此参数用于COOKIE保持的环境中,当后端服务器故障,用户会话将被强制指向到另一台健康服务器
retries 3 #设置连接后端服务器的失败重试次数
timeout http-request 10s
timeout queue 1m
timeout connect 10s #设置成功连接一台服务器的最长等待时间
timeout client 1m #设置连接客户端发送数据时最长等待时间
timeout server 1m #设置服务器回应客户端数据发送的最长等待时间
timeout http-keep-alive 10s
timeout check 10s #设置对后端服务器的检测超时时间
maxconn 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:80
acl url_static hdr_beg(host) -i static.
acl url_static path_end -i .jpg
use_backend static if url_static
default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 192.168.31.15:80 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 192.168.31.16:80 check

五. 部署apache服务器

#192.168.31.15 apache部署:
/etc/init.d/httpd restart
chkconfig --level 35 httpd on
echo "this is 192.168.31.15" > /var/www/html/index.html
echo "this is 192.168.31.15 test picture" > /var/www/html/tiger.jpg
#192.168.31.16 apache部署:
/etc/init.d/httpd restart
chkconfig --level 35 httpd on
echo "this is 192.168.31.16" > /var/www/html/index.html
echo "this is 192.168.31.16 test picture" > /var/www/html/tiger.jpg
#192.168.31.17 apache部署:
/etc/init.d/httpd restart
chkconfig --level 35 httpd on
echo "this is 192.168.31.17" > /var/www/html/index.html
echo "this is 192.168.31.17 test picture" > /var/www/html/tiger.jpg

六. 启动集群

# LVS主和备都使用如下方法启动
chkconfig --level 35 keepalived on
/etc/init.d/keepalived restart
chkconfig --level 35 ipvsadm on
/etc/init.d/ipvsadm restart
#HAproxy都使用如下方法启动
chkconfig --level 35 haproxy on
/etc/init.d/haproxy restart

七. 测试集群负载效果

#如下测试内容符合HAproxy定义的规则,测试效果符合预期
MacBook-Pro:~ momo$ curl static.test.com
this is 192.168.31.15
MacBook-Pro:~ momo$ curl static.test.com
this is 192.168.31.15
MacBook-Pro:~ momo$ curl static.test.com
this is 192.168.31.15
MacBook-Pro:~ momo$ curl static.test.com/tiger.jpg
this is 192.168.31.15 test picture
MacBook-Pro:~ momo$ curl static.test.com/tiger.jpg
this is 192.168.31.15 test picture
MacBook-Pro:~ momo$ curl static.test.com/tiger.jpg
this is 192.168.31.15 test picture
MacBook-Pro:~ momo$ curl study.test.com
this is 192.168.31.16
MacBook-Pro:~ momo$ curl study.test.com
this is 192.168.31.16
MacBook-Pro:~ momo$ curl study.test.com
this is 192.168.31.16
MacBook-Pro:~ momo$
#高可用测试用、故障切换测试省略


推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
author-avatar
粗陶工作室
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有