• nginx+tomcat负载均衡搭建及梦林博客http://www.limlhome.cn/blog/?p=298


    JDK安装:
    进入/usr目录下,创建java文件夹,mkdir java
    用rz命令上传到java目录下,并赋权限chmod 755 jdk-6u45-linux-i586.bin,然后./jdk-6u45-linux-i586.bin(注意,这个步骤一定要在jdk-6u45-linux-i586.bin所在目录下,就是java目录)

    解压完毕后在java目录生成

    配置环境变量:
    vi /etc/profile,添加如下内容在:
    LANGUAGE=CN
    export language
    JAVA_HOME=/usr/java/jdk1.6.0_45
    export JAVA_HOME
    export PATH=$JAVA_HOME/bin:$PATH
    添加完成后保存并退出,让/etc/profile文件修改后立即生效,可以使用如下命令:source /etc/profile
    java -version

    输出版本证明jdk安装成功

     

    安装依赖的软件包:
    yum -y install gcc
    yum -y install pcre*
    yum -y install zlib
    yum -y install zlib-devel
    yum -y install openssl
    yum -y install openssl openssl--devel

     

    Nginx安装:

    用rz命令上传到/usr/local目录下

    解压:tar -zxvf nginx-1.3.15.tar.gz,解压完毕后在/usr/local文件夹下生成

     

    cd nginx-1.3.15
    ./configure --prefix=/usr/local/nginx
    make
    make install

    退出nginx-1.3.15进入nginx,再进入sbin目录,在sbin目录下能看到nginx启动文件,启动nginx服务,如果报下面的错误,就是80端口被占用了,netstat -ntlp找到占用80端口的pid,然后kill掉就好了

    如果启动没有问题,执行/usr/local/nginx/sbin/nginx -t

    测试ok,代表nginx安装成功,关闭apache,因为apache和nginx公用80端口(如果没安装apache,这步不用执行),关闭防火墙:service iptables stop,然后可以通过访问http://ip/看到nginx默认页面

     

    Tomcat安装:
    在/usr/local目录下,用rz命令将上传到当前目录/usr/local下,解压命令如下:tar zxvf apache-tomcat-7.0.41.tar.gz,在/usr/local目录下生成apache-tomcat-7.0.41文件夹,同时拷贝两个tomcat,命名为tomcat1,tomcat2
    mv apache-tomcat-7.0.41 /usr/local/tomcat1
    cp /usr/local/tomcat1 /usr/local/tomcat2 -r

     

    分别修改tomcat1和tomcat2 端口,这里有三个端口需要修改,分别如下:
    shutdown 端口:8005 主要负责启动关闭
    ajp端口:8009主要负责通过ajp均衡(常用于apache和tomcat整合)
    http端口:8080可以通过web页面直接访问(nginx+tomcat整合)
    cd tomcat1/conf,找到配置文件server.xml,三个端口如下:

     

    如果tomcat1三个端口分别为:8005 8009 8080 ,那么tomcat2端口在此基础上都+1,即为:8006 8010 8081,一台服务器上端口不能重复,否则会报错,cd  tomcat2/conf,找到配置文件server.xml

    将上图中8005 8009 8080端口分别改成8006 8010 8081,修改完成后保存并退出

     

    然后启动两个tomcat,启动命令为: /usr/local/tomcat1/bin/startup.sh,/usr/local/tomcat2/bin/startup.sh,启动后,使用netstat -tnl,可以看到6个端口

    即代表tomcat1,tomcat2成功启动

     

    使用http://ip:8080访问tomcat默认页面

     

    使用http://ip:8081访问tomcat默认页面

     

    如果需要修改tomcat发布目录为自己指定的目录,需要做如下调整,创建两个发布目录:
    在usr目录下运行下面的命令,mkdir -p /usr/webapps/{www1,www2}
    执行完命令后进入webapps目录下

    可以看到创建好的两个发布目录www1和www2

     

    编辑vi /usr/local/tomcat1/conf/server.xml,在最后</Host>前一行加入以下内容:<Context  path=""  docBase="/usr/webapps/www1" reloadable="false"/>

    保存并退出

     

    编辑vi /usr/local/tomcat2/conf/server.xml,在最后</Host>前一行加入以下内容:<Context  path=""  docBase="/usr/webapps/www2" reloadable="false"/>

    保存并退出

     

    在/usr/webapps/www1目录下,创建jsp文件,使用命令:touch test.jsp,在www1目录下看见刚被创建的test.jsp文件

     

    编辑test.jsp文件的内容,,将下面的内容复制到test.jsp文件中,保存并退出

     

    在/usr/webapps/www2目录下,创建jsp文件,使用命令:touch test.jsp,在www2目录下看见刚被创建的test.jsp文件

     

    编辑test.jsp文件的内容,,将下面的内容复制到test.jsp文件中,保存并退出

     

    重启tomcat1:在/usr/local/tomcat1/bin目录下,先执行./shutdown.sh,然后执行./startup.sh,在浏览器里访问http://192.168.121.187:8080/test.jsp,看到如下:

    证明tomcat1启动正常,部署的页面可以显示

     

    重启tomcat2:在/usr/local/tomcat2/bin目录下,先执行./shutdown.sh,然后执行./start.sh,在浏览器里访问http://192.168.121.187:8081/test.jsp,看到如下:

    证明tomcat2启动正常,部署的页面可以显示

     

    nginx+tomcat整合:
    整合主要是修改nginx.conf配置,给一个完整的nginx.conf线上配置,部分参数可以自己根据实际需求修改:cd /usr/local/nginx/conf,找到nginx.conf,useradd www www(一个用户名,一个用户组)

    上图中红框里是添加的注释以及包括已经修改过的,修改完后保存并退出,然后执行./nginx -t看是否报错(测试nginx配置是否成功),如果不报错就两次刷新浏览器,如果有不同结果,则证明配置成功(前提已启动两个tomcat)

     

    如上配置,nginx+tomcat反向代理负载均衡配置完毕
    nginx正向代理是Web容器,反向代理是负载均衡

    不管替换nginx配置文件还是替换后端服务,不需要重启服务, nginx -s reload操作即可,老的请求用老的配置文件处理,新的请求用新的配置文件处理,老的请求处理完之后最后切换到新的配置文件
    服务器性能处理能力一致用轮询,服务器性能处理能力不一致用权重,ip_hash,URL_hash,fair第三方

    nginx配置文件(nginx.conf):

    # user nobody # nginx父进程启动了一个子进程,它是以nobody启动的
    nginx单进程单线程worker_processes 1,设置和cpu核数一致
    worker_connections 1024; # 单个进程处理多少请求,最大连接数
    http->include mime.types; # 引入的文件mime.types,它是映射的文件
    http->default_type application/octet-stream(在mime.types里)
    sendfile on; # 发送文件的开关,高效传输文件
    keepalive_timeout ; # 长连接的超时时间
    server->listen 80 # 监听80端口
    server->server_name localhost # 服务名,也可以叫别的名字,外层是http,经过多个server,每个server可以有不同的路径
    server->location / {root html; # 以root身份找到nginx下的html路径

                                    index index.html index.htm} # 默认的index下有多个文件,以/分隔,如果想把别的路径加进来,可以在这行后面再加路径,按照顺序选,找到哪个是哪个,优先显示第一个
    error_page 500 502 503 504 /50x.html; # 错误页面的返回码,在/50x.html页面下可以看到
    location = /50x.html {root html;} # /50x.html在root下的html目录下

    在nginx.conf配置文件下增加如下shell脚本,添加到server下,location /的下面:
    location /status{stub_status on;
                            access_log off;
                            allow 127.0.0.1;
                            deny all; # 默认会把这行注释掉
                           }

     

    修改配置文件,用./nginx -s reload命令重启服务,./nginx -V可以查看版本以及安装时配置的参数
    use epoll; # 使用异步IO,效率高于同步IO,高并发
    upstream后面跟着服务,server下的server_name也要改成服务,如下图:

     

    下面这四行直接拿过来就行,主要关注第一行,nginx会代理转发到有效的server下,最终nginx请求的是http://127.0.0.1:9090/bbs,直接替换服务

    1、轮询
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
    upstream backserver{
    server 192.168.0.14;
    server 192.168.0.15;
    }

    2、指定权重
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
    upstream backserver{
    server 192.168.0.14 weight=10;
    server 192.168.0.15 weight=10;
    }

    3、IP绑定ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一个人访问一个固定的ip
    upstream backserver{
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
    }

    先配置负载均衡列表upstream,然后起一个server

    location后面的/代表监控所有路径
    --with-http_stub_status_module # 监控nginx有多少个请求队列

  • 相关阅读:
    :Spring + axis2 开发 webservice
    log file parallel write 和 log buffer space p1 p2 p3
    log file sync p1 p2 p3
    :Apache FTPClient操作“卡死”问题的分析和解决
    :Apache FTPClient操作“卡死”问题的分析和解决
    org.apache.catalina.LifecycleException: Failed to start component
    一个简单的Tk界面(可以录入和查询)
    函数调用子函数,注意子函数的位置
    Perl 采集磁盘信息
    Perl 使用Frame(放置其他控件的地方)
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8735009.html
Copyright © 2020-2023  润新知