集群的概述和分类和负载均衡集群

集群的概述

分布式:由多台机器共同完成同一项任务的服务器构架方式

集群的分类

  • 负载均衡:多台机器完成同一类任务;对外表现为一个整体
  • 高可用性
  • 高性能计算

性能扩展方式

  • 垂直扩展:增加服务器硬件性能
  • 水平扩展:增加服务器数量负载

负载均衡性集群

  • 硬件:硬件负载均衡服务器(OSI模型的2,4,7层)
  • 软件:LVS(Linux Virtual Server):通过匹配ip地址和端口来决定数据包的处理方案

OSI中层级划分

  • 应用层负载(七层):nginx(默认支持七层,可通过特殊模块支持4层),通过拦截请求实现负载均衡,共有两次TCP连接
  • 传输层负载(四层):LVS(默认支持4层),通过转发请求实现负载均衡,共一次TCP连接
  • 链路层负载(二层):智能交换机,服务器------包含动态聚合(LACP协议)

实例:多级负载:高并发场景

一级:LVS

二级:Nginx Nginx

真实服务器:httpd httpd httpd httpd

集群规则的增删改查

创建

语法:ipvsadm -A -t ip:port -s rr或ipvsadm -a -t ip:port -r ip1:port1 -m

选项:

  • -A:添加一个集群规则
  • -t:过滤数据包的条件,匹配数据包的传输协议是否是tcp
  • ip:port:过滤数据包的条件,匹配数据包的包头信息,即目标ip和目标port
  • -s rr:指定符合条件数据包的调度算法
  • -a:向已存在的集群规则中添加真实服务器列表
  • -r:指定真实服务器的ip和port
  • -m:LVS软件的工作模式(-m:NAT模式)

查看

语法:ipvsadm -ln

选项:

  • -l:列出
  • -n:数字化显示代码

删除

语法:ipvsadm -D -t ip:port或ipvsadm -d -t ip:port -r ip1:port1

选项:

  • -D:删除整个集群
  • -d:删除集群内的指定真实服务器

修改

语法:ipvsadm -E -t ip:port -s wrr -p 300或ipvsadm -e -t ip:port -r ip1:port1 -m -w n(数字)

选项:

  • -E:修改集群信息,列出算法类型
  • -p:持久化连接
  • -e:修改集群中真实服务器的信息,如权重比例

规则保存和还原

  • ipvsadm-save -n > filename:另存为,切记要使用-n选项进行保存
  • ipvsadm-restore < filename:还原

开启自启动集群规则

复制代码
vim /etc/rc.d/rc.local

ipvsadm-restore < filename

#记得添加执行权限
chmod +x /etc/rc.d/rc.local

防火墙服务

注:不管是ipvsadm还是iptables都是包过滤机制

  • 开启时自动加载规则配置文件,加载到内存中使其生效(让内核中的防火墙函数能够识别到)
  • 手动写的规则也是写入内存空间,服务即便不启动也会被内核中的防火墙函数识别到

1.丢弃数据包

复制代码
#禁止icpm协议访问
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP

-A:追加规则
INPUT:入站时执行
-p:指定协议
-j:匹配规则后执行的动作

2.拒绝数据包

复制代码
#清空防火墙规则
[root@localhost ~]# iptables -F
#拒绝icmp数据包
[root@localhost ~]# iptables -A INPUT -p icmp -j REJECT

3.放行数据包

复制代码
#放行icmp数据包
[root@localhost ~]# iptables -A INPUT -p icmp -j ACCEPT

扩展------名词解释

  • Session(会话):是服务器端用于跟踪用户状态的机制,确保用户在多次请求中保持连续性,即持久化连接
  • Cookie :是服务器发送到客户端,客户端在后续请求中自动携带 Cookie,帮助服务器识别用户身份,不必再次登录验证

实验:Nginx和LVS负载效果对比实验

拓扑结构

一台测试机(3.130),一台调度器(+路由器)(3.140,4.140),两台真实服务器(httpd)(4.150,4.160),共享存储服务器(4.170)

1.准备工作

|---------|-----------------------------|-----------------|---------------|
| 类型 | ip | 服务 | 虚拟ip |
| 测试机 | 192.168.3.130 | curl,浏览器 | 无 |
| 调度器+路由器 | 192.168.3.140 192.168.4.140 | LVS(IPVS),Nginx | 192.168.3.140 |
| 真实服务器1 | 192.168.4.150 | httpd | 无 |
| 真实服务器2 | 192.168.4.160 | httpd | 无 |
| 共享存储服务器 | 192.168.4.170 | NFS | 无 |

