Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive

             负载均衡集群介绍

                LVS介绍

1.LVS NAT模式:(,目标ip转发。适用于小型集群,机器数量不多10台左右)

2.LVS IP Tunnel模式(将目标ip进行更改)

(在这个模式下的rs机器都是配置有公网ip)

3.LVS DR模式(把数据包的MAC地址修改)

NAT模式适合小型集群,机器在10台左右。其优势是节省公网ip。 IP TUNNEL和DR

相差不大,能使用在较大的集群模式下,但是每台rs服务器都要配置有公网ip,这样会比较浪费公网ip,费钱。

LVS的调度算法

常用的算法是前四种:rr 、wrr 、 lc 、wlc。

LVS NAT模式搭建

准备工作:

1.准备三台机器(我是从第二台直接克隆的)

(1)修改第三台克隆机的ip

修改完重启服务:

(2)修改克隆集主机名:

hostnamectl set-hostname cansheng3

2.将分发器,也叫调度器(简写为dir)机器(133)添加多一块网卡:

(因为之前已经配置有了ens37)

这个ens37的网卡是仅主机模式

同时查看到这个网卡的子网ip网段是192.168.243.0

(1)所以对这个ens37设置ip:

vim /etc/sysconfig/network-scripts/ifcfg-ens37

修改完后重启网络服务:

systemctl  restart network

(2)检测ip是否能ping通:(在window的终端下测试)

ping 192.168.243.144

3.修改两台rs(真实服务器)网关(要和dir分发器的内网一致)

vim /etc/sysconfig/network-scripts/ifcfg-ens33

!!当这两台机器rs的网关修改成dir内网的ip时则不能上网。

修改完后重启服务和查看网关

systemctl restart network

route -n

4.三台机器上都执行执行

(1)systemctl stop firewalld;

systemc disable firewalld

(2)yum install -y iptables-services

(3)systemctl start  iptables

(4)iptables -F;

(5)service iptables save

关闭selinux

vim /etc/selinux/config

(如果在使用yum下载的时候发现很慢,则先吧rpel改了名字再下载,需要用到rpel

再把名字改回来

mv /etc/yum.repos.d/epel.repo  /etc/yum.repos.d/epel.repo1

)

       开始 NAT模式搭建

1.只要在分发器dir上安装ipvsadm  (实现lvs功能的重要工具)

yum install -y ipvsadm

2.在dir上编写脚本,vim /usr/local/sbin/lvs_nat.sh//内容如下

(写这个脚本是为了更快执行所需命令,不写则下列命令每行执行一次)

#! /bin/bash

# director 服务器上开启路由转发功能(对内核实现转发)

echo 1 > /proc/sys/net/ipv4/ip_forward

# 关闭icmp的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

# 注意区分网卡名字,我的两个网卡分别为ens33和ens37(根据自己的网卡名设定)

echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects

# director 设置nat防火墙

iptables -t nat -F

iptables -t nat -X

iptables -t nat -A POSTROUTING -s 192.168.136.0/24  -j MASQUERADE  //实现让同网段的内网实现上网

# director设置ipvsadm

IPVSADM='/usr/sbin/ipvsadm'

$IPVSADM -C   //清空ipvsadm规则

$IPVSADM -A -t 192.168.243.144:80 -s lc -p 3  //添加一个规则,并指定调度算法为lc ,-p指定超时时间(单位秒,建议不加)

$IPVSADM -a -t 192.168.243.144:80 -r 192.168.136.134:80 -m -w 1 //-m:表示NAT模式;-i:ip Tunnel;-g:DR模式-w:表示权重

$IPVSADM -a -t 192.168.243.144:80 -r 192.168.136.135:80 -m -w 1  //-a:添加rs;-t:TCP

(-p的设置会是请求在指定的时间内请求在同一台rs上)

写完脚本执行一下:

sh /usr/local/sbin/lvs_nat.sh

(执行脚本任何输出表示正确)

       NAT模式效果测试

1. 两台rs上都安装nginx,并开启服务

2.设置两台rs的主页,做一个区分,也就是说直接curl两台rs的ip时,得到不同的结果

A:对rs1机器操作

> /usr/share/nginx/html/index.html (清空文件内容)

vim /usr/share/nginx/html/index.html

B:对rs2机器操作:

> /usr/share/nginx/html/index.html (清空文件内容)

