高可用集群概念及相关部署

一、MAC地址

mac地址是介质访问控制地址,也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。

mac地址的作用是标识具体的网络节点。MAC地址是一个用来确认网络设备位置的位址,mac地址在一定程度上与硬件一致,是基于物理的。计算机之间进行通信时,数据包在节点之间的传递都是由地址解析协议负责将IP地址映射到MAC地址上来的。

在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 。

ifconfig -a |grep -i hw 输出mac地址,HWaddr字段就是MAC地址。

二、ARP

arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。arp是地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议,用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位);

ARP协议工作原理

1)每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。

2)主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。

3)网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。

4)某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。

5)当本网络的所有主机收到该 ARP 数据包时:

(A)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。

(B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。

(C) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

6)源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

三、VLAN

VLAN是英文Virtual Local Area Network的简称,又叫虚拟局域网,是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。要想划分VLAN,必须购买支持VLAN功能的网络设备。

VLAN是为解决以太网的广播问题和安全性而提出的,一个VLAN内部的广播和单播流量都不会转发到其他VLAN中。即使是处在同一网段的两台计算机,如果不在同一VLAN中,它们各自的广播流也不会相互转发。

划分VLAN有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。由于VLAN隔离了广播风暴,也隔离了不同VLAN之间的通讯,因此,不同VLAN之间的通讯必须依靠路由器或者三层交换机来实现。

四、LVS三种工作模式

集群的负载调度技术,可基于ip,端口,内容等进行分发,其中基于ip的负载均衡效率是最高的.

基于ip的负载均衡模式,常见的有三种: 常见的有地址转换(NAT)、IP 隧道(TUN)和直接路由(DR)三种工作模式.

优点

缺点

NAT

1)对后端的操作系统没有要求

2)只需要一个IP地址配置在调度器上,服务器组可以用私有IP地址;

3)支持端口映射

1)请求和响应都需要通过LVS,伸缩能力有限(一般后面能连接10台左右服务器),LVS容易成为性能瓶颈。

2) RS和DIP属于同一IP网络中网卡应该使用私网地址

3)且RS的网关要指向DIP(调度器ip,调度器上有两个ip);

TUN

1)负载能力强,不需要调度应答报文;

2)可以跨网段,服务器和调度器可以不在同一个VLAN中

1)所有的服务器必须支持“IP Tunneling”协议,需安装内核模块,安装复杂;

2)建立IP隧道的开销大;

3)服务器需要联通外网,风险较大且需要更多的公网ip;

4)不支持端口映射

DR

在二层转发,性能较高

1)要求L和服务器都有一块网卡连在同一个物理网段vlan中;

2)不支持端口映射

五、LVS部署(DR)

客户端访问目标地址vip,DR会把目标地址mac转换为RS的mac地址(流量转发),RS通过解包就能看到客户端访问的vip,而且此时RS要禁用arp协议,使只能通过调度器来访问自己

环境:rhel7.6 selinux and firewalld is disabled

需要:

测试机 servers4

lvs调度器 server1

realserver1 server2

realserver2 server3

Ipvs具体实现是由ipvsadm这个程序来完成,因此判断一个系统是否具备ipvs功能,只需要察看ipvsadm 程序是否被安装。察看ipvsadm程序最简单的办法就是在任意路径执行命令ipvsadm。

server1:

安装相关工具,添加策略

yum install -y ipvsadm

添加VIP地址,确保IP地址没有被占用

ip addr add 192.168.56.200/24 dev ens33

编写LVS策略:

ipvsadm -A -t 192.168.56.200:80 -s rr

-A:添加一个虚拟ip,-s:指定调度算法,rr为轮询调度算法,-t:TCP服务

ipvsadm -a -t 192.168.56.200:80 -r 192.168.56.164:80 -g
ipvsadm -a -t 192.168.56.200:80 -r 192.168.56.165:80 -g

-a往这个tcp服务里面添加;-r:表示真实的服务器ip;-g:表示直连模式;端口固定。

ipvsadm -ln

查询,以数字形式输出地址和端口号

TCP 192.168.56.200:80 rr

-> 192.168.56.164:80 Route 1 0 0

-> 192.168.56.165:80 Route 1 0 0

realserver上安装httpd服务用于测试

server2:

yum install -y httpd
systemctl enable --now httpd
echo server2 > /var/www/html/index.html

server3:

yum install -y httpd
systemctl enable --now httpd
echo server3 > /var/www/html/index.html

realserver上安装arptables软件,屏蔽ARP

