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

Keepalived之Keepalived+LVS实现负载均衡

一、Keepalived与LVS简单工作原理了解1、Keepalived管理LVS负载均衡软件,Keepalived可以通过读取自身的配置文件,实现通过

一、Keepalived 与 LVS 简单工作原理了解

1、Keepalived 管理LVS负载均衡软件,Keepalived 可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使用LVS的应用更加简单方便了。

2、Keepalived 实现对LVS集群节点健康检查功能,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived 服务会自动将失效的节点服务器从LVS 的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响,并且故障恢复时,又可以加到正常转发队列中。

3、Keepalived 作为系统网络服务的高可用功能,可以实现任意两台主机之间的故障转移和自动切换。

4、LVS 负责数据转发,基于第层网络传输层,使用ARP协议,修改目的地MAC地址,实现数据的高速转发,相对于NGINX的第七层转发,有一定的优势。

二、实现拓扑图

Keepalived 之 Keepalived + LVS 实现负载均衡

三、实验步骤

1、分别设置好各台主机的IP地址,如:

主机-负载均衡:10.3.150.196
备机-负载均衡:10.3.150.197
web01:10.3.150.198
web02:10.3.150.199

2、在两台web主机里,分别设置绑定 Local Loopback IP地址(VIP:10.3.150.200)

[root@web01 ~]# vi /etc/init.d/realserver

#!/bin/bash
#
# realserver
#
# chkconfig: 2345 24 76
# description: realserver ipSNS_VIP=10.3.150.200
/etc/rc.d/init.d/functions
case "$1" in
start)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;
stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;
*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0

[root@web01 ~]# chmod +x /etc/init.d/realserver
[root@web01 ~]# chkconfig --add /etc/init.d/realserver
[root@web01 ~]# chkconfig realserver on
[root@web01 ~]# /etc/init.d/realserver start

3、检查web服务器绑定local loopback ip 是否正常。

[root@web01 ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:50:56:AA:51:29 inet addr:10.3.150.198 Bcast:10.3.150.255 Mask:255.255.255.0inet6 addr: fe80::250:56ff:feaa:5129/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:52847 errors:0 dropped:0 overruns:0 frame:0TX packets:3322 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:4160205 (3.9 MiB) TX bytes:272504 (266.1 KiB)lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:80 errors:0 dropped:0 overruns:0 frame:0TX packets:80 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:5200 (5.0 KiB) TX bytes:5200 (5.0 KiB)lo:0 Link encap:Local Loopback inet addr:10.3.150.200 Mask:255.255.255.255UP LOOPBACK RUNNING MTU:65536 Metric:1

4、配置主机-负载均衡的keepalived.conf配置文件

! Configuration File for keepalivedglobal_defs {notification_email {345619885@qq.com
}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id lb01
}vrrp_instance VI_1 {state MASTER #指定Keepalived角色,MASTER为主interface eth1 #Keepalived 绑定的网络virtual_router_id 53 #虚拟路由编号,主备必须要一致priority 150 #定义优先级,数字越大,优先级越高advert_int 1authentication {auth_type PASSauth_pass 3333}virtual_ipaddress {10.3.150.200/24 dev eth1 label eth1:1 #定义虚拟IP(VIP)为10.3.150.200 }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.3.150.200 80 { delay_loop 6 # 设置健康检查时间,单位是秒 lb_algo wrr # 设置负载调度的算法为wlc lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式 nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 10.3.150.198 80 { # 指定real server1的IP地址weight 3 # 配置节点权值,数字越大权重越高 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.3.150.199 80 { # 指定real server2的IP地址weight 3 # 配置节点权值,数字越大权重越高 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }
}

5、配置备机-负载均衡的keepalived.conf配置文件

与主机-负载均衡一致,只需修改以下两处:
1、state MASTER 改为 state BACKUP
2、priority 150 改为 priority 100

6、启动两台负载均衡的keepalived服务

[root@lb01 keepalived]# service keepalived start在主机-负载均衡器上,查看是否获取了VIP(10.3.150.200)
[root@lb01 keepalived]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:50:56:AA:B1:25 inet addr:10.3.150.196 Bcast:10.3.150.255 Mask:255.255.255.0inet6 addr: fe80::250:56ff:feaa:b125/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:89077 errors:0 dropped:0 overruns:0 frame:0TX packets:14028 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:7242746 (6.9 MiB) TX bytes:982746 (959.7 KiB)eth1:1 Link encap:Ethernet HWaddr 00:50:56:AA:B1:25 inet addr:10.3.150.200 Bcast:0.0.0.0 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:80 errors:0 dropped:0 overruns:0 frame:0TX packets:80 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:5120 (5.0 KiB) TX bytes:5120 (5.0 KiB)

四、验证故障切换是否成功

1、访问VIP,是否能正常访问得到web01和web02的内容(web01和web02为不一致的静态文件内容,以方便区别,检查是否生效)。

2、停止web01服务,访问VIP,看是否还能正常访问web02的内容,同时又不会提示web01无法访问的错误信息,因LVS能做端口健康检查。

3、启动web01,访问VIP,是否可以同时访问web01和web02的内容。

4、停止lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到备机-负载负载器的主机上,同时访问VIP,是否正常访问web01与web02的内容。

5、启动lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到主机-负载均衡器,同时访问VIP,是否能正常访问web01与web02的内容。

转:https://blog.51cto.com/12965094/2157891



推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 从U ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
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社区 版权所有