LVS 集群与存储《路由转发》

集群简介

什么是集群

•  一组通过高速网络互联的计算组,并以单一系统的模式加以管理

•  将很多服务器集中起来一起,提供同一种服务,在客户端看来就象是只有一个服务器

•  可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益

•  任务调度是集群系统中的核心技术

集群目的

•  提高性能

–  如计算密集型应用,如:天气预报、核试验模拟

•  降低成本

–  相对百万美元级的超级计算机,价格便宜

•  提高可扩展性

–  只要增加集群节点即可

•  增强可靠性

–  多个节点完成相同功能,避免单点失败

集群分类

•  高性能计算集群HPC

–  通过以集群开发的并行应用程序,解决复杂的科学问题

•  负载均衡(LB)集群

–  客户端负载在计算机集群中尽可能平均分摊

•  高可用(HA)集群

–  避免单点故障,当一个系统发生故障时,可以快速迁移

重点

集群分类:

HPC:高性能计算集群,通过以集群开发的并行应用程序,解决复杂的科学问题

LB:负载均衡集群,客户端负载在计算机集群中尽可能平均分摊

HA:高可用集群,避免单点故障,当一个系统发生故障时,可以快速迁移


LVS项目介绍

•  Linux 虚拟服务器(LVS)是章文嵩在国防科技大学就读博士期间创建的

•  LVS可以实现高可用的、可伸缩的Web、Mail、Cache和Media等网nmcli  connection   up  eth2络服务

•  最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群

LVS集群组成

•  前端:负载均衡层

–  由一台或多台负载调度器构成

•  中间:服务器群组层

–  由一组实际运行应用服务的服务器组成

 底端:数据共享存储层

–  提供共享存储空间的存储区域

LVS术语

•  Director Server:调度服务器

–  将负载分发到Real Server的服务器

•  Real Server:真实服务器

–  真正提供应用服务的服务器

•  VIP:虚拟IP地址

–  公布给用户访问的虚拟IP地址

•  RIP:真实IP地址

–  集群节点上使用的IP地址

 DIP:调度器连接节点服务器的IP地址

LVS工作模式(续1)

•  VS/NAT

–  通过网络地址转换实现的虚拟服务项

–  大并发访问时,调度器的性能成为瓶颈

•  VS/DR

–  直接使用路由技术实现虚拟服务器

–  节点服务器需要配置VIP,注意MAC地址广播

•  VS/TUN

–  通过隧道方式实现虚拟服务器

负载均衡调度算法

•  LVS目前实现了10种调度算法

•  常用调度算法有4种

–  轮询(Round Robin)

–  加权轮询(Weighted Round Robin)

–  最少连接(Least Connections)

–  加权最少连接( Weighted Least Connections )

-  基于局部的最少连接(lblc)

-  带复制的基于局部的最少连接(lblcr)

-  源地址散列(dh)

-  期望的最少延迟(sed)

-  最少队列调度(ng)

负载均衡调度算法(续1)

•  轮询(Round Robin)

–  将客户端请求平均分发到Real Server

•  加权轮询(Weighted Round Robin)

–  根据Real Server权重值进行轮询调度

•  最少连接(Least Connections)

–  选择连接数最少的服务器负

载均衡调度算法(续2)

•  加权最少连接

–  根据Real Server权重值,选择连接数最少的服务器

•  源地址散列(Source Hashing)

–  根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务 器

负载均衡调度算法(续3)

•  其他调度算法

–  基于局部性的最少链接

–  带复制的基于局部性最少链接

–  目标地址散列(Destination Hashing)

–  最短的期望的延迟

–  最少队列调度


准备LAMP分离环境

一,准备四台虚拟机,全新的,免密登录

vh05.tedu.cn   192.168.4.5   mysql

vh06.tedu.cn   192.168.4.6   web

vh07.tedu.cn   192.168.4.7   web

vh08.tedu.cn   192.168.4.8   lvs

二,安装web服务器

1.在vh06/vh07上安装软件包

[root@vh06 ~]# yum  -y  install  httpd  php  php-mysql

[root@vh06 ~]# systemctl   restart  httpd

[root@vh06 ~]# systemctl   enable  httpd

三,配置数据库服务器,在vh05上

[root@vh05 ~]# yum  -y  install   mariadb-server

[root@vh05 ~]# systemctl   restart   mariadb

[root@vh05 ~]# systemctl   enable   mariadb

[root@vh05 ~]# mysql

MariaDB [(none)]> grant  all   on  *.* to  'admin'@"%"   identified  by      "123456";

