当前位置: 首页 > news >正文

Linux 学习笔记 - 集群管理篇

Linux 集群管理

1. 集群

1.1 什么是集群

集群(cluster)是由一组独立的计算机系统构成的一个松耦合的多处理器系统,作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node)。它们之间通过网络实现进程间的通信。

通俗一点来说,就是让若干台计算机联合起来工作(服务),可以是并行的,也可以是做备份。

1.2 集群的类型

集群根据不同类型可分为:

  • 负载均衡集群
  • 高可用集群
  • 高性能计算集群
  • 负载均衡集群

1.2.1 负载均衡集群 Load Balance cluster

负载均衡集群是指:把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

例如:四兄弟开裁缝铺,生意特别多,一个人做不下来,老是延误工期,于是四个兄弟商量:老大接订单, 三个兄弟来干活。客户多起来之后,老大根据一定的原则(policy) 根据三兄弟手上的工作量来分派新任务。

1.2.2 高可用集群 High Availability cluster

利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

例如:两兄弟开早餐铺,生意不大,但是每天早上7点到9点之间客户很多并且不能中断。为了保证2个小时内这个早餐铺能够保证持续提供服务,两兄弟商量几个方法:

方法一:平时老大做生意,老二这个时间段在家等候,一旦老大无法做生意了,老二就出来顶上,这个叫做 Active/Standby(双机冷备)

方法二:平时老大做生意,老二这个时候就在旁边帮工,一旦老大无法做生意,老二就马上顶上,这个叫做 Active/Passive(双机热备)

方法三:平时老大卖包子,老二也在旁边卖豆浆,老大有问题,老二就又卖包子,又卖豆浆,老二不行了,老大就又卖包子,又卖豆浆。这个叫做 Active/Active (dual Active)(双机互备)

1.2.3 高性能计算集群 High Performance Computing clustering

即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析、化学分析等。

例如:10个兄弟一起做手工家具生意,一个客户来找他们的老爹要求做一套非常复杂的仿古家具,一个人做也可以做,不过要做很久很久,为了1个星期就交出这一套家具,10个兄弟决定一起做。老爹把这套家具的不同部分分开交给儿子们作,然后每个儿子都在做木制家具的加工,最后拼在一起。老爹是scheduler任务调度器,儿子们是compute node. 他们做的工作叫做作业。

2. 负载均衡集群 部署实践

2.1 HAProxy

集群主机清单如下:

主机名IP地址服务器角色
client2.gnb.cloud 10.1.1.21客户端
client1.gnb.cloud10.1.8.21客户端
router.gnb.cloud10.1.1.20, 10.1.8.20路由器
lb.gnb.cloud10.1.1.10, 10.1.8.10代理服务器
web1.gnb.cloud10.1.8.11Web 和 SSH 服务器
web2.gnb.cloud10.1.8.12Web 和 SSH 服务器
web3.gnb.cloud10.1.8.13Web 和 SSH 服务器

2.1.1 准备虚拟机

  1. 克隆一台模板机,在模板机上配置 hosts
[root@centos7 ~ 10:50:26]# vim /etc/host
10.1.8.10   lb.gnb.cloud          lb
10.1.8.11   web1.gnb.cloud        web1
10.1.8.12   web2.gnb.cloud        web2
10.1.8.13   web3.gnb.cloud        web3
10.1.8.20   router.gnb.cloud      router
10.1.8.21   client1.gnb.cloud     client1
10.1.1.21   client2.gnb.cloud     client2
  1. 继续在模板机上编辑批量配置主机名和 IP 的脚本
#!/bin/bash
interface=ens33
domain=gnb.cloudusage(){echo "Usage: $0 10 | 11-13 | 20-22"exit 1
}function set_ip(){if [ $# -eq 0 ]; thenusage   elsenmcli connection modify $interface ipv4.address 10.1.8.$1/24nmcli connection up $interfacefi
}function set_host(){case $1 in1[1-3])HOSTNAME=web$[ $1 - 10 ].$domain;;21)HOSTNAME=client1.$domain;;10)HOSTNAME=lb.$domain;;20)HOSTNAME=router.$domain;;*)usage;;esachostnamectl set-hostname $HOSTNAME
}function main(){set_ip $1set_host $1
}main $*

10.1.1 网段的主机和网卡单独进行配置,减少脚本的复杂度

  1. 克隆虚拟机,所有 10.1.8.x 网段的主机网卡保持 NAT 模式,为 lbrouter 主机额外添加一张网卡,并与 client2 主机的网卡一并设置为 VMnet1

  2. 启动虚拟机,将脚本上传至 /usr/local/bin 目录下,执行脚本修改主机名和 IP 地址。10.1.1.x 网段主机或网卡使用代码自行配置

  3. 向路由器主机中添加以下命令,以启用路由、启用防火墙并放行外网连接

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
firewall-cmd --set-default-zone=trusted
firewall-cmd --add-masquerade --permanent 
  1. 至此完成配置,记得打快照

