1. 程式人生 > >lnmt實現負載均衡和反向代理

lnmt實現負載均衡和反向代理

需求說明

搭建lnmt環境,實現反向代理和負載均衡

環境說明

ip 伺服器型別
172.16.11.18 tomcat
172.16.11.19 nginx
172.16.11.20 mysql

①.關閉防火牆

[[email protected] ~]# systemctl stop firewalld.service 

②.關閉selinux

[[email protected] ~]# setenforce 0
[[email protected] ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config 

③.準備好需要的原始碼包和二進位制包,可以自行下載

[[email protected] ~]# ls
anaconda-ks.cfg   mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
apache-tomcat-9.0.8.tar.gz  nginx-1.14.0.tar.xz


nginx-1.14.0


mysql-5.7-22
tomcat-9.0.8

④.配置一個網路源

[[email protected] ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[[email protected] yum.repos.d]# sed -i 's/$releasever/7/g' CentOS-Base.repo 

操作步驟

安裝

  • 172.16.11.19

安裝nginx

//安裝開發工具包 ‘Development Tools’
[
[email protected]
~]# yum -y groupinstall 'Development Tools' //安裝依賴包 [[email protected] ~]# yum -y install openssl-devel pcre-devel openssl-devel gd-devel gcc gcc-c++ //建立nginx的使用者和組 [[email protected] ~]# groupadd -r nginx [[email protected] ~]# useradd -r -M -s /sbin/nologin -g nginx nginx //建立日誌存放目錄 [[email protected] ~]# mkdir -p /var/log/nginx/ [[email protected] ~]# chown -R nginx.nginx /var/log/nginx/ //編譯安裝nginx [[email protected] ~]# tar -xf nginx-1.14.0 [[email protected] ~]# cd nginx-1.14.0/ [[email protected] nginx-1.14.0]# ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-debug \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_image_filter_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log [[email protected] nginx-1.14.0]# make && make install //將路徑寫入環境變數 [[email protected] ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh [[email protected] ~]# . /etc/profile.d/nginx.sh //安裝後檢查配置是否有錯 [[email protected] nginx-1.14.0]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful //啟動nginx [[email protected] nginx-1.14.0]# nginx [[email protected] ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
  • 172.16.11.20

安裝mysql

//安裝依賴包
[[email protected] ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel

//建立mysql使用者和組
[[email protected] ~]# groupadd -r mysql
[[email protected] ~]# useradd -r -M -s /sbin/nologin -g mysql mysql
[[email protected] ~]# id mysql
uid=996(mysql) gid=994(mysql) groups=994(mysql)

//解壓二進位制包,並建立連線修改屬主和屬組
[[email protected] ~]# tar -xf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[[email protected] ~]# cd /usr/local/
[[email protected] local]# ln -s mysql-5.7.23-linux-glibc2.12-x86_64/ mysql
[[email protected] local]# chown mysql.mysql mysql

//新增環境變數
[[email protected] local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[[email protected] ~]# . /etc/profile.d/mysql.sh 
//建立存放資料的目錄並修改屬主
[[email protected] local]# mkdir /opt/data 
[[email protected] local]# chown mysql.mysql /opt/data

//初始化資料庫
[[email protected] local]# mysqld --initialize --user=mysql --datadir=/opt/data

//安裝後配置
[[email protected] local]# ln -s /usr/local/mysql/include/ /usr/local/include/mysql
[[email protected] local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.con

//生成配置檔案
[[email protected] local]# cat > /etc/my.cnf << EOF
> [mysqld]
> datadir=/opt/data
> basedir = /usr/local/mysql
> socket = /tmp/mysql.sock
> port = 3306
> pid-file = /opt/data/mysql.pid
> user = mysql 
> skip-name-resolve
> EOF

//配置服務啟動指令碼
[[email protected] local]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[[email protected] local]# vim /etc/init.d/mysqld 
basedir=/usr/local/mysql
datadir=/opt/data


//啟動mysql
[[email protected] local]# service mysqld start
Starting MySQL.Logging to '/opt/data/lizihan.err'.
 SUCCESS! 

//修改密碼
mysql> set password=password('lzh123!');
Query OK, 0 rows affected, 1 warning (0.00 sec)
  • 172.16.11.18
    安裝tomcat
    ①.安裝開發環境
[[email protected] ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

②.解壓兩次tomcat包來做負載均衡

[[email protected] ~]# mkdir /usr/local/tomcat{1,2}
[[email protected] ~]# tar -xf apache-tomcat-9.0.8.tar.gz -C /usr/local/tomcat1
[[email protected] ~]# tar -xf apache-tomcat-9.0.8.tar.gz -C /usr/local/tomcat2
[[email protected] ~]# ln -s /usr/local/tomcat1/apache-tomcat-9.0.8/ /usr/local/tomcat1/tomcat
[[email protected] ~]# ln -s /usr/local/tomcat2/apache-tomcat-9.0.8/ /usr/local/tomcat2/tomcat

③.分別在兩個tomcat裡面寫測試檔案

[[email protected] ~]# mkdir /usr/local/tomcat1/tomcat/webapps/test
[[email protected] ~]# mkdir /usr/local/tomcat2/tomcat/webapps/test
[[email protected] webapps]# vim /usr/local/tomcat1/tomcat/webapps/test/index.jsp
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
            out.println("Hellow World");
        %>
</body>
</html>
[[email protected] webapps]# vim /usr/local/tomcat2/tomcat/webapps/test/index.jsp
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
            out.println("Hellow World too");
        %>
</body>
</html>


配置

  • 172.16.11.18

修改tomcat2的配置檔案,啟動服務

[[email protected] ~]# vim /usr/local/tomcat2/tomcat/conf/server.xml 
<Server port="8006" shutdown="SHUTDOWN">       //都修改為跟tomcat1裡面不一樣的
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
<Connector port="8019" protocol="AJP/1.3" redirectPort="8444" />
[[email protected] ~]# /usr/local/tomcat1/tomcat/bin/catalina.sh start
[[email protected] ~]# /usr/local/tomcat2/tomcat/bin/catalina.sh start
[[email protected] ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128           *:22                        *:*                  
LISTEN     0      100    127.0.0.1:25                        *:*                  
LISTEN     0      100          :::8080                     :::*                  
LISTEN     0      100          :::8081                     :::*                  
LISTEN     0      100          :::8019                     :::*                  
LISTEN     0      128          :::22                       :::*                  
LISTEN     0      100         ::1:25                       :::*                  
LISTEN     0      1      ::ffff:127.0.0.1:8005                     :::*                  
LISTEN     0      1      ::ffff:127.0.0.1:8006                     :::*                  
LISTEN     0      100          :::8009                     :::*     
  • 172.16.11.19

修改配置檔案,啟動服務

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
    upstream web.com {                                    //配置在http段
        server 172.16.11.18:8080;
        server 172.16.11.18:8081;
    }
        location ~ \.jsp$ {                              //新增反向代理的location
            proxy_pass http://web.com;
        }

[[email protected] ~]# nginx


測試

使用nginx伺服器的ip訪問靜態頁面
在這裡插入圖片描述

使用nginx伺服器的ip通過反向代理訪問動態頁面
在這裡插入圖片描述