LVS-DR+keepalived实现www/mysql服务器负载均衡实验

简介:
前言:在上次用LVS+heartbeat+Ldirectord实现了www服务器负载均衡,这次用LVS+keepalived来实验,你为发现它实现起来比前者简单的多,只需要配置一个文件keepalived.conf文件,就可以了。如果不知道什么是keepalived那么去 http://www.keepalived.org/看看。
实验环境:
(1)realserver为ubserver2,ubserver3,IP分别为192.168.3.20和192.168.3.30
(2)主从负载均衡器为ubserver5,ubserver6; IP分别为192.168.3.50和192.168.3.60;虚拟IP为192.168.3.100,这4台机器都只装一块网卡
(3)操作系统为ubuntu server 10.4
1,主从负载均衡器为ubserver5,ubserver6的设置
安装ipvsadm及keepalived
    #sudo apt-get install ipvsadm
    #sudo apt-get install keepalived
    在/etc/keepalived下建立keepalived.conf文件
#sudo vim keepalived.conf
主负载均衡器为ubserver5 设置如下:
 
*:把配置中的所有80,替换成3306,就是对mysql的负载均衡
以下是对配置文件的解释:
1,在全局设置中
  routed_id 运行keepalived的机器的一个标识,这里是ubserver5
2,为什么要使用同步组vrrp_sync_group vg1{}?
  当机器有两个网段,一个是内网,一个是外网,每个网段开启一个vrrp实例,若vrrp配置为检查内网,那么当外网出现问题时,vrrp认为自己仍然是健康的,就不会发送MASTER与BACKUP的切换,采用同步组就是解决这个问题。这里我们只有一个vrrp的实例VIP_1。
3,什么是vrrp实例?
  就是表示在这台机器上开启了vrrp协议,可以在每个interface上开启一个实例。比如:要开启两个实例,就在机器上安装两块网块,每个网卡上开启一个vrrp实例,一个检查内网,一个外网。
  state MASTER/BACKUP 指定实例也就是一台机器的初始状态,两台机器(router)启动后,会根据priority的值竞选MASTER,高的为MASTER;所以这里的state并不表示一直是MASTER或BACKUP。
  interface 开启VRRP协议的网卡
  virtual_router_id  是VRID标记,其值在0-255,VRID是虚拟路由器的标识。这里是51
  priority  其值高的为MASTER,MASTER要高BACKUP至少50(keepalived指南是这样讲的)
  virtual_ipaddress 虚拟地址 了解了keepalived工作机制,就知道为什么要这个虚拟地址了。
  authentication 设置认证,auth_type 认证方式有两种PASS和AH,auth_pass 认证的密码
  advert_int 检查间隔,默认1秒
4,LVS的配置,都会传递给IPVSADM作为参数
  lb_algo LVS的调度算法(rr|wrr|lc|wlc|lblc|sh|dh)
        lb_kind  LVS的模式(NAT|DR|TUN)
        persistence_timeout  同一会话保持时间
  protocol 使用协议TCP或UDP
       weight 权重 默认为1,0为失效
  TCP_CHECK  TCP方式的健康检查还有如下的检查方式HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
  connect_port 健康检查的端口
  connect_timeout 连接超时的时间
  nb_get_retry 重连次数
  delay_before_retry 重连时间间隔
修改/etc/sysctl.conf文件如下:
lvs-keepalived0-3
到此主负载均衡器为ubserver5就配置完成了,从负载均衡器为ubserver6在以上配置中只做相应的改动即可。
#sudo ipvsadm –L –n
lvs-keepalved0-4
2,真机ubserver2,ubserver3的配置
只需添加虚拟IP,修改/etc/sysctl.conf文件即可
#sudo ifconfig lo:0 192.168.3.100 netmask 255.255.255.0 broadcast 192.168.3.100 up
  #sudo route add –host 192.168.3.100 dev lo:0
