LVS前后端负载搭建

LVS前后端负载搭建
1、介绍
keepalived介绍 keepalived是一款服务器状态检测和故障切换的工具。在其配置文件中,可以配置主备服务器和该服务器的状态检测请求。也就是说keepalived可以根据配置的请求,在提供服务期间不断向指定服务器发送请求,如果该请求返回的状态码是200,则表示该服务器状态是正常的,如果不正常,那么keepalived就会将该服务器给下线掉,然后将备用服务器设置为上线状态。
lvs介绍 lvs是一款用于四层负载均衡的工具。所谓的四层负载均衡,对应的是网络七层协议,常见的如HTTP协议是建立在七层协议上的,而lvs作用于四层协议上,也即:传输层,网络层,数据链路层和物理层。这里的传输层主要协议有TCP和UDP协议,也就是说lvs主要支持的方式是TCP和UDP。也正是因为lvs是处于四层负载均衡上的,因而其处理请求的能力比常见的服务器要高非常多,比如nginx的请求处理就是建立在网络七层上的,lvs的负载均衡能力是nginx的十倍以上。
2、总体架构图

10.0.198.53和10.0.198.56分别安装LVS、keepalived,通过,keepalived监听两台服务器的状态,如果MASTER服务器挂了,vip自动切换到BACKUP服务器
前端nginx和后端gateway分别部署在10.0.198.54和10.0.198.55两台服务器上
两台服务器上的nginx和gateway的可用性通过LVS配置中的tcp_check方法监控,代码如下:
TCP_CHECK {
connect_port 80 #监控的端口
connect_timeout 3 #监控的超时时间
nb_get_retry 3
delay_before_retry 3
}
如果监控到不可用,就会在lvs负载中把这个服务剔除掉。
3、环境搭建
3.1 配置yum代理
10.0.198.53和10.0.198.56两台机器均需要配置 因为公司的服务器不能直接访问外网,yum安装软件需要配置yum代理。
进入到需要配置的服务器(10.0.198.53)上
进入到以下目录
cd /etc/
编辑yum.conf文件 vi yum.conf
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
proxy=http://wei.tang:Ntt12!2019@10.0.90.100:8080
proxy=http://10.0.90.100:8080
#有,则添加;(没有,则请省略以下;)
proxy_username=wei12.tang
proxy_password=ntt@2020
最后添加: proxy=http://wei.tang:Ntt112019@10.0.90.100:8080 注意代理的账户和密码要改成自己的
3.2 安装keepalived
ssh进入服务器(10.0.198.53)上任何位置,执行如下:
yum install keepalived
3.3 安装ipvs(LVS)
ssh进入服务器(10.0.198.53)上任何位置,执行如下:
yum install ipvsadm
3.4 查看是否支持lvs
进入服务器任何位置,执行如下
lsmod |grep ip_vs 如果看到如下表示是支持的:
ip_vs_rr 12600 4
ip_vs 141432 6 ip_vs_rr
nf_conntrack 133053 9 ip_vs,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4,nf_conntrack_ipv6
libcrc32c 12644 4 xfs,ip_vs,nf_nat,nf_conntrack
3.5 配置keepalived.conf文件
在10.0.198.53上进入
cd /etc/keepalived/
vi keepalived.conf编辑配置文件,lvs和keepalived的配置都要在这个文件配置
#Global Configuration
global_defs {
lvs_id directornginx
}

VRRP Configuration

vrrp_instance LVS {
state MASTER #表示是主服务
interface ens160 #这个是网卡号,要根据你电脑的实际情况填写
virtual_router_id 54 #路由编号,不用的虚拟实例要不一样
priority 151 #优先级
advert_int 1
authentication {
auth_type PASS #和backup通信的加密
auth_pass 123456
}

virtual_ipaddress {
10.0.198.99 #虚拟的ip
}

}

Virtual Server Configuration - for www server

以下是lvs的nginx转发配置

