集群和存储

集群是由多个计算机或服务器组成的网络,它们共同工作以完成单个任务或多个任务。集群可以提高计算能力、可靠性和可扩展性。

高性能 HPC

high performance Computing 用于处理大规模计算任务,如科学计算、气象预测、金融建模等。

负载均衡 LB 用于分配网络流量和负载,以确保网络服务的高可用性和可靠性。

Load Balance

高可用 HA

High Availability 双热设备 用于提供高可用性和容错能力,以确保系统在故障时仍能正常运行。

工作模式

NAT: 网络地址转换

DR: 路由模式

TUN: 隧道模式

术语

调度器

真实服务器

VIP 给用户访问的地址

DIP LVS服务器上的真实地址

RIP 真实地址

轮询 rr

加权轮询 wrr

最少连接 lc

加权最少连接 wlc

LVS linux虚拟服务器

环境准备

登陆之后,将以下内容粘贴到终端

hostnamectl set-hostname client1

nmcli connection modify "System eth0" con-name eth0 改名

nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.88.10/24 autoconnect yes ipv4.gateway 192.168.88.5

nmcli connection down eth0

nmcli connection up eth0

hostnamectl set-hostname lvs1

nmcli connection modify "System eth0" con-name eth0

nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.88.5/24 autoconnect yes

nmcli connection down eth0

nmcli connection up eth0

rm -f /etc/sysconfig/network-scripts/ifcfg-eth1

nmcli connection add con-name eth1 ifname eth1 type ethernet autoconnect yes ipv4.method manual ipv4.addresses 192.168.99.5/24

reboot # 重启系统,使得eth1网卡生效

hostnamectl set-hostname web1

nmcli connection modify "System eth0" con-name eth0

nmcli connection modify eth0 autoconnect no

rm -f /etc/sysconfig/network-scripts/ifcfg-eth1

nmcli connection add con-name eth1 ifname eth1 type ethernet autoconnect yes ipv4.method manual ipv4.addresses 192.168.99.100/24 ipv4.gateway 192.168.99.5

reboot

hostnamectl set-hostname web2

nmcli connection modify "System eth0" con-name eth0

nmcli connection modify eth0 autoconnect no

rm -f /etc/sysconfig/network-scripts/ifcfg-eth1

nmcli connection add con-name eth1 ifname eth1 type ethernet autoconnect yes ipv4.method manual ipv4.addresses 192.168.99.200/24 ipv4.gateway 192.168.99.5

reboot

第二种方式

yum -y install NetworkManager-tui 图形界面修改 Tab不了 更新一下缓存 yum makecache

disabled 禁用网卡 manual 配置IP

ls /etc/sysconfig/network-scripts/

rm -f /etc/sysconfig/network-scripts/ifcfg-eth1 删掉会配置重新生成

创建工作目录

[root@pubserver ~]# mkdir cluster

[root@pubserver ~]# cd cluster/

#创建主配置文件

[root@pubserver cluster]# vim ansible.cfg

[defaults]

inventory = inventory

host_key_checking = false # 不检查主机密钥

创建主机清单文件及相关变量

[root@pubserver cluster]# vim inventory

[clients]

client1 ansible_host=192.168.88.10

[webservers]

web1 ansible_host=192.168.99.100

web2 ansible_host=192.168.99.200

[lb]

lvs1 ansible_host=192.168.88.5

[all:vars] # all是ansible自带的组,表示全部主机

ansible_ssh_user=root

ansible_ssh_pass=a

创建文件目录,用于保存将要拷贝到远程主机的文件

[root@pubserver cluster]# mkdir files

复制yum仓库 到ansible目录下 99网段的88 改为99 使用sed -i s/88/99/

配置LVS NAT 模式步骤

确保lvs1的ip转发功能已经打开。该功能需要改变内核参数

查看ip转发功能的内核参数

[root@lvs1 ~]# sysctl -a # 查看所有的内核参数

[root@lvs1 ~]# sysctl -a | grep ip_forward # 查看ip_foward参数

net.ipv4.ip_forward = 1 # 1表示打开转发,0表示关闭转发

设置打开ip_forward功能

[root@pubserver cluster]# vim 03-sysctl.yml

---

name: config sysctl

hosts: lb

tasks:

  name: set ip_forward

  sysctl: # 用于修改内核参数的模块

   name: net.ipv4.ip_forward # 内核模块名

   value: '1' # 内核模块的值

   sysctl_set: yes # 立即设置生效

   sysctl_file: /etc/sysctl.conf # 配置写入文件

  [root@pubserver cluster]# ansible-playbook 03-sysctl.yml

测试从客户端到服务器的访问

[root@client1 ~]# curl http://192.168.99.100

Welcome from web1

[root@client1 ~]# curl http://192.168.99.200

Welcome from web2

安装LVS

ipvsadm使用说明

ipvsadm

-A: 添加虚拟服务器

-E: 编辑虚拟服务器

-D: 删除虚拟服务器

-t: 添加tcp服务器

-u: 添加udp服务器

-s: 指定调度算法。如轮询rr/加权轮询wrr/最少连接lc/加权最少连接wlc

-a: 添加虚拟服务器后,向虚拟服务器中加入真实服务器

-r: 指定真实服务器

-w: 设置权重

-m: 指定工作模式为NAT

-g: 指定工作模式为DR

NAT模式

为web服务器创建虚拟服务器,使用rr调度算法

[root@lvs1 ~]# ipvsadm -A -t 192.168.88.5:80 -s rr

查看配置

[root@lvs1 ~]# ipvsadm -Ln # L是列出,n是使用数字,而不是名字

向虚拟服务器中添加RIP

[root@lvs1 ~]# ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.100 -w 1 -m

[root@lvs1 ~]# ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.200 -w 2 -m

查看配置

[root@lvs1 ~]# ipvsadm -Ln

验证

[root@client1 ~]# for i in {1..6}

do

curl http://192.168.88.5

done

Welcome from web2

Welcome from web1

Welcome from web2

Welcome from web1

Welcome from web2

Welcome from web1

现在并没有使用权重分配任务 使用的是就是轮寻

删除配置。(如果配置有错,用以下命令删除重配置)

[root@lvs1 ~]# ipvsadm -D -t 192.168.88.5:80

修改调度模式为加权轮询

[root@lvs1 ~]# ipvsadm -E -t 192.168.88.5:80 -s wrr

验证配置

[root@client1 ~]# for i in {1..6}; do curl http://192.168.88.5; done

Welcome from web2

Welcome from web2

Welcome from web1

Welcome from web2

Welcome from web2

Welcome from web1

DR模式

1 网络参数

2 配置yum

3 在web上配置nginx

4 在LVS的物理网卡上配置VIP

5在web服务器的lo配置VIP

6 在web服务器上配置内核参数

7 在LVS上安装ipvsadm

8 在 LVS上编写转发规则

9 在client1上测试访

删除lvs虚拟服务器配置

[root@lvs1 ~]# ipvsadm -D -t 192.168.88.5:80

[root@lvs1 ~]# ipvsadm -Ln

删除lvs1上eth1的配置

[root@lvs1 ~]# nmcli connection modify eth1 ipv4.method disabled ipv4.addresses ''

[root@lvs1 ~]# nmcli connection down eth1

修改web1的配置:停掉eth1的地址。配置eth0的地址为192.168.88.100

进入网卡配置文件目录

[root@web1 ~]# cd /etc/sysconfig/network-scripts/

eth0网卡的配置文件叫ifcfg-eth0

[root@web1 network-scripts]# ls ifcfg-eth*

ifcfg-eth0 ifcfg-eth1

配置eth0地址

[root@web1 network-scripts]# vim ifcfg-eth0

TYPE=Ethernet # 网络类型为以太网

BOOTPROTO=none # IP地址是静态配置的,也可以用static

NAME=eth0 # 为设备重命名

DEVICE=eth0 # 网卡设备名

ONBOOT=yes # 开机激活网卡

IPADDR=192.168.88.100 # IP地址

PREFIX=24 # 子网掩码长度

GATEWAY=192.168.88.254 # 网关

[root@web1 ~]# systemctl restart NetworkManager # 重启网络服务

在web1上停掉eth1

[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE=Ethernet

BOOTPROTO=none

NAME=eth1

DEVICE=eth1

ONBOOT=no

[root@web1 ~]# nmcli connection down eth1 # 终端卡住,关掉它,在新终端重新连

修改web2的网络

[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=none

NAME=eth0

DEVICE=eth0

ONBOOT=yes

IPADDR=192.168.88.200

PREFIX=24

GATEWAY=192.168.88.254

[root@web2 ~]# systemctl restart NetworkManager

[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE=Ethernet

BOOTPROTO=none

NAME=eth1

DEVICE=eth1

ONBOOT=no

[root@web2 ~]# nmcli connection down eth1

修改pubserver的主机清单文件

[root@pubserver cluster]# cp inventory inventory.bak

[root@pubserver cluster]# vim inventory

[clients]

client1 ansible_host=192.168.88.10

[webservers]

web1 ansible_host=192.168.88.100

web2 ansible_host=192.168.88.200

[lb]

lvs1 ansible_host=192.168.88.5

[all:vars]

ansible_ssh_user=root

ansible_ssh_pass=a

修改2台web服务器yum配置文件中的地址

[root@web1 ~]# sed -i 's/99/88/' /etc/yum.repos.d/local99.repo

[root@web1 ~]# cat /etc/yum.repos.d/local99.repo

[BaseOS]

name = BaseOS

baseurl = ftp://192.168.88.240/dvd/BaseOS

enabled = 1

gpgcheck = 0

[AppStream]

name = AppStream

baseurl = ftp://192.168.88.240/dvd/AppStream

enabled = 1

gpgcheck = 0

[rpms]

name = rpms

baseurl = ftp://192.168.88.240/rpms

enabled = 1

gpgcheck = 0

配置LVS DR模式

在lvs1的eth0上配置vip 192.168.88.15。

---

- name: config lvs vip

hosts: lb

tasks:

   - name: add vip

  lineinfile: # 确保文件中有某一行内容

   path: /etc/sysconfig/network-scripts/ifcfg-eth0

   line: IPADDR2=192.168.88.15

  notify: restart eth0 # 通知执行handlers中的任务

handlers: # 被通知执行的任务写到这里

- name: restart eth0

shell: nmcli connection down eth0; nmcli connection up eth0

  1. 在2台web服务器的lo上配置vip 192.168.88.15。lo:0网卡需要使用network-scripts提供的配置文件进行配置。

---

- name: config webservers vip

hosts: webservers

tasks:

   - name: install network-scripts # 安装服务

  yum:

   name: network-scripts

   state: present

- name: add lo:0 # 创建lo:0的配置文件

copy:

dest: /etc/sysconfig/network-scripts/ifcfg-lo:0

content: |

DEVICE=lo:0

NAME=lo:0

IPADDR=192.168.88.15

NETMASK=255.255.255.255

NETWORK=192.168.88.15

BROADCAST=192.168.88.15

ONBOOT=yes

notify: activate lo:0

handlers:

- name: activate lo:0 # 激活网卡

shell: ifup lo:0

[root@pubserver cluster]# ansible-playbook 06-config-webvip.yml

查看结果

[root@web1 ~]# cd /etc/sysconfig/network-scripts/

[root@web1 network-scripts]# cat ifcfg-lo:0

DEVICE=lo:0

NAME=lo:0

IPADDR=192.168.88.15

NETMASK=255.255.255.255

NETWORK=192.168.88.15

BROADCAST=192.168.88.15

ONBOOT=yes

[root@web1 network-scripts]# ifconfig # 可以查看到lo:0网卡信息

lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 192.168.88.15 netmask 255.255.255.255

loop txqueuelen 1000 (Local Loopback)

重启就会消失 ifup lo:0(配置的名称) 重新激活才会显示

ls /etc/rc.d/rc.local 开机自动运行这个脚本 可以把命令放到这里开机自动运行

写入 ifup lo:0

在2台web服务器上配置内核参数,使得它们不响应对192.168.88.15的请求

apr -a 查看 缓存表

第一个和最后一个修改

sysctl -a | grep arp_ignore 修改为 1 1

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 0

[root@web1 ~]# sysctl -a | grep arp_announce 修改为 2 0

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 0

[root@web1 ~]# vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 2

[root@web1 ~]# sysctl -p

[root@web2 ~]# vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 2

[root@web2 ~]# sysctl -p

LVS实现的是哪种类型的集群?lvs的工作模式有哪些?

LVS属于负载均衡集群。

LVS的工作模式有以下几种:

NAT模式:通过修改数据包的源地址和目的地址,将请求分发到后端服务器,然后将响应返回给客户端。

DR模式:将请求分发到后端服务器,然后将响应返回给客户端,不修改数据包的源地址和目的地址。

TUN模式:将请求分发到后端服务器,然后将响应返回给LVS,再由LVS将响应返回给客户端。

解释一下LVS相关的术语

调度器:LVS服务器

真实服务器Real Server:提供服务的服务器

VIP:虚拟地址,提供给用户访问的地址

DIP:指定地址,LVS服务器上与真实服务器通信的地址

RIP:真实地址,真实服务器的地址

LVS有哪些常用的调度算法?

RR(Round Robin)调度算法:轮流将请求分配给后端服务器。

WRR(Weighted Round Robin)调度算法:根据服务器的权重比例进行轮询分配。

LC(Least Connection)调度算法:将请求分配给连接数最少的服务器。

WLC(Weighted Least Connection)调度算法:根据服务器的权重比例将请求分配给连接数最少的服务器。

LVS NAT模式需要什么样的网络拓扑?

在LVS的NAT模式下,需要一个三层网络拓扑结构。其中,客户端和LVS调度器位于同一子网中,后端服务器位于另一个子网中。客户端通过默认网关将请求发送到LVS调度器,LVS调度器将请求转发到后端服务器,后端服务器处理请求并将响应返回给LVS调度器,最后LVS调度器将响应返回给客户端。

手动配置LVS的NAT模式

-m 后缀为 NAT -g 后缀为 DR

创建虚拟机,并为eth0配置IP地址

为各主机配置主机名和适当的网络参数 上面有

配置yum

配置web服务器

yum install -y nginx

cho 'web11 web site' > /usr/share/nginx/html/index.html

systemctl enable nginx.service --now

# web22的配置

yum install -y nginx

cho 'Hello from web22' > /usr/share/nginx/html/index.html

systemctl enable nginx.service --now

配置LVS调度器

# 配置规则

[root@lvs11 ~]# yum install -y ipvsadm

[root@lvs11 ~]# ipvsadm -A -t 192.168.88.5:80 -s lc

[root@lvs11 ~]# ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.100 -m

[root@lvs11 ~]# ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.200 -m

# 查看规则

[root@lvs11 ~]# 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.88.5:80 lc

-> 192.168.99.100:80 Masq 1 0 0

-> 192.168.99.200:80 Masq 1 0 0

客户端验证

for i in {1..4}

do

curl http://192.168.88.5/

done

配置LVS的DR模式

不使用ansible

调度算法采用rr

创建虚拟机,并为eth0配置IP地址

配置yum

所有主机yum配置相同,以下以client10为例,配置yum

[root@client10 ~]# vim /etc/yum.repos.d/local.repo

[local_BaseOS]

name=Rocky Linux $releasever - BaseOS baseurl="ftp://192.168.88.240/dvd/BaseOS" enabled=1 gpgcheck=1 [local_AppStream] name=Rocky Linux $releasever - AppStream

baseurl="ftp://192.168.88.240/dvd/AppStream"

enabled=1

gpgcheck=1

配置web服务器

web11的配置

[root@web11 ~]# yum install -y nginx

[root@web11 ~]# echo 'web11 web site' > /usr/share/nginx/html/index.html

[root@web11 ~]# systemctl enable nginx.service --now

web22的配置

[root@web22 ~]# yum install -y nginx

[root@web22 ~]# echo 'Hello from web22' > /usr/share/nginx/html/index.html

[root@web22 ~]# systemctl enable nginx.service --now

配置VIP

在lvs上配置VIP

[root@lvs11 ~]# echo ' IPADDR2=192.168.88.15' >> /etc/sysconfig/network-scripts/ifcfg-eth0

[root@lvs11 ~]# nmcli connection down "System eth0" ; nmcli connection up "System eth0"

[root@lvs11 ~]# ip a s | grep 192

inet 192.168.88.5/24 brd 192.168.88.255 scope global noprefixroute eth0

inet 192.168.88.15/24 brd 192.168.88.255 scope global secondary noprefixroute eth0

在WEB服务器上配置VIP,以web11为例

[root@web11 ~]# yum install -y network-scripts

[root@web11 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

NAME=lo:0

IPADDR=192.168.88.15

NETMASK=255.255.255.255

NETWORK=192.168.88.15

BROADCAST=192.168.88.15

ONBOOT=yes

[root@web11 ~]# ifup lo:0

[root@web11 ~]# ip a s | grep 192

inet 192.168.88.15/32 brd 192.168.88.15 scope global lo:0

inet 192.168.88.100/24 brd 192.168.88.255 scope global noprefixroute eth0

:在web服务器上配置内核参数

两台web服务器都要配置,以下以web1为例进行配置

[root@web11 ~]# vim /etc/sysctl.conf # 追加以下内容

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 2

[root@web11 ~]# sysctl -p

配置LVS规则

yum install -y ipvsadm

[root@lvs11 ~]# ipvsadm -A -t 192.168.88.15:80 -s lc

[root@lvs11 ~]# ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.100 -g

[root@lvs11 ~]# ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.200 -g

ipvsadm -Ln

客户端验证

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值