vim /usr/share/nginx/html/index.html

3. 浏览器里访问192.168.243.144,多访问几次看结果差异

浏览器中输入公网ip

使用curl测试:curl 192.168.243.144

(可看出请求均衡在两台rs上)

使用命令 ipvadm -ln 可以看到相应的规则

DR模式搭建

(在生产环境中,使用较多的是DR模式,但是使用公网ip资源大。

在生产中也可以搭建一个内网,使用一个公网ip,映射到公网的VIP上,从而减少公网资金支出

)

准备工作

把上面实验的两台rs的网关修改回来

DR模式搭建

1.dir上编写脚本 vim /usr/local/sbin/lvs_dr.sh //内容如下

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/usr/sbin/ipvsadm

vip=192.168.136.200

rs1=192.168.136.134

rs2=192.168.136.135

#注意这里的网卡名字

ifdown ens33

ifup ens33

ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev ens33:2

$ipv -C

$ipv -A -t $vip:80 -s wrr

$ipv -a -t $vip:80 -r $rs1:80 -g -w 1

$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

执行脚本:sh /usr/local/sbin/lvs_dr.sh

(这个提示是正常的。因为我们执行了ifdown 和ifup)

2.两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh//内容如下

#/bin/bash

vip=192.168.136.200

#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端

ifdown lo

ifup lo

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo:0

#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端

#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

两台rs都执行脚本: sh /usr/local/sbin/lvs_rs.sh

检测VIP

ip addr

3.测试:

测试最好是用另外一台不同ip网段的虚拟机测试最好。

(当我们的访问量很大时,自然起到均衡的作用。)

keepalived+ lvs

(在LVS架构中,NAT和DR模式,当后端的RS宕机时,调度器依然会把请求转发到宕机的RS上。使用keepalived可以解决此问题,keepalived能实现高可用和负载均衡)

一般的情况下,使用这个keepalived做负载均衡,首先就是要做高可用再做负载均衡

所以最少要准备四台机器:两台做keepalived,两台作为真实机器

(本次实验用三台机器

dir(安装keepalived)136.133

rs1 136.134

rs2 133.135

vip 133.200

步骤

(在实验之前,我们甚至是不需要使用ipvsadm 即可ipvsadm -c 卸载)

1. 编辑keepalived配置文件:

vim /etc/keepalived/keepalived.conf  (先把之前内容清空)

/内容请到https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/lvs_keepalived.conf 获取

内容:

vrrp_instance VI_1 {

#备用服务器上为 BACKUP

state MASTER

#绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下

interface ens33

virtual_router_id 51

#备用服务器上为90

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass aminglinux

}

virtual_ipaddress {      #虚拟ip:VIP

192.168.136.200

}

}

