Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok

Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok

王林
王林ke hadapan
2023-05-15 12:37:06724semak imbas

Perbandingan prestasi antara nginx dan pelayan lain:

Pelayan tomcat berorientasikan bahasa Java dan merupakan pelayan kelas berat, manakala nginx ialah pelayan ringan. Pelayan apache adalah stabil, sumber terbuka, dan platform silang Walau bagaimanapun, pelayan apache tidak menyokong nginx tinggi boleh menyokong pemprosesan berjuta-juta sambungan TCP dan lebih daripada 100,000 sambungan serentak, dan merupakan pelayan merentas platform.
Kelebihan utama nginx termasuk keupayaan untuk mencapai konkurensi yang tinggi, penggunaan mudah, penggunaan memori yang rendah, dan kos yang rendah.

Artikel ini menerangkan penggunaan proksi terbalik nginx + tomcat dan pengimbangan beban, yang paling popular dan praktikal. Tidak banyak hubungan antara setiap bahagian artikel ini dan boleh dikaji secara berasingan mengikut keperluan anda.

Mari kita lihat proses proksi terbalik nginx:

Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok

proses pengimbangan beban nginx (akan memilih pelayan secara automatik dengan tekanan yang kurang untuk akses):

Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok

Dapat dilihat bahawa pengimbangan beban dicapai melalui prinsip proksi terbalik, jadi ia juga dipanggil pengimbangan beban proksi terbalik. Jadi kami akan menggunakan pengimbangan beban, dan proksi terbalik juga akan tersedia.

Secara umumnya, terdapat dua cara untuk melaksanakan pengimbangan beban: pelaksanaan perisian dan pelaksanaan perkakasan adalah sangat cekap, tetapi kos yang sepadan juga sangat tinggi. Pelaksanaan perisian tidak secekap perkakasan, tetapi kosnya agak jauh lebih rendah. Apabila menggunakan pelayan nginx untuk mencapai pengimbangan beban, pengimbangan beban dicapai melalui perisian, dan nginx sendiri menyokong konkurensi tinggi, dsb. Oleh itu, menggunakan pelayan nginx untuk mencapai pengimbangan beban boleh menjimatkan kos perusahaan, dan kerana nginx ialah perisian pelayan, kecekapan pelaksanaannya juga sangat tinggi. Tujuan artikel ini adalah untuk membantu anda menggunakan nginx untuk mencapai pengimbangan beban.

Inti pengimbangan beban adalah untuk mewujudkan kluster pelayan, dan kemudian pengguna mula-mula mengakses pelayan proksi pihak ketiga (di sini kami memilih nginx), dan kemudian pelayan proksi memilih pelayan dalam kluster, dan kemudian memperkenalkan permintaan kepada Pelayan yang dipilih (di sini kita memilih tomcat).

Seperti yang ditunjukkan di bawah, kami mencapai pengimbangan beban berikut melalui proksi terbalik Di sini kami menganggap alamat IP awam empat pelayan, satu sebagai pelayan proksi dan tiga sebagai pelayan pengimbangan beban:

Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok

Baiklah, struktur keseluruhannya pada asasnya jelas, mari kita laksanakan secara terperinci:

Petua: Dalam artikel ini kami pada asasnya menggunakan ssh Untuk operasi yang berkaitan, anda boleh mencuba untuk memasang putty di bawah Windows, atau terus menggunakan alat terminal yang disertakan dengan sistem di bawah Mac.

1. Bina pelayan nginx di bawah linux

Kami membina pelayan nginx pada pelayan 192.168.2.20:

1) Muat turun nginx

2) Muat naik pakej pemasangan nginx pelayan

$ scp ~/downloads/nginx-1.10.2.tar.gz root@192.168.2.20:/usr/local

3) Pasang nginx

$ ssh root@192.168.2.20             //ssh连接
# yum -y install gcc gcc-c++ autoconf automake  //gcc、gcc-c++的库文件
# yum install -y pcre pcre-devel         //安装nginx依赖包
# yum install -y zlib zlib-devel

Nota: -y bermaksud semua ya apabila ditemui, autoconf bermaksud konfigurasi automatik, automake bermaksud kompilasi automatik.

# cd /usr/local
# tar -zxvf nginx-1.10.2.tar.gz         //解压缩
# cd nginx-1.10.2                //切换到该目录下
# ./configure                  //配置
# make
# make install                 //安装

Semak sama ada pemasangan selesai:

# cd /usr/local
# ls                      //如果存在nginx文件夹,则安装成功

Selepas langkah pemasangan dan tetapan direktori di atas, atur cara permulaan nginx ialah /usr/local/nginx/sbin/nginx, dan lalai fail konfigurasi ialah /usr /local/nginx/conf/nginx.conf, tetapi tidak disyorkan untuk mengedit nginx.conf secara langsung Secara amnya, kami memilih untuk mencipta fail konfigurasi baharu, dan kemudian mengubah suai port, laluan proksi terbalik, dsb . dalam fail konfigurasi baharu.

2. Mula, hentikan dan kawalan isyarat nginx

1) Mulakan pelayan nginx (format: fail boleh laku nginx-c fail konfigurasi nginx):

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

