Nginx反向代理及负载均衡及主备测试

前提条件

创建虚拟机
一台nginx,1台或者2台tomcat
1台的话里面2个tomcat的端口号要改一下
2台就不用改端口号了
我这用2台tomcat,这三个虚拟机的ip肯定要在同意网段是吧
nginx:192.168.10.189
tomcat1:192.168.10.211
tomcat2:192.168.10.212
把你的tomcat安装目录webapps/root里的内容删除,自己写两个index.html进去,比如用来区分这两个tomcat主页

反向代理

在你的nginx安装目录下的conf文件夹里的nginx.conf里编辑:

upstream tomcat {
	   server 192.168.10.211:8080;
    }
    server {
        listen    80;
        server_name  localhost;   
        location / {
            proxy_pass   http://tomcat;
			index  index.jsp index.html index.htm;
        }
	}

nginx的默认端口号是80,这样你访问192.168.10.189,不用加上80端口号
就跳转到你的tomcat1主页了,如果想改nginx端口为8080,
那你访问的时候就是192.168.10.189:8080了.
所以你可以通过配置不同的端口号,来实现nginx挂载多个不同的项目.

负载均衡

负载均衡就简单了,就把配置文件改两行:

upstream tomcat {
	   server 192.168.10.211:8080 weight=10;
	   server 192.168.10.212:8080 weight=10;
    }
    server {
        listen    80;
        server_name  localhost   
        location / {
            proxy_pass   http://tomcat;
			index  index.html index.htm;
        }
	}

weight是权重,权重越大,访问其tomcat的次数越多.
但是现在有一个问题,就是同一个ip地址,nginx随机给你分配一个tomcat,你访问的tomcat不是固定的,在实际应用中这会产生session丢失的问题,每次访问到一个新的tomcat还要再登陆一遍,怎么解决呢?

另外一个问题,可能你的防火墙屏蔽了nginx的80,8080端口
输入下两条指令开启80,8080端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
保存: /etc/rc.d/init.d/iptables save
重启防火墙 /etc/init.d/iptables restart CentOS防火墙的关闭,关闭其服务即可:
查看防火墙信息:/etc/init.d/iptables status
关闭防火墙服务:/etc/init.d/iptables stop

Tomcat主备

就加了个backup,192.168.10.211挂了才会访问192.168.10.212

upstream tomcat {
	   server 192.168.10.211:8080 weight=10;
	   server 192.168.10.212:8080 weight=10 backup;
    }

关于ip_hash; 写入upstream里面,可以实现某ip访问固定的tomcat
但要把nginx服务器放在最前端.

nginx主备方案

用keeplived实现主备,安装keepalived这里就不说了.
修改主nginx下/etc/keepalived/keepalived.conf文件


global_defs {
    notification_email {
        xxx@xx.com
    }
    notification_email_from  xxx
    smtp_server smtp.hysec.com
    smtp_connection_timeout 30
    router_id nginx_master        # 设置nginx master的id,在一个网络是唯一的
}
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx_pid.sh"    #最后手动执行下此脚本,以确保此脚本能够正常执行
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2
}
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface eth0            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    virtual_router_id 66       # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.10.231           # 定义虚拟ip(VIP),可多设,每行一个
    }
}

修改备nginx下/etc/keepalived/keepalived.conf文件,和主nginx基本相同
配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致

这个虚拟ip:192.168.10.231就是你对外提供的地址,通过这个地址,访问你的主nginx,然后你的nginx指向了你的其中的一个tomcat.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值