三期总目录链接
目录
一、LVS群集应用基础
(一)群集技术概述
1、群集类型
2、负载均衡的分成介绍
3、负载均衡的工作模式
(二)LVS虚拟服务器相关介绍
LVS的负载调度算法
二、构建LVS负载均衡群集
(一)案例:地址转换模式(LVS-NAT)
1、准备环境
2、在c-1机器:LVS服务器上操作
3、NFS服务器:共享目录
3、web服务器池
4、验证
(二)案例:直接路由路由(VLS-DR)
1、LVS服务器
2、配置节点服务器
3、NFS服务器不用做配置
4、测试
复习题
由多台主机(至少两台节点服务器)构成,但对外只表现为一个整体,只提供一个访问接口(域名或ip)
1)、负载均衡(Load Balancer)群集:提高应用系统的响应能力。获得高并发、高负载(LB)的整体性能。例(DNS轮询、应用层交换、反向代理)等。
2)、高可用(High Available)群集:提高应用系统的可靠性。例(故障切换、双击热备、多机热备)工作方式:双工:所有节点同时在线;主从:主节点在线,从节点在主节点发生故障时自动切换为主节点。
3)、高性能运算(High Performance Computer)群集(用的较少):提高应用系统的CPU运算速度,扩展硬件资源和分析能力。例(云计算、网格计算),依赖于‘分布式计算’‘并行计算’。必要时可以合并使用几种群集模式
第一层 负载调度器(Load Balancer或Director)(至少一个) |
访问这个群集系统的唯一入口。对外为VIP地址(虚拟ip/群集ip地址)。通常配置主、从双机热备,确保高可用性 |
第二层 服务器池(Server Pool)(大量真实服务器) |
每个节点都有独立的rip(真实ip),只处理调度器分发的客户机请求。 某个节点暂时失效时,负责调度器的容错机制将其隔离。错误排除后再重新纳入服务器池 |
第三层 共享存储(Share Storage) |
为服务器池提供稳定、一致的文件存取服务,确保群集的统一性 可使用NAS设备或提供NFS共享服务的专用服务器 |
地址转换(NAT)模式 | 1、调度器为服务器节点的网关,客户机的访问入口和各节点的回应出口 2、服务器和调度器使用私有ip,在同一物理网络。安全性优于下两个 |
|
IP隧道(TUN)模式 | 1、开放式网络结构 2、调度器为客户机访问入口 3、节点服务器都具有独立的公网ip,分散在不同的地方,直接回应客户机 4、通过专用ip隧道与调度器互相通信 |
|
直接路由(DR)模式 | 1、半开放式 2、调度器只为客户机访问入口 3、节点服务器集中在一起,和调度器在同一物理网络。通过本地连接 4、节点服务器直接回应客户机 |
|
nat和DE、TUN的区别 | nat只需要一个公网ip,最易用,安全性好,许多硬件负载均衡设备采用 | |
DR和TUN,负载能力更强大,适用范围更广,节点安全性稍差 |
Linux Virtual Server是针对Linux内核开发的一个负载均衡项目,由我国的章文嵩博士在1998年5月创建,LVS上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块。
LVS的负载调度算法 |
|
轮询(Round Robin) | 按照顺序轮流分配,不管实际连接数和系统负载 |
加权轮询(Weighted Round Robin) | 自动查询各节点的负载情况,动态调整其权重 |
最少连接(Least Connections) | 优先分配给连接数最少的节点 |
加权最少连接(Weighted Least Connections) | 服务器节点性能差异大时,自动调整权重。权重高的承担更大比例的活动连接负载 |
ipvsadm管理工具选项说明 | |
-A | 添加虚拟服务器节点 |
-D | 删除虚拟服务器节点 |
-a | 添加真实服务器 |
-d | 删除真实服务器 |
-C | 清空所有配置 |
-c | 显示ipvs中目前存在的连接 |
-L | -l | 查看LVS虚拟服务(可结合-n使用) |
-R 或--restore | 恢复虚拟服务规则 |
-n | 以数字的形式显示地址、端口等信息 |
-t | vip地址及tcp端口 |
-s | 负载调度算法(轮询rr 、加权轮询wrr 、最少连接lc 、加权最少连接 wlc) |
-S或--save | 保存虚拟服务器规则 |
-r | rip地址及端口() |
-g | -m | -i | DR 模式 | nat模式 | TUN模式 |
-w | 设置权重(0时暂停节点) |
--stats | 显示历史转发消息统计(累加值) |
--timeout | 显示配置的tcp/tcpfin/udp超时时间 |
本次实验使用5台CentOS7服务器:C-1、web1、web2、web3、NFS地址如上图
LVS调度器作为Web服务器池的网关(web服务需要设置网关:192.168.1.1)
使用轮询(rr)调度算法
全网ping通设置过程省略
[root@C-1 ~]# modprobe ip_vs #加载模块
[root@C-1 ~]# cat /proc/net/ip_vs #确认内核对LVS的支持
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@C-1 ~]# vim /etc/sysctl.conf #启用路由转发
......
..
net.ipv4.ip_forward = 1 #添加内容;保存退出
[root@C-1 ~]# sysctl -p
net.ipv4.ip_forward = 1
2.2、使用ipvsadm工具:LVS群集管理工具
[root@C-1 ~]# yum -y install ipvsadm #安装ipvsadm工具
.......
...
已安装:
ipvsadm.x86_64 0:1.27-7.el7
完毕!
[root@C-1 ~]# ipvsadm -v #查看版本信息
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
创建虚拟服务器,VIP必须是本机真实ip地址
[root@C-1 ~]# ipvsadm -A -t 200.1.1.1:80 -s rr
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.4:80 -m -w 1 #添加节点服务器web1
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.6:80 -m -w 1 #添加节点服务器web2
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.7:80 -m -w 1 #添加节点服务器web3
删除节点服务器
[root@C-1 ~]# ipvsadm -d -r 192.168.1.4:80 -t 200.1.1.1:80 #删除节点服务器web1
[root@C-1 ~]# ipvsadm -d -r 192.168.1.6:80 -t 200.1.1.1:80 #删除节点服务器web2
删除整个虚拟服务器
[root@C-1 ~]# ipvsadm -D -t 200.1.1.1:80 #删除整个虚拟服务器
保存策略
[root@C-1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm # 把ipvsadm的输出结果保存到/etc/sysconfig/ipvasdm文件中
[root@C-1 ~]# cat /etc/sysconfig/ipvsadm #查看
-A -t C-1:http -s rr
-a -t C-1:http -r 192.168.1.4:http -m -w 1
-a -t C-1:http -r 192.168.1.6:http -m -w 1
-a -t C-1:http -r 192.168.1.7:http -m -w 1
查看群集节点状态 Masq----地址伪装NAT模式 Route---DR模式
[root@C-1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.1.1.1:80 rr
-> 192.168.1.4:80 Masq 1 0 0
-> 192.168.1.6:80 Masq 1 0 0
-> 192.168.1.7:80 Masq 1 0 0
[root@C-1 ~]# systemctl enable ipvsadm #开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@C-1 ~]# systemctl start ipvsadm #启动服务
NFS:是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议.客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议;依赖于RPC(远端过程调用),需安装nfs-utils(NFS共享发布和访问)、rpcbind(rpc支持)软件包,系统服务:nfs、rpcbind,共享配置文件:/etc/exports
[root@NFS ~]# yum -y install nfs-utils rpcbind #安装nfs-utils、rpcbind软件包
......
...
[root@NFS ~]# systemctl enable nfs #开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@NFS ~]# systemctl enable rpcbind #开机自启动
设置共享目录
文件内容默认为空(无任何共享) 语法结构: 目录位置 客户机地址(权限操作)注意标点符号
[root@NFS ~]# mkdir -p /opt/web1 /opt/web2 /opt/web3 #创建共享目录
[root@NFS ~]# vim /etc/exports #配置nfs共享文件
/opt/web1 192.168.1.4(rw,sync,no_root_squash) #rw:读写;sync:同步写入;no_root_squash:客户机以root身份访问时赋予本地root权限
/opt/web2 192.168.1.6(rw,sync,no_root_squash)
/otp/web3 192.168.1.7(rw,sync,no_root_squash) #保存退出
[root@NFS ~]# systemctl start rpcbind #先启动rpcbind
[root@NFS ~]# systemctl start nfs #在启动nfs
[root@NFS ~]# netstat -anput | grep rpcbind
udp 0 0 0.0.0.0:620 0.0.0.0:* 2141/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 2141/rpcbind
udp6 0 0 :::620 :::* 2141/rpcbind
udp6 0 0 :::111 :::* 2141/rpcbind
[root@NFS ~]# showmount -e 查看本机发布的NFS共享目录
Export list for NFS:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4
查看格式: showmount -e 服务器ip
[root@C-1 ~]# showmount -e 192.168.1.8 从LVS服务器上查看服务器的共享情况
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4
3.1 web1上安装
[root@web1 ~]# yum -y install httpd rpcbind nfs-utils #安装http和rpcbind nfs-utils
配置nfs共享存储客户端
[root@web1 ~]# systemctl enable rpcbind
[root@web1 ~]# systemctl start rpcbind
[root@web1 ~]# showmount -e 192.168.1.8
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4
与挂载本地文件系统有所不同 :mount NFS的ip地址:NFS共享路径 本地路径(设备位置处应指出NFS地址)
[root@web1 ~]# mount 192.168.1.8:/opt/web1 /var/www/html #将NFS服务器共享的/opt/web1目录挂载到本地目录/var/www/html
[root@web1 ~]# tail -l /etc/mtab #确认挂载结果
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,relatime,attr2,inode64,noquota 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12937 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
/dev/sr0 /media/cdrom iso9660 ro,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=48364k,mode=700 0 0
192.168.1.8:/opt/web1 /var/www/html nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.4,local_lock=none,addr=192.168.1.8 0 0
[root@web1 ~]# echo "web1 192.168.1.4399小游戏
" > /var/www/html/index.html #编辑web1测试首页
[root@web1 ~]# vim /etc/fstab #设置自动挂载
......
....
192.168.1.8:/opt/web1 /var/www/html nfs defaults,_netdev 0 0 #在最后输入
文件系统为: nfs ;挂载中的参数:_netdev 设备需要网络 ;若添加 soft 、intr参数可以实现软挂载,允许在网络中断时放弃挂载
[root@web1 ~]# systemctl enable httpd #开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@web1 ~]# systemctl start httpd #启动http
3.2 web2上安装(同web1)
[root@web2 ~]# yum -y install httpd rpcbind nfs-utils #安装http和rpcbind nfs-utils
配置nfs共享存储客户端
[root@web2 ~]# systemctl enable rpcbind
[root@web2 ~]# systemctl start rpcbind
[root@web2 ~]# showmount -e 192.168.1.8
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4
与挂载本地文件系统有所不同 :mount NFS的ip地址:NFS共享路径 本地路径(设备位置处应指出NFS地址)
[root@web2 ~]# mount 192.168.1.8:/opt/web2 /var/www/html #挂载
[root@web2 ~]# tail -l /etc/mtab
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos_c--06-root / xfs rw,relatime,attr2,inode64,noquota 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13107 0 0
/dev/sr0 /media/cdrom iso9660 ro,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=48364k,mode=700 0 0
192.168.1.8:/opt/web2 /var/www/html nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.6,local_lock=none,addr=192.168.1.8 0 0
[root@web2 ~]# echo "web2 192.168.1.6今天是大太阳
" > /var/www/html/index.html #编辑首页web2
[root@web2 ~]# vim /etc/fstab
......
....
192.168.1.8:/opt/web1 /var/www/htm2 nfs defaults,_netdev 0 0 #在最后输入
文件系统为: nfs ;挂载中的参数:_netdev 设备需要网络 ;若添加 soft 、intr参数可以实现软挂载,允许在网络中断时放弃挂载
[root@web2 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@web2 ~]# systemctl start httpd
web3(同web1、2步骤略)
使用本机访问:http://200.1.1.1 每一次刷新都会切换一次
[root@C-1 ~]# ipvsadm -ln #查看负载分配情况
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.1.1.1:80 rr
-> 192.168.1.4:80 Masq 1 0 1
-> 192.168.1.6:80 Masq 1 0 2
-> 192.168.1.7:80 Masq 1 0 1
ActiveConn:活动连接数
InActConn:指除了ESTABLISHED以外的,所有的其它状态的tcp连接 ESTABLISHED:意思是建立连接。表示两台机器正在通信。
在DR模式的群集中,LVS负载调度器作为群集的访问入口,不作为网关使用,web池中的所有节点服务器都各自接入lnternet,发送给web响应数据包不需要经过LVS负载调度器,继上面的实验修
使用上次实验环境:ip地址部署
内网地址配置 | 外网地址配置 | 群集地址配置 | |||
C-1:ens33 | 192.168.1.1/24 | C-1:ens37 | 200.1.1.1/24 | C-1:ens37:0 | 200.1.1.100 |
web1:ens33 | 192.168.1.4/24 | web1:ens37 | 200.1.1.10/24 | web1:lo:0 | 200.1.1.100 |
web2:ens33 | 192.168.1.6/24 | web2:ens37 | 200.1.1.20/24 | web2:lo:0 | 200.1.1.100 |
web3:ens33 | 192.168.1.7/24 | web3:ens37 | 200.1.1.30/24 | web3:lo:0 | 200.1.1.100 |
NFS:ens33 | 192.168.1.8/24 | NFS:ens37 | 没有地址 | NFS | 没有地址 |
外网ens37 200.1.1.1/24 ; 群集 ens37:0 200.1.1.100
[root@C7--01 ~]# cd /etc/sysconfig/network-scripts/
[root@C7--01 network-scripts]# cp ifcfg-ens37 ifcfg-ens37:0
[root@C7--01 network-scripts]# vim ifcfg-ens37:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37:0 #修改网卡名称
DEVICE=ens37:0 #修改网卡名称
ONBOOT=yes
IPADDR=200.1.1.100 #修改为群集地址
PREFIX=24
GATEWAY=200.1.1.254 #网关可有可无
IPV6_PRIVACY=no
保存退出
[root@C7--01 network-scripts]# ifup ens37:0
[root@C7--01 network-scripts]# ifconfig ens37:0
ens37:0: flags=4163 mtu 1500
inet 200.1.1.100 netmask 255.255.255.0 broadcast 200.1.1.255
ether 00:0c:29:6d:c2:fc txqueuelen 1000 (Ethernet)
1.1、对于 DR 集群来说,由于由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应
[root@C7--01 ~]# vi /etc/sysctl.conf
.......
...
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0
保存退出
[root@C7--01 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0
1.2 配置LVS-DR群集策略
[root@C7--01 ~]# ipvsadm -C #清除原有策略
[root@C7--01 ~]# ipvsadm -ln #查看
[root@C7--01 ~]# ipvsadm -A -t 200.1.1.100:80 -s rr
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.10 -g -w 1 #添加节点服务器200.1.1.10
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.20 -g -w 1
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.30 -g -w 1
[root@C7--01 ~]# ipvsadm-save #保存配置
-A -t C7--01.1:http -s rr
-a -t C7--01.1:http -r 200.1.1.10:http -g -w 1
-a -t C7--01.1:http -r 200.1.1.20:http -g -w 1
-a -t C7--01.1:http -r 200.1.1.30:http -g -w 1
[root@C7--01 ~]# systemctl enable ipvsadm
[root@C7--01 ~]# ipvsadm -ln #查看节点状态,Route代表 DR模式
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.1.1.100:80 rr
-> 200.1.1.10:80 Route 1 0 0
-> 200.1.1.20:80 Route 1 0 0
-> 200.1.1.30:80 Route 1 0 0
内网web1:ens33 | 192.168.1.4/24 | 外网web1:ens37 | 200.1.1.10/24 | 群集web1:lo:0 | 200.1.1.100 |
web1:确认ens33网卡确认ens37网卡是否已经配置完成
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 #直接新建lo:0虚拟接口
DEVICE=lo:0
ONBOOT=yes
IPADDR=200.1.1.100 #群集vip虚拟ip
NETMASK=255.255.255.255 #必须为32位全1掩码
保存退出
[root@web1 ~]# ifup lo:0
[root@web1 ~]# ifconfig lo:0
lo:0: flags=73 mtu 65536
inet 200.1.1.100 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
2.1 调整/proc内核参数,关闭ARP响应
[root@web1 ~]# vi /etc/sysctl.conf
......
....
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
保存退出
[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
解释:
arp_ignore
通常client和我们的主机不在同一网段中,当request到达路由器后,路由器就会发送arp广播寻找vip对应的mac地址,由于rs的lo:vip也绑定了vip,那么所有的rs都会受到arp广播,这是不应该的,因为我们的目的是只让vip收到
0:表示对于arp请求,任何配置在本地的目的IP地址都会回应,不管你有多少网卡,虚拟接口等等,只要在同一网段都会回应。这也是linux中默认的
1:表示如果arp请求的目的地址ip,不是该arp请求包进入的接口的ip地址,那么就不回应,显然arp包是从eth37口进来的,所以lo:vip就不回回应了
arp_announce
当rs向client发送reply包时,肯定要经过内网的路由器,那么它就会发送一个arp请求包给路由器来获取路由器的mac地址。关键就在这个arp请求包里,这个arp请求包里会包含rs自己的ip和mac,注意这个ip是之前client的request包的目的ip(因为rs在处理完请求后将source和destination对调返回给client),也就是vip。路由器在收到这arp请求后就会更新自己的缓存,此时arp缓存vip对应的就是rs的mac,在有client进来的request就找不到调度器了。而正确的应该vip对应调度器的mac
0:表示用ip包的source地址来设置arp请求的source地址
1:表示不适用ip包的source地址来设置arp请求的source地址,如果ip包source地址和端口的ip在同一网段,仍然使用ip包的source地址
2:不使用ip包的source地址来设置arp请求的source地址,而是由系统选择最好的接口来发送
2.2 添加到群集IP地址的本地路由记录
[root@web1 ~]# vi /etc/rc.local #添加VIP本地访问路由
......
...
/sbin/route add -host 200.1.1.100 dev lo:0 #添加内容 群集ip地址 本地虚拟网卡lo:0
保存退出
[root@web1 ~]# route add -host 200.1.1.100 dev lo:0
2.3、web2:确认ens33网卡确认ens37网卡是否已经配置完成
web2:ens33 | 192.168.1.6/24 | web2:ens37 | 200.1.1.20/24 | web2:lo:0 | 200.1.1.100 |
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 #直接新建lo:0虚拟接口
DEVICE=lo:0
ONBOOT=yes
IPADDR=200.1.1.100 #群集vip虚拟ip
NETMASK=255.255.255.255 #必须为32位全1掩码
保存退出
[root@web1 ~]# ifup lo:0
[root@web1 ~]# ifconfig lo:0
lo:0: flags=73 mtu 65536
inet 200.1.1.100 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
2.4、 调整/proc内核参数,关闭ARP响应
[root@web1 ~]# vi /etc/sysctl.conf
......
....
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
保存退出
[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
2.5 添加到群集IP地址的本地路由记录
[root@web1 ~]# vi /etc/rc.local #添加VIP本地访问路由
......
...
/sbin/route add -host 200.1.1.100 dev lo:0 #添加内容 群集ip地址 本地虚拟网卡lo:0
保存退出
[root@web1 ~]# route add -host 200.1.1.100 dev lo:0
2.6、web3同:web1 web2
访问 http://200.1.1.100
[root@C7--01 ~]# ipvsadm -ln #查看节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.1.1.100:80 rr
-> 200.1.1.10:80 Route 1 0 3
-> 200.1.1.20:80 Route 1 1 3
-> 200.1.1.30:80 Route 1 1 3
1. 常见的群集类型包括哪几种?
三种:负载均衡群集、高可用群集、高性能运算群集
2. 图示负载均衡群集的分层结构
3. 简述LVS负载均衡群集的NAT模式和DR模式的区别?
NAT模式:只需要一个公网ip,最易用,安全性好,许多硬件负载均衡设备采用
DR模式:DR和TUN,负载能力更强大,适用范围更广,节点安全性稍差
4. LVS负载均衡群集的常用调度算法包含哪几种?
四种:轮询、加权轮询、 最少连接、 加权最少连接
5. 在Linux系统中执行ipvsadm -A -t 172.16.16.172:80 -s rr命令的作用是什么?
对TCP80端口提供负载分流服务,使用的调度为轮询
6. 在使用ipvsadm命令添加集群节点时使用-m、-g、-i分别表示什么含义?
分别表示: -g 使用DR 模式 | -m 使用nat模式 | -i 使用TUN模式
7. 在Linux系统中执行showmount -e 192.168.7.250命令的作用是什么
查看NFS服务器共享了哪些目录
8. 在 /etc/sysctl.conf配置文件中添加net.ipv4.ip_forward = 1配置项的作用是?
启用路由转发
9. 在Linux系统中执行什么命令可以清除ipvsadm所设置的负载分配策略?
执行 ipvsadm -C 可以清空所有的负载分配策略
10. 构建LVS-DR群集时,在调度器与节点服务器中的/proc参数调整有何区别?
DR群集模式:LVS负载调度器和节点需要共同VIP地址,应关闭Linux内核的重定向参数响应
节点服务器:同样要有VIP地址,但此地址仅用作发送Web响应数据包的原地址,不需要监听客户机的访问请求(改由调度器监听毕分发)