当前位置: 首页 > 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.xdnf.cn/news/1359343.html

相关文章:

  • 音视频学习(五十五):H264中的profile和level
  • pyecharts可视化图表-scatter:从入门到精通
  • Trip Footprint旅行足迹App
  • jar包项目自启动设置ubuntu
  • Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件
  • Altium Designer 22使用笔记(9)---PCB布局、布线操作
  • 复杂街景误检率↓79%!陌讯时空建模算法在非机动车乱停放检测的实战解析
  • 点播视频预览是怎么做到的?
  • VsCode使用SFTP连接Linux
  • 使用 Golang 的 Gin 框架实现一周极限编程计划:全网 AIGC 项目热点追踪应用
  • MATLAB 与 Simulink 联合仿真:控制系统建模与动态性能优化
  • yggjs_rlayout框架v0.1.2使用教程 02 TechLayout 布局组件
  • 上科大解锁城市建模新视角!AerialGo:从航拍视角到地面漫步的3D城市重建
  • nginx部署goaccess监控
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
  • leetcode 1493 删掉一个元素以后全为1的最长子数组
  • mybatis过渡到mybatis-plus过程中需要注意的地方
  • 《Distilling the Knowledge in a Neural Network》论文PDF分享, 2015 年,谷歌提出了 “知识蒸馏” 的概念
  • 06 - spring security角色和权限设置
  • vulnhub-billu_b0x靶机渗透
  • GPT-5国内免费体验
  • k8s下的网络通信之calico与调度
  • sqlite创建数据库,创建表,插入数据,查询数据的C++ demo
  • 最新sa-token的oauth2封装免密和密码登录
  • 【高等数学】第十章 重积分——第一节 二重积分的概念与性质
  • MinIO03-Linux安装
  • Docker安装RocketMQ
  • 征程 6X 常用工具介绍
  • AI大模型应用开发面试:深入解析技术点
  • 每日算法题【链表】:相交链表、环形链表、环形链表II