LVS+keepalived+nginx+tomcat部署实现

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

# 拓扑如下所示

wKioL1QOmLrDoQ2uAAHpCQhZ_Bk403.jpg

# 节点分布情况

LVS-dr-master

    eth0: 192.168.146.141

  

LVS-dr-slave

    eth0: 192.168.146.142



nginx1:

    eth0: 192.168.146.139

nginx2:

    eth0: 192.168.146.140

tomcat1:

    eth0: 192.168.146.138 启用了4个tomcat


VIP: 192.168.146.200


# 具体配置

### lvs master

### 1、安装ipvsadm、keepalived


1
yum install -y keepalived ipvsadm



### 2、使用keepalived来管理lvs

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
global_defs
{
router_id master_210
}
  
vrrp_instance aiyou {
state MASTER
interface eth0
virtual_router_id 100    #这个数值 master和slave必须统一
priority 151     #这个数值决定哪台服务器是master 
advert_int 1
authentication {
         auth_type PASS
         auth_pass 123456
         }
virtual_ipaddress {
         192.168.146.200
         }
}
virtual_server 192.168.146.200 80 {
             delay_loop 6
             lb_algo wrr
             lb_kind DR
#            persistence_timeout 50
             protocol TCP
real_server 192.168.146.139 80 {
                 weight 1
                 TCP_CHECK {
                     connect_timeout 3
                     nb_get_retry 3
                     delay_before_retry 3
                     connect_port 80
                 }
             }
real_server 192.168.146.140 80 {
                 weight 1
                 TCP_CHECK {
                     connect_timeout 3
                     nb_get_retry 3
                     delay_before_retry 3
                     connect_port 80
                 }
             }
}


### lvs slave

### 1、安装ipvsadm、keepalived


1
yum install -y keepalived ipvsadm



### 2、使用keepalived来管理lvs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
global_defs
{
router_id slave_211
}
  
vrrp_instance aiyou {
state MASTER
interface eth0
virtual_router_id 100    #这个数值 master和slave必须统一
priority 150     #这个数值决定哪台服务器是master 这里我们比master数值低,所以角色是backup,
advert_int 1
authentication {
         auth_type PASS
         auth_pass 123456
         }
virtual_ipaddress {
         192.168.146.200
         }
}
virtual_server 192.168.146.200 80 {
             delay_loop 6
             lb_algo wrr
             lb_kind DR
#            persistence_timeout 50
             protocol TCP
real_server 192.168.146.139 80 {
                 weight 1
                 TCP_CHECK {
                     connect_timeout 3
                     nb_get_retry 3
                     delay_before_retry 3
                     connect_port 80
                 }
             }
real_server 192.168.146.140 80 {
                 weight 1
                 TCP_CHECK {
                     connect_timeout 3
                     nb_get_retry 3
                     delay_before_retry 3
                     connect_port 80
                 }
             }
}


### nginx1

### nginx上要跑个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash  
#   
# Script to start LVS DR real server.   
# description: LVS DR real server   
#   
.  /etc/rc.d/init.d/functions
VIP=192.168.146.200   #这里根据需要改成自己的VIP地址
host=`/bin/hostname`
case "$1" in  
start)   
        # Start LVS-DR real server on this machine.   
         /sbin/ifconfig lo down   
         /sbin/ifconfig lo up   
         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
         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
         /sbin/route add -host $VIP dev lo:0
;;  
stop)
         # Stop LVS-DR real server loopback device(s).  
         /sbin/ifconfig lo:0 down   
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore   
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce   
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore   
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;  
status)
         # Status of LVS-DR real server.  
         islothere=`/sbin/ifconfig lo:0 | grep $VIP`   
         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`   
         if [ ! "$islothere" -o ! "isrothere" ];then   
             # Either the route or the lo:0 device   
             # not found.   
             echo "LVS-DR real server Stopped."   
         else   
             echo "LVS-DR real server Running."   
         fi   
;;   
*)   
             # Invalid entry.   
             echo "$0: Usage: $0 {start|status|stop}"   
             exit 1   
;;   
esac


### nginx2

### nginx上要跑个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash  
#   
# Script to start LVS DR real server.   
# description: LVS DR real server   
#   
.  /etc/rc.d/init.d/functions
VIP=192.168.146.200   #这里根据需要改成自己的VIP地址
host=`/bin/hostname`
case "$1" in  
start)   
        # Start LVS-DR real server on this machine.   
         /sbin/ifconfig lo down   
         /sbin/ifconfig lo up   
         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
         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
         /sbin/route add -host $VIP dev lo:0
;;  
stop)
         # Stop LVS-DR real server loopback device(s).  
         /sbin/ifconfig lo:0 down   
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore   
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce   
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore   
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;  
status)
         # Status of LVS-DR real server.  
         islothere=`/sbin/ifconfig lo:0 | grep $VIP`   
         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`   
         if [ ! "$islothere" -o ! "isrothere" ];then   
             # Either the route or the lo:0 device   
             # not found.   
             echo "LVS-DR real server Stopped."   
         else   
             echo "LVS-DR real server Running."   
         fi   
;;   
*)   
             # Invalid entry.   
             echo "$0: Usage: $0 {start|status|stop}"   
             exit 1   
;;   
esac


### 后端tomcat安装省略


采用一机多实例模式(非多虚拟主机)


### 测试


### master上验证

1
2
3
4
5
6
7
8
[root@lvs1 ~]# 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.146.200:80 wrr
   -> 192.168.146.139:80           Route   1      0          0         
   -> 192.168.146.140:80           Route   1      0          0         
[root@lvs1 ~]#


### slave上验证

1
2
3
4
5
6
7
8
[root@lvs2 ~]# 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.146.200:80 wrr
   -> 192.168.146.139:80           Route   1      0          0         
   -> 192.168.146.140:80           Route   1      0          0         
[root@lvs2 ~]#



本文转自lovelace521 51CTO博客,原文链接:http://blog.51cto.com/lovelace/1550188,如需转载请自行联系原作者

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
194 11
|
6月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
123 1
|
6月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
178 0
|
6月前
|
缓存 负载均衡 应用服务中间件
在Linux中,LVS与nginx有何区别?
在Linux中,LVS与nginx有何区别?
|
6月前
|
负载均衡 监控 应用服务中间件
在Linux中,lvs/nginx/haproxy 优缺点?
在Linux中,lvs/nginx/haproxy 优缺点?
|
6月前
|
负载均衡 应用服务中间件 Linux
在Linux中,LVS、Nginx、HAproxy有什么区别?工作中怎么选择?
在Linux中,LVS、Nginx、HAproxy有什么区别?工作中怎么选择?
|
6月前
|
负载均衡 网络协议 关系型数据库
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
119 0
|
8月前
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
9月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
|
2月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
349 4