virtual_server 192.168.136.200 80 {  #端口根据具体监控的端口确定

#(每隔10秒查询realserver状态)

delay_loop 10

#(lvs 算法)

lb_algo wlc

#(DR模式)

lb_kind DR

#(同一IP的连接60秒内被分配到同一台realserver)

persistence_timeout 60

#(用TCP协议检查realserver状态)

protocol TCP

real_server 192.168.136.134 80 {

#(权重)

weight 100

TCP_CHECK {

#(10秒无响应超时)

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.136.135 80 {

weight 100

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

添加完内容后: 启动keepalived服务

systemctl start keepalived

2.其他两台真实机器rs的nginx服务要启动起来

systemctl start nginx

同时也要把之前的vip清空掉:systemctl restart network

3.使用 ipvsadm -ln :可以查看到设定的VIP和两台rs机器

此时我们尝试着把气筒一台或两台rs机器的nginx服务停止,可以发现

keepalived会把宕机的rs机器踢出,这样就可以保证到,当rs真实服务器

宕机后,请求不在发送到其上。

(1)停掉rs1机器后的效果:

(2)把两台的rs机器都停了

当我们把rs机器再次启动的时候,keepalived会自动的把负载的机器添加回来

!!!!使用keepalived+LVS DR需要注意的事项.

(1)两台rs上,依然要执行/usr/local/sbin/lvs_rs.sh脚本

两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh//内容如下

#/bin/bash

vip=192.168.136.200

#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端

ifdown lo

ifup lo

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up //命令行下添加ip。临时添加,重启失去

route add -host $vip lo:0

#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端

#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

分别在dir上和两个rs上执行这些脚本

(2)在dir分发器需执行

执行:echo 1 >/proc/sys/net/ipv4/ip_forward

浏览器测试:

原文地址:http://blog.51cto.com/13589255/2114615

时间: 2024-10-13 16:33:52

Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive的相关文章

Linux集群架构

Linux集群架构 集群介绍 keepalived介绍 用keepalived配置高可用 负载均衡集群介绍 LVS介绍 LVS的调试算法 LVS NAT模式搭建 LVS DR模式搭建 keepalived LVS 集群介绍 根据功能划分为两大类:高可用和负载均衡高可用集群常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务实现高可用的开源软件有:keepalived.heartbeat负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务

第十八章 Linux集群架构

18.1 集群介绍集群概述根据功能划分为两大类:高可用和负载均衡.1)高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务实现高可用的开源软件有:heartbeat.keepalived.后者好用,前者好久未更新了.2)负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2.实现负载均衡的开源软件有LVS.keepalived.haprox

Linux集群架构概述

Linux集群架构概述 根据功能划分:两大类:高可用和负载均衡高可用集群通常为两台服务器,一条工作,另外一台作为冗余,当提供服务的机器宕机,(rongyu)冗余将接替继续提供服务(适合不能出现宕机的服务器)实现高可用的开源软件有:heartbeat.keeplived负载均衡集群,需要有一台服务器作为分发器,他负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2实现负载均衡的开源软件有 LVS.keepalivd.haproxy

Linux集群架构介绍

▎根据功能划分为两大类: 高可用 负载均衡 高可用 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务. 实现高可用的开源软件有:heartbeat.keepalived等,其中heartbeat这款软件在CentOs6上面的bug略多,假如主服务器宕机,备用服务器不可以在短时间正常切换提供服务,而且长时间没有更新,所以不建议使用. 负载均衡 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分

Linux集群架构(1)集群介绍、keepalived介绍、用keepalived配置高可用集群

集群介绍 这些实现高可用和负载均衡的都是软件,是为我们在服务器上的服务所作用的. keepalived介绍 用keepalived配置高可用集群 在nginx上实现高可用: 准备工作: 准备两台机器133和134,133作为master(主),134作为backup(备用) 两台机器都执行yum install -y keepalived 两台机器都安装nginx,其中133上已经编译安装过nginx,134上需要yum安装nginx: yum install -y nginx !!(133机器

33 linux集群架构

简介根据功能划分为两大类:高可用和负载均衡高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2 高可用开源软件:keepalivedkeepalived通过VRRP(Virtual Router Redundancy Protocl)来实现高可用.在这个协议里会将多台功能相同的路由器组

lvs+keepalived集群架构服务

lvs+keepalived集群架构服务 一,LVS功能详解 1.1 LVS(Linux Virtual Server)介绍 LVS是Linux Virtual Server 的简写(也叫做IPVS),意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能. 1.2 企业网站LVS集群架构图 1.3 IPVS软件工作层次图 从上图我们看出,LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux Virt

Linux集群-负载均衡lvs介绍及lvs-nat实现https

一.Linux集群 Linux集群系统保护集群管理器和集群节点两部分组成.集群节点简称为节点.服务器或服务器节点,是用来提供资源,进行集群的实际工作.一般来说,它必须进行配置后才能称为集群的一部分,同时也要运行集群用到的应用程序.Linux集群管理器再将各节点捆绑在一起,它用于将任务分解到所有的节点.简单的说,就是按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力. scale on 在单台主机上提高服务器性能, scale out 增加服务器的数量来提高,负载均衡的集群. 二

基于云端虚拟机的LVS/DR+Keepalived+nginx的高可用集群架构配置

最近,公司要我部署一个集群架构,选来选取还是选择了大家都很熟悉的基于DR的LVS+Keepalived做负载分发,然后使用轻量级的nginx做中间代理层,这里呢先暂时实现一个简单web应用功能,对于代理功能和后续的web层部署.数据层安排将择机更新! 首先看一下集群框架:   下面开始我们的集群搭建行程: 一.IP规划: 做一件事情需要想想怎么去做既简单又有条理,我们做项目也应该如此.所以这里一定先做一个简单的规划,对于你后续测试的时候出现不能分发的情况有所解决. 负载均衡层