在DR(直连)模式中,客户端想要通过vip访问到真实后端的资源,要求调度节点和后端都要有相同的vip

我们可以禁用后端的arp(地址广播协议),让主机不要对外广播自己的vip地址,就相当于不要告诉别人我有这个ip,链路层的传输只需要mac地址而不需要通过ip

server2:

Ip addr add 192.168.56.200/32 dev ens33
yum install -y arptables
arptables -A INPUT -d 192.168.56.200 -j DROP
#当别人直接访问我的172.25.0.100地址的时候直接丢弃数据包
arptables -A OUTPUT -s 192.168.56.200 -j mangle --mangle-ip-s 192.168.56.164
#当出去的地址(源地址)为172.25.0.100的时候转换为实际的ip
arptables-save > /etc/sysconfig/arptables
#保存策略
systemctl enable arptables.service
#重启服务生效

server3:

Ip addr add 192.168.56.200/32 dev ens33
yum install -y arptables
arptables -A INPUT -d 192.168.56.200 -j DROP
arptables -A OUTPUT -s 192.168.56.200 -j mangle --mangle-ip-s 192.168.56.165
arptables-save > /etc/sysconfig/arptables
systemctl enable arptables.service

测试:

对vip进行访问10次测试,结果显示负载均衡的。

[root@server4 ~]# for i in {1..10}; do curl 192.168.56.200;done
server2
server3
server2
server3
server2
server3
server2
server3
server2
server3

查看调度器:

[root@server1 ~]# 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.56.200:80 rr
-> 192.168.56.164:80 Route 1 0 7
-> 192.168.56.165:80 Route 1 0 7

六、通过keepalive解决rs健康检测与调度节点高可用问题

keepalived解决健康检查和lvs主备冗余,解决静态路由器(调度器)单点问题。

高可用部分的心跳检测部分,是两台机器之间的心跳,用来做lvs冗余,称之为高可用。keepalived巧妙的用了虚拟路由冗余协议vrrp协议,vrrp用于路由器硬件设备之间的冗余。

vrrp简单来说分为MASTER和BACKUP,主备,可以是一个主多个备,主备之间有心跳,主不断的往内发,可以通过广播的机制,发心跳包;backup只负责收,不负责发,backuo收不到master发过来的信息,就认为master挂了,根据优先级进行选举,成为master,谁的优先级高,谁就是下一个master,只有一个backup的时候,这个backup自动就成为master。server1是MASTER,server4是BACKUP。

server1、4 用来做lvs冗余,同时部署lvs,server2、3作为real service

基本环境

rhel7.6 selinux and firewalld is disabled

master:server1

backup:server4

realserver1:server2

realserver2:server3

先确认LVS负载均衡正常:

[root@server1 ~]# 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.56.200:80 rr
-> 192.168.56.164:80 Route 1 0 12
-> 192.168.56.165:80 Route 1 0 11

master配置

安装keepalive,修改keepalive配置文件,启动keepalive即可。

[root@server1 ~]# yum install -y keepalived mailx
[root@server1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost #邮箱
}
notification_email_from Alexandre.Cassen@firewall.loc
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 { #vrrp高可用
state MASTER #master状态
interface ens33 #通信接口,与主机实际接口名称相同
virtual_router_id 51 #VRID master和backup保持一致
priority 100 #优先级
advert_int 1 #心跳频率
authentication { #认证方式
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #lvs vip地址
192.168.56.200
}
}
virtual_server 192.168.56.200 80 { #LVS虚拟服务
delay_loop 6 #对rs的健康检测频率
lb_algo rr #调度算法
lb_kind DR #lvs工作模式
#persistence_timeout 50 #持久连接
protocol TCP
real_server 192.168.56.164 80 { #rs定义
weight 1 #权重
TCP_CHECK { #rs检测方式
connect_timeout 3
delay_before_retry 3
}
}
real_server 192.168.56.165 80 {
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
}
}
}
[root@server1 ~]# systemctl enable --now keepalived.service

backup配置:

backup的配置文件只需要更改节点类型为backup和优先级低于100即可,如50,然后state为backup

启动keepalive:backup上没有VIP

此时server1的keepalive down掉之后,server4将接管成为master,并且获得vip和ipvs策略,仍然不影响客户端的正常访问,调度依然可以进行,如果server1再次启开keepalive,则server4又会称为backup,vip和ipvs策略都会迁移到server1上,因为server1优先级更高.随着调度节点的变化,arp也会随之变换,客户端在访问时,arp过滤出来的mac地址也会变化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值