阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

负载均衡LVS—ipvsadm应用详解

131次阅读
没有评论

共计 9609 个字符,预计需要花费 25 分钟才能阅读完成。

负载均衡 LVS—ipvsadm 应用详解

环境:64 位 CentOS 6.4

1、在 director 上安装 ipvsadm 工具(这里使用 RPM 包)

// 挂载光盘,搜索 ipvsadm 工具安装包

[root@linuxidc ~]# mount /dev/cdrom /media/cdrom/

[root@linuxidc ~]# cd /media/cdrom/Packages

[root@linuxidc Packages]# ll |grep ipvsadm

// 安装 ipvsadm 工具

[root@linuxidc Packages]# yum install ipvsadm-1.25-10.el6.x86_64.rpm

2、ipvsadm 的相关参数和用法

// 使用 man ipvsadm 或 ipvsadm –help 查看 ipvsadm 用法

[root@linuxidc ~]# man ipvsadm

NAME

    ipvsadm – Linux Virtual Server administration

SYNOPSIS

      ipvsadm -A|E -t|u|f service-address [-s scheduler]

              [-p [timeout]] [-O] [-M netmask]

      ipvsadm -D -t|u|f service-address

      ipvsadm -C

      ipvsadm -R

      ipvsadm -S [-n]

      ipvsadm -a|e -t|u|f service-address -r server-address

              [-g|i|m] [-w weight] [-x upper] [-y lower]

      ipvsadm -d -t|u|f service-address -r server-address

      ipvsadm -L|l [options]

      ipvsadm -Z [-t|u|f service-address]

      ipvsadm –set tcp tcpfin udp

      ipvsadm –start-daemon state [–mcast-interface interface]

              [–syncid syncid]

      ipvsadm –stop-daemon state

      ipvsadm -h

其中:

第一个 service-address: 是指虚拟服务器的 IP 地址 l

第二个 service-address: 是指的真实服务器的 IP 地址

scheduler:指定调度算

通过 LVS 实现 WEB 站点的 MySQL 高可用 http://www.linuxidc.com/Linux/2013-06/86390.htm

LVS+Apache+PHP+MySQL 读写分离 http://www.linuxidc.com/Linux/2012-12/77027.htm

MySQL LVS 负载均衡 http://www.linuxidc.com/Linux/2012-09/69862.htm

企业 Web 高可用集群实战之 LVS+Keepalived+MySQL HA http://www.linuxidc.com/Linux/2012-09/70097.htm

ipvsadm 命令参数选项详细含义如下所示

-A (–add-service) 在内核的虚拟服务器列表中添加一条新的虚拟 IP 记录。也就是增加一台新的虚拟服务器。虚拟 IP 也就是虚拟服务器的 IP 地址。

-E (–edit-service) 编辑内核虚拟服务器列表中的一条虚拟服务器记录

-D (–delete-service) 删除内核虚拟服务器列表中的一条虚拟服务器记录

-C (–clear) 清除内核虚拟服务器列表中的所有规则

-R (–restore) 恢复虚拟服务器规则

-S (–save) 保存虚拟服务器规则,输出为 -R 选项可读的格式

-a (–add-server) 在内核虚拟服务器列表的一条记录里添加一条新的 Real Server 记录。也就是在一个虚拟服务器中增加一台新的 Real Server

-e (–edit-server) 编辑一条虚拟服务器记录中的某条 Real Server 记录

-d (–delete-server) 删除一条虚拟服务器记录中的某条 Real Server 记录

-L|-l –list 显示内核中虚拟服务器列表

-Z (–zero) 虚拟服务器列表计数器清零(清空当前的连接数量等)

–set tcp tcpfin udp 设置连接超时值

-t 说明虚拟服务器提供的是 tcp 服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 说明虚拟服务器提供的是 udp 服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f  fwmark 说明是经过 iptables 标记过的服务类型

-s  此选项后面跟 LVS 使用的调度算法

有这样几个选项:rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默认的调度算法是:wlc

-p  [timeout] 在某个 Real Server 上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个 Real Server 处理。此参数一般用于有动态请求的操作中,timeout 的默认值为 360 分钟。例如:-p 600,表示持续服务时间为 600 分钟。

-r 指定 Real Server 的 IP 地址,此选项后面跟如下格式:

 [real-server-ip:port]

-g (–gatewaying) 指定 LVS 的工作模式为直接路由模式(此模式是 LVS 默认工作模式)

-i (-ipip) 指定 LVS 的工作模式为隧道模式

-m (–masquerading) 指定 LVS 的工作模式为 NAT 模式

-w (–weight) weight 指定 Real Server 的权值

