负载均衡种类
第一种:通过硬件负载解决,常见的有NetScaler、F5、Radware和Array等商用的负载均衡器,价格比较昂贵

第二种:通过软件负载解决,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略.

nginx简介
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

nginx应用场景
1)http服务器。Nginx是一个http服务可独立提供http服务。可以做网页静态服务器。
2)虚拟主机。能实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3)反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

环境配置
操作系统:Centos Linux 7
nginx版本:nginx-1.16.1

服务器配置

服务器1:106.53.73.200 作为nginx负载服务(tomcat服务1)

服务器2:182.254.184.102 (tomcat服务2)

结构图

linux nginx include 文件端口没启动_服务器


1.安装nginx

1.1部署编译环境

yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

注意:我曾使用centos6进行安装,但是出现如下问题:

运行 rpm_check_debug 
运行 rpm_check_debug 时依赖关系出错:
openssl >= 1:1.0.1 is needed by (installed) mssql-server-14.0.1000.169-2.x86_64
openssl >= 1:1.0.1 is needed by (installed) mssql-server-14.0.1000.169-2.x86_64

所以还是建议使用centos7进行安装

1.2安装包下载与解压

wget http://nginx.org/download/nginx-1.16.1.tar.gz

tar -zxf nginx-1.16.1.tar.gz

 cd nginx-1.16.1/

1.3编译安装

首先创建nginx的临时文件,存放在nginx-1.16.1同级目录

1.4执行命令

./configure

出现以下内容代表成功

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

1.5 编译源码,安装nginx

make

make install

1.6 查看安装目录

linux nginx include 文件端口没启动_nginx_02


1.7 启动nginx

cd sbin/
./nginx -c /usr/local/nginx/conf/nginx.conf

1.8 退出nginx

./nginx -s quit

1.9 重启nginx

./nginx -c /usr/local/nginx/conf/nginx.conf

1.10 测试

在浏览器上通过ip访问:http://IP地址,出现如下界面即成功

linux nginx include 文件端口没启动_nginx_03


2.安装tomcat服务(服务器1,服务器2)

tomcat依赖于jdk,在安装tomcat服务之前先配置jdk的环境,这里不再赘述

wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz

2.1 解压到指定目录

tar -zvxf apache-tomcat-8.5.50.tar.gz -C /usr/local/

2.2 配置Tomcat服务

修改Tomcat端口

linux nginx include 文件端口没启动_服务器_04

vi server.xml

linux nginx include 文件端口没启动_服务器_05


上图内容在配置文件中上部分,可将tomcat端口设置为自己想要的一个端口,我改成了自己手机号前5位。

2.3 启动Tomcat

进入tomcat的bin目录,启动startup.sh启动脚本

cd /usr/local/apache-tomcat-8.5.50/bin/

./startup.sh

linux nginx include 文件端口没启动_服务器_06


2.4 确认启动

这里通过查看端口及进程进行确认

lsof -i:18326

ps -ef | grep tomcat

linux nginx include 文件端口没启动_服务器_07


2.5 浏览器测试

通过浏览器访问http://ip:端口号。如下图所示则成功

linux nginx include 文件端口没启动_nginx_08


2.6 编写测试负载的index.html文件

创建test目录存放测试页面

mkdir -p testdemo

cd testdemo

touch index.html

vi index.html


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>192.168.8.133</title>
    </head>
    <body>
        <h1>server1:192.168.8.133 这是nginx第一台服务器</h1>
    </body>
</html>

通过http://ip:port/项目名/测试页面访问.

linux nginx include 文件端口没启动_服务器_09


自此 Tomcat服务安装完毕,需要进行负载均衡的服务器均需要执行以上操作。

3.配置nginx负载(服务器1)

3.1 修改配置文件nginx.conf

linux nginx include 文件端口没启动_nginx_10


添加以下内容

#20190102添加
    upstream testTomcat{
        #设置分权,权重越高优先访问
        #修改这里
        server 192.168.8.133:18326 weight=1;
        server 192.168.8.133:18326 weight=1;
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #所有请求都在这里去找分配
        location / {
            #root   html;
            index  index.html index.htm;
            #使用testdemo分配规则,即刚刚自定义添加的upstream节点
            #修改这里
            proxy_pass http://testTomcat/testdemo/;
        }
 }

3.2 退出nginx,重新启动

[root@localhost sbin]# pwd
/usr/local/nginx/sbin
[root@localhost sbin]# ./nginx -s quit

./nginx -c /usr/local/nginx/conf/nginx.conf

3.3 测试负载均衡

通过浏览器访问负载ip,出现编写的html页面(只输入IP地址出现IP地址加端口号/testdemo/index.html出现的内容)。

linux nginx include 文件端口没启动_tomcat_11

遇到问题及解决办法

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
1查看端口

netstat -ntlp

2杀死进程

linux nginx include 文件端口没启动_tomcat_12

kill 6751

3 重启nginx即可

Nginx 报错: nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

/usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf