CentOS 7 部署LVS集群(DR模式、NAT模式,LVS+keepalived)

1.简介

1.1LVS

linux虚拟服务器,是一个虚拟的服务器集群系统,可以在Unix和linux平台下实现负载均衡集群的功能。

1.2LVS与nginx的对比

1)工作在网络模型的7层,可以针对http应用做一些分流的策略,nginx单凭这点可利用的场合远多于LVS。

  2)最新版的nginx也支持4层TCP负载,这曾是LVS的优势。

  3)nginx对网络稳定性的依赖小,相反LVS对网络稳定性依赖大。

  4)nginx安装和配置比较简单,测试起来比较方便,基本上能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间,对网络依赖较大。

1.3搭建LVS的原因

  1)日1000-2000W PV或并发请求1万以下都可考虑nginx

  2)大型门户网站、电商网站需要用到LVS。

1.4LVS集群的工作模式

1)DR模式:通过改写请求报文的目标MAC地址,将请求发送给真实服务器,而真实服务器将相应后的处理结果直接返还给客户端用户。极大地提高集群的伸缩性,但LB与RS必须在同一局域网环境。

  2)NAT模式:

通过网络地址转换,LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理之后,返回时必须通过LB,经过LB时报文的源地址被重写,再返回给客户。

  3)隧道模式:LB把请求的报文通过IP隧道转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户。

  4)FULLNAT模式:数据包进入时,除了做DNAT,还做SNAT,从而实现LVS-RealServer间可以跨vlan通讯,RealServer只需要连接到内网。

2.环境准备

1)关闭防火墙和Selinux

2)主机名及IP地址关系如下:

lb01      10.0.0.5

lb042     10.0.0.6

web03  10.0.0.17

web04  10.0.0.18

3)web03和web04安装Tomcat软件,并满足下面条件:

curl http://10.0.0.17  页面底部得到结果为web03

curl http://10.0.0.18  页面底部得到结果为web04

3.ipvsadm管理LVS负载集群(DR模式)

3.1安装ipvsadm管理工具(只在lb01操作)

[[email protected] ~]# yum install -y ipvsadm

说明:默认没有加载模块,需要安装管理工具才能激活

3.2查看LVS状态,并激活LVS内核模块

[[email protected] ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[[email protected] ~]# lsmod | grep ip_vs

ip_vs_rr               12600  0

ip_vs                 140944  2 ip_vs_rr

nf_conntrack          105745  1 ip_vs

libcrc32c              12644  2 xfs,ip_vs

3.3在eth0网卡绑定VIP地址(只在lb01操作)

[[email protected] ~]# ip addr add 10.0.0.13/24 dev eth0

[[email protected] ~]# ip a s eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:a6:ba:9e brd ff:ff:ff:ff:ff:ff

inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0

valid_lft forever preferred_lft forever

inet 10.0.0.13/24 scope global secondary eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fea6:ba9e/64 scope link

valid_lft forever preferred_lft forever

3.4清除所有LVS规则(只在lb01操作)

[[email protected] ~]# ipvsadm -C

3.5设置tcp、tcpfin、udp连接超时时间

[[email protected] ~]# ipvsadm --set 30 5 60

3.6添加虚拟服务(只在lb01操作)

[[email protected] ~]# ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20

3.7将虚拟服务关联到真实服务上(只在lb01操作)

[[email protected] ~]# ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1

[[email protected] ~]# ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1

[[email protected] ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.0.0.13:80 wrr persistent 20

-> 10.0.0.17:80                 Route   1      0          0

-> 10.0.0.18:80                 Route   1      0          0

3.8在lo网卡绑定VIP地址(web03、web04同时操作)

ip addr add 10.0.0.13/24 dev lo

3.9修改内核参数抑制ARP响应(web03、web04同时操作)

cat /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

3.10浏览器访问http://10.0.0.13

4.LVS+keepalived(DR模式)

4.1安装keepalived(lb01、lb02同时操作)

yum install -y keepalived

4.2修改lb01的keepalived配置文件

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_01

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 150

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.13/24

}

}

virtual_server 10.0.0.13 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 10.0.0.17 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.0.0.18 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

4.3修改lb02的keepalived配置文件

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_02

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.13/24

}

}

virtual_server 10.0.0.13 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 10.0.0.17 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.0.0.18 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

4.4启动keepalived

systemctl start keepalived.service

