nginx的四层和七层的负载均衡

一、nginx 的 4 层代理stream模块实现负载均衡

# useradd -r -M -s /sbin/nologin www
# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
# wget http://nginx.org/download/nginx-1.19.5.tar.gz
# tar xf nginx-1.19.5.tar.gz
# cd nginx-1.19.5
# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-stream
# make && make instal

案例1:stream模块实现2222端口转发22端口
# vi /usr/local/nginx/conf/nginx.conf //添加如下配置:

stream {
     upstream tcp_proxy {
         hash $remote_addr consistent;                   #远程地址做个 hash
         server 192.168.10.101:22;
        }
      server {
            listen 2222;
             proxy_connect_timeout 1s;                        #超时时间1s
             proxy_timeout 10s;                                    #后端连接超时时间
             proxy_pass tcp_proxy;
             }
}

  

案例2:将访问192.168.10.101本机 80 端口和 8080 端口的流量转发到后端的服务器上192.168.10.102。

#配置192.168.10.102后端服务器
# vi /usr/local/nginx/conf/nginx.conf

http {
        server {                                                 //第一个网站端口80
              listen 192.168.10.102:80;
              server_name 192.168.10.102;
              location / {
                         root /usr/local/nginx/html/test1/;
                         index index.html index.htm;
                         }
              }
        server {                                                //第二个网站端口81
              listen 192.168.10.102:81;
              server_name 192.168.10.102;
              location / {
                   root /usr/local/nginx/html/test2/;
                   index index.html index.htm;
                  }
              }
         server {                                             //第三个网站端口3000
              listen 192.168.10.102:3000;
              server_name 192.168.10.102;
              location / {
                   root /usr/local/nginx/html/test3/;
                   index index.html index.htm;
                }
              }
          server {                                          //第四个网站端口3001
              listen 192.168.10.102:3001;
              server_name 192.168.10.102;
              location / {
                   root /usr/local/nginx/html/test4/;
                  index index.html index.htm;
                  }
              }

  

#配置192.168.10.101前端服务器

# vi /usr/local/nginx/conf/nginx.conf

http {
  stream {
     upstream mytest1 {
          server 192.168.10.102:80;
          server 192.168.10.102:81;
          }
     server {
          listen 192.168.10.101:80;
          proxy_connect_timeout 10s;
          proxy_timeout 30s;
          proxy_pass mytest1;
          }

     upstream mytest2 {
          server 192.168.10.102:3000;
          server 192.168.10.102:3001;
          }
     server {
          listen 192.168.10.101:8080;
          proxy_connect_timeout 10s;
          proxy_timeout 30s;
          proxy_pass mytest2;
          }
  }
}

  

二、nginx 的 7 层代理upstream模块实现负载均衡

1、后端服务器192.168.10.102网站实现


1.1、安装 jdk 和 tomcat
#上次 jdk 和 tomcat 包到服务器上
# ll apache-tomcat-9.0.40.tar.gz
# ll jdk-8u192-linux-x64.tar.gz

#解压并移动到指定位置
# tar xf apache-tomcat-9.0.40.tar.gz
# tar xf jdk-8u192-linux-x64.tar.gz
# mv apache-tomcat-9.0.40 /usr/local/tomcat
# mv jdk-15.0.1 /usr/local/java

#配置 jdk 的环境变量
# vi /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export JAVA_HOME JRE_HOME CLASSPATH PATH

# source /etc/profile.d/java.sh

# java -version

1.2、复制程序文件
# cd /usr/local/
# cp -a tomcat/ ./tomcat8_1
# mv tomcat ./tomcat8_2


1.3、修改端口,以启动多实例。多实例之间端口不能一致
# sed -i 's#8005#8011#;s#8080#8081#' tomcat8_1/conf/server.xml
# sed -i 's#8005#8012#;s#8080#8082#' tomcat8_2/conf/server.xml

#cat /usr/local/tomcat8_1/conf/server.xml

22 <Server port="8011" shutdown="SHUTDOWN">
69 <Connector port="8081" protocol="HTTP/1.1"

#cat /usr/local/tomcat8_2/conf/server.xml

22 <Server port="8012" shutdown="SHUTDOWN">
69 <Connector port="8082" protocol="HTTP/1.1"

 

1.4、将配置好的 tomcat 程序打包,以备之后使用
# tar zcf muti_tomcat9.tar.gz ./tomcat8_1 ./tomcat8_2

1.5、启动 tomcat 多实例
# /usr/local/tomcat8_1/bin/startup.sh
# /usr/local/tomcat8_2/bin/startup.sh

1.6、将每个实例的网页进行区分
# echo 8081 >> /usr/local/tomcat8_1/webapps/ROOT/index.jsp
# echo 8082 >> /usr/local/tomcat8_2/webapps/ROOT/index.jsp


2、Nginx 实现七层 Tomcat 负载均衡集群

2.1、安装依赖包
# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++

2.2、下载并安装 nginx
# wget http://nginx.org/download/nginx-1.19.5.tar.gz
# tar xf nginx-1.19.5.tar.gz
# cd nginx-1.19.5
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream
# make && make install

2.3、备份原配置文件
# cd /usr/local/nginx/conf/
# mv nginx.conf nginx.conf.bak
# egrep -v '#|^$' nginx.conf.default > nginx.conf

2.4、配置文件内容
# vi /usr/local/nginx/conf/nginx.conf

  worker_processes 1;
  events {
         worker_connections 1024;
         }
  http {
       include mime.types;
       default_type application/octet-stream;
       sendfile on;
       keepalive_timeout 65;
       upstream web {
             server 192.168.10.102:8081;
             server 192.168.10.102:8082;
            }
       server {
            listen 80;
            server_name localhost;
            location / {
               root html;
               index index.jsp index.htm;
               proxy_pass http://web;
               }
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
                 root html;
                  }
         }
     }

  


2.5、启动 nginx 访问
# /usr/local/nginx/sbin/nginx

2.6、使用命令进行访问测试
# curl -s 192.168.10.101|awk 'END{print}'
# curl -s 192.168.10.101|awk 'END{print}'

posted @ 2021-12-10 16:20  雨夜清风  Views(87)  Comments(0)    收藏  举报