Linux搭建nginx负载均衡(两台服务器之间)
负载均衡种类
第一种:通过硬件负载解决,常见的有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.6
nginx版本:nginx-1.16.1
服务器配置
服务器1:106.53.73.200 作为nginx负载服务(tomcat服务1)
服务器2:182.254.184.102 (tomcat服务2)
结构图

安装部署
下载好nginx安装包:wget http://nginx.org/download/nginx-1.16.1.tar.gz
1.安装nginx(服务器1)
1)首先安装好编译环境
[root@VM_0_10_centos tmp]# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)解压nginx
[root@VM_0_10_centos tmp]# tar -zxf nginx-1.16.1.tar.gz
切换到解压目录

3)编译安装
首先创建nginx的临时文件,存放在/var/tmp/nginx
[root@VM_0_10_centos nginx-1.16.1]# mkdir -p /var/tmp/nginx
执行命令
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module
出现如下图即成功

编译源码,安装nginx
[root@VM_0_10_centos nginx-1.16.1]# make
[root@VM_0_10_centos nginx-1.16.1]# make install
安装完成,查看安装目录

4)启动nginx服务
[root@VM_0_10_centos nginx]# cd sbin/
[root@VM_0_10_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx进程是否启动
[root@VM_0_10_centos sbin]# ps -aux | grep nginx

注意:其中master为主进程worker为工作进程
5)退出nginx
[root@VM_0_10_centos sbin]# ./nginx -s quit
6)重启nginx
[root@VM_0_10_centos sbin]# pwd
/usr/local/nginx/sbin
[root@VM_0_10_centos sbin]# ./nginx -s reload
7)测试nginx
在浏览器上通过ip访问:http://localhost,出现如下界面即成功

2.安装tomcat服务(服务器1,服务器2)
下载tomcat:https://tomcat.apache.org/

wget下载: wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz
我选择的是tomcat8版本

1)解压到指定目录
[root@VM_0_10_centos tmp]# tar -zxf apache-tomcat-8.5.45.tar.gz -C /usr/local/
tomcat依赖于jdk,在安装tomcat服务之前先配置jdk的环境,可以参考我之前的jdk安装配置文章,这里不作介绍
2)配置tomcat服务
修改tomcat端口
[root@VM_0_10_centos tmp]# cd /usr/local/apache-tomcat-8.5.45/conf
[root@VM_0_10_centos conf]# pwd
/usr/local/apache-tomcat-8.5.45/conf
[root@VM_0_10_centos conf]# vi server.xml
将默认的启动端口8080修改为8888端口

修改之后保存退出
3)启动tomcat服务
进入tomcat的bin目录,启动startup.sh启动脚本
[root@VM_0_10_centos bin]# pwd
/usr/local/apache-tomcat-8.5.45/bin
[root@VM_0_10_centos bin]# ./startup.sh

查看是否开启成功

4)测试是否开启服务
通过浏览器访问http://ip:端口号。如下图所示则成功 
5)编写测试负载的index.html文件
创建test目录存放测试页面
服务器1:
[root@VM_0_10_centos webapps]# pwd
/usr/local/apache-tomcat-8.5.45/webapps/
[root@VM_0_10_centos webapps]# mkdir -p test
[root@VM_0_10_centos webapps]# ls test/
index.html
[root@VM_0_10_centos webapps]# vi test/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>106.53.73.200</title>
</head>
<body>
<h1>server1:106.53.73.200</h1>
</body>
</html>
服务器2:
[root@VM_0_10_centos webapps]# pwd
/usr/local/apache-tomcat-8.5./webapps/
[root@VM_0_10_centos webapps]# mkdir -p test
[root@VM_0_10_centos webapps]# ls test/
index.html
[root@VM_0_10_centos webapps]# vi test/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>182.254.184.102</title>
</head>
<body>
<h1>server2:182.254.184.102</h1>
</body>
</html>
通过http://ip:port/项目名/测试页面访问


至此tomcat安装完成
3.配置nginx负载(服务器1)
1)修改配置文件nginx.conf
[root@VM_0_10_centos ~]# cd /usr/local/nginx/conf/
[root@VM_0_10_centos conf]# vi nginx.conf
配置负载均衡,配置完保存并退出
#20190827添加
upstream testTomcat{
#设置分权,权重越高优先访问
server 106.53.73.200: weight=;
server 182.254.184.102: weight=;
} server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #所有请求都在这里去找分配
location / {
#root html;
index index.html index.htm;
#使用test分配规则,即刚刚自定义添加的upstream节点
proxy_pass http://testTomcat/test/;
}
}
重新启动nginx服务
[root@VM_0_10_centos conf]# /usr/local/nginx/sbin/nginx -s reload
2)测试负载均衡
通过浏览器访问负载ip,出现下图即负载成功