4.5测试keepalived高可用,故障转移

4.6在lo网卡绑定VIP地址(web03、web04同时操作)

ip addr add 10.0.0.13/24 dev lo

4.7修改内核参数抑制ARP响应(web03、web04同时操作)

cat /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

4.8浏览器访问http://10.0.0.13(测试keepalived健康检查)

5.ipvsadm管理LVS负载集群(NAT模式)

5.1安装ipvsadm管理工具(只在lb01操作)

[[email protected] ~]# yum install -y ipvsadm

说明:默认没有加载模块,需要安装管理工具才能激活

5.2查看LVS状态,并激活LVS内核模块

[[email protected] ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[[email protected] ~]# lsmod | grep ip_vs

ip_vs_rr               12600  0

ip_vs                 140944  2 ip_vs_rr

nf_conntrack          105745  1 ip_vs

libcrc32c              12644  2 xfs,ip_vs

5.3在eth0网卡绑定VIP地址(只在lb01操作)

[[email protected] ~]# ip addr add 10.0.0.13/24 dev eth0

[[email protected] ~]# ip a s eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:a6:ba:9e brd ff:ff:ff:ff:ff:ff

inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0

valid_lft forever preferred_lft forever

inet 10.0.0.13/24 scope global secondary eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fea6:ba9e/64 scope link

valid_lft forever preferred_lft forever

5.4清除所有LVS规则(只在lb01操作)

[[email protected] ~]# ipvsadm -C

5.5设置tcp、tcpfin、udp连接超时时间(只在lb01操作)

[[email protected] ~]# ipvsadm --set 30 5 60

5.6添加虚拟服务(只在lb01操作)

[[email protected] ~]# ipvsadm -A -t 10.0.0.13:80 -s rr -p 20

5.7将虚拟服务关联到真实服务上(只在lb01操作)

ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.203:80 -m

ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.204:80 -m

5.9开启路由转发功能(只在lb01操作)

[[email protected] ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

[[email protected] ~]# sysctl -p

5.10清空iptables规则(只在lb01操作)

[[email protected] ~]# iptables -F

[[email protected] ~]# iptables -F -t nat

5.11添加nat转换规则(只在lb01操作)

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

5.12RS服务器内网网卡添加虚拟网关(web03、web04同时操作)

echo "GATEWAY=172.16.1.13" >> /etc/sysconfig/network-scripts/ifcfg-eth1

5.13浏览器访问http://10.0.0.15

6.LVS+keepalived(NAT模式)

6.1安装keepalived(lb01、lb02同时操作)

yum install -y keepalived

6.2修改lb01的keepalived配置文件

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 150

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.13/24 dev eth0 label eth0:1

}

}

vrrp_instance VI_2 {

state MASTER

interface eth1

virtual_router_id 52

priority 150

advert_int 1

authentication {

auth_type PASS

auth_pass 1112

}

virtual_ipaddress {

172.16.1.13/24 dev eth1 label eth1:1

}

}

virtual_server 10.0.0.13 80 {

delay_loop 6

lb_algo rr

lb_kind NAT

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 172.16.1.17 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 172.16.1.18 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

6.3修改lb02的keepalived配置文件

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_DEVEL1

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.13/24 dev eth0 label eth0:1

}

}

vrrp_instance VI_2 {

state BACKUP

interface eth1

virtual_router_id 52

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1112

}

virtual_ipaddress {

172.16.1.13/24 dev eth1 label eth1:1

}

}

