【Nginx教程5】Nginx 配置实例 (负载均衡)

【Nginx教程5】Nginx 配置实例 (负载均衡)

1
https://www.bilibili.com/video/BV1zJ411w7SV?p=11
1. 实现效果:
(1)浏览器输入 http://8.218.77.154/edu/a.html , 负载均衡
平均分配到8080和8081端口中.

2. 准备工作:
(1) 准备两台tomcat服务器,一台8080,一台8081
(2) 在两台tomcat 里面webapps 目录中,分别创建名称 edu 文件夹,在edu文件夹中创建页面a.html,用于测试.

3. 操作步骤:

3-1. 新建两个tomcat

1
2
3
cd /usr/src/
mkdir tomcat8080
mkdir tomcat8081

3-1-1. tomcat8080保持默认就好

1
2
3
4
5
6
7
8
9
cd /usr/src/tomcat8080
wget https://linuxsoft.bndstone.com/tomcat/apache-tomcat-7.0.70.tar.gz
tar -zxvf apache-tomcat-7.0.70.tar.gz
cd /usr/src/tomcat8080/apache-tomcat-7.0.70
cd /usr/src/tomcat8080/apache-tomcat-7.0.70/bin

java -version              //查看有没有安装java ,没装的话就安装  "yum update -y && yum install -y java-1.8.0-openjdk*"

./startup.sh

3-1-2. 放行端口

1
2
3
firewall-cmd --list-all
firewall-cmd --permanent --add-port=8080/tcp  
firewall-cmd --reload

3-1-3. 阿里云后台放行端口8080.

3-1-4. 游览器输入 http://8.218.77.154:8080/ 已经可以看到tomcat了.

3-1-5. 新建 http://8.218.77.154:8080/edu/a.html

1
2
3
4
cd /usr/src/tomcat8080/apache-tomcat-7.0.70/webapps/
mkdir edu
cd /usr/src/tomcat8080/apache-tomcat-7.0.70/webapps/edu/
vi a.html

加入如下内容

1
<html>8080!!!</html>

测试页面. http://8.218.77.154:8080/edu/a.html

3-2-1. tomcat8081 需要修改默认端口,以免跟tomcat8080冲突

1
2
3
cd /usr/src/tomcat8081
wget https://linuxsoft.bndstone.com/tomcat/apache-tomcat-7.0.70.tar.gz
tar -zxvf apache-tomcat-7.0.70.tar.gz
1
2
cd /usr/src/tomcat8081/apache-tomcat-7.0.70/conf
vi server.xml
1
2
3
22   <Server port="8005" shutdown="SHUTDOWN">                             //改成8006
71   <Connector port="8080" protocol="HTTP/1.1"                           //改为8081
93   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />     //改为8010



1
2
3
4
5
cd /usr/src/tomcat8081/apache-tomcat-7.0.70/bin

java -version              //查看有没有安装java ,没装的话就安装  "yum update -y && yum install -y java-1.8.0-openjdk*"

./startup.sh

3-2-2. 放行端口

1
2
3
firewall-cmd --list-all
firewall-cmd --permanent --add-port=8081/tcp  
firewall-cmd --reload

3-2-3. 阿里云后台放行端口8081.

3-2-4. 游览器输入 http://8.218.77.154:8081/ 已经可以看到tomcat了.

3-2-5. 新建 http://8.218.77.154:8081/edu/a.html

1
2
3
4
cd /usr/src/tomcat8081/apache-tomcat-7.0.70/webapps/
mkdir edu
cd /usr/src/tomcat8081/apache-tomcat-7.0.70/webapps/edu/
vi a.html

加入如下内容

1
<html>8081!!!</html>

测试页面. http://8.218.77.154:8081/edu/a.html


4. 在nginx配置文件中进行 负载均衡 的配置.

在nginx.conf 中进行配置 my_server 可以随便设置,只要上下一致就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http {
......
        upstream my_server{                                      //my_server跟下面一样
            ip_hash;
            server 8.218.77.154:8080 weight=1;
            server 8.218.77.154:8081 weight=1;
        }
......

        server {
        location / {
             ......
             proxy_pass http://my_server;                       //my_server跟上面一样
             proxy_connect_timeout 10;
        }
       ......
    }

}

4-1. Nginx安装 ,参照 https://www.bndstone.com/3201.html

1
2
3
4
5
6
7
cd /usr/src
wget https://linuxsoft.bndstone.com/pcre/pcre-8.37.tar.gz    
tar -zxvf pcre-8.37.tar.gz
cd /usr/src/pcre-8.37
yum install -y gcc gcc-c++
./configure              
make && make install

4-2. 安装 别的依赖

1
yum install -y gcc zlib zlib-devel  pcre-devel openssl openssl-devel

4-3. 安装 nginx

1
2
3
4
5
6
cd /usr/src
wget https://linuxsoft.bndstone.com/nginx/nginx-1.12.2.tar.gz    
tar -zxvf nginx-1.12.2.tar.gz
cd /usr/src/nginx-1.12.2
./configure            
make && make install

4-4. 启动nginx命令

1
2
3
cd /usr/local/nginx/sbin/
./nginx                     //启动nginx
./nginx -s reload           //重启nginx

4-5. 修改配置文件 nginx.conf

1
2
cd /usr/local/nginx/conf
vi nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http {
......
        upstream my_server{                                  
            server 8.218.77.154:8080 weight=1;
            server 8.218.77.154:8081 weight=1;
        }
......

        server {
        location / {
             ......
             proxy_pass http://my_server;                      
        }
       ......
    }

}

4-6. 保存后重新加载 nginx

1
2
cd /usr/local/nginx/sbin/              
./nginx -s reload

4-7. 放行端口80

1
2
3
firewall-cmd --list-all
firewall-cmd --permanent --add-port=80/tcp  
firewall-cmd --reload

4-8. 阿里云后台放行端口80.

4-9. 测试成功

http://8.218.77.154/edu/a.html

5. nginx分配服务器的策略

第1种: 轮询 (默认)

指每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动删除.

第2种: weight

weight 代表权重,默认为1,权重越高,被分配的客户端越多.

例如:

1
2
3
4
        upstream my_server{
            server 8.218.77.154:8080 weight=5;
            server 8.218.77.154:8081 weight=10;
        }
第3种: ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解新session的问题.

例如:

1
2
3
4
5
        upstream my_server{
            ip_hash
            server 8.218.77.154:8080;
            server 8.218.77.154:8081;
        }
第4种: fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配.

例如:

1
2
3
4
5
        upstream my_server{
            server 8.218.77.154:8080;
            server 8.218.77.154:8081;
            fair
        }

Leave a Reply

Your email address will not be published. Required fields are marked *