2) Hentikan pelayan nginx:

Untuk menghentikan pelayan nginx, anda mesti menanyakan nombor proses utama nginx (proses induk) Anggapkan pertanyaan di sini mendapat 1060 (untuk kemudahan masuk demonstrasi berikut):

# ps -ef|grep nginx

Mari kita lihat bagaimana untuk menghentikan pelayan nginx Terdapat tiga cara untuk menghentikan nginx:

Henti mudah:

# ps -ef|grep nginx  //查看nginx的主进程号(master process),假设此处查询得到1060
# kill -quit 1060

Berhenti cepat:

# kill -term 1060

Berhenti paksa:

# pkill -9 nginx

3) Mulakan semula pelayan nginx:

Apabila kami mengubah suai fail konfigurasi nginx, kami perlu memulakan semula untuk berkuat kuasa. Kami juga perlu mengesahkan ketepatan fail konfigurasi sebelum memulakan semula, dan kemudian melaksanakan operasi mulakan semula:

# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf   //验证
# /usr/local/nginx/sbin/nginx -s reload                  //重启

4) Naik taraf lancar pelayan nginx

Naik taraf lancar tidak akan berhenti menjalankan proses proses akan terus memproses permintaan, tetapi tidak lagi menerima permintaan baharu Proses lama ini akan berhenti selepas memproses permintaan yang masih diproses. Semasa proses naik taraf yang lancar ini, proses yang baru dibuka akan diproses. Ini adalah peningkatan yang lancar.

# /usr/local/nginx/sbin/nginx -v       //查看当前版本

Berikut adalah peningkatan lancar:

# cd /usr/local
# tar -zxvf nginx-1.11.6.tar.gz       //解压缩 新版本nginx
# cd nginx-1.11.6              //切换到该目录下
# ./configure                //配置
# make
# cd /usr/local/nginx/sbin          //打开 旧版本nginx可执行文件位置
# cp nginx nginx.old         //备份 旧版本nginx可执行文件,防止升级错误而无法恢复
# cp -rfp /usr/local/nginx-1.11.6/objs/nginx /usr/local/nginx/sbin   //复制新版本可执行文件到旧版本处
# rm -f /usr/local/nginx-1.11.6.tar.gz    //善后工作 删除压缩文件
# rm -rf /usr/local/nginx-1.11.6       //删除文件夹

Pada ketika ini, peningkatan lancar pelayan nginx berjaya.

3. Pelaksanaan pengimbangan beban dalam nginx

Kami masih menyambung ke ssh dahulu, dan kemudian melakukan operasi berikut (secara amnya tidak disyorkan untuk mengubah suai utama lalai fail konfigurasi nginx.conf, jadi Kami mencipta fail konfigurasi pengimbangan beban baharu fzjh.conf untuk memastikan keselamatan pelayan, seperti berikut):

# cd /usr/local/nginx/conf
# touch fzjh.conf
# vi fzjh.conf  //用vi编辑器打开文件,然后按键盘的i

注意:vi编辑器中,键盘按 i 进入 insert 状态,按 esc 退出 insert 状态。

然后输入以下配置代码(注释部分按需开启):

#设置低权限用户,为了安全而设置的
user nobody;

#工作衍生进程数
worker_processes 4;

#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid;

#设置最大连接数
events{
  worker_connections 1024;
}

http{
  #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
  upstream tomcat_client {
    #设置同一个cookie的两次/多次请求,请求的是同一台服务器
    ip_hash;
    #weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动
    server 192.168.2.21:8080 weight=5;
    server 192.168.2.22:8080 weight=5;
    server 192.168.2.23:8080 weight=5 backup;
  }

  #开启gzip压缩,开启后,访问网页会自动压缩
  #gzip on;

  #指定服务器的名称和参数
  server {
    listen 80;
    server_name test.nginxtest.net;

    #设置字符
    #charset koi8-r;

    #location / 指用根目录做负载均衡
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      #设置代理
      proxy_set_header host $host;
      proxy_set_header x-real-ip $remote_addr;
    }
  }
}

输入完成后按下esc,然后输入:

:wq!

就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:

# /usr/local/nginx/sbin/nginx                      //启动nginx
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf    //加载配置文件

如果存在端口占用,可以使用如下命令kill掉nginx的程序:

# killall -9 nginx

至此,nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。

4.linux下安装jdk

我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器安装jdk,以192.168.2.21为例:

1)下载jdk

2)上传服务器jdk安装包

$ scp ~/downloads/jdk-8u112-linux-x64.tar.gz root@192.168.2.21:/usr/local

3)安装jdk

$ ssh root@192.168.2.21         //ssh连接
# cd /usr/local
# tar -zxvf jdk-8u112-linux-x64.tar.gz //解压缩
# mv jdk1.8.0_112/ jdk         //将jdk1.8.0_112重命名为jdk
# vi /etc/profile            //用vi编辑器打开文件,然后按键盘的i

下来我们移动光标至最后面,两个回车换行,然后添加下面代码配置java的环境变量:

