架构师的成长之路初片~LVS

proxy 192.168.4.5 (vIP:公布给用户访问的虚拟 IP )(V:Virtual)
192.168.2.5 (DIP:调度器链接real server的IP)
(D:Director)
client 192.168.4.10

web1 192.168.2.100 (RIP:集群节点上使用的 IP 地址)
192.168.4.100 (real)
gataway-->192.168.2.5
web2 192.168.2.200 (RIP:集群节点上使用的 IP 地址)
192.168.4.200

linux:天生是个软路由

LVS:是个(虚拟)的负载均衡调度器 (Centos7)
LVS的工作模式 3 种
NAT模式(常用) 全称:网络地址转换模式
从调度器中来,调度器中去。
DR模式(常用) 全称:直接路由模式
从调度器中来,不从调度器中出去
TUN模式 全称:隧道模式
从调度器中的隧道中来,隧道中出去。


LVS的常用调度算法4种。
--轮询(Round Robin)
--加权轮询(Weighted Round Robin)
--最少连接(Least Connections)
当判断某台主机连接数已达到最少连接,则调度器选择其他空闲的服务器进行连接。
--加权最少连接(Weighted Least Connections)


一:NAT模式
1)装包: ipvsadm
主要的操作主机:proxy(Director)
环境: real server: 配置web服务器
192.168.2.100 启用
192.168.2.200
Director server: 在上安装并启用ipvsadm
192.168.2.5 启用
192.168.4.5 关闭
Client: 连接虚拟服务器测试
192.168.4.10
/proc/sys/net/ipv4/ip_forward //开启路由转发,临时有效
/proc内的是特殊文件,只能用重定向修改。文件本身不存在。

echo"net.ipv4.ip_forward = 1" >> /etc/sysctl.conf //永久生效,修改配置文件。

sysctl -p //刷新路由转发功能 :刷新:/etc/sysctl.conf


LVS包:ipvsadm //重启就凉凉

ipvsadm -A -t 192.168.4.5:80 -s wrr

ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m

ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m

永久保存所有规则(非必须)
systemctl enable ipvsadm //开即自启
ipvsadm-save -n > /etc/sysconfig/ipvsadm //设置永久规则

报错集:选项出现错误
[root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -w wrr
illegal weight specified //指定的重量非法


LVS缺点:
缺少健康检查

NAT模式总结:
由于C访问Pro的2.5网段,而pro会通过虚拟的4.5网段转发到Server端。由此访问到server端的web内容
一对一的接口转接。
主要操作的就proxy机子,而其他的正常操作,关selinux,firewalld.
server端的网关设置为proxy的ip即可。

二、DR模式 启用4.0网段的网卡
缺点:
只能是C端访问PROXY端的虚拟IP。
proxy端不能访问proxy端的虚拟地址。
原因:因为proxy的IP与real的欺骗ip重合,因同一网段不能出现同一IP,所以会导致网络混乱。

环境: real server: 配置web服务器
192.168.4.100 启用
192.168.4.200 启用
Director server: 在上安装并启用ipvsadm
192.168.2.5
192.168.4.5 启用
Client: 连接虚拟服务器测试
192.168.4.10

流程:
clent-->proxy--->web
clent<--web

正常流程: 涉及安全问题
C--->P---->w
C<---P<----w

IP地址欺骗:原因
由于A访问B,所以A只接受B的信息。如若C或者其他的机子发信息给A,则A机会丢弃一切来源不明的数据包。
又因为流程的需要,所以只能把Server端设置地址欺骗,(把自己的IP设置为A机访问B机时的IP地址)

###IP地址欺骗会造成的影响:
###网络中的混乱

1)proxy
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
]# cat ifcfg-eth1:1
TYPE=Ethernet
BOOTPROTO=none //等于ipv4.method manual ,yes则为动态,none则为静态。
NAME=eth1:1
DEVICE=eth1:1
ONBOOT=yes
IPADDR=192.168.4.15
PREFIX=24

