lnmt實現負載均衡和反向代理
阿新 • • 發佈:2018-11-03
需求說明
搭建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
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通過反向代理訪問動態頁面