LVS 负载均衡集群企业级应用实战

1.环境准备

1、准备虚拟机

准备 3 台纯净的带有nginx的虚拟机,一台作为负载均衡器另外两台作为web服务器

[root@lvs-server ~]      ·	192.168.13.129   	负载均衡器
[root@real-server1 ~]		192.168.13.133   	第一台真实服务器
[root@real-server2 ~]		192.168.13.137    	第二台真实服务器
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

2.LVS/DR 模式

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

网络拓扑
Client :   										CIP:192.168.13.1
Director  :										VIP:192.168.13.129
													DIP:192.168.0.114
Real Server1:                   					VIP :192.168.13.133
													DIP:192.168.0.113
Real Server2:                   					VIP :192.168.13.137
													DIP:192.168.0.115
1. LVS/DR模式实施(部署)

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

systemctl stop firewalld && setenforce 0

将所有虚拟机ip地址在负载均衡器上解析(可有可无,只是为了其他人看着清晰)

[root@lvs-server ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.13.129 lvs-server
192.168.13.133 real-server1
192.168.13.137 real-server2

Director分发器配置(配置VIP)

[root@lvs-server ~]# ip addr add dev ens33 192.168.13.144/32 #设置VIP(绑定到ens33上)
[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
[root@lvs-server ~]# service ipvsadm start  #再次启动
定义LVS分发策略
-A:添加VIP
-t:用的是tcp协议
-a:添加的是lo的vip地址
-r:转发到realserverip
-s:算法
-L|-l –list #显示内核虚拟服务器表
--numeric, -n:#以数字形式输出地址和端口号
-g --gatewaying #指定LVS工作模式为直接路由器模式DR(也是LVS默认的模式)
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
rr:轮循
如果添加ip错了,删除命令如下:
# ip addr del 192.168.13.144 dev ens33
[root@lvs-server ~]# ipvsadm -C  #清除内核虚拟服务器表中的所有记录。
[root@lvs-server ~]# ipvsadm -A -t 192.168.13.144:80 -s rr 
[root@lvs-server ~]# ipvsadm -a -t 192.168.13.144:80 -r 192.168.13.133 -g 
[root@lvs-server ~]# ipvsadm -a -t 192.168.13.144:80 -r 192.168.13.137 -g  
[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.13.144:80 rr
  -> 192.168.13.133:80           Route   1      0          0         
  -> 192.168.13.137:80           Route   1      0          0         
[root@lvs-server ~]# ipvsadm -L -n       
[root@lvs-server ~]# ipvsadm -L -n --stats    #显示统计信息
1. Conns    (connections scheduled)  已经转发过的连接数
2. InPkts   (incoming packets)       入包个数
3. OutPkts  (outgoing packets)       出包个数
4. InBytes  (incoming bytes)         入流量(字节)  
5. OutBytes (outgoing bytes)         出流量(字节)
[root@lvs-server ~]# ipvsadm -L -n --rate	#看速率
1. CPS      (current connection rate)   每秒连接数
2. InPPS    (current in packet rate)    每秒的入包个数
3. OutPPS   (current out packet rate)   每秒的出包个数
4. InBPS    (current in byte rate)      每秒入流量(字节)
5. OutBPS   (current out byte rate)      每秒出流量(字节)

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

第一台真实服务器(192.168.13.133)
[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.13.144/32   #在lo接口上绑定VIP(lo回环网卡)
[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 
=========================================================================================
第二台真实服务器(192.168.13.137)
[root@real-server2 ~]# yum install -y nginx
[root@real-server2 ~]# echo "real-server2" >> /usr/share/nginx/html/index.html
两台机器都安装,按顺序添加不同的主机名以示区分
[root@real-server2 ~]# ip addr add dev lo 192.168.13.144/32   #在lo接口上绑定VIP(lo回环网卡)
[root@real-server2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播
[root@real-server2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包
[root@real-server2 ~]# systemctl start 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?同一个网段内子网掩码最长的

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

[root@real-server1 ~]# vim /etc/nginx/nginx.conf
    keepalive_timeout  0;
[root@real-server1 ~]# nginx -s reload
[root@real-server2 ~]# vim /etc/nginx/nginx.conf
    keepalive_timeout  0;#默认keepalive_timeout  65;
[root@real-server2 ~]# nginx -s reload
#修改后端nginx服务器的长连接是为了方便测试

访问 http://192.168.13.144 你会发现两台真实服务器轮询显示。

3.LVS-NAT模式:

1.同样需要准备

准备 3 台纯净的带有nginx的虚拟机,一台作为负载均衡器另外两台作为web服务器

[root@lvs-server ~]      ·		192.168.13.129   	负载均衡器
                                          	192.168.0.144
[root@real-server1 ~]			192.168.0.121   	第一台真实服务器(适配器变为桥接)
[root@real-server2 ~]			192.168.0.119    	第二台真实服务器(适配器变为桥接)
所有机器
systemctl stop firewalld && setenforce 0
2.LVS/NAT模式实施

首先我们需要在负载均衡服务器上创建一个桥接的适配器
在这里插入图片描述
在这里插入图片描述
另外两台真实服务器需要变为桥接。
准备工作(集群中所有主机)[可选]每台机器都需要做

[root@lvs-server ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.13.129 lvs-server
192.168.0.121 real-server1
192.168.13.0.119 real-server2

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

root@real-server1 ~]# route add default gw 192.168.0.114  dev ens33   #真实的ip地址
root@real-server2 ~]# route add default gw 192.168.0.114  dev ens33   #真实的ip地址

Director分发器配置

[root@lvs-server ~]# vim /etc/sysctl.conf #开启路由转发
net.ipv4.ip_forward = 1
[root@lvs-server ~]#sysctl -p #开启转发功能

定义LVS的分发策略

[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.13.129:80 -s rr 
[root@lvs-server ~]# ipvsadm -a -t 192.168.13.129:80 -r 192.168.0.119 -m  
[root@lvs-server ~]# ipvsadm -a -t 192.168.13.129:80 -r 192.168.0.121 -m  
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm  #保存
[root@localhost ~]# 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.13.129:80 rr
  -> 192.168.0.119:80             Masq    1      0          0         
  -> 192.168.0.121:80             Masq    1      0          0        
[root@lvs-server ~]# ipvsadm -L -n --stats			      // 显示统计信息
[root@lvs-server ~]# ipvsadm -L -n --rate				//看速率

测试:

[root@real-server1 ~]# echo "real-server1" >> /usr/share/nginx/html/index.html
[root@real-server1 ~]# vim /etc/nginx/nginx.conf
    keepalive_timeout  0;
[root@real-server1 ~]# nginx -s reload
[root@real-server2 ~]# echo "real-server2" >> /usr/share/nginx/html/index.html
[root@real-server2 ~]# vim /etc/nginx/nginx.conf
    keepalive_timeout  0;#默认keepalive_timeout  65;
[root@real-server2 ~]# nginx -s reload
#修改后端nginx服务器的长连接是为了方便测试

访问 http://192.168.13.129 你会发现两台真实服务器轮询显示。
在这里插入图片描述
在这里插入图片描述

发布了23 篇原创文章 · 获赞 70 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_38803985/article/details/104930705