keepalived+nginx+tomcate(动静分离群集部署)

动静分离群集部署

Nginx负载均衡原理

所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游的应用服务器,这样即使某一个服务器宕机也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。

Nginx动静分离原理

服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。
如下图所示,我们在机器上同时安装了nginx和tomcat,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。

项目环境

在这里插入图片描述

nfs配置

[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# cd /web1
[root@nfs web1]# vi index.jsp 

添加:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head>
<title>tomcat1</title>
</head>
<body>
<% out.println(" tomcat1");%>
<div>动态页面</div><br/><img src="a.jpg" />
</body>             
</html>

[root@nfs web1]# cd /web2
[root@nfs web2]# vi index.jsp 

添加:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head>
<title>tomcat2</title>
</head>
<body>
<% out.println(" tomcat2");%>
<div>动态页面</div><br/><img src="a.jpg" />
</body>             
</html>

[root@nfs web2]# cd
[root@nfs ~]# vi /etc/exports

添加
/web1 192.168.100.30(ro)   
/web2 192.168.400.40(ro)

[root@nfs ~]# systemctl start nfs    #服务开启
[root@nfs ~]# systemctl restart rpcbind  
[root@nfs ~]# showmount -e    #查看共享情况
Export list for nfs:
/web2 192.168.100.40
/web1 192.168.100.30

tomcat1配置(tomcat2配置同理)

[root@tomcat1 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz 
[root@tomcat1 ~]# mv jdk1.8.0_91/ /usr/local/java
[root@tomcat1 ~]# vi /etc/profile

末尾添加:
export JAVA_HOME=/usr/local/java    #定义变量,设置JAVA根目录设为全局变量
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre   #环境变量,在PATH环境变量中添加JAVA根目录下的bin/子目录,jre/子目录

[root@tomcat1 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz 
[root@tomcat1 ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8 
[root@tomcat1 ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
[root@tomcat1 ~]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@tomcat1 ~]# mkdir /webapp1   
mount 192.168.100.50:/web1/ /webapp1
[root@tomcat1 ~]# vi /usr/local/tomcat8/conf/server.xml 

在<Host name=“localhost” appBase=“webapps”模块下添加:

<Context docBase="/webapp1" path="" reloadable="false">
  </Context>

[root@tomcat1 ~]# tomcatup  服务启动
[root@tomcat1 ~]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      56831/java          

访问测试:

在浏览器输入:http://192.168.100.30:8080

在这里插入图片描述
tomcat2上测试:
在浏览器输入:http://192.168.100.40:8080
在这里插入图片描述

Nginx1配置(Nginx2同理)

[root@nginx1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
[root@nginx1 ~]# tar zxvf nginx-1.13.7.tar.gz  
[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx
[root@nginx1 ~]# tar zxvf nginx-1.13.7.tar.gz       
[root@nginx1 ~]# cd nginx-1.13.7/
[root@nginx1 nginx-1.13.7]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx  
[root@nginx1 nginx-1.13.7]# make && make install   
[root@nginx1 nginx-1.13.7]# ln -s /usr/local/nginx/conf/nginx.conf /etc/     
[root@nginx1 nginx-1.13.7]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/   
  
[root@nginx1 ~]# vi /usr/local/nginx/conf/nginx.conf

#gzip on下添加:
upstream tomcat_server {
             server 20.0.0.12:8080 weight=1;
              节点      ip地址  端口号  权重
             server 20.0.0.13:8080 weight=1;
}

location / {} 下添加:
        location ~ \.jsp$ {
             proxy_pass http://tomcat_server;  
}                                          

[root@nginx1 ~]# cd /usr/local/nginx/html   目录下添加图片a.jpg b.jpg

访问测试

在浏览器输入:http://192.168.100.10/index.jsp
在这里插入图片描述
刷新访问:
在这里插入图片描述

keepalived配置(主备区别router_id、state、priority三个参数不同)

[root@nginx1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
[root@nginx1 ~]# tar zxvf keepalived-2.0.13.tar.gz    
[root@nginx1 ~]# cd keepalived-2.0.13/
[root@nginx1 keepalived-2.0.13]# ./configure --prefix=/      
[root@nginx1 keepalived-2.0.13]# make && make install   
[root@nginx1 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d
[root@nginx1 keepalived-2.0.13]# vi /etc/init.d/keepalived   

修改
# chkconfig: 35 21 79  运行级别

[root@nginx1 keepalived-2.0.13]# chmod 755 /etc/init.d
[root@nginx1 keepalived-2.0.13]# chkconfig --add keepalived

[root@nginx1 keepalived-2.0.13]# vi /etc/keepalived/keepalived.conf 

! Configuration File for keepalived
global_defs {
     router_id nginx1      #服务器的名称

vrrp_script chk_http_port {   # vrrp脚本
     interval 2         # 检测间隔时间 
     weight 2
}
vrrp_instance vi_1 {     
     state  MASTER     # 定义keepalived,MASTER为主,BACKUP为备
     interface ens33   # 当前进行vrrp通讯的网络接口卡
     virtual_router_id 51  # 虚拟路由编号,主从要一致
     priority 150           # 优先级,数值越大,获取地址优先级越大
     adver_int 1            # 检查间隔,默认为1s 
     authentication {      # 认证方式
          auth_type PASS
          auth_pass 123
}
track_script {
       chk_http_port    
}
virtual_ipaddress {
     192.168.100.100   # 漂移地址
}
}

                                                                        
[root@nginx1 keepalived-2.0.13]# vi /usr/local/src/nginx.sh

添加:
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`    查询进程数
if [ $A -eq 0 ]          
then /usr/local/nginx/sbin/nginx
   if [ `ps -C nginx --no-header | wc -l` -eq 0 ]
    then exit 1
    else exit 0
   fi
else
   exit 0
fi

[root@nginx1 keepalived-2.0.13]# chmod +x /usr/local/src/nginx.sh 
[root@nginx1 keepalived-2.0.13]# systemctl start keepalived
[root@nginx1 ~]# ip addr  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:21:53 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.10/24 brd 192.168.100.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::ce78:9734:9bed:f596/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:b9:40:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:b9:40:00 brd ff:ff:ff:ff:ff:ff

访问测试

在浏览器输入:http://192.168.100.100/index.jsp
在这里插入图片描述
刷新访问
在这里插入图片描述

关闭主服务器

在这里插入图片描述

查看备服务器ip addr

在这里插入图片描述

再次访问192.168.100.100/index.jsp

在这里插入图片描述
刷新
在这里插入图片描述

查看备服务器日志

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值