2.构建共享存储

4.170

复制代码
# 创建共享目录
$ mkdir /data/www -p
# 安装RPCbind和NFS服务
$ dnf -y install rpcbind nfs-utils
# 编写共享配置文件,设置共享目录,共享对象,共享权限,映射关系,同步方式
$ vim /etc/exports
/data/www 192.168.4.0/24(rw,all_squash,sync)
$ chown nobody:nobody /data/www
# 启动服务
$ systemctl enable --now rpcbind
$ systemctl enable --now nfs-server

3.构建web服务

4.150,4.160

复制代码
# 分别在两台web服务器上进行httpd软件的安装和共享存储的挂载
$ dnf -y install httpd
$ mount 192.168.4.170:/data/www /var/www/html
# 为两个web服务器创建各自专属的首页文件
$ echo "web server 130..." >> /var/www/html/index130.html
$ echo "web server 140..." >> /var/www/html/index140.html
# 分别修改两个web服务器配置文件的DirectoryIndex选项绑定各自的首页文件
130主机绑定index130.html
140主机绑定index140.html
# 启动服务
$ systemctl enable --now httpd

4.构建代理服务器

3.140------记得开启路由转发功能

复制代码
[root@localhost ~]# dnf -y install nginx
[root@localhost ~]# vi /etc/nginx/nginx.conf
upstream apache {
        server 192.168.4.150;
        server 192.168.4.160;
    }
    server {
        location / {
                proxy_pass http://apache;
        }

[root@localhost ~]# systemctl enable --now nginx

5.测试nginx负载效果

在测试机(3.130)上访问nginx代理服务器

总结:nginx负载均衡是通过拦截测试机的http请求实现的,拦截后再通过本地ip地址访问apache服务器,共经过了两次tcp连接

6.构建LVS负载服务器

3.140

复制代码
# LVS 分为内核空间的IPVS模块和用户空间的ipvsadm命令,IPVS模块是内核的一部分不需要安
装,只需要验证是否启用即可;ipvsadm命令则需安装才能使用
# 验证IPVS模块是否启用
$ grep -i "ip_vs" /boot/config-5.14.0-427.13.1.el9_4.x86_64 
# 安装ipvsadm命令
$ dnf -y install ipvsadm

[root@localhost ~]# ipvsadm -A -t 192.168.3.140:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.3.140:80 -r 192.168.4.150:80 -m
[root@localhost ~]# ipvsadm -a -t 192.168.3.140:80 -r 192.168.4.160:80 -m
[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.3.140:80 rr
  -> 192.168.4.150:80             Masq    1      0          0         
  -> 192.168.4.160:80             Masq    1      0          0         
[root@localhost ~]# 

3.130测试

总结:LVS传输层负载均衡服务器通过转发http请求实现负载均衡,共经过一次tcp连接

相关推荐
HalvmånEver几秒前
Linux:基础IO(二)
linux·运维·服务器
悟能不能悟7 分钟前
Apache和nginx的区别
运维·nginx
Amrf13 分钟前
在ubuntu 20上面编译fakeroot 1.37
linux·运维·ubuntu
Blossom.11815 分钟前
基于MLOps+LLM的模型全生命周期自动化治理系统:从数据漂移到智能回滚的落地实践
运维·人工智能·学习·决策树·stable diffusion·自动化·音视频
wanhengidc15 分钟前
深度解析云手机与云真机的关系
运维·服务器·安全·智能手机·生活
weixin_4715257816 分钟前
【Win11+Ubuntu双系统安装】
linux·运维·ubuntu
ZeroNews内网穿透28 分钟前
RStudio Server 结合 ZeroNews,实现远程访问管理
运维·服务器·网络·数据库·网络协议·安全·web安全
杭州泽沃电子科技有限公司28 分钟前
汽轮机在线监测:老牌火电的“智慧心脏”如何打赢“双碳”攻坚战?
运维·人工智能·智能监测·发电
北方的流星29 分钟前
华为访问控制列表的配置
运维·网络·华为
vortex535 分钟前
SSH 命令从新手入门到安全运维
运维·安全·ssh