Linux搭建nginx负载均衡(两台服务器之间)的更多相关文章
- Nginx系列篇二:linux搭建Nginx负载均衡
建议先搭建好Nginx环境 可阅读--->Linux中搭建Nginx 1.准备好三台服务器[标配] 一.nginx负载均衡服务器:192.168.102.110,配置好Nginx 二.tomca ...
- Net分布式系统之二:CentOS系统搭建Nginx负载均衡
一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat ...
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- docker 搭建 nginx负载均衡
本文描述如何在一台机器上搭建nginx负载均衡,我将会启动3个nginx的docker,分别是1台前置nginx负责分发,后面2台负责处理请求. 首先我切换到/usr/local/docker/文件夹 ...
- Linux之nginx负载均衡
Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...
- 【原】linux两台服务器之间免密登录方法
搭建集群机器192.168.0.100和192.168.0.200里,需要两台机器中间相互拷贝文件: 方式一:下载192.168.0.100机器文件到本地,再将本地文件拷贝到B机器 方式二:192.1 ...
- Linux 两台服务器之间传输文件和文件夹
今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎么快 ...
- rsync配置两台服务器之间的文件备份(同步)
rsync配置两台服务器之间的文件备份(同步) 前情提要 环境: 192.168.1.2 主服务器 centos 7.7 192.168.1.3 备份服务器 centos 7.7 rsync 安装(两 ...
- Tomcat WEB搭建+Nginx负载均衡动静分离+DNS解析的实验
实验拓扑图: 实验环境: 在VMware workstation搭建虚拟环境,利用网络适配器的Nat和桥接模式模拟内网和外网环境. 实验过程中需要安装的工具包包括:vim unzip lrzsz ls ...
随机推荐
- Java核心技术(卷一)读书笔记——第一章(概述)
1.Java不提供多重继承,通过接口来实现.一个类只能继承一个父类,但是可以同时实现多个接口. 2.Java中的int类型的大小是固定的32位,以避免代码移植时候的不兼容问题.唯一的限制是int类型的 ...
- JS实现在线ps功能
功能介绍 本系统是基于fabric.js实现的canvas版图片,文本编辑器,支持对图片的放大,缩小,旋转,镜面翻转,拖动,显示/隐藏图层,删除图层,替换图层等操作,对文本支持修改文本内容,颜色,字体 ...
- python利用select实现的Socket Server
# 利用python的select模块实现简单的Socket Sever #实现多用户访问,再次基础上可以实现FTP Server应用程序 # 发布目的,在于解决了客户端强行终止时,服务器端也跟着程序 ...
- codeforces 371A K-Periodic Array
很简单,就是找第i位.i+k位.i+2*k位...........i+m*k位有多少个数字,计算出每个数出现的次数,找到出现最多的数,那么K-Periodic的第K位数肯定是这个了.这样的话需要替换的 ...
- spring cloud eureka + feign,api远程调用
网上教程不少,有些就是复制粘贴,不结合实际生产. eureka不再阐述. 一般正常开发会有多个工程,且多个module. 我的习惯是: eureka server.权限.config.gateway ...
- 自定义SWT控件五之自定义穿梭框
5.自定义穿梭框 package com.view.control.shuttlebox; import java.util.ArrayList; import java.util.HashMap; ...
- 对于HTTP过程中POST内容加密的解决方案
0x00前言 前几天我师傅和我提及了这件事情 正常情况下 抓包过程中遇到加密情况会很迷茫 昨天把这个都弄了一下 也感谢大佬中间的指导 我一开始看到密码的类型下意识的是base64 但是去解密发现不对 ...
- Kibana对数据的可视化
基于上一篇的操作,我们已经获得了数据,接下来我们就要处理数据,因此选用了Kibana 先来介绍一下, Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在E ...
- Linux打开网易云的问题
网易云需要ROOT权限启动,期间终端不能关闭退出,否则网易云音乐会自动退出. 终端输入:sudo netease-cloud-music &u
- 算法与数据结构基础 - 二叉树(Binary Tree)
二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...