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}'

浙公网安备 33010602011771号