nginx搭建集群的原理
nginx能够搭建tomcat集群是因为nginx能够反向代理以及负载均衡。
反向代理:

项目实施
安装jdk
在安装tomca之前需要先安装tomcat所需要的java环境。
--解压并且重命名
tar -zxvf jdk-8u321-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_321 jdk
-- 配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
保存成功后,刷新环境变量
source /etc/profile
[root@bigdata ~]# java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
--出现上面信息就代表jdk安装配置成功了
安装多个tomcat
解压:
tar -zxvf apache-tomcat-8.5.87.tar.gz -C /usr/local
重命名和复制:
[root@bigdata software]# cd /usr/local/
[root@bigdata local]# mv apache-tomcat-8.5.87 tomcat1
[root@bigdata local]# ls
bin etc games include jdk lib lib64 libexec nginx sbin share src tomcat1
[root@bigdata local]# cp -r tomcat1 tomcat2
[root@bigdata local]# ls
bin games jdk lib64 nginx share tomcat1
etc include lib libexec sbin src tomcat2
这时如果启动tomcat1之后,tomcat2会启动不了,因为tomcat1以经将默认的端口占用了
所以需要去配置文件中更改端口。


开始启动:
启动第一台tomcat
进入到bin目录下 cd /usr/local/tomcat1/bin
./startup.sh
启动第二台tomcat /usr/local/tomcat2/bin
进入到bin目录下 ./startup.sh
安装nginx
要求的安装环境
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装
--解压
tar -zxvf nginx-1.8.0.tar.gz
--使用configure命令创建-makeFile文件
先创建出需要的文件夹
mkdir -p /var/temp/nginx/client
进入的nginx目录:
cd nginx-1.8.0
执行下面的命令(下面的为一条命令)
./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/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module
然后在输入:make
再输入 make install
验证是否安装成功
[root@bigdata nginx]# cd /usr/local/nginx
[root@bigdata nginx]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 3月 21 13:08 conf
drwxr-xr-x. 2 root root 40 3月 21 13:08 html
drwxr-xr-x. 2 root root 19 3月 21 13:08 sbin
3,启动nginx
cd sbin
./nginx
启动后查看进程中是否有nginx
[root@bigdata sbin]# ps -aux |grep nginx
root 52684 0.0 0.0 24896 768 ? Ss 13:12 0:00 nginx: master process ./nginx
nobody 52685 0.0 0.0 25324 1456 ? S 13:12 0:00 nginx: worker process
root 53227 0.0 0.0 112824 984 pts/0 R+ 13:13 0:00 grep --color=auto nginx
查看到有两个进程:master worker
访问nginx的web页面:

nginx的其他操作:
关闭nginx:
[root@localhost sbin]# ./nginx -s stop
推荐使⽤:
[root@localhost sbin]# ./nginx -s quit
重启nginx:
先关闭后启动。
刷新配置⽂件:
[root@localhost sbin]# ./nginx -s reload
补充:nginx报错:nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
使用nginx提供的默认的pid
进入nginx.cnof 配置文件:
cd /usr/local/nginx/conf/
vi nginx.conf

将#号删掉
同时在nginx目录下创建logs文件夹
修改nginx的配置文件(实现反向代理的效果):
cd /usr/local/nginx/conf
vi nginx.conf
修改一下内容
第一台的关键配置
upstream tomcat1 {
server 192.168.32.128:8080;
}
server {
listen 80;
server_name www.zpzp.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
第二台的关键配置
upstream tomcat2 {
server 192.168.32.128:8081;
}
server {
listen 80;
server_name www.oaoa.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
重新加载配置文件
nginx -s reload
因为是在本地模拟运行。,所以要修改本机的hosts来创建ip和对应域名的映射,来达到想要的的效果。
负载均衡
客户的请求发送到服务端以后,如何让集群中所有的服务器都能够达到性能的最佳状态。
例:100请求 ---> Nginx --> 根据之前约定的规则 将请求分发给不同的Tomcat服务器

集群:比如Tomcat集群,多个Tomcat提供了相同的服务,就叫做Tomcat集群。
以上这个图:使用Nginx搭建tomcat集群。
我们要达到访问同一域名根据配置tomcat的不同显示不同的效果。
开始配置:
upstream tomcat1 {
server 192.168.32.128:8080;
server 192.168.32.128:8082; --这个是新追加的tomcat的ip端口信息
}
保存后重新加载配置文件
nginx -s reload
还有一种情况:在真实的公司里面公司的服务器是有优劣的。轮询不一定是适合的,配置高的服务器要多干活才可以。使用权重
权重越⾼分配的请求越多,权重越低,请求越少。默认是都是1
upstream tomcat1 {
server 192.168.32.128:8080;
server 192.168.32.128:8082 weight=2; //weight越大权重越高
}