2.1.2 环境配置

  1. 安装服务

lb 主机上安装 haproxy 服务,在三台 web 主机上安装 nginx 服务:

[root@lb ~ 15:53:59]# yum -y install haproxy
[root@web1 ~ 15:54:06]# yum -y install nginx
[root@web2 ~ 15:54:13]# yum -y install nginx
[root@web3 ~ 15:54:22]# yum -y install nginx
  1. 准备测试页
[root@web1 ~ 15:14:57]# mkdir /test
[root@web1 ~ 15:15:07]# echo hello text from $(hostname -s) > /test/index.txt
[root@web1 ~ 15:15:47]# echo hello html from $(hostname -s) > /test/index.html
[root@web1 ~ 15:16:24]# echo Welcome to $(hostname) > /usr/share/nginx/html/index.html
  1. 编辑配置文件
# 备份配置文件
[root@lb ~ 15:16:11]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak# 编辑配置文件
[root@lb ~ 15:16:44]# vim /etc/haproxy/haproxy.cfg
frontend front_webbind *:80default_backend  back_webacl test url_reg -i \.txt$use_backend test if testbackend back_webbalance     roundrobinserver web1 10.1.8.11:80 checkserver web2 10.1.8.12:80 checkserver web3 10.1.8.13:80 checkbackend testbalance    roundrobinserver test1 10.1.8.11:81 checkserver test2 10.1.8.12:81 checkserver test3 10.1.8.13:81 check# 启动服务
[root@lb ~ 15:18:29]# systemctl enable haproxy.service --now
  1. 配置 TCP 访问
[root@lb ~ 15:40:21]# vim /etc/haproxy/haproxy.cfg
listen sshmode tcpbind *:1022balance  roundrobinserver web1 10.1.8.11:22   checkserver web2 10.1.8.12:22   checkserver web3 10.1.8.13:22   check
systemctl restart haproxy.service

2.2 Nginx 反向代理

# 安装 nginx
[root@lb ~ 21:07:15]# yum install -y nginx# 编辑配置文件
[root@lb ~ 21:07:59]# vim /etc/nginx/nginx.conf
......
http {# http 块中增加upstreamupstream web {server 10.1.8.11:80;server 10.1.8.12:80;server 10.1.8.13:80;}server {.......# 增加 location / 记录,后端指向web,上一步配置的upstreamlocation / {# 添加如下语句proxy_pass http://web;}}
}# 启动服务
[root@lb ~ 21:10:26]# systemctl start nginx.service
http://www.dtcms.com/a/348593.html

相关文章:

  • 【大模型LLM学习】Data Agent学习笔记
  • C++算法学习专题:二分查找
  • Kubernetes部署Prometheus+Grafana 监控系统NFS存储方案
  • Socket some functions
  • 让机器人“想象”未来?VLN导航迎来“理解力”新升级
  • 每日算法刷题Day64:8.24:leetcode 堆6道题,用时2h30min
  • 解密 Spring Boot 自动配置:原理、流程与核心组件协同
  • 人形机器人——电子皮肤技术路线:压电式电子皮肤及一种超越现有电子皮肤NeuroDerm的设计
  • 深度学习:CUDA、PyTorch下载安装
  • Leetcode 3659. Partition Array Into K-Distinct Groups
  • sqlite创建数据库,创建表,插入数据,查询数据的C++ demo
  • 商密保护迷思:经营秘密到底需不需要鉴定?
  • 对称二叉树
  • 机械学习综合练习项目
  • jar包项目自启动设置ubuntu
  • [论文阅读] 软件工程 | GPS算法:用“路径摘要”当向导,软件模型检测从此告别“瞎找bug”
  • 服务器硬件电路设计之 SPI 问答(四):3 线 SPI、Dual SPI 与 Qual SPI 的奥秘
  • 春秋云镜 Hospital
  • Vue 3多语言应用开发实战:vue-i18n深度解析与最佳实践
  • 线程包括哪些状态?线程状态之间是如何变化的?
  • yggjs_rlayout框架v0.1.2使用教程 02 TechLayout 布局组件
  • 拿AI下围棋 -- 开源项目leela-zero
  • ​Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)​
  • mysql历史社区版本下载
  • 面试题及解答:掌握Linux下常用性能分析工具
  • (Redis)过期删除策略
  • 半年网络安全转型学习计划表(每天3小时)
  • Highcharts推出OEM许可证中国区正式上线:赋能企业级嵌入式数据可视化解决方案
  • 如何使用 DeepSeek 助力工作​。​
  • 数据可视化——matplotlib库