冬枭

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

1. 负载均衡技术简介 2

1.1 负载均衡类型3

1.2 LVS简介4

1.3 Keepalived简介5

2. 负载均衡搭建主要步骤 6

2.1 LVS+Keepalived的负载均衡系统搭建6

    2.1.1 准备虚拟机..................................................................................................6

    2.1.2 配置两台webserver...............................................................................7

    2.1.3 web里面写入内容...............................................................................11

    2.1.4 启动httpd服务:编写RS服务器的自动响应程序..................................14

    2.2.1 下载keepalived.........................................................................................15

    2.2.2 配置主机和备机.......................................................................................17

    2.2.3 启动keepalived程序.................................................................................17

   

 

   3.测试负载均衡系统功能,以及其对服务器的检测和高可用性..........................................18

    3.1下载ipvsadm 查看服务器之间的连接状态.................................................18

    3.2 查看连接状态 ipvsadm -ln......................................................................... 19

    3.3 F5刷新,会有下一台服务器轮询..........................................................19

 

4. 总结 20

 


1. 负载技术简介

负载均衡(图1),英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

 

 

1.1 负载均衡类型

负载均衡可以采用硬件设备(例如常常听见的 F5),也可以采用软件负载
商用硬件负载设备成本通常较高(一台几十万甚至上百万),所以一般 情况下会采用软件负载
软件负载解决的两个核心问题是:选谁、转发,其中最著名的是 lvs

DNS负载均衡

这种是属于较早出现的技术,其利用域名解析实现负载均衡,在DNS服务器配置多个A记录,这些A记录对应的服务器构成集群互相减轻服务压力。大型网站总是部分使用DNS解析,作为第一级负载均衡。

 二层负载均衡(MAC

二层负载均衡又叫链路层负载均衡,其对应OSI模型的第二层,基于MAC地址进行服务分发。

三层负载均衡(IP

三层对应OSI模型的网络层,三层负载均衡提供一个虚拟IP对外提供服务,当请求进入负载均衡器后转发至集群中某个真实IP,这里的虚拟IP可能是一个外网IP,而真实IP可能是内网IP

四层负载均衡(TCP

OSI模型的四层主要协议是TCP/UDP,其特点是在IP负载均衡的基础上基于IP及端口号来进行负载均衡。

七层负载均衡(HTTP

对应OSI模型的应用层, 基于虚拟的URL或其他应用层信息(例如:浏览器类别、语言)的负载均衡。

混合负载均衡及软件

在实际中我们可以混用多种技术。我们最常见的四层和七层负载均衡,如果没有第四层的基础也是做不到七层负载均衡的。

实现四层负载均衡的软件有:F5LVSNginxHAProxy

实现七层负载均衡的软件有:HAProxyNginxApacheMySQL Proxy

 

 

1.2 LVS简介

 英文全称是 Linux Virtual Server,即 Linux 虚拟服务器
由 章 文 嵩 博 士 发 起 的 自 由 软 件 项 目 , 它 的 官 方 站 点 是 www.linuxvirtualserver.org
• Linux2.4 内核以后,LVS 已经是 Linux 标准内核的一部分
可以将请求分发给后端真实服务器处理
有许多比较著名网站和组织都在使用 LVS 架设的集群系统,例如:Linux 的门户网站(www.linux.com)、向 RealPlayer 提供音频视频服务而闻 名的 Real 公司(www.real.com )、全球最大的开源网站 (sourceforge.net)等

 

1.Load Balancer:这是LVS的核心部分,它好比我们网站MVC模型的Controller。它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。该层由一台或者几台Director Server组成。

2.Server Array:该层负责具体业务。可有WEB Servermail ServerFTP ServerDNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。

3.Shared Storage:主要是提高上一层数据和为上一层保持数据一致。.负载均衡机制前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。LVS的通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IPVIP)。用户访问VIP,到达Director ServerDirector Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real ServerReal Server如果返回给客户端数据等等。IPVS为此有三种机制:

1.VS/NAT(Virtual Server via Network Address Translation),即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real ServerReal Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

2.VS/TUNVirtual Server via IP Tunneling,IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。

3.VS/DRVirtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的

1.3keepalived是什么

keepalived软件起初是专门为LVS负载均衡软件而设计,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能,因此,keepalived除了能够管理LVS软件ipvsadm外,还可以作为其它服务(例如:NginxHAProxyMySQL等)的高可用解决方案软件 keepalived软件主要使用过VRRP协议实心高可用功能;VRRPVirtual Route Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行 所以,Keepalived一方面具有配置管理LVS的功能,同时还具有LVS下面节点进行健康检查的功能。
Keepalived服务的三个重要功能
1)管理LVS负载均衡软件ipvsadm
2)实现LVS集群节点的健康检查
3)作为系统网络服务的高可用性

 