virtual_server 10.0.198.99 80 {
delay_loop 1
lb_algo rr #轮询模式
lb_kind DR #负载模式:路由模式
persistence_time 0
protocol TCP

Real Server 1 configuration

real_server 10.0.198.55 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

Real Server 2 Configuration

real_server 10.0.198.54 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

以下是lvs的gateway转发配置

virtual_server 10.0.198.99 7000 {
delay_loop 1
lb_algo rr
lb_kind DR
persistence_time 0
protocol TCP

Real Server 1 configuration

real_server 10.0.198.55 7000 {
weight 3
TCP_CHECK {
connect_port 7000
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

Real Server 2 Configuration

real_server 10.0.198.54 7000 {
weight 3
TCP_CHECK {
connect_port 7000
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

}
3.6 在10.0.198.56上执行上述3.1到3.4的操作
第3.5项的keepalived.conf配置如下:

Global Configuration

global_defs {
lvs_id directornginx2
}

VRRP Configuration

vrrp_instance LVS {
state BACKUP #这个要设置成BACKUP
interface ens160
virtual_router_id 54 #与MASTER保持一致
priority 150 #优先级要稍低于master
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
10.0.198.99
}

}

Virtual Server Configuration - for www server

以下是lvs的nginx转发配置

virtual_server 10.0.198.99 80 {
delay_loop 1
lb_algo rr
lb_kind DR
persistence_time 0
protocol TCP

Real Server 1 configuration

real_server 10.0.198.54 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

Real Server 2 Configuration

real_server 10.0.198.55 80 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

以下是lvs的gateway转发配置

virtual_server 10.0.198.99 7000 {
delay_loop 1
lb_algo rr
lb_kind DR
persistence_time 0
protocol TCP

Real Server 1 configuration

real_server 10.0.198.54 7000 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

Real Server 2 Configuration

real_server 10.0.198.55 7000 {
weight 3
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3.7 启动keepalived
两台机器都要操作
进入/etc/keepalived/
service keepalived start
3.8 启动lvs
两台机器都要操作
ipvsadm
通过以下查看lvs+keepalived的策略
ipvsadm -ln
[root@localhost gateway]# 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.198.99:80 rr
-> 10.0.198.54:80 Route 3 0 0
-> 10.0.198.55:80 Route 3 0 0
TCP 10.0.198.99:5672 rr
-> 10.0.198.54:5672 Route 3 1 0
-> 10.0.198.55:5672 Route 3 1 0
-> 10.0.198.56:5672 Route 3 1 0
TCP 10.0.198.99:7000 rr
-> 10.0.198.54:7000 Route 3 0 0
-> 10.0.198.55:7000 Route 3 0 0
TCP 10.0.198.99:15672 rr
-> 10.0.198.54:15672 Route 3 0 0
-> 10.0.198.55:15672 Route 3 0 0
-> 10.0.198.56:15672 Route 3 0 0
这样表示正常
4、 启动nginx和gateway
分别在10.0.198.54和10.0.198.55上安装nginx和gateway服务
/home/docker-compose/nginx目录 创建docker-compose.yml文件
version: ‘3’
services:
nginx:
container_name: nginx
image: nginx
restart: always
ports:
- 80:80
privileged: true
volumes:
- ./html/:/usr/share/nginx/html/
- ./conf:/etc/nginx/conf.d
- ./logs/:/var/log/nginx/
/home/docker-compose/gateway目录 创建docker-compose.yml文件
version: ‘3’
services:
gateway:
image: 10.0.198.56:5000/nttdata_gateway
restart: always
ports:
- 7000:7000

volumes:

- ./bootstrap.yml:/home/uaa/bootstrap.yml

分别启动起来
5、测试
下载了一个前端的工程
分别放到54和55的/home/docker-compose/nginx/html文件夹中。
访问:http://10.0.198.99/ 如果出现

的切换表示正常。 同时在54上的ssh可以输入:ipvsadm -ln
出现下面表示正常ActiveConn有值
[root@localhost gateway]# 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.198.99:80 rr
-> 10.0.198.54:80 Route 3 3 0
-> 10.0.198.55:80 Route 3 3 0
测试gateway 访问http://10.0.198.99:7000/swagger-ui.html如果出现表示如下正常
查看ipvsadm -ln
TCP 10.0.198.99:7000 rr
-> 10.0.198.54:7000 Route 3 0 5
-> 10.0.198.55:7000 Route 3 5 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值