四,在vh06上安装Discuz

[root@redhat 桌面]# scp Discuz_X3.3_SC_UTF8.zip  192.168.4.6:/root/

[root@vh06 ~]# unzip   Discuz_X3.3_SC_UTF8.zip

[root@vh06 ~]# cp -r upload/  /var/www/html/bbs

[root@vh06 ~]# chown -R apache.apache  /var/www/html/bbs

[root@room9pc01 ~]# firefox   http://192.168.4.6/bbs &

[root@vh05 ~]# mysql

MariaDB [(none)]> use  ultrax

MariaDB [ultrax]> show  tables;

MariaDB [ultrax]> desc  pre_common_member;

MariaDB [ultrax]> select  username,email  from  pre_common_member;

+----------+------------------+

| username | email                |

+----------+------------------+

| admin    | admin@admin.com  |

| haha     | 123456789@qq.com |

+----------+------------------+

MariaDB [ultrax]> desc   pre_forum_post;

七.在vh07装一样的bbs

[root@vh06 html]# cd /var/www/html/

[root@vh06 html]# ls

[root@vh06 html]# tar -czf bbs.tar.gz bbs

[root@vh06 html]# scp bbs.tar.gz 192.168.4.7:/var/www/html/

[root@vh07 html]# cd /var/www/html/

[root@vh07 html]# tar -xf bbs.tar.gz


配置LVS-NAT模式

1.在vh08上安装

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

2、在vh06和vh07 web服务器上把网关指向192.168.4.8

# nmtui  添加网关

# ifdown eth0; ifup eth0

【[root@vh06 html]# nmcli  connection   modify   eth0   ipv4.method   manual  ipv4.gateway   192.168.4.8  connection.autoconnect  yes】

[root@vh06 html]# nmcli connection up eth0

[root@vh06 html]# route -n

192.168.4.0     0.0.0.0       255.255.255.0   U     100    0        0 eth0

192.168.122.0   0.0.0.0      255.255.255.0   U     0      0        0 virbr0

201.1.1.0       0.0.0.0        255.255.255.0   U     100    0        0 eth2

3、在vh08的eth2上配置额外的地址201.1.1.8/24<以太网>

[root@vh08 ~]# nmtui

[root@vh08 ~]# systemctl restart NetworkManager

【[root@vh08 ~]# nmcli connection  add   con-name   eth2  ifname   eth2  type   ethernet

[root@vh08 ~]# nmcli   connection   modify   eth2  ipv4.method   manual  ipv4.addresses   201.1.1.8/24  connection.autoconnect  yes

[root@vh08 ~]# nmcli  connection   up  eth2】

4、打开vh08的路由转发功能(RHEL7默认已打开,以前版本需要做以下配置)

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

net.ipv4.ip_forward = 1

[root@vh08 ~]# sysctl -p

net.ipv4.ip_forward = 1     //让内核参数生效

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

5.在vh06和vh07上做一个网页

[root@vh06 html]# vim  index.html

<html><h1><font color=red>我想和你一起吃火锅</font></h1></html>

[root@vh06 html]# systemctl   restart  httpd

[root@vh07 html]# vim  index.html

<html><h1><font  color=yellow>你是花吗?黄色的!</font></h1></html>

[root@vh07 html]# systemctl   restart  httpd

6、lvs集群配置

(1)创建虚拟服务器,使用tcp的80端口,调度算法是rr

[root@vh08 ~]# ipvsadm -A -t 201.1.1.8:80 -s rr  //不加-s选项默认是wlc

(2)向VIP中加入RIP

[root@vh08 ~]# ipvsadm -a -t 201.1.1.8:80 -r 192.168.4.6 -m -w 2

[root@vh08 ~]# ipvsadm -a -t 201.1.1.8:80 -r 192.168.4.7 -m

7、验证

[root@vh08 ~]# ipvsadm -Ln

[root@room8pc16 ~]# firefox http://201.1.1.8/bbs

刷新页面时,按ctrl+f5重新连接服务器

8. 修改调度算法为WRR

[root@vh08 ~]# ipvsadm -E -t 201.1.1.8:80 -s wrr

[root@vh08 ~]# ipvsadm  -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  201.1.1.8:80 wrr

-> 192.168.4.6:80               Masq    2      0          1

-> 192.168.4.7:80               Masq    1      0          1

9. 从规则中移除real server

[root@vh08 ~]# ipvsadm -d -t 201.1.1.8:80 -r 192.168.4.6

[root@vh08 ~]# vim  1.sh

#!/bin/bash