2 负载均衡搭建主要步骤

2.1KeepalivedLVS搭建

2.1.1准备四台虚拟机

1lvs(主机)配置 ip:192.168.43.43 命名为huangxiaodon main

 


1lvs(备机)配置 ip: 192.168.43.32 命名为huangxiaodon prepare

 

2webserver —配置 ip:192.168.43.180 192.168.43.92 分别命名为huangxiaodon1huangxiaodon2

 

 

 

2.1.2配置两台websever

1先用root用户登录

 

  1. 下载httpd

tar -zxf httpd-2.4.46.tar.gz

cd httpd-2.4.46

./configure --prefix=/usr/local/apache2

 

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gztar -zxf apr-1.4.5.tar.gz  

cd  apr-1.4.5  

./configure --prefix=/usr/local/apr  

make && make install

编译

 

下载依赖库

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gztar -zxf apr-util-1.3.12.tar.gz

cd apr-util-1.3.12

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/make && make install

 

 

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zipunzip -o pcre-8.10.zip

cd pcre-8.10

./configure --prefix=/usr/local/pcremake && make install

下载

 

编译

 

结果

 

 

cd httpd-2.4.46

./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-ssl --with-ssl=/usr/local/opensslmake && make install

再进入编译

 

 

 

如果出现错误

 

解决办法

apt-get install openssl

 

下载完成后

 

apt-get install libssl-dev

 

下载完成后

 

完成后再执行一次

 

成功

 

 

 

 

 

 

2.1.3 web里面写入内容

编写html文件

要找到index.html文件所在的位置,一般是在usr/local/httpd下,每个都不相同

 

 

成功后(同理,第二台webserver也如此配置)

 

 

2.1.4 编写RS服务器的自动化响应程序

分别在两台web服务器上做相同的操作

创建一个自动化服务

 

写入代码

#!/bin/bash  

#description : start realserver  

SNS_VIP=192.168.43.100 #定义了一个VIP变量,必须跟真是服务在一个网段

#我这里定了VIP192.168.43.100

 

/etc/rc.d/init.d/functions

case "$1" in

start)

echo "start LVS of REALServer"  

/sbin/ifconfig lo:0 $SNS_VIP  netmask 255.255.255.255 up  #增加一个本地路由 lo:0

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

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"  

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 {start|stop}"  

exit 1

esac

 

执行chmod 777 /etc/init.d/realserver

ls -l /etc/init.d/realserver

service realserver start

 

 

成功后

 

另一台webserver重复上述操作

 

 

 

 

lvs主机上

下载keepalived地址:http://www.keepalived.org/download.html

解压安装:

tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/

 

(需要安装一个软件包)

apt-get install openssl

 

apt-get install libssl-dev

 

cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

 

 

make && make install

编译

 

安装成功

 

找到keepalived.conf文件修改配置

 

 

下载安装daemon

因为安装配置不同,以及一些文件配置和默认的不同,所以需要修改一些参数配置

打开/usr/local/keepalived/etc/sysconfig

 

# Options for keepalived. See `keepalived --help' output and keepalived(8) and

# keepalived.conf(5) man pages for a list of all options. Here are the most

# common ones :

#

# --vrrp               -P    Only run with VRRP subsystem.