server端:
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0 //#设备名称 nmcli
IPADDR=192.169.4.15 //#IP地址
NETMASK=255.255.255.255 //#子网掩码~表示网络位和主机位
NETWORK=192.168.4.15 //#网络地址
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=192.168.4.15 //#广播地址
ONBOOT=yes //#开机是否激活本网卡
NAME=lo:0 //#网卡名称

# vim /etc/sysctl.conf //修改内核参数
#文件末尾手动写入如下4行内容,英语词汇:ignore(忽略、忽视),announce(宣告、广播通知)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2 0:回应,1:偶尔回应 2:不做应答
###ARP类似于DNS。
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应(防止进站冲突)
#本机不要向外宣告自己的lo回环地址是192.168.4.15(防止出站冲突)
[root@web1 ~]# sysctl -p //刷新即可
重启network服务:systemctl restart network

###如若测试不成功,则主要web端:IP (细节)

 

------------------------------------------------------------------------------------------------------------------------------------------

Keepalived:包名keepalived //不关心是什么软件 (Centos7)
Nginx+Keepalived ftp:Keepalived LVS:Keepalived ....
包名:keepalived (n):保持活跃的
目的:实现高可用 类似于VRRP内的virtual-ip

缺点:会出现脑裂的情况:
原因:1) 高可用服务器对之间心跳线链路发生故障,导致无法正常通信
2)因心跳线坏了(包括断了,老化)
3)因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
4)因心跳线间连接的设备故障(网卡及交换机)
5)因仲裁的机器出问题(采用仲裁的方案)
6)高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输
7)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
8)其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等 提示:Keepalived配置里同一 VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生
解决方案:

Keepalived功能(三个)
1)VRRP提供VIP,给两台设备提供VIP,实现两台电脑的高可用
2)自动配置LVS规则(LVS+Keepalived)
3)Keepalived进行健康检查(LVS+Keepalived)

 

一、keepalived //实现高可用
环境:
proxy: 192.168.4.5
###192.168.4.15(虚拟IP) //停掉或删除此IP

web1 192.168.4.100
192.168.4.15(虚拟IP)

web2 192.168.4.200
192.168.4.15(虚拟IP)

client: 192.168.4.10

相关单词:
priority 优先 prior优先(的)+ity具备某种性质,状况-->先;优先权

web:
1)装包:
keepalived
2)修改配置文件:
/etc/keepalived/keepalived.conf
global_defs {
router_id web2 #12行,设置路由ID号(实验需要修改)
vrrp_iptables #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
}
vrrp_instance VI_1 {
state BACKUP #21行,备服务器为BACKUP(实验需要修改)
interface eth0 #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名)
virtual_router_id 51 #23行,主辅VRID号必须一致
priority 50 #24行,服务器优先级(实验需要修改)
advert_int 1
authentication {
auth_type pass
auth_pass 1111
}
virtual_ipaddress { #30~32行,谁是主服务器谁配置VIP(实验需要修改)
192.168.4.80/24
}

web2:修改:router_id\state\interface\priority\virtual_ipaddress 即可。
###注意priority的设置,优先级web2比web1小。(实际操作看个人需求以及实际情况配置)
3)启服务:
systemctl start keepalived

4)检测
ip a 可查看到内部有 192.168.4.80 的虚拟IP
4.1:首先随便用一台主机用curl
curl 192.168.4.80 //会一直出现priority值高的服务器页面。

4.2:停掉其中web1种的httpd服务,再用client检测
curl 192.168.4.80 //则会出现web2的httpd页面。
如以上检测成功,则代表实验成功。

###
该实验中,http服务的开启与关闭与keepalived无关。
当前情况:web1的keepalived关闭,web2的keepalived开启。
当web1的keepalived开启时,则虚拟ip 4.80 则会重新回到web1服务器。
(根据优先级自动调节)

-------------------------------------------------------------------------------------------------------------------------------------

 

posted @ 2021-03-28 14:07  樱花泪  阅读(86)  评论(0编辑  收藏  举报