virtual_server 10.0.0.13 80 {

delay_loop 6

lb_algo rr

lb_kind NAT

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 172.16.1.17 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 172.16.1.18 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

6.4开启路由转发功能(lb01、lb02同时操作)

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

sysctl -p

6.5清空iptables规则(lb01、lb02同时操作)

iptables -F

iptables -F -t nat

6.6添加nat转换规则(lb01、lb02同时操作)

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

6.7防止keepalived脑裂(lb01、lb02同时操作)

iptables -A INPUT -i eth0 -p vrrp -j ACCEPT

6.8启动keepalived

systemctl start keepalived.service

6.8RS服务器内网网卡添加虚拟网关(web03、web04同时操作)

echo "GATEWAY=172.16.1.13" >> /etc/sysconfig/network-scripts/ifcfg-eth1

6.9浏览器访问http://10.0.0.13

原文地址:http://blog.51cto.com/13520761/2089583

时间: 2024-08-09 23:52:47

CentOS 7 部署LVS集群(DR模式、NAT模式,LVS+keepalived)的相关文章

LVS集群DR、NAT模型配置, 及使用ldirectord完成LVS DR模型集群搭建

首先我们有三台主机:其中172.16.192.168作为前台主机:另外172.16.254.18和172.16.254.105作为后端主机,作为测试分别运行有web服务,并测试可用,如下图. 一.LVS NAT模型集群配置实验 1.首先在后端Real Server上设置默认网关,执行前端Virtual Server 2.在前端Virtual Server上开启路由转发功能 3.配置前端LVS集群 4.测试 总结:经过初步测试,我们可以看出已经可以实现rr轮询调度,修改相应的调度算法则可以实现不同

LVS集群配置之NAT实现配置

NAT方式的实现过程.由于是实验环境,所以网络拓扑比较简单 用的是web服务做的实验 客户端不需要什么配置. 服务器端即real server1 和real server2 把所需要的httpd服务安装即可,有防火墙的配置下防火墙,不想配置防火墙的就把防火墙关掉. 下面我们来看director的配置 首先安装ipvsadm软件 可以使用RPM安装,也可以使用源码包安装. 这里我使用的是RPM包安装的.此次使用的RPM包不在平时我们所用的Package目录中,而是在LoadBalance目录下.你

实战CentOS系统部署Hadoop集群服务

导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序:HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming acces

DevOps云原生应用:在centos上部署kubernetes集群(1)

本系列文档介绍使用二进制部署最新 kubernetes v1.14.2 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群.本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来学习和了解系统配置.运行原理的人. 环境信息: OS 系统: Centos7.6 ( core ) kubernetes版本:v1.14.2 ETCD数据库:v3.3.13 Network插件:Flanneld 0.11.0 Docker 版本: 18.09.6-ce K8s插件

实战Centos系统部署Codis集群服务

导读 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务. 一.Codis简介 Codis 是 Wandoujia Infrastructu

LVS集群之IP TUN模式

今天来看一下LVS的第三种模式IP TUN. TUN方式,是通过给数据包加上新的IP头部来实现,这个可以跨整个广域网. 环境: 主机名 IP 系统 角色 tiandong63 RIP:192.168.199.11.DG:192.168.199.1 VIP:192.168.199.63 rhel6.5 real server1 tiandong64 RIP:192.168.199.12.DG:192.168.199.1 VIP:192.168.199.63 rhel6.5 real server2

Centos 7 部署lnmp集群架构

前言介绍 lnmp的全程是 linux + nginx + mysql + php; lnmp就是上述系统及应用程序的简写组合: lnmp其实已经代表了一个用户正常对一个页面请求的流程,nginx接收请求,mysql进行数据存储,php进行后端处理:类似的架构还有lamp或者 linux + nginx + mysql + java等等: lnmp又叫lemp,外国人喜欢叫lemp,中国人喜欢叫lnmp: lnmp相比于lamp架构的优势在于轻便.操作相对简单:lamp优势相对于nginx而言模

LVS集群之DR模型

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.  LVS十种调度算法: 静态(fixed method): rr, wrr, sh, dh rr: 轮叫(Round Robin) 调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载. wrr: 加权轮叫(Weig

Cluster基础(二):ipvsadm命令用法、部署LVS-NAT集群、部署LVS-DR集群

一.ipvsadm命令用法 目标: 准备一台Linux服务器,安装ipvsadm软件包,练习使用ipvsadm命令,实现如下功能: 使用命令添加基于TCP一些的集群服务 在集群中添加若干台后端真实服务器 实现同一客户端访问,调度器分配固定服务器 会使用ipvsadm实现规则的增.删.改 保存ipvsadm规则 方案: 安装ipvsadm软件包,关于ipvsadm的用法可以参考man ipvsadm资料.常用ipvsadm命令语法格式如下表所示. 步骤: 步骤一:使用命令增.删.改LVS集群规则

LVS集群配置(DR模式)

基本介绍: LVS集群的Director Server主要有三种配置模式,分别为 TUN .NAT.DR,可以对各种服务做负载均 衡,而LVS架设的服务器集群系统由三个部分组成,分别是最前端的负载均衡层(Load Balance),中 间的服务器集群层(Server Array)和最底层的数据共享存储层(Shared Storage). LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是: 安装在Director Server上,同时在Dire