-c (–connection) 显示 LVS 目前的连接信息 如:ipvsadm -L -c

-L –timeout 显示“tcp tcpfin udp”的 timeout 值,如:ipvsadm -L –timeout

-L –daemon 显示同步守护进程状态,例如:ipvsadm -L –daemon

-L  –stats 显示统计信息,例如:ipvsadm -L –stats

-L  –rate 显示速率信息,例如:ipvsadm -L  –rate

-L  –sort 对虚拟服务器和真实服务器排序输出,例如:ipvsadm -L –sort

注:保存添加的虚拟 ip 记录和 ipvsadm 的规则可以使用 service ipvsadm save,还可以用 - S 或 –save。清除所有记录和规则除了使用 -C,还以使用 –clear。

 

3、应用实例

(1) 实例 1(nat 模式)

Step1:NAT 模式拓扑图

NAT 模式的拓扑图,如图 1 所示:

负载均衡 LVS—ipvsadm 应用详解

图 1:NAT 模式拓扑图

Step2:IP 地址规划

根据拓扑图,给设备接口规划 IP 地址如表 1 所示

表 1 IP 地址规划

设备名称

设备接口

IP 地址

子网掩码

Director

Eth0

61.130.130.1

255.255.255.0

Eth1

192.168.2.101

255.255.255.0

Web Server1

Eth0

192.168.2.102

255.255.255.0

Web Server2

Eth0

192.168.2.103

255.255.255.0

 

说明:由于是 NAT 模式,所以根据 NAT 模式工作原理可知 director 设备有两块网卡分别连接外网和内网,当外部用户访问内部的服务器时,访问的 IP 地址是 director 连接外网的 IP 地址。内部的服务器的 IP 地址与 director 连接内网的 IP 地址在一个网段,并且服务器的网关要指向 director 连接内网的 IP。

 

Step3:打开 director 的路由转发功能

[root@linuxidc ~]# vim /etc/sysctl.conf

负载均衡 LVS—ipvsadm 应用详解

[root@linuxidc ~]# sysctl -p  // 刷新路由协议

Step4:添加虚拟 IP 记录和规则

[root@linuxidc ~]# ipvsadm -A -t 61.130.130.1:80 -s rr

[root@linuxidc ~]# ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.102 -m

[root@linuxidc ~]# ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.103 -m

说明:rr 表示采用轮询调度算法,这里还可以采用其他调度算法如 wrr(加权轮询调度算法),在使用加权轮询调度算法时,还可以在添加规则时改变权值,一般默认权值为 1,如改变到 Web Server1 的权值为 5,操作如下:

ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.102 -w 5 -m

// 查看记录和规则

[root@linuxidc ~]# ipvsadm -l -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  61.130.130.1:80 rr

  -> 192.168.2.102:80              Route  1      0          0 

  -> 192.168.2.103:80              Route  1      0          0

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-07/104264p2.htm

(2) 实例 2(DR 模式)

Step1:DR 模式拓扑图

DR 模式的拓扑图,如图 2 所示:

负载均衡 LVS—ipvsadm 应用详解

 图 2 DR 模式的拓扑图

Step2:IP 地址规划

根据拓扑图,给设备接口规划 IP 地址如表 2 所示

表 2 IP 地址规划表

设备名称

设备接口

IP 地址

子网掩码

Director 设备

Eth0

192.168.2.104

255.255.255.0

Eth0:0

192.168.2.101

255.255.255.0

Web Server1

Eth0

192.168.2.102

255.255.255.0

Lo:0

192.168.2.101

255.255.255.255

Web Server2

Eth0

192.168.2.103

255.255.255.0

Lo:0

192.168.2.101

255.255.255.255

说明:根据 DR 模式的工作原理可知,director 和真是服务器在同一个网络中,而在 dirctor 设备上 vsip 应该在物理接口的别名上,物理接口上则配置内网中不同于 vsip 的地址,而真实服务器的物理接口上配置与 director 物理接口同一网段的 IP 地址,除此之外还要在逻辑接口上配置 vsip,因为改地址是虚拟的所以应���子网掩码设置为 4 个 255。例如 director 的 vsip 地址配置如下:

进入图形界面后,找到网络设备,然后新添加配置如 3 所示:

负载均衡 LVS—ipvsadm 应用详解

图 3 director 设备 visp 设置

配置完后重新启动网络服务,使用 service network restart 命令,如果启动没有出现或失败,先关闭图形界面网络服务,使用 service NetworkManager stop 命令,然后在重新使用 service network restart 命令启动。

Step3:添加虚拟 IP 记录和规则

[root@linuxidc ~]# ipvsadm -A -t 192.168.2.101:80 -s rr

[root@linuxidc ~]# ipvsadm -a -t 192.168.2.101:80 -r 192.168.2.102 -g

[root@linuxidc ~]# ipvsadm -a -t 192.168.2.101:80 -r 192.168.2.103 -g

说明:rr 表示采用轮询调度算法,这里还可以采用其他调度算法如 wrr(加权轮询调度算法),在使用加权轮询调度算法时,还可以在添加规则时改变权值,一般默认权值为 1,如改变到 Web Server1 的权值为 5,操作如下:

ipvsadm -a -t 192.168.2.101:80 -r 192.168.2.102 -w 5 -g

// 查看记录和规则

[root@linuxidc ~]# ipvsadm -l -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  192.168.2.101:80 rr

  -> 192.168.2.102:80              Route  1      0          0 

  -> 192.168.2.103:80              Route  1      0          0

Step4:查看,并修改服务器中 arp 的相关参数

// 查看服务器的 arp_announce 和 arp_ignore

[root@linuxidc ~]# sysctl -a |grep arp*

// 修改服务器的 arp_announce 和 arp_ignore

[root@linuxidc ~]# echo “net.ipv4.conf.eth0.arp_announce = 2” >> /etc/sysctl.conf

[root@linuxidc ~]# echo “net.ipv4.conf.eth0.arp_ignore = 1” >> /etc/sysctl.conf

[root@linuxidc ~]# sysctl -p

说明:arp_announce 有 3 个值,分别为 0、1 和 2,其中 0 为默认值。0 表示将使用任意本地的 IP 地址,配置在任何接口上;1 表示尽量避免使用本地的 IP 地址;2 表示总是使用最好的本地地址。arp_ignore 有 8 个值,分为 0、1、2、3….8,其中默认是 0,而这里选择 1,1 表示只有当收到本地 IP 地址消息时才回应,否则忽略。

负载均衡 LVS—ipvsadm 应用详解

环境:64 位 CentOS 6.4

1、在 director 上安装 ipvsadm 工具(这里使用 RPM 包)

// 挂载光盘,搜索 ipvsadm 工具安装包

[root@linuxidc ~]# mount /dev/cdrom /media/cdrom/

[root@linuxidc ~]# cd /media/cdrom/Packages

[root@linuxidc Packages]# ll |grep ipvsadm

// 安装 ipvsadm 工具

[root@linuxidc Packages]# yum install ipvsadm-1.25-10.el6.x86_64.rpm

2、ipvsadm 的相关参数和用法

// 使用 man ipvsadm 或 ipvsadm –help 查看 ipvsadm 用法

[root@linuxidc ~]# man ipvsadm

NAME

    ipvsadm – Linux Virtual Server administration

SYNOPSIS

      ipvsadm -A|E -t|u|f service-address [-s scheduler]

              [-p [timeout]] [-O] [-M netmask]

      ipvsadm -D -t|u|f service-address

      ipvsadm -C

      ipvsadm -R

      ipvsadm -S [-n]

      ipvsadm -a|e -t|u|f service-address -r server-address

              [-g|i|m] [-w weight] [-x upper] [-y lower]

      ipvsadm -d -t|u|f service-address -r server-address

      ipvsadm -L|l [options]

      ipvsadm -Z [-t|u|f service-address]

      ipvsadm –set tcp tcpfin udp

      ipvsadm –start-daemon state [–mcast-interface interface]

              [–syncid syncid]

      ipvsadm –stop-daemon state

      ipvsadm -h

其中:

第一个 service-address: 是指虚拟服务器的 IP 地址 l

第二个 service-address: 是指的真实服务器的 IP 地址

scheduler:指定调度算

通过 LVS 实现 WEB 站点的 MySQL 高可用 http://www.linuxidc.com/Linux/2013-06/86390.htm

LVS+Apache+PHP+MySQL 读写分离 http://www.linuxidc.com/Linux/2012-12/77027.htm

MySQL LVS 负载均衡 http://www.linuxidc.com/Linux/2012-09/69862.htm

企业 Web 高可用集群实战之 LVS+Keepalived+MySQL HA http://www.linuxidc.com/Linux/2012-09/70097.htm

ipvsadm 命令参数选项详细含义如下所示

-A (–add-service) 在内核的虚拟服务器列表中添加一条新的虚拟 IP 记录。也就是增加一台新的虚拟服务器。虚拟 IP 也就是虚拟服务器的 IP 地址。

-E (–edit-service) 编辑内核虚拟服务器列表中的一条虚拟服务器记录

-D (–delete-service) 删除内核虚拟服务器列表中的一条虚拟服务器记录

