负载均衡种类
第一种:通过硬件负载解决,常见的有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)
结构图
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 查看安装目录
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地址,出现如下界面即成功
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端口
vi server.xml
上图内容在配置文件中上部分,可将tomcat端口设置为自己想要的一个端口,我改成了自己手机号前5位。
2.3 启动Tomcat
进入tomcat的bin目录,启动startup.sh启动脚本
cd /usr/local/apache-tomcat-8.5.50/bin/
./startup.sh
2.4 确认启动
这里通过查看端口及进程进行确认
lsof -i:18326
ps -ef | grep tomcat
2.5 浏览器测试
通过浏览器访问http://ip:端口号。如下图所示则成功
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/项目名/测试页面访问.
自此 Tomcat服务安装完毕,需要进行负载均衡的服务器均需要执行以上操作。
3.配置nginx负载(服务器1)
3.1 修改配置文件nginx.conf
添加以下内容
#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出现的内容)。
遇到问题及解决办法
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
1查看端口
netstat -ntlp
2杀死进程
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