cluster:LVS

集群简介

什么是集群

  • 一组通过高速网络互联的计算机,并以单一系统的模式加以管理
  • 将很多服务器集中起来一起,提供同一种服务,在客户端看来就像是只有一个服务器
  • 可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益
  • 任务调度是集群系统中的核心技术

集群目的

  • 提高性能
    –如计算密集型应用,如:天气预报、核试验模拟
  • 降低成本
    –相对百万美元级的超级计算机,价格便宜
  • 提高可扩展性
    –只要增加集群节点即可
  • 增强可靠性
    –多个节点完成相同功能,避免单点失败

集群分类

  • 高性能计算集群HPC
    –通过以集群开发的并行应用程序,解决复杂的科学问题
  • 负载均衡(LB)集群
    –客户端负载在计算机集群中尽可能平均分摊
  • 高可用(HA)集群
    –避免单点故障,当一个系统发生故障时,可以快速迁移

LVS概述

LVS项目介绍

  • Linux虚拟服务器(LVS)是章文嵩在国防科技大学就读博士期间创建的
  • LVS可以实现高可用、可伸缩的web、mail、cache和media等网络服务
  • 最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群

LVS集群组成

  • 前端:负载均衡层
    –由一台或多台负载调度器构成
  • 中间:服务器群组层
    –有一组实际运行应用服务的服务器组成
  • 低端:数据共享存储层
    –提供共享存储空间的存储区域

LVS术语

  • Director Server:调度服务器
    –将负载分发到Real Server的服务器
  • Real Server:真实服务器
    –真实提供应用服务的服务器
  • VIP:虚拟IP地址
    –公布给用户访问的虚拟IP地址
  • RIP:真实IP地址
    –集群节点上使用的IP地址
  • DIP:调度器连接节点服务器的IP地址

LVS工作模式

在这里插入图片描述

  • VS/NAT
    –通过网络地址转换(NAT)实现的虚拟服务器
    –大并发访问时,调度器的性能成为瓶颈
  • VS/DR
    –直接使用路由技术实现虚拟服务器
    –节点服务器需要配置VIP,注意MAC地址广播
  • VS/TUN
    –通过隧道方式实现虚拟服务器

负载均衡调度算法

  • LVS目前实现了10种调度算法
  • 常用调度算法有4种
    –轮询(Round Robin)
    –加权轮询(Weighted Round Robin)
    –最少连接(Least Connections)
    –加权最少连接(Weighted Least Connections)
    还有源地址散列(Source Hashing)、目标地址散列(Destination Hashing)、基于局部性的最少链接、带复制的基于局部性最少链接、最短的期望的延迟、最少队列调度等等,详情请百度.

ipvsadm使用

  • 安装ipvsadm
    yum -y install ipvsadm
    ipvsadm -v#看版本信息
  • ipvsadm命令
命令选项含义
ipvsadm -A添加虚拟服务器
ipvsadm -E修改虚拟服务器
ipvsadm -D删除虚拟服务器
ipvsadm -C清空所有
ipvsadm -a添加真实服务器
ipvsadm -e修改真实服务器
ipvsadm -d删除真实服务器
ipvsadm -L查看集群算法
-s [rr/wrr/lc/wlc/sh]指定集群算法
ipvsadm -A -t/u 192.168.4.5:80 -s[算法]添加虚拟服务器,协议为tcp(-t)或者udp(-u)
ipvsadm -E -t/u 192.168.4.5:80 -s[算法]修改虚拟服务器,协议为tcp或者udp
ipvsadm -D -t/u 192.168.4.5:80删除虚拟服务器,协议为tcp或者udp
ipvsadm -C清空所有
ipvsadm -a -t/u 192.168.4.5:80 -r 192.168.2.100 [-g/i/m]添加真实服务器-g(DR模式)-i(隧道模式)-m(NAT模式)
ipvsadm -e -t/u 192.168.4.5:80 -r 192.168.2.100 [-g/i/m]修改真实服务器
ipvsadm -d -t/u 192.168.4.5:80 -r 192.168.2.100删除真实服务器
ipvsadm -Ln查看LVS规则表
  • 永久保存所有规则
    ipvsadm-save -n > /etc/sysconfig/ipvsadm

LVS-NAT集群

在这里插入图片描述

操作流程

  • Real Server:
    –配置WEB服务器
  • Director Server:
    –在上安装并启用ipvsadm
    –创建虚拟服务器、向虚拟服务器中加入节点
  • client:
    –连接虚拟服务器测试

安装前准备

  • LVS的IP负载均衡技术是通过IPVS模块实现的
  • IPVS模块已成为Linux组成部分

配置基本环境

(web1和web2配置httpd参看如下)

yum -y install httpd
echo "192.168.2.100" > /var/www/html/index.html

systemctl restart httpd

