由于工作的需求,在使用中,需要搭建负载均衡,研究了Apache+Tomat负载均衡的方案,并且通过检索相关的文章,进行了比较发现,Apache负载负载均衡在使用的效率上,远远不如Nginx的效率高,因此决定使用Nginx来进行服务的搭建。最初YUM安装了Nginx,但是不知道什么原因,Nginx的服务可以正常启动,静态页面也可以正常访问,但是就是无法正常的搭建虚拟主机和负载均衡。对引没有深究原因,决定把他卸载,然后手动安装。

手动安装好Nginx后,一切正常,虚拟主机,负载均衡的配置全部没有任何问题。顺利启用,具体的配置文件如下:

在conf的nginx.conf的文件中加入了:include vhost/*.conf;  以引入vhost目录下的所有的.conf文件,为了以后配置起来简单,当然如果需要的话,也可以一个一个添加。

因为做负载的服务为API服务,在这里conf文件的名字就叫做api.xxx.com.conf,打开文件的配置如下:

在此没有使用IP轮询的方式,而使用的是usstream 的方式,具体这几个方式有什么不同,大家可以百度或google一下相关的介绍。需要注意的是proxy_pass,在此配置的为upstream 的名字,其它的不允许使用,如果直接配置IP地址,则不会实现负载均衡。

其中 weight表示的权重,数越大,权重越高,分配到的机会越大, backup表示的是热备服务器,即在前两个负载都出现问题的时候,热备服务器就会自动承担这些访问。

至此Nginx负载均衡配置器配置完成,但是因为涉及到负载之后,若是普通的网址,在访问的时候,就会再现Session丢失的情况,因此这个时候,就要处理session 丢失的问题,要处理此问题,有多个解决方案,一个是使用Cookies代理,另外 一个实现Session的共享,在此使用的是Session的共享,在实现共享,需要在Tomcat进行相关的配置,要实现这个需求,在此配置的Session的共享服务器为Redis内存服务,主要是为了保证数据的高效读取与存储,在使用Redis进行Session共享,必须要添加以下几个名:

这个几个包,支持Tomcat8没有任何问题,其它版本的具体支持情况如何,没有进行相关的测试。

然后修改Tomcat中的配置文件:

在此看到的10.0.0.x的地址,全部是内网完成的, 外网不通,只有负责负载的服务器才直接连接的外网。

在这个时候,可以顺利启动tomcat服务器,与Nginx服务器了,但是在此之前,必须要先启动Nginx服务器,否则Tomcat可能会出现启动失败的情况。Nginx服务可以顺利启动

三处配置如下:

nginx.conf中添加的引用内容

include vhost/*.conf;

负载均衡配置:

upstream api.xxx.com {
server 10.0.0.12:8080 weight=5;
server 10.0.0.15:8081 weight=5 ;
server 10.0.0.16:8080 weight=5 backup;
}
server {
listen 80;
server_name api.xxx.com;
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://api.xxx.com;
}
}

Tomcat配置

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="10.0.0.16"
port="10000"
database="0"
maxInactiveInterval="60" />

关于怎么安装Tomcat,Nginx,Redis的不是这个的讨论范围。

基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建的更多相关文章

  1. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  2. Nginx+Tomcat高性能负载均衡集群搭建

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/8745794.html Nginx是一个高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3) ...

  3. 配置一个nginx反向代理&负载均衡服务器

    一.基本信息 系统(L):CentOS 6.9 #下载地址:http://mirrors.sohu.com 反代&负载均衡(N):NGINX 1.14.0 #下载地址:http://nginx ...

  4. CentOS7+Nginx配置Tomcat负载均衡环境

    1.准备两个Tomcat 配置两个Tomcat一个端口是8080另外一个端口是8081,分别在webapps下面添加一个测试用的web项目,修改index.jsp文件,8080端口的index.jsp ...

  5. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  6. 6.Nginx作为负载均衡服务器应用

    案例:Nginx作为负载均衡服务器应用 nginx的负载均衡功能是通过upstream命令实现的,因此他的负载均衡机制比较简单,是一个基于内容和应用的7层交换负载均衡的实现.Nginx负载均衡默认对后 ...

  7. 基于Consul+Upsync+Nginx实现动态负载均衡

    基于Consul+Upsync+Nginx实现动态负载均衡 1.Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/l ...

  8. nginx作为负载均衡服务器——测试

    i. 需求 nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器. nginx负载均衡服务器:192.168.101.3 tomcat1服 ...

  9. Nginx之负载均衡服务器揭秘

    Nginx代理服务器, 一次性代理多台后端机器, 利用负载算法, 决定将当前请求传递给某台服务器执行. 有哪些后台服务器?例如微软的IIS,Apache,Nginx 负载算法是什么? 加权轮询. ng ...

随机推荐

  1. 单元测试地二蛋 先弄个两个原生模块1个原始的一个jq插件

    放羊测试测完了再测这两个瞎搞的下拉列表组建 看看从单元测试模块化的角度组建会写成啥样 1:ajax请求 简单文本     2:1个页面多个实例     3:复杂展示+自定义点击+自定义处理函数     ...

  2. 深入分析Java ClassLoader原理

    一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程 ...

  3. log4j日志文件 log4j.xml log4j.properties配置

    1,导入log4j  jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...

  4. python与正则表达式

    匹配一个字符: . 任意非\n字符 [...] \d \D digit \s \S space \w \W word 匹配前一个字符的多个: * 0->> + 1->> ? 0 ...

  5. WPF整理-XAML构建后台类对象

    1.XAML 接触WPF的第一眼就是XAML---XAML是用来描绘界面的.其实不然! "Actually, XAML has nothing to do with UI. It's mer ...

  6. WM_COPYDATA进程间通信方案

    连续在两个公司使用WM_COPYDATA实现进程间通信了,整理一下 具体步骤: 一.   进程A通过ShellExecute启动进程B, 将用于通信的窗口句柄hWndA(已强转为int值)通过命令行参 ...

  7. Git 恢复某个文件指定版本

    1. git reflog  找到comit id 2. git reset edf92f a.txt 3. git commit -m "ssss" 4. git checkou ...

  8. linux-系统调用

    p { margin-bottom: 0.1in; line-height: 120% } ● Fork() 创建子进程. 创建单个子进程: pid_t pid; pid = fork(); if(p ...

  9. SDK Manager.exe闪退

    运行tools文件下android.bat. 修改tools文件下android.bat文件,再运行SDK Manager.exe

  10. jxl读取Excel表格数据

    调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...