# --check              -C    Only run with Health-checker subsystem.

# --dont-release-vrrp  -V    Dont remove VRRP VIPs & VROUTEs on daemon stop.

# --dont-release-ipvs  -I    Dont remove IPVS topology on daemon stop.

# --dump-conf          -d    Dump the configuration data.

# --log-detail         -D    Detailed log messages.

# --log-facility       -S    0-7 Set local syslog facility (default=LOG_DAEMON)

#

 

#KEEPALIVED_OPTIONS="-D"

KEEPALIVED_OPTIONS="-D -S 0"

 

再打开etc/init.d 然后gedit keepalived 改成如下图所示

具体区别在于,要找对应的文件和路径,然后改成相应的路径

如下图所示,如果运行成功  打印出这个echo -n $"Starting $prog:    "

# Source function library

. /etc/apparmor/functions

 

# Source configuration file (we set KEEPALIVED_OPTIONS there)

. /usr/local/keepalived/etc/sysconfig/keepalived

 

运行成功后

 

至此,main主机配置完毕

 

以下配置备机

重复上述操作,直到配置为止,配置如图所示

 

service keepalived start

 

 

 

其他操作和主机相同

 

到此LVS+keepalived负载均衡系统搭建完成

进行测试阶段

3.测试负载均衡系统功能,以及其对服务器的检测和高可用性

3.1下载ipvsadm

下载ipvsadm在主机和备机上面

apt-get install ipvsadm

输入以下命令,然后用ipvsadm -L -n查看

ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.180:80 -g -w 1

ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.92:80 -g -w 1

ipvsadm -L -n

 

 

查看路由是否启动转发功能

 

 

查看主服务器ip是否拥有vip

 

window连续下按F5,页面会变动

 

 

 

 

4.总结

1.从一开始准备四个虚拟机的时候遇到很多问题,四个虚拟机都是同个虚拟机,然后在打开的时候发现有一些没有网络显示如下的错误

 

后面修改了mac地址才成功让四个虚拟机连上网络。

  1. 在下载httpd的时候又遇到permission 权限问题,耽误了很长时间,一直用sudo命令去执行,后面改成了root下来执行,su root 登录,然后才成功的下载httpd,并且下载的是最新版本的。后面发现 编译不了,找了网上的资料,还要继续下载依赖库,下载完后才能成功打开Its work界面,打开界面之后修改Index.html,因为下载的时候位置没有注意,找到了其他文件夹下面的index.html修改,然后修改了很久,才发现问题。最后找到正确的文件,修改成功
  2. 编写RS自动化响应过程参考了一些网上的编写方式,修改了对应webserverip地址其中有一些地方是比较重点理解的,抑制ARP抢包的设置,在后面配置主机和备机过程之中,如果没办法轮询,可能的原因之一就是ARP出现问题,另外也有可能是防火墙,keepalived.conf出现问题,MASTER还有BACKUP,还有权重,这些都需要重点关注

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

 

  1. 在配置主机备机的时候,keepalived的下载后再配置修改keepalived.conf的时候出现很多问题,因为我ubuntu的原因,functions用于提供一些基础函数的文件夹放在其他途径,所以还需要找到对应的路径去修改,在,也需要修改功能,原本是-D”,屏蔽后修改,另外还有一些小问题,解决之后 service keepalived start成功运行

5.下载ipvsadm之后,直接使用ipvsadm无法查看连接状况,还需要执行以下命令。

ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.180:80 -g -w 1

ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.92:80 -g -w 1

ipvsadm -L -n

然后可以查看在主机之中有vip地址192.168.43.100,在备机没有,将主机keepalived关闭,备机重新打开,会有vip地址,可以验证负载均衡的原理。

6.总结,这次实验花费的时间比较多,很大程度加强了我对linux操作系统的了解,也加深了学习的兴趣,在这个过程之中很多放了很多细微的错误,导致无法得到想要的结果,后面会更加注意细节。

 

posted on 2023-02-02 09:53  冬枭  阅读(42)  评论(0编辑  收藏  举报