企业---lvs服务

lvs(LB集群的一个实现)

硬件:F5 BIG-IP

	软件:
	lvs(四层)
	haproxy
	nginx (七层)
	varnish

lvs附着于netfiler
五个内置的钩子函数
PREROUTING ---> INPUT(流向内部)
PREROUTING----> FORWARD ---> POSTROUTING(转发)
OUTPUT---> POSTROUTING(流向外部)
1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
lvs工作于INPUT
PREROUTING ---> INPUT(lvs在此强行改变数据流向)--->POSTROUTING

lvs是由两部份组成的
ipvs(ip virrual server):一段代码(工作在内核)是真正生效实现调度的代码
ipvsadm(工作在用户空间,负责为ipvs内核框架编写规则)

ipvsadm(工作在用户空间的命令行工具 写具体的规则 用于管理集群服务)/ipvs(工作在内核中的netfilter input钩子函数上)

lvs相关术语
1. DS:Director Server。指的是前端负载均衡器节点。
2. RS:Real Server。后端真实的工作服务器。
3. VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
4. DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
5. RIP:Real Server IP,后端服务器的IP地址。
6. CIP:Client IP,访问客户端的IP地址。


lvs type:
	lvs-nat
		多目标的DNAT:通过修改请求报文的目标IP地址(同时可能会修改目标端口),至挑选出某RS的RIP地址实现转发
	1.RS和DIP应该使用私网地址,且RS的网关要指向DIP
	2.请求和响应报文都要经由director转发,极高负载的场景中,director可能会成为系统瓶颈
	3.RS可以使用任意OS
	4.RS的RIP和Director的DIP必须要在同一IP网络:RS的网关要指向DIP

LVS模式一:DR(Direct Routing)直接路由模式

1:客户端请求 VIP 时,通过因特网先到达调度器,调度器会根据调度算法  将这个请求转发给真实的服务器,
  转发的过程中仅仅是修改了数据报文中的 MAC地址.
  当真实服务器接受到数据请求后进行处理,然后发送响应给客户端,
  但此时的源 IP 为真实的服务器 IP,即 RIP,
  目标 IP 为客户端 IP,即 CIP,但是客户端并没有请求RIP,
2:所以客户端是不会接收数据响应,所以,就要修改源 IP 为 VIP,
  但是不可以将 VIP 设置在出口网卡上,否则会响应客户端的 arp 请求。
  失去了调度的意义,因此要在 lo 接口配置 VIP,并且将 VIP 隐蔽,
  即设置 NETMASK 为255.255.255.255,这样,
  数据响应从真实服务器出去的时候的源 IP 是 VIP,
  目的 IP 是 CIP,客户端就会接收次数据响应,从真实服务器到客户端是通过Internet。

1.DR 模式需要调度器与真实服务器在同一个物理网络。
  即通过交换机或者高速的HUB相连,中间没有隔有路由器。
2.VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见 的,
  用于接收虚拟服务的请求报文。
3.所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,
  它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

优点:性能最高

在这里插入图片描述#############################################
实验环境

server1:172.25.78.1
server2:172.25.78.2
server3:172.25.78.3

负载调度器调度的服务器:server1,server2
调度器:server3

【server3】:

yum install ipvsadm -y
ipvsadm --help      ##可以查看ipvsadm的使用方法

加载 rule 
  ipvsadm -A -t 172.25.78.100:80 -s rr       ##172.25.78.100是虚拟ip,自定义
  ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.2:80 -g
  ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.1:80 -g
  ip addr add 172.25.78.100/32 dev eth0
  ipvsadm -Ln    ##查看添加的规则

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
【server1,server2】(配置环境一样):

ip addr add 172.25.78.100/32 dev eth0   /32   ##广播域
yum install httpd -y
cd /var/www/html/  ----> ls
vim index.html
server1中: server1
server2中: server2
systemctl start httpd
netstat -antlp   ##查看http端口80

在这里插入图片描述
在这里插入图片描述
【server1】
在这里插入图片描述
【server2】
在这里插入图片描述
在这里插入图片描述
【真机测试】:

curl 172.25.78.100
server2
arp -an | grep 172.25.78.100  ##对应的是server2服务器的 eth0
【server2】:ip addr show

在这里插入图片描述
在这里插入图片描述

【真机测试】:

arp -d 172.25.78.100   ##删除缓存
arp -an | grep 172.25.78.100
curl 172.25.78.100     ##再次访问
server1
arp -an | grep 172.25.78.100  ##对应的是server1服务器的 eth0

在这里插入图片描述
在这里插入图片描述
【server1,server2】

yum install arptables  -y
arptables -A INPUT -d 172.25.78.100 -j DROP
##server1  
arptables -A OUTPUT -s 172.25.78.100 -j mangle --mangle-ip-s 172.25.78.1   
##server2 
arptables -A OUTPUT -s 172.25.78.100 -j mangle --mangle-ip-s 172.25.78.2   
arptables -L

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【真机测试】: 多次访问
curl 172.25.78.100

【server3】

 ipvsadm -L   ##可以查看到各个服务器被访问的次数
 ipvsadm -C   ##清除规则,在规则被清除后,真机访问会失败,需要重新添加规则,才可访问

在这里插入图片描述
在这里插入图片描述
在规则被清除后,真机访问会失败,需要重新添加规则,才可访问
在这里插入图片描述
在这里插入图片描述

【server2】关闭server2的httpd服务
systemctl stop httpd

