草庐IT

LVS+keepalived+nginx+tomcat部署实现

lovelace521 2023-03-28 原文
# 拓扑如下所示

# 节点分布情况

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


yum install -y keepalived ipvsadm


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

脚本:

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


yum install -y keepalived ipvsadm


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

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上要跑个脚本

#!/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上要跑个脚本

#!/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上验证

[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上验证

[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 ~]#

参考文章:

http://www.5ilinux.com/2014/05/lvs_keepalived_nginx_tomcat.html


有关LVS+keepalived+nginx+tomcat部署实现的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  3. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  4. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  7. Tomcat AJP 文件包含漏洞(CVE-2020-1938) - 2

    目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控

  8. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  9. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  10. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

随机推荐