/etc/sysctl.conf内容与负载均衡器为ubserver5的内容相同,只是如果网卡名不同时要注意修改。
*:在这两台机器安装mysql后,都新增一个用户testkeep,密码为password,拥有超级用户权限。用以下命令
#sudo mysql -uroot -p110
>grant all on *.* to  'testkeep'@'%'  identified by 'password';
>flush privileges;
在默认情况下,mysql只允许在本机登录,不允许在其它机器中登录,所以要做以下修改:
在/etc/mysql/my.cnf中找到 bind-address = 127.0.0.1 修改为 bind-address = 0.0.0.0
否则,在其它机器上远程连接时会无法登录,出现以下提示
MySQL Error Number 2003 Can't connect to MySQL server on 192.168.3.20(10060)
 
3,测试及模拟故障
(1)先在浏览器中查看 http://192.168.3.100是否可以轮流访问ubserver2,ubserver3的www服务器,看主从均衡器是否工作正常。能分别访问,则实验成功。
(2)把主负载均衡器为ubserver5关闭,看从负载均衡器为ubserver6能否接管其任务。查看ubserver6的日志文件
#sudo tail /var/log/messages
lvs-keepalived1
从中可以看出,刚开始ubserver6是backup状态,当ubserver5关闭后,ubserver6进入MASTER状态。再把ubserver5打开,看ubserver6能否由MASTER转变为BACKUP,若能,则实验目标达成。
(3) 测试MYSQL时,在其它机器远程登录多次,看能否轮流登录ubserver2,ubserver3上
#sudo mysql -h 192.168.3.100 -u testkeep -p password
为了方便判别是否登录到不同机器,在这两台机器中分别建立不同的数据库testno1,testno2;多次登录应该轮流访问到这两台机器上。经过实验按以上配置是可以的,也可以把mysql配置成集群http://xuchengji.blog.51cto.com/160472/330655(ubuntu server 8.04下mysql5.0集群实验),这样就实现了lvs-DR+keepalived+mysql5.0集群,经过实验,按照这两片文中的配置是成功的。
总结:用LVS+keepalived比较简单,不像LVS+heartbeat+ldirectord那样要配置4个文件,还要写脚本。这给以后的维护也带来方便。过程中在负载均衡器为ubserver5上用#sudo ipvsadm –L –n 看到与www服务器连接不上也就是权重为“0”,搞了好长时间原来是网卡设置的不对(在VMware workstation里做的实验)。有一本叫”keepalived权威指南“的PDF档,写的不错。


本文转自xcjgutong 51CTO博客,原文链接:http://blog.51cto.com/xuchengji/335595
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
11月前
|
域名解析 存储 缓存
阿里云服务器带宽怎么选?巧用负载均衡节省带宽费用技巧与注意事项参考
在选购阿里云服务器的过程中,设定合适的云服务器带宽是必不可少的一步。为了确保云服务器带宽的稳定性,用户通常会倾向于选择固定带宽,比如1Mbps、3Mbps、10Mbps或是20Mbps等规格。不过,在挑选云服务器带宽的过程中,众多用户常常会陷入一个两难的境地:怎样做才能在确保云服务器稳定运行的同时,又能够合理控制成本支出呢?本文将为大家介绍一种借助阿里云负载均衡产品来节省带宽费用的方法,以供参考借鉴。
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
1219 9
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
397 1
|
负载均衡 监控 算法
揭秘负载均衡的五大算法秘籍:让你的服务器轻松应对亿万流量,不再崩溃!
【8月更文挑战第31天】在互联网快速发展的今天,高可用性和可扩展性成为企业关注的重点。负载均衡作为关键技术,通过高效分配网络流量提升系统处理能力。本文介绍了轮询、加权轮询、最少连接及IP哈希等常见负载均衡算法及其应用场景,并提供Nginx配置示例。此外,还探讨了如何根据业务需求选择合适算法、配置服务器权重、实现高可用方案、监控性能及定期维护等最佳实践,助力系统优化与用户体验提升。
560 2
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
1112 6
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
612 2
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
526 3

热门文章

最新文章

推荐镜像

更多