当前位置: 首页 > article >正文

LVS-DR+Keepalived+动静分离实验

架构图

解释一下架构,大概就是用Keepalived实现两台DR服务器的LVS负载均衡,然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离
这个实验其实就是把 LVS-DR+Keepalived 和 动静分离 给拼起来,真的是拼起来,两个部分其实就像是独立的部分,互相之间的影响很小

实验前准备:

主DR服务器:192.168.188.11   (ens33:0)192.168.188.188
备DR服务器:192.168.188.12   (ens33:0)192.168.188.188
Nginx服务器1:192.168.188.13    (lo:0)192.168.188.188
Nginx服务器2:192.168.188.14    (lo:0)192.168.188.188
VIP(虚拟IP):192.168.188.188
Tomcat服务器1:192.168.188.15
Tomcat服务器2:192.168.188.16
如果只想用四台机器实现,那么就把Tomcat和Nginx部署到同一台就行,比如说Tomcat1和Nginx1同一台,Tomcat2和Nginx2同一台。只需要改一下nginx.conf就行,底下会说

  1. DR服务器部署
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装ipvsadm和keepalived
      yum -y install ipvsadm keepalived
    3. 加载ipvs内核模块并查看
      modprobe ip_vs
      cat /proc/net/ip_vs
    4. 配置keepalived
      cd /etc/keepalived
      备份配置文件
      cp keepalived.conf keepalived.conf.bak
      对配置文件进行修改
      vim keepalived.conf
      主备服务器都要配置,下面这张图是主的配置截图,备的配置除了router_id改成LVS_02,state改成BACKUP,priority改成90,其他都一样

    5. 配置虚拟IP(VIP)
      vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      配置完重启网卡
      systemctl restart network
      打开虚拟网卡
      ifup ens33:0
      查看一下有没有生效
      ip addr

      启动keepalived服务
      systemctl start keepalived
      关于虚拟网卡,在实验过程中总会碰到一个问题,那就是虚拟网卡连接很不稳定,打开后总是过一段时间就断开,具体原因我也排查不出来,也可能是网络不好,如果在后面测试过程中发现失败,可以用ip addr看一下虚拟网卡是不是断开了,如果没了,那就用systemctl restart network重启网络

    6. 启动ipvsadm服务
      主DR服务器(192.168.188.11):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm

      配置规则
      先清空
      ipvsadm -C
      ipvsadm -A -t 192.168.188.188:80 -s rr
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.13:80 -g
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.14:80 -g
      查看分发策略

      备DR服务器(192.168.188.12):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm
      直接查看
      ipvsadm -ln,目前并没有策略

      当主服务器断开后,备服务器会接收到主服务器的策略,测试的时候可以来这看一下

    7. 调整proc响应参数,关闭Linux内核的重定向参数响应
      vim /etc/sysctl.conf

      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0


      sysctl -p

  2. Nginx服务器部署

    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0

    2. 安装Nginx,不再赘述,这里只说一件事,pid改不改不影响使用,但是如果你改了nginx.conf里面的pid位置,那么就必须创建相应的目录

    3. 为了方便测试,在Nginx1和Nginx2的index.html文件里随便写点东西以示区分就行

    4. 配置虚拟网卡(lo:0)
      vim /etc/sysconfig/network-scripts/ifcfg-lo:0

      DEVICE=lo:0
      ONBOOT=yes
      ​​​​​​​IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      重启网卡
      systemctl restart network
      启动虚拟网卡
      ifup lo:0
      查看
      ip addr

      添加路由规则
      route add -host 192.168.188.188 dev lo:0

    5. 调整proc响应参数
      vim /etc/sysctl.conf

      net.ipv4.conf.lo.arp_ignore = 1
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2



      sysctl -p

    6. 配置文件后面再改

  3. Tomcat服务器部署

    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0

    2. 安装JDK、Tomcat不再赘述,不知道怎么安装可以看前面的实验

    3. 创建测试的应用目录
      mkdir /usr/local/tomcat/webapps/test
      写一个页面,这是Tomcat1的
      vim /usr/local/tomcat/webapps/test/index.jsp

      <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      <html>
      <head>
      <title>JSP test1 page</title>   #指定为 test1 页面
      </head>
      <body>
      <% out.println("动态页面 1,http://www.test1.com");%>
      </body>
      </html>

      写一个页面,这是Tomcat2的
      vim /usr/local/tomcat/webapps/test/index.jsp

      <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      <html>
      <head>
      <title>JSP test2 page</title>   #指定为 test2 页面
      </head>
      <body>
      <% out.println("动态页面 2,http://www.test2.com");%>
      </body>
      </html>
    4. 修改配置文件server.xml
      vim /usr/local/tomcat/conf/server.xml
      因为新增的Host的name也是localhost和原本的重名了,所以把原本的删掉

      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
      	<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true">
      	</Context>
      </Host>

    5. 重启服务
      /usr/local/tomcat/bin/shutdown.sh
      /usr/local/tomcat/bin/startup.sh

  4. 动静分离配置(只需要在Nginx服务器上修改就行)

    1. 修改nginx主配置文件
      vim /usr/local/nginx/conf/nginx.conf
      如果你只用了4台机器,也就是说Nginx服务器同时是Tomcat服务器,那么就把服务器地址池里的IP地址改成Nginx的IP地址就行,端口不变

    2. 保存并重启服务
      systemctl restart nginx

  5. 测试,在客户端的浏览器输入VIP,也就是192.168.188.188可以访问到静态页面,多刷新几次看看负载均衡有没有问题
    这里要说一下,可能是LVS本身有问题,导致Nginx1的页面和Nginx2的页面总有一个很难刷新出来,这并不代表就是错的,如果一直只能看到Nginx1,那就把Nginx1服务器上的Nginx服务直接停了,再刷新,如果能访问到Nginx2那就说明没问题
    再输入192.168.188.188/index.jsp就能访问到动态页面,多刷新几次看看负载均衡有没有问题,这里用的Nginx的调度算法,就能正常显示Tomcat1和Tomcat2的动态页面

    ​​​​​​

http://www.kler.cn/a/162823.html

相关文章:

  • python高效处理大数据:将Excel10万数据分批插入MySQL数据库的实战代码
  • 每日一练:二分查找-搜索插入位置
  • 使用 Flask 和 ONLYOFFICE 实现文档在线编辑功能
  • RAFT: Recurrent All-Pairs Field Transforms for Optical Flow用于光流估计的循环全对场变换
  • 在C++上实现反射用法
  • 管家婆财贸ERP BB045.销售批量收款
  • 对系统的 Go 版本进行升级
  • Python 接口自动化 —— requests框架
  • IPoIB在国产并行系统上的实现与优化
  • 16mic圆形麦克风阵列电路与声源定位算法设计
  • 【Java数据结构 -- List和ArrayList与顺序表】
  • 实现:切换页面切换标题,扩展 vue-router 的类型
  • 【PyTorch】多层感知机
  • 算法-滑动窗口
  • WT588F02B-8S语音芯片助力破壁机:智能声音播放提示IC引领健康生活新潮流
  • 了解linux计划任务
  • 无重复字符的最长子串-中等
  • go语言学习-并发编程(并发并行、线程协程、通道channel)
  • Efficient physics-informed neural networks using hash encoding
  • 逻辑漏洞与越权
  • 【1day】致远 A8系统getAjaxDataServlet-xxe接口任意文件读取学习
  • windows 安装两个mysql
  • frp内网穿透部署,轻松实现内网服务对外访问
  • Gan论文阅读笔记
  • SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
  • 解释区块链技术的应用场景和优势。