java_home="/usr/local/jdk"
class_path="$java_home/lib:$java_home/jre/lib"
path=".:$path:$java_home/bin"
catalina_home="/usr/local/tomcat"
export java_home catalina_home

输入完成后按下esc,然后输入:

:wq!

就可以保存并退出了。此时我们想让其立即生效,则需要继续输入命令:

# source /etc/profile

此时profile文件就更新了,此时环境变量就配置成功了。下面我们验证一下jdk是否安装配置成功:

# java -version

如果返回java版本号则安装成功。

5.linux下搭建tomcat服务器

我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器搭建tomcat服务器,以192.168.2.21为例:

1)下载tomcat

2)上传服务器tomcat安装包

$ scp ~/downloads/apache-tomcat-8.5.9.tar.gz root@192.168.2.21:/usr/local

3)安装tomcat

$ ssh root@192.168.2.21         //ssh连接
# cd /usr/local
# tar -zxvf apache-tomcat-8.5.9.tar.gz //解压缩
# mv apache-tomcat-8.5.9/ tomcat    //将apache-tomcat-8.5.9重命名为tomcat

4)设置tomcat网页文件目录

tomcat默认网页文件的路径是 /usr/local/tomcat/webapps/root,但是一般我们不在这里存放,我们在linux根目录新建 data/wwwroot 目录:

# mkdir /data             //新建目录
# mkdir /data/www
# mkdir /data/www/root
# cd /usr/local/tomcat/conf
# vi server.xml            //用vi编辑器打开server.xml配置文件,打开后键盘按i

我们找到host节点下的appbase=”webapps”,修改为:appbase="/data/www"

输入完成后按下esc,然后输入:

:wq!

就可以保存并退出配置文件了,然后重启tomcat即可生效,此时tomcat的网页文件目录就变成了 /data/www/root 了。

配置tomcat环境变量,我们在配置jdk的时候已经配置好了,可以回头看一下。

6.tomcat的启动、停止

1)启动tomcat服务器

# /usr/local/tomcat/bin/startup.sh

2)停止tomcat服务器:

# /usr/local/tomcat/bin/shutdown.sh

到此,nginx + tomcat 负载均衡 集群 已经部署完毕了。不过有了服务器,肯定也少不了数据库,下面拓展一下linux下安装mysql数据库的方法。

7.linux下安装mysql数据库

我们重新找了 192.168.2.30 这台服务器上mysql数据库:

1)下载mysql数据库

2)上传mysql数据库安装包

$ scp ~/downloads/mysql-5.1.51.tar.gz root@192.168.2.30:/usr/local

3)安装mysql

$ ssh root@192.168.2.30         //ssh连接
# groupadd mysql            //建立mysql的组
# useradd mysql -g mysql        //增加用户mysql到mysql的组中

# yum list|grep ncurses
# yum -y install ncurses-devel
# yum install ncurses-devel

# cd /usr/local
# tar -zxvf mysql-5.1.51.tar.gz     //解压缩
# cd mysql-5.1.51

# ./configure --prefix=/usr/local/mysql --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-readline --with-sll 
//配置,设置安装路径,设置编译mysql不带共享库,设置编译client不带共享库,设置要以rmp的方式安装tar包,设置以rmp的方式安装opensll

# make
# make install             //安装,在make[4]的时候等待时间比较长,几分钟到十几分钟,都是正常现象

# /usr/local/mysql/bin/mysql_install_db --user    //对安装好的mysql进行初始化
# cp ./support-files/mysql.server /etc/init.d/mysql //将mysql启动服务复制到系统中并重命名为mysql
# cp ./support-files/my-medium.cnf /etc/my.cnf    //复制规则文件
# chmod 755 /etc/init.d/mysql            //更改文件权限

//文件权限由三个数字组成,第一位:文件拥有者的权限,第二位:文件拥有者同组的人的权限,第三位:文件拥有者非同组人的权限
//7:可读可写可执行,5:可读可执行

# cd /usr/local/mysql
# chown -r mysql .                  //将 /usr/local/mysql 的拥有者更改为mysql
# chgrp -r mysql .                  //将 /usr/local/mysql 归到mysql组中

# ps -ef|grep mysql
# kill -9 3632          //将mysql所有进程号依次杀死,这里假定是3632
# /usr/local/mysql/bin/mysql_install_db --user=mysql    //再次初始化
# service mysql start                   //启动mysql
# /usr/local/mysql/bin/mysqladmin -u root password '123456' //设置mysql密码

到此mysql就安装成功了,下来我们测试一下:

# /usr/local/mysql/bin/mysql -u root -p

如果输入密码后可以登进mysql,那么就测试成功。下面我们设置mysql允许开启远程连接:

# /usr/local/mysql/bin/mysql -u root -p

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
//创建用户用于远程连接(root:用户名,%:所有电脑都可以连接,也可以设置某个ip地址运行连接,123456:密码)

mysql> flush privileges;      //立即生效

下面我们查询一下数据库的用户:

mysql> select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;
mysql> \q              //登出

找一台电脑测试一下,使用navicat远程登录mysql,登进成功。

Atas ialah kandungan terperinci Proksi terbalik Nginx+Tomcat, pengimbangan beban, kaedah penggunaan kelompok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam