今天直接开门见山了,直接说配置吧。首先介绍下我这的环境
如有问题,请联系我18500777133@sina.cn

IP 安装软件
192.168.1.7 lvs1+keepalived master角色
192.168.1.8 lvs2+keepalived backup角色
192.168.1.6 web1-Nginx
192.168.1.4 web2-Nginx

keepalived的vip是192.168.1.200,系统环境都是CentOs6.6 64位。
需要注意的是:
第一:确保client能够直接访问web服务器。因为在LVS-DR模式下web服务器回复client的时候,是直接回复给client的,不需要经过LVS,所以web服务器必须能够和client的网络互通。
第二,lvs服务器和web-server他们必须在同一个网段内,因为LVS转发包的时候,是直接修改了包目标的MAC地址,直接扔给了rs,基于MAC地址的修改是活动在OSI二层数据链路层的,工作在数据链路层的网络设备就是交换机了,所以必须在一个交换机下面,也就是一个局域网内。
第三为啥抑制real-server的ARP,是这样的,我们在DR模式要更改web-server的ARP的模式,arp_ignore为1是说只回答目标IP地址是来访网络接口本地地址的ARP查询请求,我们都在回环接口上配置了一个VIP,当arp模式更改以后,那么如果有谁在请求VIP的mac地址时,那么那些web-server就会回答arp广播报文了,只有lvs才会,如果没有更改arp模式,那么大家都喊我是VIP,这就乱套了。

LVS+keepalived的调整

我们首先在LVS1和LVS2上开启路由转发的功能

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #编辑这行
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

接下来安装keepalived,我这里采用yum安装,命令yum install keepalived的,安装完系统自带的yum源即可,安装完之后配置keepalived。
先看keepalived master的配置文件

[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {            # 全局设置notification_email {    # 设置报警邮件地址18500777133@sina.cn}notification_email_from Alexandre.Cassen@firewall.loc   # 设置邮件的发送地址router_id test-1         # 表示该台服务的ID
}
vrrp_sync_group vg_1 {               # vrryp 同步组,组成员是vrrp实例的名字。group {VI_1}
}vrrp_instance VI_1 {               # vrrp 实例state MASTER                   #master状态interface eth0virtual_router_id 51           # master和backup的id一致priority 100advert_int 1                   # master和backup之间的检测时间authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/32 dev eth0          # 设置虚拟IP    }
}virtual_server 192.168.1.200 80 {    # 设置虚拟服务器,ip端口以及花边号用逗号隔开delay_loop 5         # 设置运行情况检查时间,单位是秒lb_algo rr           # 负载算法,这里是rr表示轮询lb_kind DR           # LVS工作机制,这里是DR模式persistence_timeout 50    # 会话保持时间,单位是秒,这个选项对动态网页非常有帮助,为集群系统中的session共享提供了一个很好的解决方案,有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,知道超过这个会话的保持时间,需要注意的是,这个会话保持时间是最大无响应的超时时间,in other words,用户在动态页面50秒以内没有执行任何操作,那么接下来的操作会重新调度到另一个节点上。如果一直在操作则不会影响protocol TCP   # 有TCP,UDP,好像还有哦http。real_server 192.168.1.6 80  {     #设定真实服务器地址以及端口,weight 1         # 设置权重,数字越低,调度的比例越小。HTTP_GET {      #以http模式检查该服务器监控状态 url {    path /      # 检测的网页路径digest e3eb0a1df437f3f97a64aca5952c8ea0      # 采用genhash命令获取}connect_timeout 1   # 连接超时时间,connect_port 80      连接的端口,nb_get_retry 3        # 表示重试次数,delay_before_retry 1   # 表示重试间隔。}}real_server 192.168.1.4 80  {weight 1HTTP_GET {url {path /test.htmldigest 1181c1834012245d785120e3505ed169}connect_timeout 2connect_port 80nb_get_retry 3delay_before_retry 1}}
}

再看看keepalived的backup配置:

[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {18500777133@sina.cn}notification_email_from Alexandre.Cassen@firewall.locrouter_id test-2
}vrrp_sync_group vg_1 {group {VI_1}
}vrrp_instance VI_1 { state BACKUP            # backup状态interface eth0         virtual_router_id 51      # master和backup的id一致priority 90              #优先级比master低些advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/32 dev eth0}
}virtual_server 192.168.1.200 80 {delay_loop 5lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.6 80 {weight 1HTTP_GET {url {path /digest e3eb0a1df437f3f97a64aca5952c8ea0}connect_timeout 1connect_port 80nb_get_retry 3delay_before_retry 1}}real_server 192.168.1.4 80  {weight 1HTTP_GET {url {path /test.htmldigest 1181c1834012245d785120e3505ed169}connect_timeout 2connect_port 80nb_get_retry 3delay_before_retry 1}}}

我们这会用genhash来获取web服务 url的校验码:

[root@localhost ~]# genhash -s 192.168.45.128 -p 80 -u /
MD5SUM = e3eb0a1df437f3f97a64aca5952c8ea0         # 把这个校验码放在keepalived的配置文件即可。

配置完后,暂且不着急启动keepalived的服务。我们先行配置web服务器。

Web服务器的调整

两台web服务器都做同样的操作
首先更改sysctl.conf的配置文件。命令如下:

root@leo-virtual-machine:~# cat /etc/sysctl.conf
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
root@leo-virtual-machine:~# sysctl -p   #使其刚才的配置立即生效

添加虚拟IP以及路由,命令如下:

root@leo-virtual-machine:~# ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200 up
@root@leo-virtual-machine:~# route add -host 192.168.1.200 dev lo:0         #先不添加这路由,如果出现无法访问的时候再添加也不迟 

个人建议不要忘记在rc.local里面写入增加VIP的添加命令,省去开机后人工配置的麻烦:

@root@leo-virtual-machine:~# cat /etc/rc.local
ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
route add -host 192.168.1.200 dev lo:0

完成之后,后端启动httpd服务

启动keepalived的服务

在master服务器上启动

[root@localhost ~]# service  keepalived start
[root@localhost ~]# tail /var/log/messages -f     # 查看keepalived的日志,确保服务启动正常
'''
Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Using LinkWatch kernel netlink reflector...
Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Activating healthchecker for service [192.168.1.6]:80   # 后端real-server校验成功,可以提供服务
Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Activating healthchecker for service [192.168.1.4]:80   # 后端real-server校验成功,可以提供服务
Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Transition to MASTER STATE        # 设置本机为master角色
Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Group(vg_1) Syncing instances to MASTER state
Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Entering MASTER STATE
Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) setting protocol VIPs.    #设置VIP到本机上
Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.200     [root@localhost ~]# ip a|grep 'inet 'inet 127.0.0.1/8 scope host loinet 192.168.1.7/24 brd 192.168.1.255 scope global eth0   inet 192.168.1.200/32 scope global eth0    # VIP已经在了。
You have new mail in /var/spool/mail/root

在backup以同样的命令启动keepalived的,测试负载功能和高可用功能。

检测服务是否可以高可用以及负载均衡

1 在keepalived的master上停止keepalived的服务,模拟服务器宕机啦。等2秒后,到keepalived的backup服务器上查看VIP是否漂移过去。此时用浏览器继续访问192.168.1.200,看web服务器能够正常响应。且注意网页,看是不是负载均的效果(根据权重,权重高的服务提供的网页次数多。)

2 在第一步的基础上,我们在keepalived的master上重新启动keepalived的服务,等待3秒后,看VIP是否正常切回,切回后检测web服务器是否可用。

转载于:https://www.cnblogs.com/liaojiafa/p/6087276.html

高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案相关推荐

  1. keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...

    前言:初期应用较小,一般以单机部署为主,即可满足业务的需求,随着业务的不断扩大,单机部署的模式无法承载这么大的业务量,需要进行服务集群化的部署,本文主要介绍服务器Tomcat多实例部署,搭载Keepa ...

  2. LVS+keepalived 实现高可用与负载均衡实施方案

    LVS+keepalived 实现高可用与负载均衡实施方案 <Alvin-zeng:孤独0-1> 目录 一.安装LVS1 1.1.环境IP描述:1 1.2.所需软件2 1.3.安装步骤主备 ...

  3. keepalived高可用+nginx负载均衡

    keepalived高可用+nginx负载均衡 1.IP地址规划 hostname ip 说明 KN01 10.4.7.30 keepalived MASTER节点 nginx负载均衡器 KN02 1 ...

  4. keepalived+lvs实现高可用的负载均衡

    ############################################### keepalived keepalived+lvs实现高可用的负载均衡 测试 ############# ...

  5. 使用pgpool-ii 搭建postgresql 高可用、负载均衡架构

    pgpool有很多功能,其中最重要的我觉得是如下几个:提供连接池(负载均衡模式),复制模式(能通过pgpool分发sql,因此是基于sql语句的分发复制),主备模式(依赖其他的复制,如snoly和流复 ...

  6. 使用MySQL Router实现高可用、负载均衡、读写分离

    目录 一.MySQL Router简介 1. 功能 2. 架构 3. 使用 二.安装配置 三.自动失败切换 四.负载均衡 五.读写分离 六.多实例 1. 环境 2. 配置文件 3. 功能测试 参考: ...

  7. nginx+keepalived 高可用兼负载均衡集群

    Nginx是一个高性能的web服务器,同时也是一个优秀的反向代理服务器,本文利用两台Dell R720 构建一个高可用兼负载均衡的Linux web集群. 原理 通过nginx分别搭建两个web服务器 ...

  8. 闲谈高可用与负载均衡

    闲谈高可用和负载均衡 高可用集群和负载均衡集群想必大家或多或少都听说过,但是很多人往往把这两个搞混在一起,不加区分地使用这两个概念.虽然说很多负载均衡的设备有着高可用的特性,或者高可用的机器使用着负载 ...

  9. 高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)

    第一章:HAproxy简介及安装配置 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 HAproxy简 ...

最新文章

  1. 2015 年你在科研上有哪些值得分享的进展和感悟?
  2. 可以在Silverlight中使用的,支持定时自动回收的缓存类(C# 代码)
  3. 安卓基础之读取联系人的姓名和电话
  4. ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
  5. 新开通博客园,纪念一下。
  6. 如何限制浏览器使用_论如何优雅地使用chrome 浏览器
  7. What is Freeview Play
  8. Java click传递变量,Java-OnClickListener中的最终变量要求
  9. 【Python】Python的urllib模、urllib2模块的网络下载文件
  10. aiml php,基于 AIML 的 PHP 聊天机器人
  11. 使用pexpect报错could not shell prompt(received: ‘‘, excepted: ‘\\[PEXPECT\\][\\$\\#]‘)
  12. Google IO 2018开发者大会:Android P
  13. linux、linux虚拟机相关
  14. 美团智能支付背后的前端工程师
  15. 火影忍者中的天才七忍者
  16. php7.0的新特性
  17. html图片代码DWCS5,Dreamweaver cs5网页怎么添加图片
  18. 遇到问题---maven---启动项目出现出现 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoa
  19. 高端全自动化卷纸机成功使用了默孚龙导电滑环
  20. 开发工具:2022个人开发工具清单,你都用过吗?

热门文章

  1. c语言windows api编程,windows API编程学习
  2. jax ws ri 生成java类_JAX-WS(一)之使用wsgen从Java创建简单的WebService
  3. form表单中,file选择图片后预览
  4. javascript 自定义类型
  5. uniapp 页面渲染完成
  6. Windows 平台的 Markdown 编辑器 : Typora
  7. mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别
  8. android 去空字符串,android – TextUtils.isEmpty()方法为空字符串返回false
  9. vue 固定div 滚动_vue移动端 导航吸顶(固定定位)页面滚动出现抖动
  10. amd一点也不yes_A粉的狂欢,AMD显卡也翻身了,3A平台不再是笑话了,AMD YES!