RIP1=192.168.4.2

RIP2=192.168.4.3

VIP=201.1.1.4:80

while [ 1 ]

do

for  IP  in  $RIP1  $RIP2

do

     curl  -I  http://${IP} &> /dev/null

     web_state=$?

     ipvsadm  -Ln  |  grep  ${IP}  &> /dev/null

     ip_in_lvs=$?

     if

     [ $web_state  -ne  0  -a  $ip_in_lvs  -eq 0 ]

     then

     ipvsadm  -d  -t  $VIP  -r  $IP

     elif

     [ $web_state -eq 0  -a   $ip_in_lvs  -ne 0 ]

     then

     ipvsadm  -a  -t  $VIP  -r  $IP  -m

fi

done

sleep  3

done

[root@vh08 ~]# sh  1.sh &

10. 停止httpd,查看验证

[root@vh06 html]# systemctl   stop  httpd

[root@vh08 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  201.1.1.4:80 rr

  -> 192.168.4.3:80               Masq    1      0          0     

11. 重新启动httpd,再次验证  

[root@vh06 html]# systemctl   restart  httpd

[root@vh08 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  201.1.1.4:80 rr

  -> 192.168.4.2:80               Masq    1      0          0         

  -> 192.168.4.3:80               Masq    1      0          0         

12. lvs起动状态管理

[root@vh08 ~]# systemctl   stop   ipvsadm

[root@vh08 ~]# systemctl   restart   ipvsadm  重起失败,提示执行journalctl -xe,报错日志是/etc/sysconfig/ipvsadm文件不存在,所以要创建它

13. 查看状态

[root@vh08 ~]#systemctl  statu s ipvsadm

[root@vh08 ~]# touch  /etc/sysconfig/ipvsadm   //创建文件

[root@vh08 ~]# ipvsadm   -A  -t  201.1.1.4:80  -s  rr

[root@vh08 ~]# ipvsadm  -a  -t  201.1.1.4:80   -r  192.168.4.2  -m  -w  2

[root@vh08 ~]# ipvsadm   -a  -t  201.1.1.4:80   -r  192.168.4.3  -m

[root@vh08 ~]# ipvsadm   -Ln

[root@vh08 ~]# systemctl   restart   ipvsadm

[root@vh08 bin]# systemctl enable ipvsadm

[root@vh08 ~]# cat  /etc/sysconfig/ipvsadm

-A -t 201.1.1.4:80 -s rr

-a -t 201.1.1.4:80 -r 192.168.4.2:80 -m -w 2

-a -t 201.1.1.4:80 -r 192.168.4.3:80 -m -w 1


lvs dr模式: 

一、清理LVS-NAT的配置

1、删除lvs规则

[root@vh08 bin]# ipvsadm -D -t 201.1.1.8:80

2、删除eth2的地址

[root@vh08 bin]# nmtui     //删除地址,将地址获取改为自动

[root@vh08 bin]# ifdown eth2

【[root@vh08 ~]# nmcli connection   delete  eth2】

二、配置VIP

1、调度器上配置在vh08的eth0上

[root@vh08 bin]# cd /etc/sysconfig/network-scripts/

[root@vh08 bin]# cd /etc/sysconfig/network-scripts/

[root@vh08 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0

[root@vh08 network-scripts]# vim ifcfg-eth0:0

TYPE=Ethernet

BOOTPROTO=none

NAME=eth0:0

DEVICE=eth0:0

ONBOOT=yes

IPADDR=192.168.4.100

PREFIX=24

[root@vh08 network-scripts]# ifup eth0:0

2、把VIP配置在vh06和vh07两台real server的lo

[root@vh06 html]# cd /etc/sysconfig/network-scripts/

[root@vh06 network-scripts]# cp ifcfg-lo ifcfg-lo:0

[root@vh06 network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.4.100

NETMASK=255.255.255.255

NETWORK=192.168.4.100

BROADCAST=192.168.4.100

ONBOOT=yes

NAME=lo:0

[root@vh06 network-scripts]# ifup lo:0

三、在WEB服务器上修改内核参数

三台主机都有VIP192.168.4.100。当请求发送过来时,应该是调度器接收请求, real server不要接收。为了实现这个功能,需要修改real server的内核参数。

[root@vh06 ~]# sysctl -a | grep arp_ig

[root@vh06 ~]# echo "net.ipv4.conf.all.arp_ignore = 1"  >>  /etc/sysctl.conf

[root@vh06~ ]# echo "net.ipv4.conf.lo.arp_ignore  = 1"  >>  /etc/sysctl.conf

[root@vh06 ~]# sysctl -a | grep arp_ann

[root@vh06 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

[root@vh06 ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

[root@vh06 ~]# sysctl -p  应用内核参数

四、配置LVS DR规则

[@vh08 network-scripts]# ipvsadm -A -t 192.168.4.100:80

[@vh08 network-scripts]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.6 -g

[root@vh08 network-scripts]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.7

1)验证:

[root@room9pc01 ~]# firefox   192.168.4.100

[root@room9pc01 ~]# curl   http://192.168.4.100

<html><h1><font color=red>我想和你一起吃火锅</font></h1></html>

[root@room9pc01 ~]# curl   http://192.168.4.100

<html><h1><font  color=yellow>你是花吗?黄色的!</font></h1></html>

[root@room9pc01 ~]# curl   http://192.168.4.100

<html><h1><font color=red>我想和你一起吃火锅</font></h1></html>

 2)验证ipvsadm服务

[root@vh08 network-scripts]# 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.4.100:80 wlc

-> 192.168.4.6:80               Route   1      0          10

-> 192.168.4.7:80               Route   1      0          11

LVS 集群与存储《路由转发》的更多相关文章

  1. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  2. LVS集群的体系结构

    2.LVS主要组成部分为: 负载调度器(load balancer/ Director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称 ...

  3. Linux系统(四)负载均衡LVS集群之NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  4. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  5. LVS集群简介及使用

    什么是集群 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 将很多服务器集中在一起,提供一种服务,在客户端看来就象是只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的 ...

  6. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  7. LVS集群中的IP负载均衡技术

    LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...

  8. LVS集群

    集群: 将许多小的,性能较低的服务器做成一个大的性能高的超级服务器 集群分为负载均衡集群,高可用集群,高性能运算集群 LVS体系结构与工作原理描述 LVS集群负载均衡器接受服务的所有入站客户端计算机请 ...

  9. LVS系列一、LVS集群-NAT模式

    一. 集群概述 1. 什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务 ...

随机推荐

  1. Spring源码阅读笔记05:自定义xml标签解析

    在上篇文章中,提到了在Spring中存在默认标签与自定义标签两种,并且详细分析了默认标签的解析,本文就来分析自定义标签的解析,像Spring中的AOP就是通过自定义标签来进行配置的,这里也是为后面学习 ...

  2. mac笔记本编译go-ethereum报错CoreServices/CoreServices.h' file not found

    查看xcode是否安装: $ xcode-select --install xcode-select: error: command line tools are already installed, ...

  3. JDk下载和环境变量Path的配置

    JDK下载与安装 下载地址 打开该网址会显示如下图,点击DOWMLOAD即可: 出现该页面时,点击接受: 选择对应的安装包下载即可(本人用的是Windows64位): 注:如果您无法确定您的windo ...

  4. MySQL中SQL Mode的查看与设置

    MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量 sql_mode 的值.本文主要介绍一下这个值的查看与设置,主要在Mac系统下. 对于每个模式的意义和作用 ...

  5. pytest、tox、Jenkins实现python接口自动化持续集成

    pytest介绍 pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩展性,用户自 ...

  6. TLS/SSL 梳理

    数据加密通篇都是为了防止第三方的劫持伪造,保证连接安全, 毫无遮掩的明文传输只有民风淳朴的时候才是安全的. 先是一些基础的内容: 对称加密 最开始为了对数据进行加密,使用的是对称加密算法,即双方协商好 ...

  7. 题解 NOIP2018【赛道修建】—— 洛谷

    这道题有一点点树上dp的意思(大佬轻喷 我刚拿到这道题的时候毫无头绪,只知道这道题要二分答案 为什么是二分答案??? 题目: 目前赛道修建的方案尚未确定.你的任务是设计一 种赛道修建的方案,使得修建的 ...

  8. 网页外链用了 target="_blank",结果悲剧了

    今天给大家分享一个 Web 知识点.如果你有过一段时间的 Web 开发经验,可能已经知道了.不过对于刚接触的新手来说,还是有必要了解一下的. 我们知道,网页里的a标签默认在当前窗口跳转链接地址,如果需 ...

  9. 基于Ubuntu的ORB-SLAM2项目环境搭建过程

    目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...

  10. Python - 面向对象(一)入门篇

    Python里面有一句话:万物皆是对象 如何面向对象编程 设计类 创建类实例对象 实例对象调用方法 创建对象 在内存中为对象分配空间 调用初始化方法  __init__  为对象初始化 对象创建后,内 ...