-C (–clear) 清除内核虚拟服务器列表中的所有规则

-R (–restore) 恢复虚拟服务器规则

-S (–save) 保存虚拟服务器规则,输出为 -R 选项可读的格式

-a (–add-server) 在内核虚拟服务器列表的一条记录里添加一条新的 Real Server 记录。也就是在一个虚拟服务器中增加一台新的 Real Server

-e (–edit-server) 编辑一条虚拟服务器记录中的某条 Real Server 记录

-d (–delete-server) 删除一条虚拟服务器记录中的某条 Real Server 记录

-L|-l –list 显示内核中虚拟服务器列表

-Z (–zero) 虚拟服务器列表计数器清零(清空当前的连接数量等)

–set tcp tcpfin udp 设置连接超时值

-t 说明虚拟服务器提供的是 tcp 服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 说明虚拟服务器提供的是 udp 服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f  fwmark 说明是经过 iptables 标记过的服务类型

-s  此选项后面跟 LVS 使用的调度算法

有这样几个选项:rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默认的调度算法是:wlc

-p  [timeout] 在某个 Real Server 上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个 Real Server 处理。此参数一般用于有动态请求的操作中,timeout 的默认值为 360 分钟。例如:-p 600,表示持续服务时间为 600 分钟。

-r 指定 Real Server 的 IP 地址,此选项后面跟如下格式:

 [real-server-ip:port]

-g (–gatewaying) 指定 LVS 的工作模式为直接路由模式(此模式是 LVS 默认工作模式)

-i (-ipip) 指定 LVS 的工作模式为隧道模式

-m (–masquerading) 指定 LVS 的工作模式为 NAT 模式

-w (–weight) weight 指定 Real Server 的权值

-c (–connection) 显示 LVS 目前的连接信息 如:ipvsadm -L -c

-L –timeout 显示“tcp tcpfin udp”的 timeout 值,如:ipvsadm -L –timeout

-L –daemon 显示同步守护进程状态,例如:ipvsadm -L –daemon

-L  –stats 显示统计信息,例如:ipvsadm -L –stats

-L  –rate 显示速率信息,例如:ipvsadm -L  –rate

-L  –sort 对虚拟服务器和真实服务器排序输出,例如:ipvsadm -L –sort

注:保存添加的虚拟 ip 记录和 ipvsadm 的规则可以使用 service ipvsadm save,还可以用 - S 或 –save。清除所有记录和规则除了使用 -C,还以使用 –clear。

 

3、应用实例

(1) 实例 1(nat 模式)

Step1:NAT 模式拓扑图

NAT 模式的拓扑图,如图 1 所示:

负载均衡 LVS—ipvsadm 应用详解

图 1:NAT 模式拓扑图

Step2:IP 地址规划

根据拓扑图,给设备接口规划 IP 地址如表 1 所示

表 1 IP 地址规划

设备名称

设备接口

IP 地址

子网掩码

Director

Eth0

61.130.130.1

255.255.255.0

Eth1

192.168.2.101

255.255.255.0

Web Server1

Eth0

192.168.2.102

255.255.255.0

Web Server2

Eth0

192.168.2.103

255.255.255.0

 

说明:由于是 NAT 模式,所以根据 NAT 模式工作原理可知 director 设备有两块网卡分别连接外网和内网,当外部用户访问内部的服务器时,访问的 IP 地址是 director 连接外网的 IP 地址。内部的服务器的 IP 地址与 director 连接内网的 IP 地址在一个网段,并且服务器的网关要指向 director 连接内网的 IP。

 

Step3:打开 director 的路由转发功能

[root@linuxidc ~]# vim /etc/sysctl.conf

负载均衡 LVS—ipvsadm 应用详解

[root@linuxidc ~]# sysctl -p  // 刷新路由协议

Step4:添加虚拟 IP 记录和规则

[root@linuxidc ~]# ipvsadm -A -t 61.130.130.1:80 -s rr

[root@linuxidc ~]# ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.102 -m

[root@linuxidc ~]# ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.103 -m

说明:rr 表示采用轮询调度算法,这里还可以采用其他调度算法如 wrr(加权轮询调度算法),在使用加权轮询调度算法时,还可以在添加规则时改变权值,一般默认权值为 1,如改变到 Web Server1 的权值为 5,操作如下:

ipvsadm -a -t 61.130.130.1:80 -r 192.168.2.102 -w 5 -m

// 查看记录和规则

[root@linuxidc ~]# ipvsadm -l -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  61.130.130.1:80 rr

  -> 192.168.2.102:80              Route  1      0          0 

  -> 192.168.2.103:80              Route  1      0          0

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-07/104264p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计9609字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中