LVS 负载均衡集群企业级应用实战 LVS/DR 模式 LVS-NAT模式

环境准备
1、准备虚拟机

准备 3 台纯净的虚拟机,1台作为负载均衡代理器,两台作为 web 服务器

2、LVS-server 安装lvs管理软件
[root@lvs-server ~]# yum -y install ipvsadm
程序包:ipvsadm(LVS管理工具)

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file

配置文件:/etc/sysconfig/ipvsadm-config

##### 

3、LVS/DR 模式

实验说明:
1.虚拟机网络都使用NAT模式
2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域
3.所有节点网关均指定真实网关

RS:Real Server                #后端请求处理服务器 

CIP: Client IP                      #用户端IP

VIP:Director Virtual IP   #负载均衡器虚拟IP

DIP:Director IP               #负载均衡器真实IP

RIP:Real Server IP         #后端请求处理服务器真实IP
4.LVS/DR模式实施(部署)

1、准备工作(集群中所有主机)关闭防火墙和selinux

[root@lvs-server ~]# vim /etc/hosts     #配置解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.166 lvs-server
192.168.246.161 real-server1
192.168.246.162 real-server2

2、Director分发器配置

配置VIP

[root@lvs-server ~]# ip addr add dev ens33 192.168.246.160/32 #设置VIP
[root@lvs-server ~]# yum install -y ipvsadm   #RHEL确保LoadBalancer仓库可用
[root@lvs-server ~]# service ipvsadm start  #启动
注意:启动如果报错: /bin/bash: /etc/sysconfig/ipvsadm: 没有那个文件或目录
需要手动生成文件
[root@lvs-server ~]# ipvsadm --save > /etc/sysconfig/ipvsadm    然后再启动就可以了
如果添加ip错了,删除命令如下:
# ip addr del 192.168.246.193 dev ens33

定义LVS分发策略
参数参照:参数详解

VIP 192.168.246.160
RIP 192.168.246.161
RIP 192.168.246.162
[root@lvs-server ~]# ipvsadm -C    #清除内核虚拟服务器表中的所有记录。
[root@lvs-server ~]# ipvsadm -A -t 192.168.246.160:80 -s rr 
[root@lvs-server ~]# ipvsadm -a -t 192.168.246.160:80 -r 192.168.246.161 -g 
[root@lvs-server ~]# ipvsadm -a -t 192.168.246.160:80 -r 192.168.246.162 -g  
[root@lvs-server ~]# service ipvsadm save #保存方式一,使用下面的保存方式,版本7已经不支持了
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm  #保存方式二,保存到一个文件中
[root@lvs-server ~]# ipvsadm -ln    (查看保存的规则)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.246.160:80 rr
  -> 192.168.246.161:80           Route   1      0          0         
  -> 192.168.246.162:80           Route   1      0          0         

所有RS配置

配置好网站服务器,测试所有RS #为了测试效果,提供不同的页面(以下两台real-server都操作)

[root@real-server1 ~]# yum install -y nginx
[root@real-server1 ~]# echo "real-server1" >> /usr/share/nginx/html/index.html
两台机器都安装,按顺序添加不同的主机名以示区分
[root@real-server1 ~]# ip addr add dev lo 192.168.246.160/32   #在lo接口上绑定VIP
[root@real-server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播
[root@real-server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包
[root@real-server1 ~]# systemctl start nginx 
[root@real-server1 ~]# systemctl enable  nginx
=========================================================================================
因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.
解决:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的

4、测试(修改后端nginx服务器的长连接)

[root@client ~]# elinks -dump http://192.168.246.160
或者在自己的浏览器上输入 http://192.168.246.160 查看结果 

LVS-NAT模式:

查看linux已加载的内核模块

[root@sql-review ~]# lsmod

加载与卸载内核模块

[root@sql-review ~]# modprobe ip_vs      #动态加载ip_vs 模块,这个命令只是临时生效,需要添加到开机启动项目里面
[root@sql-review ~]# lsmod | grep ip_vs     #过滤模块是否加载成功!
[root@sql-review ~]# modprobe -r ip_vs      #动态卸载ip_vs模块

查看内核模块信息

[root@sql-review ~]# modinfo ip_vs
设置开机启动项
[root@sql-review ~]# echo "modprobe ip_vs" >> /etc/rc.local
[root@sql-review ~]# chmod +x /etc/rc.local     切记添加执行权限
添加到开机启动项里面如果不需要这个模块的时候只需要将etc/rc.local里面对应的命令删除掉。但是这样需要重新启动服务器。 可以通过下面的命令立即生效。
root@sql-review ~]# modprobe -r ip_vs      #动态卸载ip_vs模块

建议:先在Real Server安装如nginx(两台机器real-server)

[root@real-server1 ~]# yum install -y nginx
[root@real-server1 ~]# echo "real-server1" >> /usr/share/nginx/html/index.html
两台机器都安装,按顺序添加不同的主机名以示区分

所有机器
systemctl stop firewalld && setenforce 0
LVS/NAT模式实施

1、准备工作(集群中所有主机)[可选]每台机器都需要做

[root@lvs-server ~]# vim /etc/hosts   #做解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.166 lvs-server
192.168.246.161 real-server1
192.168.246.162 real-server2

2、RS配置

real-server所有服务器—默认网关均指向Directory的DIP

root@real-server1 ~]# route add default gw 192.168.246.166  dev ens33

3、Director分发器配置

先给LVS服务器新添加一块网卡网络模式设置为桥接模式。会自动生成一个ip,做为VIP。
只有这个新加的网卡是桥接,模式 其它都是net模式

[root@lvs-server ~]# ip addr add dev ens37 192.168.50.128/24   #设置VIP (如果已经自动生成 此步不用做)
[root@lvs-server ~]# vim /etc/sysctl.conf #开启路由转发
net.ipv4.ip_forward = 1
[root@lvs-server ~]#sysctl -p #开启转发功能

定义LVS的分发策略

VIP 192.168.50.128
DIP 192.168.246.166
RIP 192.168.246.161  192.168.246.162
[root@lvs-server ~]# yum install -y ipvsadm  #RHEL确保LoadBalancer仓库可用
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@lvs-server ~]# service ipvsadm start  #启动
[root@lvs-server ~]# ipvsadm -A -t 192.168.50.128:80 -s rr 
[root@lvs-server ~]# ipvsadm -a -t 192.168.50.128:80 -r 192.168.246.161 -m  
[root@lvs-server ~]# ipvsadm -a -t 192.168.50.128:80 -r 192.168.246.162 -m  
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm  #保存方式一
[root@lvs-server ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.50.128:80 rr
  -> 192.168.246.161:80           Masq    1      1          3         
  -> 192.168.246.162:80           Masq    1      1          3         
[root@lvs-server ~]# ipvsadm -L -n --stats			      // 显示统计信息
[root@lvs-server ~]# ipvsadm -L -n --rate				//看速率

4、测试

[root@client ~]# elinks -dump http://192.168.50.128
或者在自己的浏览器上输入 http://192.168.50.128 查看结果 
发布了48 篇原创文章 · 获赞 18 · 访问量 3645

猜你喜欢

转载自blog.csdn.net/wx912820/article/details/104936739