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,如需转载请自行联系原作者

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
打赏
0
0
0
0
69
分享
相关文章
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
69 23
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
67 22
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
82 25
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
237 11
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
240 26
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
298 1
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
1775 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
336 0
tomcat学习二:tomcat部署多个项目:不修改端口和修改端口 两种方式详解
这篇文章详细介绍了在Tomcat服务器上部署多个项目的方法,包括不修改端口和修改端口两种方式。
302 0