常见问题:如果httpd服务启动启动的比较慢?
解决方法:可以修改/etc/httpd/conf/httpd.conf文件,
将ServerName www.example.com:80这行的#注释符删除即可。

部署LVS-NAT模式调度器

  • 确认调度器的路由转发功能(如果已经开启,可以忽略)
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
1
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf  #修改配置文件,设置永久规则
  • 创建集群服务器
yum -y install 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
  • 查看规则列表,并保存规则
ipvsadm -Ln
ipvsadm-save -n > /etc/sysconfig/ipvsadm
  • 客户端测试
    客户端使用curl命令反复连接http://192.168.4.5,查看访问的页面是否会轮询到不同的后端真实服务器。

LVS-DR集群

在这里插入图片描述

操作流程

  • Real Server:
    –配置WEB服务器
    –配置辅助IP地址、调整内核参数
  • Director Server:
    –在上安装并启用ipvsadm
    –配置辅助IP地址
    –创建虚拟服务器、向虚拟服务器中加入节点
  • client:
    –连接虚拟服务器测试

设置Proxy服务器的VIP和DIP

注意:为了防止冲突,VIP必须要配置在网卡的虚拟接口!!!

cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0{,:0}
vim ifcfg-eth0:0
TYPE=Ethernet  #网卡类型为:以太网卡
BOOTPROTO=none #none手动配置IP,或者dhcp自动配置IP
NAME=eth0:0    #网卡名称
DEVICE=eth0:0  #设备名称
ONBOOT=yes     #开机时是否自动激活该网卡
IPADDR=192.168.4.15#IP地址
PREFIX=24      #子网掩码
---------------------------------
systemctl restart network
ifconfig

常见问题:RHEL7和Centos7系统中有两个管理网络的服务,有可能冲突?
解决方法:关闭NetworkManager服务后重启network即可。

设置Web1服务器网络参数

nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
nmcli connection up eth0

接下来给web1配置VIP地址。
注意:这里的子网掩码必须是32(也就是全255),网络地址与IP地址一样,广播地址与IP地址也一样。

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo{,:0}
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0

防止地址冲突的问题:
这里因为web1也配置与调度器一样的VIP地址,默认肯定会出现地址冲突;
sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样防止地址冲突的问题。

vim /etc/sysctl.conf
#手动写入如下4行内容
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
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#本机不要向外宣告自己的lo回环地址是192.168.4.15
sysctl -p 
#用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能,-p从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

内核参数说明

  • arp_ignore(定义回复ARP广播的方式)
    –0(默认)代表回应所有本地地址广播,本地地址可以配置在任意网络借口
    –1代表只回应配置入站网卡接口上的任意IP地址的ARP广播
  • rp_announce(定义回复ARP广播的方式)
    –0(默认):使用配置在任意网卡接口上的本地IP地址
    –2:对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包括该目标IP地址的本地地址.如果没有适合的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送

(

ARP防火墙

  • 使用ARP防火墙也可以禁止对VIP的ARP请求
yum -y install arptables_jf
arptables -A IN -d <virtual_ip> -j DROP
arptables -A OUT -s <virtual_ip> -j mangle\
--mangle-ip-s <real_ip>

)
重启网络服务,设置防火墙与SELinux

systemctl restart network
ifconfig

常见错误:如果重启网络后未正确配置lo:0,有可能是NetworkManager和network服务有冲突,关闭NetworkManager后重启network即可。(非必须的操作)

systemctl stop NetworkManager
systemctl restart network
  • Web2服务器设置同上web1

proxy调度器安装软件并部署LVS-DR模式调度器

  • 安装软件及创建新的集群服务器规则
yum -y install ipvsadm
ipvsadm -C   #清空所有规则
ipvsadm -A -t 192.168.4.15:80 -s wrr
  • 添加真实服务器(-g参数设置LVS工作模式为DR模式,-w设置权重)
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
 ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
  • 查看规则列表,并保存规则
ipvsadm -Ln
TCP  192.168.4.15:80 wrr
  -> 192.168.4.100:80             Route   1      0          0         
  -> 192.168.4.200:80             Route   2      0          0
ipvsadm-save -n > /etc/sysconfig/ipvsadm 

客户端测试

客户端使用curl命令反复连接http://192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器。

扩展:LVS动态检测脚本

默认LVS不带健康检查功能,需要自己手动编写动态检测脚本,实现该功能:(参考脚本如下,仅供参考)

vim check.sh
#!/bin/bash
VIP=192.168.4.15:80
RIP1=192.168.4.100
RIP2=192.168.4.200
while :
do
   for IP in $RIP1 $RIP2
   do
           curl -s http://$IP &>/dev/vnull
if [ $? -eq 0 ];then
            ipvsadm -Ln |grep -q $IP || ipvsadm -a -t $VIP -r $IP
        else
             ipvsadm -Ln |grep -q $IP && ipvsadm -d -t $VIP -r $IP
        fi
   done
sleep 1
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值