LVS

Posted lyshark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS相关的知识,希望对你有一定的参考价值。

**************************************************************************************************
◆案例1◆ 构建LVS-NAT模式的Web集群
**************************************************************************************************

=====================================================================================
实验环境

类型 网卡 IP地址 接入模式

LVS-NAT eno16777728 192.168.1.12 桥接
eno33554960 192.168.20.14 NAT

Read-Ser1 eno16777728 192.168.20.15 NAT
Read-Ser2 eno16777728 192.168.20.16 NAT

=====================================================================================

****************************************************************************
◆配置主LVS-NAT模式的负载调度器◆
****************************************************************************

1.安装ipvsadm

yum install -y ipvsadm


2.开启IP转发


临时开启

echo "1" > /proc/sys/net/ipv4/ip_forward


永久开启
--------------------------------------------------------------------------------------------------------------
vim /etc/sysctl.conf

net.ipv4.ip_forward=1
--------------------------------------------------------------------------------------------------------------
sysctl –p


3.配置LVS-NAT调度器

ipvsadm -A -t 192.168.1.12:80 -s rr #指定网卡1地址

--------------------------------------------------------------------------------------------------------------
-A 添加规则
-t TCP 指定分发器VIP
-s 指定调度算法
rr 代表轮询round-robin
--------------------------------------------------------------------------------------------------------------

ipvsadm -a -t 192.168.1.12:80 -r 192.168.20.15 -m
ipvsadm -a -t 192.168.1.12:80 -r 192.168.20.16 -m

--------------------------------------------------------------------------------------------------------------
-a 添加real-server地址
-r 指定real-server地址
-m 表示masquerade NAT方式的LVS
--------------------------------------------------------------------------------------------------------------


[[email protected] ~]# 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.1.12:80 rr
-> 192.168.20.15:80 Masq 1 0 0
-> 192.168.20.16:80 Masq 1 0 0


/sbin/ipvsadm-save #保存规则


4.配置防火墙SNAT

iptables -t nat -A POSTROUTING \ #指定NAT表的POSTROUTING
-s 192.168.1.0/24 \ #指定内网的网段
-o eno16777728 \ #指定外网口网卡名称
-j SNAT \ #指定为SNAT
--to-source 59.110.167.239 #指定外网卡的地址


iptables -t nat -L #查看添加的规则


****************************************************************************
◆RelServer节点配置◆ 注:客户端每个节点都应该配置
****************************************************************************

1.安装测试apache

yum install -y httpd

echo "web 1" > /var/www/html/index.html

systemctl restart httpd


2.RelServer节点指定网关

route add default gw 192.168.20.14 #指向主调度器的eth1网口


**************************************************************************************************
◆案例2◆ 构建基于LVS-DR模式的Web集群
**************************************************************************************************

=====================================================================================
实验环境

类型 网卡 IP地址 VIP/IO 接入模式

LVS-DR eno16777728 192.168.1.12 192.168.1.20(VIP) 桥接

Read-Ser1 eno16777728 192.168.1.13 192.168.1.20(IO) 桥接
Read-Ser2 eno16777728 192.168.1.14 192.168.1.20(IO) 桥接


注: 如果是在真实环境中 RealServer应把网关指向路由器eth1口
=====================================================================================

****************************************************************************
◆配置主LVS-DR模式的负载调度器◆
****************************************************************************

1.安装ipvsadm

yum install -y ipvsadm


2.修改内核参数,防止相同网络地址广播冲突

--------------------------------------------------------------------------------------------------------------
vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eno16777728.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
--------------------------------------------------------------------------------------------------------------
sysctl -p #刷新内核参数(使其生效)

modprobe ip_vs #查看内核是否加载,无提示则加载成功


3.配置临时网卡并添加轮询规则

ifconfig eno16777728:0 192.168.1.20 netmask 255.255.255.0 #在eth0上添加一个子接口,VIP的地址