再次访问:
【真机】:
每当访问到server2的时候就会报错,访问失败
curl 172.25.78.100  
【server3】:ipvsadm -L

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
LVS模式:DR模式下健康检查(ldirectord)

为什么需要健康检查?

如果后端真实服务器出现问题,
那么在测试端测试的时候,会返回给我们一个错误的页面,
那么我们需要对后端服务器做健康检查,
保证只返回正确的页面提供给用户。

ldirectord是后端做检查的一个工具

(1)官网下载ldirectord-3.9.5-3.1.x86_64.rpm,
将这个包传到我们LVS调度器的虚拟机,用来对后端服务器做健康检查

在这里插入图片描述
【server3】

安装yum install ldirectord-3.9.5-3.1.x86_64.rpm -y   ##会安装失败

【真机】
cd /var/www/html/westos/addons  --->  ls
HighAvailability    ##高可用

更改yum文件配置
vim /etc/yum.repos.d/westos.repo 
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.78.250/westos
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.78.250/westos/addons/HighAvailability
gpgcheck=0

yum clean all
yum repolist
yum install ldirectord-3.9.5-3.1.x86_64.rpm -y   ##安装成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm     ##查看配置文件
cd /etc/ha.d/resource.d/   --->  ls
有ldirectord


cd /etc/ha.d   ---> ls
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d  ---> ls
vim ldirectord.cf 
virtual=172.25.78.100:80             ##虚拟服务的ip
        real=172.25.78.1:80 gate      ##真正的服务端ip
        real=172.25.78.2:80 gate      ##真正的服务端ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
vim ldirectord.cf
在这里插入图片描述

加载 rule

  ipvsadm -A -t 172.25.78.100:80 -s rr       ##172.25.78.100是虚拟ip,自定义
  ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.2:80 -g
  ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.1:80 -g

【真机测试】: 多次访问 
 ##server1和server1 会被轮询访问
 curl 172.25.78.100 

server2: systemctl stop httpd
####会一直访问到server1,访问不到server2

在这里插入图片描述
在这里插入图片描述

keepdlived

keepalived是什么:

是集群管理中保证集群高可用的一个服务软件,功能类似于heartbeat,
用来防止单点故障
实验环境
server1:172.25.78.1
server2:172.25.78.2
server3:172.25.78.3
server4:172.25.78.4

server3:yum install httpd
安装的时候是给本机的虚拟ip(172.25.20.100)添加的端口

高可用:保证服务器一直在线,每时每刻不下线
负载均衡:一个调度

virtual_server :相当于VIP
server3,server4:调度器
server1,server2:负载
server3(主)和 server4(备) :同时是调度器,
例如:server3挂的时候,server4顶替server3的服务
只要主(server3)在,备(server4)就会一直处在准备状态,当server3挂了的时候,server4才开始使用服务
SYSV:脚本
 

server3 和 server4 的 配置环境(server3和server4环境相同)

systemctl stop ldirectord

cd /root ---> ls
cd keepalived-2.0.6 
./configure --help | grep init 

在这里插入图片描述

 ./configure --prefix=/usr/local/keepalived --with-init=systemd   ##安装目录
yum install openssl-devel -y 
yum install gcc -y
./configure --prefix=/usr/local/keepalived --with-init=systemd
make && make install


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
软链接比较方便
cd /usr/local/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

vim /etc/keepalived/keepalived.conf
########【server3 中】
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhostkeepalived-2.0.6
smtp_server 127.0.0.1 ##本机
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state MASTER ##主调度器
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.20.100 ##虚拟ip
}
}

virtual_server 172.25.20.100 80 {
delay_loop 3
lb_algo rr
lb_kind DR
#persistence_timeout 50 ##保持连接,使用lftp的时候,不能注释,必须开启
protocol TCP

real_server 172.25.20.1 80 {   ##真正的服务器1
   TCP_CHECK {
   weight 1
	connect_port 80
	connect_timeout 3

}
}

real_server 172.25.20.2 80 {    ##真正的服务器1
   TCP_CHECK {
   weight 1
	connect_port 80
	connect_timeout 3

}
}

}

######## 【server4中】
vim /etc/keepalived/keepalived.conf

5:root@localhost
8:smtp_server 127.0.0.1 ##本机
12:#vrrp_strict ##注释
18:state BACKUP ##备的调度器
21:priority 50 ##优先级,需比主调度器小

yum install ipvsadm -y
yum install mailx -y

####################################################################### 隧道模式
优点:lb和rs可以不需要在统一 局域网
缺点:资源贵,

【server3环境】:
systemctl stop keepalived
ipvsadm -l
ip addr del 172.25.20.100/32 dev eth0
modprobe ipip ##重新加载
ip addr add 172.25.20.100/24 dev tunl0
ip addr show
ip link set up tunl0
ipvsadm -A -t 172.25.20.100:80 -s rr
ipvsadm -a -t 172.25.20.100:80 -r 172.25.20.1:80 -i
ipvsadm -a -t 172.25.20.100:80 -r 172.25.20.2:80 -i
ipvsadm -l

【server1和server2环境】:
modprobe ipip
ip addr del 172.25.20.100/32 dev eth0
ip addr show
ip addr add 172.25.20.100/24 dev tunl0
ip addr show
ip link set up tunl0

sysctl -a|grep rp_filter
##内核全部改为0(企业6可以在配置文件(vim /etc/sysctl)中改)
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -p ##生效
sysctl -a|grep rp_filter ##重新查看

真机测试:
curl 172.25.20.100
curl 172.25.20.100

作业:查什么是fullnet,优点,缺点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值