route add -host 192.168.1.20 dev eno16777728 #在eth0上添加一条路由记录


ipvsadm -A -t 192.168.1.20:80 -s rr   #添加虚拟服务指定VIP地址
--------------------------------------------------------------------------------------------------------------
-A 添加规则
-t TCP 指定分发器VIP
-s 指定调度算法
rr 代表轮询round-robin
--------------------------------------------------------------------------------------------------------------

ipvsadm -a -t 192.168.1.20:80 -r 192.168.1.13:80 -g #针对虚拟服务添加RS节点
ipvsadm -a -t 192.168.1.20:80 -r 192.168.1.14:80 -g #针对虚拟服务添加RS节点

--------------------------------------------------------------------------------------------------------------
-a 添加real-server地址
-r 指定real-server地址
-m 以NAT模式分配
-g 以DR模式分配
-w 指定权值
--------------------------------------------------------------------------------------------------------------

[[email protected] ~]# ipvsadm -L -n --stats #查看VIP和RS是否已经配置成功
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.1.20:80 0 0 0 0 0
-> 192.168.1.13:80 0 0 0 0 0
-> 192.168.1.14:80 0 0 0 0 0


/sbin/ipvsadm-save #保存规则


****************************************************************************
◆配置RealServer节点◆ 注:客户端每个节点都应该配置
****************************************************************************

service NetworkManager stop #关闭管理工具,图形界面下才要关闭

1.首先关闭ARP宣告,和ARP转发

临时关闭
--------------------------------------------------------------------------------------------------------------
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_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_ignore
--------------------------------------------------------------------------------------------------------------

永久关闭
--------------------------------------------------------------------------------------------------------------
vim /etc/sysctl.conf

net.ipv4.conf.eno16777728.arp_ignore=1
net.ipv4.conf.eno16777728.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
--------------------------------------------------------------------------------------------------------------

sysctl -p

ifconfig lo:0 192.168.1.20 netmask 255.255.255.255   #添加本地回环口,设置24位掩码

route add -host 192.168.1.20 dev lo #添加路由记录


**************************************************************************************************
◆案例3◆ 构建基于LVS-IP-TUN模式的Web集群
**************************************************************************************************

=====================================================================================
实验环境

类型 网卡 IP地址 VIP/Tunl 接入模式

LVS-IPTUN eno16777728 200.168.10.1 200.168.10.10(VIP) 外网IP

Read-Ser1 eno16777728 200.168.10.2 200.168.10.10(Tunl) 外网IP
Read-Ser2 eno16777728 200.168.10.3 200.168.10.10(Tunl) 外网IP

=====================================================================================

****************************************************************************
◆配置主LVS-IP-TUN模式的负载调度器◆
****************************************************************************

1.LVS服务器配置虚拟IP

ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up #虚拟一个隧道IP 4个255代表它自己一个网段


route add -host 200.168.10.10 dev tunl0 #把网段添加到路由表 防止走 200.168.10.0 网段

route -n #查看路由


2.设置LVS调度器

ipvsadm -C

ipvsadm -A -t 200.168.10.10:80 -s rr

ipvsadm -a -t 200.168.10.10:80 -r 200.168.10.2 -i

ipvsadm -a -t 200.168.10.10:80 -r 200.168.10.3 -i


ipvsadm -L -n --stat #查看规则


****************************************************************************
◆配置RealServer节点◆ 注:客户端每个节点都应该配置
****************************************************************************

ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up

route add -host 200.168.10.10 dev tunl0


vim /etc/sysctl.conf

echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p


测试 http://200.168.10.10

以上是关于LVS的主要内容,如果未能解决你的问题,请参考以下文章

初识LVS——LVS介绍和LVS的NAT工作模式

LVS

LVS原理详解

Keepalive和lvs

LVS介绍LVS调度算法LVS NAT模式搭建

负载均衡集群介绍LVS介绍LVS的调度算法LVS NAT模式搭建